44 #ifndef NEKTAR_LIB_LIBUTILITIES_BASSICUTILS_VECTORMATH_HPP
45 #define NEKTAR_LIB_LIBUTILITIES_BASSICUTILS_VECTORMATH_HPP
62 int n,
const T eps, T *x,
const int incx,
int seed = 9999);
66 const int incy, T*z,
const int incz);
71 T *y,
const int incy);
75 const int incy, T*z,
const int incz);
79 const int incx, T *y,
const int incy);
83 const int incy, T *z,
const int incz);
87 const int incx, T *y,
const int incy);
91 const int incy, T *z,
const int incz);
95 const T *x,
const int incx, T *y,
const int incy);
104 template<
class T>
void Vlog(
int n,
const T *x,
const int incx,
105 T *y,
const int incy)
116 template<
class T>
void Vexp(
int n,
const T *x,
const int incx,
117 T *y,
const int incy)
127 template<
class T>
void Vpow(
int n,
const T *x,
const int incx,
128 const T f, T *y,
const int incy)
141 T *y,
const int incy);
145 T *y,
const int incy);
151 const T *w,
const int incw,
152 const T *x,
const int incx,
153 const T *y,
const int incy,
154 T *z,
const int incz );
158 const int incx,
const T *y,
const int incy,
159 T *z,
const int incz);
163 const int incx,
const T *y,
const int incy,
164 T *z,
const int incz);
168 const int incx,
const T *y,
const int incy,
169 T *z,
const int incz );
176 const T* v,
int incv,
177 const T* w,
int incw,
178 const T* x,
int incx,
179 const T* y,
int incy,
185 const T* v,
int incv,
186 const T* w,
int incw,
187 const T* x,
int incx,
188 const T* y,
int incy,
194 const T* x,
int incx,
196 const T* y,
int incy,
203 const T* v,
int incv,
204 const T* w,
int incw,
205 const T* x,
int incx,
211 template<
class T,
class I,
typename =
typename std::enable_if
213 std::is_floating_point<T>::value &&
214 std::is_integral<I>::value
217 void Gathr(I n,
const T *x,
const I *y, T *z)
287 const T *w,
const int incw,
288 const T *x,
const int incx);
298 const T *w,
const int incw,
299 const T *x,
const int incx,
300 const int *y,
const int incy);
307 T *y,
const int incy);
#define LIB_UTILITIES_EXPORT
#define sign(a, b)
return the sign(b)*a
void Vsqrt(int n, const T *x, const int incx, T *y, const int incy)
sqrt y = sqrt(x)
void Ssub(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Add vector y = alpha - x.
void Svtsvtp(int n, const T alpha, const T *x, int incx, const T beta, const T *y, int incy, T *z, int incz)
vvtvvtp (scalar times vector plus scalar times vector):
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
void Vlog(int n, const T *x, const int incx, T *y, const int incy)
void Vexp(int n, const T *x, const int incx, T *y, const int incy)
void Svtvp(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
svtvp (scalar times vector plus vector): z = alpha*x + y
void Vabs(int n, const T *x, const int incx, T *y, const int incy)
vabs: y = |x|
T Dot2(int n, const T *w, const T *x, const int *y)
vvtvp (vector times vector times vector): z = w*x*y
void Neg(int n, T *x, const int incx)
Negate x = -x.
T Vmin(int n, const T *x, const int incx)
Return the minimum element in x - called vmin to avoid conflict with min.
void Vvtvp(int n, const T *w, const int incw, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
vvtvp (vector times vector plus vector): z = w*x + y
T Vsum(int n, const T *x, const int incx)
Subtract return sum(x)
void Scatr(int n, const T *x, const int *y, T *z)
Scatter vector z[y[i]] = x[i].
T Dot(int n, const T *w, const T *x)
vvtvp (vector times vector times vector): z = w*x*y
void Gathr(int n, const T *sign, const T *x, const int *y, T *z)
Gather vector z[i] = sign[i]*x[y[i]].
void Assmb(int n, const T *x, const int *y, T *z)
Assemble z[y[i]] += x[i]; z should be zero'd first.
void Svtvm(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
svtvp (scalar times vector plus vector): z = alpha*x - y
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
void Vvtvm(int n, const T *w, const int incw, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
vvtvm (vector times vector plus vector): z = w*x - y
void Vvtvvtm(int n, const T *v, int incv, const T *w, int incw, const T *x, int incx, const T *y, int incy, T *z, int incz)
vvtvvtm (vector times vector minus vector times vector):
void Smul(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha*x.
void Sdiv(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Scalar multiply y = alpha/y.
int Imax(int n, const T *x, const int incx)
Return the index of the maximum element in x.
void Vdiv(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x/y.
int Imin(int n, const T *x, const int incx)
Return the index of the minimum element in x.
void Zero(int n, T *x, const int incx)
Zero vector.
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
T ran2(long *idum)
Generates a number from ~Normal(0,1)
void Vstvpp(int n, const T alpha, const T *v, int incv, const T *w, int incw, const T *x, int incx, T *z, int incz)
Vstvpp (scalar times vector plus vector plus vector):
void FillWhiteNoise(int n, const T eps, T *x, const int incx, int outseed)
Fills a vector with white noise.
int Nnan(int n, const T *x, const int incx)
Return number of NaN elements of x.
T Vamax(int n, const T *x, const int incx)
Return the maximum absolute element in x called vamax to avoid conflict with max.
void Sadd(int n, const T alpha, const T *x, const int incx, T *y, const int incy)
Add vector y = alpha - x.
void Reverse(int n, const T *x, const int incx, T *y, const int incy)
T Vmax(int n, const T *x, const int incx)
Return the maximum element in x – called vmax to avoid conflict with max.
void Vvtvvtp(int n, const T *v, int incv, const T *w, int incw, const T *x, int incx, const T *y, int incy, T *z, int incz)
vvtvvtp (vector times vector plus vector times vector):
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
void Vsub(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Subtract vector z = x-y.
void Vpow(int n, const T *x, const int incx, const T f, T *y, const int incy)
int Iamax(int n, const T *x, const int incx)
Return the index of the maximum absolute element in x.
scalarT< T > log(scalarT< T > in)