5 template <
typename Float>
6 inline void aXpY(Float a, Float *x, Float *y,
int len)
8 for(
int i=0; i < len; i++){ y[i] += a*x[i]; }
13 else aXpY((
float)a, (
float *)x, (
float *)y, len);
17 template <
typename Float>
18 inline void aX(Float a, Float *x,
int len) {
19 for (
int i=0; i<len; i++) x[i] *= a;
24 else aX((
float)a, (
float*)x, len);
28 template <
typename Float>
29 inline void mXpY(Float *x, Float *y,
int len) {
30 for (
int i=0; i<len; i++) y[i] -= x[i];
35 else mXpY((
float*)x, (
float*)y, len);
40 template <
typename Float>
41 inline double norm2(Float *v,
int len) {
43 for (
int i=0; i<len; i++) sum += v[i]*v[i];
50 else return norm2((
float*)v, len);
54 template <
typename Float>
55 static inline void xpay(Float *x, Float a, Float *y,
int len) {
56 for (
int i=0; i<len; i++) y[i] = x[i] + a*y[i];
61 else xpay((
float*)x, (
float)a, (
float*)y, length);
67 xpay((
double _Complex *)x, (
double _Complex)a, (
double _Complex *)y, length / 2);
69 xpay((
float _Complex *)x, (
float _Complex)a, (
float _Complex *)y, length / 2);
static void sum(Float *dst, Float *a, Float *b, int cnt)
enum QudaPrecision_s QudaPrecision
void ax(double a, void *x, int len, QudaPrecision precision)
void aXpY(Float a, Float *x, Float *y, int len)
void mXpY(Float *x, Float *y, int len)
static void xpay(Float *x, Float a, Float *y, int len)
void cxpay(void *x, double _Complex a, void *y, int length, QudaPrecision precision)
double norm2(Float *v, int len)
void mxpy(void *x, void *y, int len, QudaPrecision precision)
double norm_2(void *v, int len, QudaPrecision precision)
void aX(Float a, Float *x, int len)
void axpy(double a, void *x, void *y, int len, QudaPrecision precision)
void comm_allreduce(double *data)