14 #ifndef __SGVECTOR_H__
15 #define __SGVECTOR_H__
24 template <
class T>
class SGSparseVector;
25 template <
class T>
class SGMatrix;
29 template<
class T>
class SGVector :
public SGReferencedData
48 void set(SGVector<T> orig);
79 void random(T min_value, T max_value);
147 static void fill_vector(T* vec, int32_t len, T value);
153 static void random_vector(T* vec, int32_t len, T min_value, T max_value);
156 static void randperm(T* perm, int32_t n);
159 static void permute(T* vec, int32_t n);
328 static T
twonorm(
const T* x, int32_t len);
341 const T scalar,
const T* vec2, int32_t n);
347 for (int32_t i=0; i<n; i++)
348 r+=((v1[i]) ? 1 : 0) * ((v2[i]) ? 1 : 0);
356 for (int32_t i=0; i<n; i++)
370 const uint64_t* v1,
const uint64_t* v2, int32_t n)
373 for (int32_t i=0; i<n; i++)
380 const int64_t* v1,
const int64_t* v2, int32_t n)
383 for (int32_t i=0; i<n; i++)
391 const int32_t* v1,
const int32_t* v2, int32_t n)
394 for (int32_t i=0; i<n; i++)
402 const uint32_t* v1,
const uint32_t* v2, int32_t n)
405 for (int32_t i=0; i<n; i++)
413 const uint16_t* v1,
const uint16_t* v2, int32_t n)
416 for (int32_t i=0; i<n; i++)
424 const int16_t* v1,
const int16_t* v2, int32_t n)
427 for (int32_t i=0; i<n; i++)
435 const char* v1,
const char* v2, int32_t n)
438 for (int32_t i=0; i<n; i++)
446 const uint8_t* v1,
const uint8_t* v2, int32_t n)
449 for (int32_t i=0; i<n; i++)
457 const int8_t* v1,
const int8_t* v2, int32_t n)
460 for (int32_t i=0; i<n; i++)
468 const float64_t* v1,
const char* v2, int32_t n)
471 for (int32_t i=0; i<n; i++)
479 T* target,
const T* v1,
const T* v2,int32_t len)
481 for (int32_t i=0; i<len; i++)
482 target[i]=v1[i]*v2[i];
488 T* target, T alpha,
const T* v1, T beta,
const T* v2,
491 for (int32_t i=0; i<len; i++)
492 target[i]=alpha*v1[i]+beta*v2[i];
498 for (int32_t i=0; i<len; i++)
506 static inline T
sum(T* vec, int32_t len)
509 for (int32_t i=0; i<len; i++)
518 return sum(vec.vector, vec.vlen);
525 for (int32_t i=0; i<len; i++)
538 static T
min(T* vec, int32_t len);
541 static T
max_abs(T* vec, int32_t len);
544 static T
max(T* vec, int32_t len);
547 static int32_t
arg_max(T * vec, int32_t inc, int32_t len, T * maxv_ptr = NULL);
550 static int32_t
arg_max_abs(T * vec, int32_t inc, int32_t len, T * maxv_ptr = NULL);
553 static int32_t
arg_min(T * vec, int32_t inc, int32_t len, T * minv_ptr = NULL);
556 static T
sum_abs(T* vec, int32_t len);
564 static int32_t
unique(T* output, int32_t
size);
571 const char* prefix=
"")
const;
575 const T*
vector, int32_t n,
const char* name=
"vector",
576 const char* prefix=
"");
581 const char* prefix=
"");
591 template <
typename Predicate>
709 #ifndef DOXYGEN_SHOULD_SKIP_THIS
715 #endif // DOXYGEN_SHOULD_SKIP_THIS
717 #endif // __SGVECTOR_H__