int Ndiag  = N5*(4*24) + (N5-1)*(8*24) + 3*24;
int Ndiag  = (4*(N5-2)+10)*Nc*Ns;
int main(int argc, char **argv){  // Put the machine into a known state  Chroma::initialize(&argc, &argv);  // Setup the layout  const int foo[] = {8,8,8,8};  multi1d<int> nrow(Nd);  nrow = foo;  // Use only Nd elements  Layout::setLattSize(nrow);  Layout::create();  XMLFileWriter& xml_out = Chroma::getXMLOutputInstance();  //! Test out dslash  multi1d<LatticeColorMatrix> u(Nd);  for(int m=0; m < u.size(); ++m)    gaussian(u[m]);  //! Create a linear operator  QDPIO::cout << "Constructing DWDslash" << endl;  // Create a FermBC with only periodic BC. Note the handle is on an abstract type.  Handle<FermBC<MLF> >  fbc_a(new PeriodicFermBC<MLF>);  // DWDslash class can be optimised  int N5 = 8;  Real WilsonMass = 1.5;  Real m_q = 0.01;#if 0  EvenOddPrecDWFermActArray S_pdwf(fbc_a,WilsonMass,m_q,N5);#else  EvenOddPrecZoloNEFFermActArrayParams params;  params.OverMass = WilsonMass;  params.Mass = m_q;  params.b5 = 1.0;  params.c5 = 0.0;  params.N5 = N5;  params.approximation_type = COEFF_TYPE_TANH_UNSCALED;  params.ApproxMin = 0.0;  params.ApproxMax = 0.0;  EvenOddPrecZoloNEFFermActArray S_pdwf(fbc_a,params);#endif  Handle<const ConnectState> state(S_pdwf.createState(u));  const EvenOddPrecLinearOperator< MLF, LCM >* D_pdwf = S_pdwf.linOp(state);   QDPIO::cout << "Done" << endl;  MLF psi(S_pdwf.size()), chi(S_pdwf.size());  for(int n=0; n < S_pdwf.size(); ++n)    random(psi[n]);  chi = zero;  for(int isign = 1; isign >= -1; isign -= 2)   {    QDPIO::cout << "Applying D" << endl;    QDPIO::cout << " isign = " << isign << endl;          PlusMinus is = (isign == 1 ? PLUS : MINUS);    clock_t myt1;    clock_t myt2;    double mydt;//    int Ndiag  = (N5-2)*(5*24) + 2*(8*24);    int Ndiag  = N5*(4*24) + (N5-1)*(8*24) + 3*24;   // this is what I get counting flops in code    int Neo    = N5*(1320+24);    int Nflops = 2*Ndiag + 2*Neo + N5*24;    // even-even-inv piece    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<MLF,LCM>::evenEvenInvLinOp, chi, psi, is);    QDPIO::cout << "EvenEven: The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Ndiag)/mydt) << ") Mflops " << endl;          // odd-odd piece    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<MLF,LCM>::oddOddLinOp, chi, psi, is);    QDPIO::cout << "OddOdd: The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Ndiag)/mydt) << ") Mflops " << endl;          // even-odd    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<MLF,LCM>::evenOddLinOp, chi, psi, is);    QDPIO::cout << "EvenOdd: The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Neo)/mydt) << ") Mflops " << endl;    // odd-even    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<MLF,LCM>::oddEvenLinOp, chi, psi, (isign == 1 ? PLUS : MINUS));    QDPIO::cout << "Odd-Even: The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Neo)/mydt) << ") Mflops " << endl;    // Total thing    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<MLF,LCM>::operator(), chi, psi, is);    QDPIO::cout << "Total: The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Nflops)/mydt) << ") Mflops " << endl;  }    delete D_pdwf;  // Time to bolt  Chroma::finalize();  exit(0);}