14 #ifndef __SGVECTOR_H__
15 #define __SGVECTOR_H__
23 template <
class T>
class SGSparseVector;
24 template <
class T>
class SGMatrix;
78 void random(T min_value, T max_value);
146 static void fill_vector(T* vec, int32_t len, T value);
152 static void random_vector(T* vec, int32_t len, T min_value, T max_value);
155 static void randperm(T* perm, int32_t n);
158 static void permute(T* vec, int32_t n);
267 static T
twonorm(
const T* x, int32_t len);
280 const T scalar,
const T* vec2, int32_t n);
286 for (int32_t i=0; i<n; i++)
287 r+=((v1[i]) ? 1 : 0) * ((v2[i]) ? 1 : 0);
295 for (int32_t i=0; i<n; i++)
309 const uint64_t* v1,
const uint64_t* v2, int32_t n)
312 for (int32_t i=0; i<n; i++)
319 const int64_t* v1,
const int64_t* v2, int32_t n)
322 for (int32_t i=0; i<n; i++)
330 const int32_t* v1,
const int32_t* v2, int32_t n)
333 for (int32_t i=0; i<n; i++)
341 const uint32_t* v1,
const uint32_t* v2, int32_t n)
344 for (int32_t i=0; i<n; i++)
352 const uint16_t* v1,
const uint16_t* v2, int32_t n)
355 for (int32_t i=0; i<n; i++)
363 const int16_t* v1,
const int16_t* v2, int32_t n)
366 for (int32_t i=0; i<n; i++)
374 const char* v1,
const char* v2, int32_t n)
377 for (int32_t i=0; i<n; i++)
385 const uint8_t* v1,
const uint8_t* v2, int32_t n)
388 for (int32_t i=0; i<n; i++)
396 const int8_t* v1,
const int8_t* v2, int32_t n)
399 for (int32_t i=0; i<n; i++)
407 const float64_t* v1,
const char* v2, int32_t n)
410 for (int32_t i=0; i<n; i++)
418 T* target,
const T* v1,
const T* v2,int32_t len)
420 for (int32_t i=0; i<len; i++)
421 target[i]=v1[i]*v2[i];
427 T* target, T alpha,
const T* v1, T beta,
const T* v2,
430 for (int32_t i=0; i<len; i++)
431 target[i]=alpha*v1[i]+beta*v2[i];
437 for (int32_t i=0; i<len; i++)
445 static inline T
sum(T* vec, int32_t len)
448 for (int32_t i=0; i<len; i++)
464 for (int32_t i=0; i<len; i++)
477 static T
min(T* vec, int32_t len);
480 static T
max_abs(T* vec, int32_t len);
483 static T
max(T* vec, int32_t len);
486 static int32_t
arg_max(T * vec, int32_t inc, int32_t len, T * maxv_ptr = NULL);
489 static int32_t
arg_max_abs(T * vec, int32_t inc, int32_t len, T * maxv_ptr = NULL);
492 static int32_t
arg_min(T * vec, int32_t inc, int32_t len, T * minv_ptr = NULL);
495 static T
sum_abs(T* vec, int32_t len);
503 static int32_t
unique(T* output, int32_t
size);
510 const char* prefix=
"")
const;
514 const T*
vector, int32_t n,
const char* name=
"vector",
515 const char* prefix=
"");
520 const char* prefix=
"");
530 template <
typename Predicate>
648 #ifndef DOXYGEN_SHOULD_SKIP_THIS
654 #endif // DOXYGEN_SHOULD_SKIP_THIS
656 #endif // __SGVECTOR_H__