23   assert(Nvol == v2.
nvol());
 
   24   assert(v1.
nex() == 1);
 
   25   assert(v2.
nex() == 1);
 
   27   double *w1 = 
const_cast<Field_F *
>(&v1)->ptr(0);
 
   28   double *w2 = 
const_cast<Field_F *
>(&v2)->ptr(0);
 
   41   for (
int id = 0; 
id < 
ND; ++id) {
 
   46   for (
int ss = 0; ss < Nvol_s; ++ss) {
 
   47     int site = 
NCD2 * (ss + time * Nvol_s);
 
   49     for (
int cc = 0; cc < 
NC; ++cc) {
 
   50       cr[0] += w1[2 * cc + id21 + site] * w2[2 * cc + id11 + site]
 
   51                + w1[2 * cc + 1 + id21 + site] * w2[2 * cc + 1 + id11 + site];
 
   52       cr[1] += w1[2 * cc + id22 + site] * w2[2 * cc + id12 + site]
 
   53                + w1[2 * cc + 1 + id22 + site] * w2[2 * cc + 1 + id12 + site];
 
   54       cr[2] += w1[2 * cc + id23 + site] * w2[2 * cc + id13 + site]
 
   55                + w1[2 * cc + 1 + id23 + site] * w2[2 * cc + 1 + id13 + site];
 
   56       cr[3] += w1[2 * cc + id24 + site] * w2[2 * cc + id14 + site]
 
   57                + w1[2 * cc + 1 + id24 + site] * w2[2 * cc + 1 + id14 + site];
 
   59       ci[0] += w1[2 * cc + id21 + site] * w2[2 * cc + 1 + id11 + site]
 
   60                - w1[2 * cc + 1 + id21 + site] * w2[2 * cc + id11 + site];
 
   61       ci[1] += w1[2 * cc + id22 + site] * w2[2 * cc + 1 + id12 + site]
 
   62                - w1[2 * cc + 1 + id22 + site] * w2[2 * cc + id12 + site];
 
   63       ci[2] += w1[2 * cc + id23 + site] * w2[2 * cc + 1 + id13 + site]
 
   64                - w1[2 * cc + 1 + id23 + site] * w2[2 * cc + id13 + site];
 
   65       ci[3] += w1[2 * cc + id24 + site] * w2[2 * cc + 1 + id14 + site]
 
   66                - w1[2 * cc + 1 + id24 + site] * w2[2 * cc + id14 + site];
 
   70   corr = gm.
value(0) * cmplx(cr[0], ci[0])
 
   71          + gm.
value(1) * cmplx(cr[1], ci[1])
 
   72          + gm.
value(2) * cmplx(cr[2], ci[2])
 
   73          + gm.
value(3) * cmplx(cr[3], ci[3]);
 
   85   assert(Nvol == v2.
nvol());
 
   86   assert(Nvol == v3.
nvol());
 
   87   assert(v1.
nex() == 1);
 
   88   assert(v2.
nex() == 1);
 
   89   assert(v3.
nex() == 1);
 
   91   double *w1 = 
const_cast<Field_F *
>(&v1)->ptr(0);
 
   92   double *w2 = 
const_cast<Field_F *
>(&v2)->ptr(0);
 
   93   double *w3 = 
const_cast<Field_F *
>(&v3)->ptr(0);
 
  101   for (
int id = 0; 
id < 
ND; ++id) {
 
  102     gmd[id] = gm.
index(
id);
 
  108   for (
int ss = 0; ss < Nvol_s; ++ss) {
 
  109     int site = 
NCD2 * (ss + time * Nvol_s);
 
  111     for (
int id = 0; 
id < 
ND; ++id) {
 
  112       int iw1 = 
id * NC2 + site;
 
  113       int iw2 = gmd[id] * NC2 + site;
 
  116       cr[id] += (w1[
C1 + iw1] * w2[
C2 + iw2]
 
  117                  - w1[
C1 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C3 + iw3]
 
  118                 - (w1[
C1 + iw1] * w2[
C2 + 1 + iw2]
 
  119                    + w1[
C1 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C3 + 1 + iw3];
 
  120       ci[id] += (w1[
C1 + iw1] * w2[
C2 + iw2]
 
  121                  - w1[
C1 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C3 + 1 + iw3]
 
  122                 + (w1[
C1 + iw1] * w2[
C2 + 1 + iw2]
 
  123                    + w1[
C1 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C3 + iw3];
 
  125       cr[id] += (w1[
C2 + iw1] * w2[
C3 + iw2]
 
  126                  - w1[
C2 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C1 + iw3]
 
  127                 - (w1[
C2 + iw1] * w2[
C3 + 1 + iw2]
 
  128                    + w1[
C2 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C1 + 1 + iw3];
 
  129       ci[id] += (w1[
C2 + iw1] * w2[
C3 + iw2]
 
  130                  - w1[
C2 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C1 + 1 + iw3]
 
  131                 + (w1[
C2 + iw1] * w2[
C3 + 1 + iw2]
 
  132                    + w1[
C2 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C1 + iw3];
 
  134       cr[id] += (w1[
C3 + iw1] * w2[
C1 + iw2]
 
  135                  - w1[
C3 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C2 + iw3]
 
  136                 - (w1[
C3 + iw1] * w2[
C1 + 1 + iw2]
 
  137                    + w1[
C3 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C2 + 1 + iw3];
 
  138       ci[id] += (w1[
C3 + iw1] * w2[
C1 + iw2]
 
  139                  - w1[
C3 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C2 + 1 + iw3]
 
  140                 + (w1[
C3 + iw1] * w2[
C1 + 1 + iw2]
 
  141                    + w1[
C3 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C2 + iw3];
 
  143       cr[id] -= (w1[
C3 + iw1] * w2[
C2 + iw2]
 
  144                  - w1[
C3 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C1 + iw3]
 
  145                 - (w1[
C3 + iw1] * w2[
C2 + 1 + iw2]
 
  146                    + w1[
C3 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C1 + 1 + iw3];
 
  147       ci[id] -= (w1[
C3 + iw1] * w2[
C2 + iw2]
 
  148                  - w1[
C3 + 1 + iw1] * w2[
C2 + 1 + iw2]) * w3[
C1 + 1 + iw3]
 
  149                 + (w1[
C3 + iw1] * w2[
C2 + 1 + iw2]
 
  150                    + w1[
C3 + 1 + iw1] * w2[
C2 + iw2]) * w3[
C1 + iw3];
 
  152       cr[id] -= (w1[
C2 + iw1] * w2[
C1 + iw2]
 
  153                  - w1[
C2 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C3 + iw3]
 
  154                 - (w1[
C2 + iw1] * w2[
C1 + 1 + iw2]
 
  155                    + w1[
C2 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C3 + 1 + iw3];
 
  156       ci[id] -= (w1[
C2 + iw1] * w2[
C1 + iw2]
 
  157                  - w1[
C2 + 1 + iw1] * w2[
C1 + 1 + iw2]) * w3[
C3 + 1 + iw3]
 
  158                 + (w1[
C2 + iw1] * w2[
C1 + 1 + iw2]
 
  159                    + w1[
C2 + 1 + iw1] * w2[
C1 + iw2]) * w3[
C3 + iw3];
 
  161       cr[id] -= (w1[
C1 + iw1] * w2[
C3 + iw2]
 
  162                  - w1[
C1 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C2 + iw3]
 
  163                 - (w1[
C1 + iw1] * w2[
C3 + 1 + iw2]
 
  164                    + w1[
C1 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C2 + 1 + iw3];
 
  165       ci[id] -= (w1[
C1 + iw1] * w2[
C3 + iw2]
 
  166                  - w1[
C1 + 1 + iw1] * w2[
C3 + 1 + iw2]) * w3[
C2 + 1 + iw3]
 
  167                 + (w1[
C1 + iw1] * w2[
C3 + 1 + iw2]
 
  168                    + w1[
C1 + 1 + iw1] * w2[
C3 + iw2]) * w3[
C2 + iw3];
 
  171   corr = cmplx(0.0, 0.0);
 
  172   for (
int id = 0; 
id < 
ND; ++id) {
 
  173     corr += cmplx(cr[
id], ci[
id]) * gm.
value(
id);
 
void contract_at_t(dcomplex &corr, const GammaMatrix &gm, const Field_F &f1, const Field_F &f2, int time)
contraction for meson at a given time t. 
 
Wilson-type fermion field. 
 
dcomplex value(int row) const