37   const string str_vlevel = params.
get_string(
"verbose_level");
 
   46   err += params.
fetch_int(
"maximum_number_of_iteration", Niter);
 
   47   err += params.
fetch_double(
"convergence_criterion_squared", Stop_cond);
 
   85                            const std::vector<double>& sigma,
 
   87                            int& Nconv, 
double& diff)
 
   89   int Nshift = sigma.size();
 
   94   for (
int i = 0; i < Nshift; ++i) {
 
  113   bool is_converged = 
false;
 
  115   for (
int iter = 0; iter < 
m_Niter; iter++) {
 
  133   std::vector<double> diffs(Nshift);
 
  134   for (
int i = 0; i < Nshift; ++i) {
 
  138   for (
int i = 0; i < Nshift; ++i) {
 
  156     for (
int i = 0; i < Nshift; ++i) {
 
  157       if (diffs[i] > diff2) diff2 = diffs[i];
 
  166   for (
int i = 0; i < Nshift; ++i) {
 
  177   int Nshift = 
p.size();
 
  181   for (
int i = 0; i < Nshift; ++i) {
 
  206   double pa_p = 
dot(
s, 
p[0]);
 
  207   double beta = -rr_p / pa_p;
 
  213   double alpha = rr / rr_p;
 
  226   for (
int ish = 1; ish < 
Nshift2; ++ish) {
 
  227     double zeta = (alpha_h - 
csh2[ish] * beta) / 
zeta1[ish]
 
  228                   + (1.0 - alpha_h) / 
zeta2[ish];
 
  230     double zr      = zeta / 
zeta1[ish];
 
  231     double beta_s  = beta * zr;
 
  232     double alpha_s = alpha * zr * zr;
 
  234     axpy(
x[ish], -beta_s, 
p[ish]);
 
  235     scal(
p[ish], alpha_s);
 
  238     double ppr = 
p[ish].norm2();
 
  253   for (
int ish = Nshift2 - 1; ish >= 0; --ish) {
 
  285     zeta1.resize(Nshift);
 
  286     zeta2.resize(Nshift);
 
  290     for (
int i = 0; i < Nshift; ++i) {
 
  291       p[i].reset(Nin, Nvol, Nex);
 
  292       x[i].reset(Nin, Nvol, Nex);
 
  295       csh2[i]  = sigma[i] - sigma[0];
 
void scal(Field &x, const double a)
scal(x, a): x = a * x 
 
void detailed(const char *format,...)
 
void Register_string(const string &, const string &)
 
static const std::string class_name
 
void reset_field(const Field &b, const std::vector< double > &sigma, const int Nshift)
 
double dot(const Field &y, const Field &x)
 
void solve_init(double &)
 
void general(const char *format,...)
 
void Register_int(const string &, const int)
 
Container of Field-type object. 
 
void set_parameters(const Parameters ¶ms)
 
void copy(Field &y, const Field &x)
copy(y, x): y = x 
 
std::vector< double > csh2
 
std::vector< double > zeta2
 
int square_non_zero(const double v)
 
void reset(const int Nin, const int Nvol, const int Nex, const element_type cmpl=COMPLEX)
 
Parameters_Shiftsolver_CG()
 
void aypx(const double a, Field &y, const Field &x)
aypx(y, a, x): y := a * y + x 
 
void paranoiac(const char *format,...)
 
void axpy(Field &y, const double a, const Field &x)
axpy(y, a, x): y := a * x + y 
 
void crucial(const char *format,...)
 
std::vector< double > zeta1
 
virtual void mult(Field &, const Field &)=0
multiplies fermion operator to a given field (2nd argument) 
 
int non_negative(const int v)
 
void Register_double(const string &, const double)
 
int fetch_double(const string &key, double &val) const 
 
void solve_step(double &)
 
string get_string(const string &key) const 
 
Bridge::VerboseLevel m_vl
 
int fetch_int(const string &key, int &val) const 
 
static VerboseLevel set_verbose_level(const std::string &str)
 
void solve(std::vector< Field > &solution, const std::vector< double > &shift, const Field &source, int &Nconv, double &diff)