float[][][] q = new float[n3][n2][n1]; float[][][] r = new float[n3][n2][n1]; scopy(b,r); a.apply(x,q); saxpy(-1.0f,q,r); // r = b-Ax scopy(r,d); float delta = sdot(r,r); float dq = sdot(d,q); float alpha = delta/dq; saxpy( alpha,d,x); if (iter%100<99) { saxpy(-alpha,q,r); } else { scopy(b,r); a.apply(x,q); saxpy(-1.0f,q,r);
float[][][] r = new float[n3][n2][n1]; float[][][] s = new float[n3][n2][n1]; scopy(b,r); a.apply(x,q); saxpy(-1.0f,q,r); // r = b-Ax float bnorm = sqrt(sdot(b,b)); float rnorm = sqrt(sdot(r,r)); saxpy( alpha,d,x); // x = x+alpha*d if (iter%100<99) { saxpy(-alpha,q,r); // r = r-alpha*q } else { scopy(b,r); a.apply(x,q); saxpy(-1.0f,q,r); // r = b-Ax