8                                                               {
   13 
   14  {
   16    t4ddg_3_1(
i, 
j, 
k, 
l) = t2s_2(
i, 
j) * t2s_3(
k, 
l);
 
   17    t4ddg_3_2(
i, 
j, 
k, 
l) = t2s_3(
i, 
j) * t2s_2(
k, 
l);
 
   18    t4ddg_3_3(
i, 
j, 
k, 
l) = t4ddg_3_1(
i, 
j, 
k, 
l);
 
   19    t4ddg_3_3(
i, 
j, 
k, 
l) += t4ddg_3_2(
i, 
j, 
k, 
l);
 
   20 
   21    for (int ii = 0; ii != 3; ++ii)
   22      for (int jj = 0; jj != 3; ++jj)
   23        for (int kk = 0; kk != 3; ++kk)
   24          for (int ll = 0; ll != 3; ++ll) {
   26                              t4ddg_3_1(ii, jj, kk, ll) -
   27                              t4ddg_3_2(ii, jj, kk, ll),
   28                          "T4ddg(i,j,k,l)+=T4ddg(i,j,k,l)(" + to_string(ii) +
   29                              "," + to_string(jj) + "," + to_string(kk) + "," +
   30                              to_string(ll) + ")");
   31          }
   32 
   34    t4ddg_3_4(
i, 
j, 
k, 
l) = t4ddg_3_3(
i, 
j, 
k, 
l);
 
   35    t4ddg_3_4(
i, 
j, 
k, 
l) -= t4ddg_3_3(
i, 
j, 
k, 
l);
 
   36    for (int ii = 0; ii != 3; ++ii)
   37      for (int jj = 0; jj != 3; ++jj)
   38        for (int kk = 0; kk != 3; ++kk)
   39          for (int ll = 0; ll != 3; ++ll) {
   41                          "T4ddg(i,j,k,l)-=T4ddg(i,j,k,l)(" + to_string(ii) +
   42                              "," + to_string(jj) + "," + to_string(kk) + "," +
   43                              to_string(ll) + ")");
   44          }
   45  }
   46 
   47  {
   49    t4ddg_3_1(
i, 
j, 
k, 
l) = t2s_2(
i, 
j) * t2s_3(
k, 
l);
 
   50    t4ddg_3_2(
i, 
j, 
k, 
l) = t4ddg_3_1(
i, 
j, 
k, 
l);
 
   51    t4ddg_3_1(
i, 
j, 
k, 
l) *= 2.;
 
   52    for (int ii = 0; ii != 3; ++ii)
   53      for (int jj = 0; jj != 3; ++jj)
   54        for (int kk = 0; kk != 3; ++kk)
   55          for (int ll = 0; ll != 3; ++ll) {
   57                t4ddg_3_1(ii, jj, kk, ll) - 2 * t4ddg_3_2(ii, jj, kk, ll),
   58                "T4ddg(i,j,k,l)*=2(" + to_string(ii) + "," + to_string(jj) +
   59                    "," + to_string(kk) + "," + to_string(ll) + ")");
   60          }
   61  }
   62 
   63  {
   65    t4ddg_3_1(
i, 
j, 
k, 
l) = t2s_2(
i, 
j) * t2s_3(
k, 
l);
 
   66 
   68    for (int ii = 0; ii != 3; ++ii)
   69      for (int jj = 0; jj != 3; ++jj)
   70        t2(ii, jj) = 1 + ii + 10 * jj;
   71 
   73    t2_1(
i, 
k) = t4ddg_3_1(
i, 
j, 
k, 
l) * t2(
j, 
l);
 
   74    t2_2(
i, 
k) = t2s_2(
i, 
j) * (t2s_3(
k, 
l) * t2(
j, 
l));
 
   75 
   76    for (int ii = 0; ii != 3; ++ii)
   77      for (int jj = 0; jj != 3; ++jj) {
   78        test_for_zero(t2_1(ii, jj) - t2_2(ii, jj), 
"T4ddg(i,j,k,l)*T2(j,l)(" +
 
   79                                                       to_string(ii) + "," +
   80                                                       to_string(jj) + ")");
   81      }
   82  }
   83 
   84  {
   86    t4ddg_3_1(
i, 
j, 
k, 
l) = t2s_2(
i, 
j) * t2s_3(
k, 
l);
 
   87 
   89    for (int ii = 0; ii != 3; ++ii)
   90      for (int jj = 0; jj != 3; ++jj)
   91        t2(ii, jj) = 1 + ii + 10 * jj;
   92 
   94    t2s_1(
k, 
l) = t4ddg_3_1(
i, 
j, 
k, 
l) * t2(
i, 
j);
 
   95 
   97    for (int kk = 0; kk != 3; ++kk)
   98      for (int ll = kk; ll != 3; ++ll)
   99        for (int ii = 0; ii != 3; ++ii)
  100          for (int jj = 0; jj != 3; ++jj)
  101            t2s_4(kk, ll) += t2s_3(kk, ll) * (t2s_2(ii, jj) * t2(ii, jj));
  102 
  103    for (int ii = 0; ii != 3; ++ii)
  104      for (int jj = 0; jj != 3; ++jj) {
  105        test_for_zero(t2s_1(ii, jj) - t2s_4(ii, jj), 
"T4ddg(i,j,k,l)*T2(i,j)(" +
 
  106                                                         to_string(ii) + "," +
  107                                                         to_string(jj) + ")");
  108      }
  109  }
  110}
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
void test_for_zero(const T &t, const std::string &s)