30 Solver(invParam, profile), mat(mat), matSloppy(matSloppy), matPrecon(matPrecon),
init(false) {
38 if (wp && wp != pp)
delete wp;
39 if (zp && zp != pp)
delete zp;
107 printfQuda(
"Warning: inverting on zero-field source\n");
140 const bool use_heavy_quark_res =
143 int heavy_quark_check = 10;
159 double rNorm = sqrt(r2);
161 double maxrr = rNorm;
162 double maxrx = rNorm;
164 PrintStats(
"BiCGstab", k, r2, b2, heavy_quark_res);
180 if (abs(rho*alpha) == 0.0) beta = 0.0;
181 else beta = (rho/rho0) * (alpha/omega);
189 matSloppy(v, w, tmp);
191 matSloppy(v, p, tmp);
194 if (abs(rho) == 0.0) alpha = 0.0;
203 matSloppy(t, z, tmp);
205 matSloppy(t, rSloppy, tmp);
210 omega =
quda::Complex(omega_t2.x / omega_t2.z, omega_t2.y / omega_t2.z);
227 if (use_heavy_quark_res && k%heavy_quark_check==0) {
234 if (rNorm > maxrx) maxrx = rNorm;
235 if (rNorm > maxrr) maxrr = rNorm;
239 int updateR = (rNorm < delta*maxrr) ? 1 : 0;
261 PrintStats(
"BiCGstab", k, r2, b2, heavy_quark_res);
285 #if (__COMPUTE_CAPABILITY__ >= 200)