QDPIO::cout << "Multi Qprop with CG on Gaussian source: " << n_count
QDPIO::cout << "Qprop with RelCG on Gaussian source: " << n_count
int main(int argc, char **argv){  // Put the machine into a known state  QDP_initialize(&argc, &argv);  App_input_t input;  XMLReader xml_in("DATA");  try {    read(xml_in, "/ovlapTest", input);  }   catch( const string& e) {     QDPIO::cerr << "Caught Exception : " << e << endl;    QDP_abort(1);  }  // Setup the lattice  Layout::setLattSize(input.param.nrow);  Layout::create();  multi1d<LatticeColorMatrix> u(Nd);  XMLReader gauge_file_xml, gauge_xml;  gaugeStartup(gauge_file_xml, gauge_xml, u, input.cfg);  XMLFileWriter xml_out("XMLDAT");  push(xml_out,"t_msumr");  // Measure the plaquette on the gauge  Double w_plaq, s_plaq, t_plaq, link;  MesPlq(u, w_plaq, s_plaq, t_plaq, link);  push(xml_out, "plaquette");  write(xml_out, "w_plaq", w_plaq);  write(xml_out, "s_plaq", s_plaq);  write(xml_out, "t_plaq", t_plaq);  write(xml_out, "link", link);  pop(xml_out);  // Create a FermBC  Handle<FermBC<LatticeFermion> >  fbc(new SimpleFermBC<LatticeFermion>(input.param.boundary));  const Zolotarev4DFermActParams& zolo4d = dynamic_cast<const Zolotarev4DFermActParams& > (*(input.param.FermActHandle));  // Construct Fermact -- now uses constructor from the zolo4d params  // struct  Zolotarev4DFermAct S(fbc, zolo4d, xml_out);  Handle<const ConnectState> connect_state(S.createState(u, zolo4d.StateInfo, xml_out,zolo4d.AuxFermActHandle->getMass()));  Handle<const ApproxLinearOperator<LatticeFermion> >  M( dynamic_cast<const ApproxLinearOperator<LatticeFermion>* >( S.linOp(connect_state) ) );  Handle<const ApproxLinearOperator<LatticeFermion> > MM( dynamic_cast<const ApproxLinearOperator<LatticeFermion>* >( S.lMdagM(connect_state) ) );  LatticeFermion chi;  LatticeFermion psi;    int n_count;  // Solve on chiral point source  multi1d<int> coord(4);  coord[0] = 0;  coord[1] = 0;  coord[2] = 0;  coord[3] = 0;  QDP::StopWatch swatch;  double t;  chi=zero;  srcfil(chi, coord, 0, 0);  psi = zero;  swatch.reset();  swatch.start();  S.qprop(psi,	  connect_state,	  chi,	  CG_INVERTER,	  input.param.invParam.RsdCG,	  input.param.invParam.MaxCG,	  n_count);  swatch.stop();  t = swatch.getTimeInSeconds();  QDPIO::cout << "Qprop with CG on Point source: " << n_count	      << " iters " << endl;  QDPIO::cout << "Wall Clock Time (CG, Point) = " << t << " seconds" << endl;  push(xml_out, "CGPoint");  write(xml_out, "n_count", n_count);  write(xml_out, "t" , t);  pop(xml_out);  psi = zero;  swatch.reset();  swatch.start();  S.qprop(psi,	  connect_state,	  chi,	  REL_CG_INVERTER,	  input.param.invParam.RsdCG,	  input.param.invParam.MaxCG,	  n_count);  swatch.stop();  t = swatch.getTimeInSeconds();  QDPIO::cout << "Qprop with RelCG on Point source: " << n_count	      << " iters " << endl;  QDPIO::cout << "Wall Clock Time (RelCG, Point) = " << t << " seconds" << endl;  push(xml_out, "CGPoint");  write(xml_out, "n_count", n_count);  write(xml_out, "t" , t);  pop(xml_out);  gaussian(chi);  chi /= sqrt(norm2(chi));#if 0   psi = zero;  swatch.reset();  swatch.start();  S.multiQprop(psi,	       input.param.MultiMasses,	       connect_state,	       chi,	       SUMR_INVERTER,	       input.param.invParam.RsdCG,	       1,	       input.param.invParam.MaxCG,	       n_count);  swatch.stop();  t = swatch.getTimeInSeconds();  QDPIO::cout << "Multi Qprop with SUMR on Gaussian source: " << n_count	      << " iters " << endl;  QDPIO::cout << "Wall Clock Time (SUMR, Gaussian) = " << t << " seconds" << endl;  push(xml_out, "MSUMRGauss");  write(xml_out, "n_count", n_count);  write(xml_out, "t" , t);  pop(xml_out);  psi = zero;  swatch.reset();  swatch.start();  S.multiQprop(psi,	       input.param.MultiMasses,	       connect_state,	       chi,	       CG_INVERTER,	       input.param.invParam.RsdCG,	       1,	       input.param.invParam.MaxCG,	       n_count);  swatch.stop();  t = swatch.getTimeInSeconds();  QDPIO::cout << "Multi Qprop with CG on Gaussian source: " << n_count	      << " iters " << endl;  QDPIO::cout << "Wall Clock Time (CG, Gaussian) = " << t << " seconds" << endl;  push(xml_out, "CGGauss");  write(xml_out, "n_count", n_count);  write(xml_out, "t" , t);  pop(xml_out);#endif  pop(xml_out);  QDP_finalize();      exit(0);}