int Ndiag  = (N5-2)*(5*24) + 2*(8*24);
int Ndiag  = N5*(4*24) + (N5-1)*(8*24) + 3*24;
int main(int argc, char **argv){  // Put the machine into a known state  QDP_initialize(&argc, &argv);  // Setup the layout  const int foo[] = {8,4,4,4};  multi1d<int> nrow(Nd);  nrow = foo;  // Use only Nd elements  Layout::setLattSize(nrow);  Layout::create();  XMLFileWriter xml("t_lwldslash.xml");  //! Test out dslash  multi1d<LatticeColorMatrix> u(Nd);  for(int m=0; m < u.size(); ++m)    gaussian(u[m]);  int N5 = 8;  multi1d<LatticeFermion> psi(N5), chi(N5);  for(int n=0; n < N5; ++n)    random(psi[n]);  chi = zero;  //! Create a linear operator  QDPIO::cout << "Constructing DWDslash" << endl;  // DWDslash class can be optimised  Real WilsonMass = 1.5;  Real m_q = 0.01;  EvenOddPrecDWFermActArray S_pdwf(WilsonMass,m_q,N5);  const ConnectStateProxy state(S_pdwf.createState(u));  const  EvenOddPrecLinearOperator< multi1d<LatticeFermion> >* D_pdwf = S_pdwf.linOp(state);   QDPIO::cout << "Done" << endl;  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 Neo    = N5*(1320+24);    int Nflops = 2*Ndiag + 2*Neo + N5*24;    // even-even-inv piece    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<multi1d<LatticeFermion> >::evenEvenInvLinOp, chi, psi, is);    QDPIO::cout << "The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Ndiag)/mydt) << ") Mflops " << endl;          // odd-odd piece    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<multi1d<LatticeFermion> >::oddOddLinOp, chi, psi, is);    QDPIO::cout << "The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Ndiag)/mydt) << ") Mflops " << endl;          // even-odd    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<multi1d<LatticeFermion> >::evenOddLinOp, chi, psi, is);    QDPIO::cout << "The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Neo)/mydt) << ") Mflops " << endl;    // odd-even    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<multi1d<LatticeFermion> >::oddEvenLinOp, chi, psi, (isign == 1 ? PLUS : MINUS));    QDPIO::cout << "The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Neo)/mydt) << ") Mflops " << endl;    // Total thing    mydt = time_func(D_pdwf, &EvenOddPrecLinearOperator<multi1d<LatticeFermion> >::operator(), chi, psi, is);    QDPIO::cout << "The time per lattice point is "<< mydt << " micro sec" 		<< " (" <<  ((double)(Nflops)/mydt) << ") Mflops " << endl;  }    delete D_pdwf;  // Time to bolt  QDP_finalize();  exit(0);}