7 template <
typename Float>
9 for (
int i=0; i<N; i++) y[i] = a*x[i] + b*y[i];
17 axpby((
float)a, (
float*)x.
V(), (float)b, (
float*)y.
V(), x.
Length());
36 axpby((
float)a, (
float*)x.
V(), 1.0f, (
float*)y.
V(), x.
Length());
46 axpby(1.0f, (
float*)x.
V(), (float)a, (
float*)y.
V(), x.
Length());
64 axpby(0.0f, (
float*)x.
V(), (float)a, (
float*)x.
V(), x.
Length());
69 template <
typename Float>
70 void caxpby(
const std::complex<Float> &a,
const std::complex<Float> *
x,
71 const std::complex<Float> &b, std::complex<Float> *
y,
int N) {
73 for (
int i=0; i<N; i++) {
74 y[i] = a*x[i] + b*y[i];
86 caxpby((std::complex<float>)a, (std::complex<float>*)x.
V(), std::complex<float>(1.0),
87 (std::complex<float>*)y.
V(), x.
Length()/2);
98 caxpby((std::complex<float>)a, (std::complex<float>*)x.
V(), (std::complex<float>)b,
99 (std::complex<float>*)y.
V(), x.
Length()/2);
104 template <
typename Float>
105 void caxpbypcz(
const std::complex<Float> &a,
const std::complex<Float> *
x,
106 const std::complex<Float> &b,
const std::complex<Float> *
y,
107 const std::complex<Float> &c, std::complex<Float> *z,
int N) {
109 for (
int i=0; i<N; i++) {
110 z[i] = a*x[i] + b*y[i] + c*z[i];
123 caxpbypcz(std::complex<float>(1, 0), (std::complex<float>*)x.
V(), (std::complex<float>)a, (std::complex<float>*)y.
V(),
124 (std::complex<float>)b, (std::complex<float>*)z.
V(), x.
Length()/2);
150 caxpbypcz((std::complex<float>)a, (std::complex<float>*)x.
V(),
151 (std::complex<float>)b, (std::complex<float>*)y.
V(),
152 (std::complex<float>)(1.0f), (std::complex<float>*)z.
V(), x.
Length()/2);
159 template <
typename Float>
162 for (
int i=0; i<N; i++) norm2 += a[i]*a[i];
184 template <
typename Float>
187 for (
int i=0; i<N; i++) dot += a[i]*b[i];
210 template <
typename Float>
213 for (
int i=0; i<N; i++) dot +=
conj(a[i])*b[i];
240 return make_double3(real(dot), imag(dot), norm);
246 return make_double3(real(dot), imag(dot), norm);
309 template <
typename Float>
312 double3 sum = make_double3(0.0, 0.0, 0.0);
313 for (
int i = 0; i<volume; i++) {
317 for (
int j=0; j<Nint; j++) {
325 sum.z += (x2 > 0.0) ? (r2 /
x2) : 1.0;
334 rtn = HeavyQuarkResidualNorm<double>((
const double*)(x.
V()), (
const double*)(r.
V()),
337 rtn = HeavyQuarkResidualNorm<float>((
const float*)(x.
V()), (
const float*)(r.
V()),
void caxpbypcz(const std::complex< Float > &a, const std::complex< Float > *x, const std::complex< Float > &b, const std::complex< Float > *y, const std::complex< Float > &c, std::complex< Float > *z, int N)
void caxpbypzYmbwCpu(const Complex &, const cpuColorSpinorField &, const Complex &, cpuColorSpinorField &, cpuColorSpinorField &, const cpuColorSpinorField &)
void mxpyCpu(const cpuColorSpinorField &x, cpuColorSpinorField &y)
Complex xpaycDotzyCpu(const cpuColorSpinorField &x, const double &a, cpuColorSpinorField &y, const cpuColorSpinorField &z)
__host__ __device__ ValueType norm(const complex< ValueType > &z)
Returns the magnitude of z squared.
void cabxpyAxCpu(const double &a, const Complex &b, cpuColorSpinorField &x, cpuColorSpinorField &y)
void axpby(const Float &a, const Float *x, const Float &b, Float *y, const int N)
void xpayCpu(const cpuColorSpinorField &x, const double &a, cpuColorSpinorField &y)
std::complex< double > Complex
void xpyCpu(const cpuColorSpinorField &x, cpuColorSpinorField &y)
void caxpby(const std::complex< Float > &a, const std::complex< Float > *x, const std::complex< Float > &b, std::complex< Float > *y, int N)
void axpyZpbxCpu(const double &a, cpuColorSpinorField &x, cpuColorSpinorField &y, const cpuColorSpinorField &z, const double &b)
Complex cDotProduct(const std::complex< Float > *a, const std::complex< Float > *b, const int N)
cudaColorSpinorField * tmp
void caxpbyCpu(const Complex &a, const cpuColorSpinorField &x, const Complex &b, cpuColorSpinorField &y)
double3 caxpbypzYmbwcDotProductUYNormYCpu(const Complex &a, const cpuColorSpinorField &x, const Complex &b, cpuColorSpinorField &y, cpuColorSpinorField &z, const cpuColorSpinorField &w, const cpuColorSpinorField &u)
FloatingPoint< float > Float
Complex cDotProductCpu(const cpuColorSpinorField &, const cpuColorSpinorField &)
void reduceDoubleArray(double *, const int len)
void cxpaypbzCpu(const cpuColorSpinorField &x, const Complex &b, const cpuColorSpinorField &y, const Complex &c, cpuColorSpinorField &z)
void caxpbypzCpu(const Complex &, cpuColorSpinorField &, const Complex &, cpuColorSpinorField &, cpuColorSpinorField &)
void caxpyCpu(const Complex &a, const cpuColorSpinorField &x, cpuColorSpinorField &y)
void axpbyCpu(const double &a, const cpuColorSpinorField &x, const double &b, cpuColorSpinorField &y)
double reDotProduct(const Float *a, const Float *b, const int N)
void axpyBzpcxCpu(const double &a, cpuColorSpinorField &x, cpuColorSpinorField &y, const double &b, const cpuColorSpinorField &z, const double &c)
void axCpu(const double &a, cpuColorSpinorField &x)
double cabxpyAxNormCpu(const double &a, const Complex &b, cpuColorSpinorField &x, cpuColorSpinorField &y)
void caxpyXmazCpu(const Complex &a, cpuColorSpinorField &x, cpuColorSpinorField &y, cpuColorSpinorField &z)
void caxpbypczpwCpu(const Complex &, cpuColorSpinorField &, const Complex &, cpuColorSpinorField &, const Complex &, cpuColorSpinorField &, cpuColorSpinorField &)
double caxpyNormCpu(const Complex &a, cpuColorSpinorField &x, cpuColorSpinorField &y)
QudaPrecision Precision() const
void reduceDouble(double &)
double normCpu(const cpuColorSpinorField &b)
double3 HeavyQuarkResidualNorm(const Float *x, const Float *r, const int volume, const int Nint)
double axpyNormCpu(const double &a, const cpuColorSpinorField &x, cpuColorSpinorField &y)
double reDotProductCpu(const cpuColorSpinorField &a, const cpuColorSpinorField &b)
double3 cDotProductNormACpu(const cpuColorSpinorField &a, const cpuColorSpinorField &b)
double caxpyXmazNormXCpu(const Complex &a, cpuColorSpinorField &x, cpuColorSpinorField &y, cpuColorSpinorField &z)
double3 HeavyQuarkResidualNormCpu(cpuColorSpinorField &x, cpuColorSpinorField &r)
double xmyNormCpu(const cpuColorSpinorField &a, cpuColorSpinorField &b)
__host__ __device__ ValueType conj(ValueType x)
Complex caxpyDotzyCpu(const Complex &a, cpuColorSpinorField &x, cpuColorSpinorField &y, cpuColorSpinorField &z)
double3 cDotProductNormBCpu(const cpuColorSpinorField &a, const cpuColorSpinorField &b)
double norm2(const ColorSpinorField &)
void axpyCpu(const double &a, const cpuColorSpinorField &x, cpuColorSpinorField &y)