8                                                       {
   14 
   18 
   21 
   22  
   23  {
   25    t_4(
j, 
k, 
l, N0) = t3_2(
j, 
k, 
l);
 
   26    t_4(
j, 
k, 
l, N1) = t32(
j, 
k, 
l);
 
   27    t_4(
j, 
k, 
l, N2) = t32(
j, 
k, 
l);
 
   28    for (int ii = 0; ii != 2; ++ii)
   29      for (int jj = 0; jj != 3; ++jj)
   30        for (int kk = 0; kk != 4; ++kk) {
   32                        "T4(i,j,k,N0)(" + to_string(ii) + "," + to_string(jj) +
   33                            "," + to_string(kk) + ")");
   34          for (int ll : {1, 2}) {
   35            test_for_zero(t_4(ii, jj, kk, ll), 
"T4(i,j,k,ll)(" + to_string(ii) +
 
   36                                                   "," + to_string(jj) + "," +
   37                                                   to_string(kk) + "," +
   38                                                   to_string(ll) + ")");
   39          }
   40        }
   41  }
   42  {
   44    t_4(
j, 
k, 
l, N0) = t32(
j, 
k, 
l);
 
   45    t_4(
j, 
k, 
l, N1) = t3_2(
j, 
k, 
l);
 
   46    t_4(
j, 
k, 
l, N2) = t32(
j, 
k, 
l);
 
   47    for (int ii = 0; ii != 2; ++ii)
   48      for (int jj = 0; jj != 3; ++jj)
   49        for (int kk = 0; kk != 4; ++kk) {
   51                        "T4(i,j,k,N1)(" + to_string(ii) + "," + to_string(jj) +
   52                            "," + to_string(kk) + ")");
   53          for (int ll : {0, 2}) {
   54            test_for_zero(t_4(ii, jj, kk, ll), 
"T4(i,j,k,ll)(" + to_string(ii) +
 
   55                                                   "," + to_string(jj) + "," +
   56                                                   to_string(kk) + "," +
   57                                                   to_string(ll) + ")");
   58          }
   59        }
   60  }
   61  {
   63    t_4(
j, 
k, 
l, N0) = t32(
j, 
k, 
l);
 
   64    t_4(
j, 
k, 
l, N1) = t32(
j, 
k, 
l);
 
   65    t_4(
j, 
k, 
l, N2) = t3_2(
j, 
k, 
l);
 
   66    for (int ii = 0; ii != 2; ++ii)
   67      for (int jj = 0; jj != 3; ++jj)
   68        for (int kk = 0; kk != 4; ++kk) {
   70                        "T4(i,j,k,N2)(" + to_string(ii) + "," + to_string(jj) +
   71                            "," + to_string(kk) + ")");
   72          for (int ll : {0, 1}) {
   73            test_for_zero(t_4(ii, jj, kk, ll), 
"T4(i,j,k,ll)(" + to_string(ii) +
 
   74                                                   "," + to_string(jj) + "," +
   75                                                   to_string(kk) + "," +
   76                                                   to_string(ll) + ")");
   77          }
   78        }
   79  }
   80 
   81  
   82  {
   84    t_4(
j, 
k, N0, 
l) = t3_2(
j, 
k, 
l);
 
   85    t_4(
j, 
k, N1, 
l) = t32(
j, 
k, 
l);
 
   86    t_4(
j, 
k, N2, 
l) = t32(
j, 
k, 
l);
 
   87    for (int ii = 0; ii != 2; ++ii)
   88      for (int jj = 0; jj != 3; ++jj)
   89        for (int kk = 0; kk != 4; ++kk) {
   91                        "T4(i,j,N0,k)(" + to_string(ii) + "," + to_string(jj) +
   92                            "," + to_string(kk) + ")");
   93          for (int ll : {1, 2}) {
   94            test_for_zero(t_4(ii, jj, ll, kk), 
"T4(i,j,l, k)(" + to_string(ii) +
 
   95                                                   "," + to_string(jj) + "," +
   96                                                   to_string(ll) + "," +
   97                                                   to_string(kk) + ")");
   98          }
   99        }
  100  }
  101  {
  103    t_4(
j, 
k, N0, 
l) = t32(
j, 
k, 
l);
 
  104    t_4(
j, 
k, N1, 
l) = t3_2(
j, 
k, 
l);
 
  105    t_4(
j, 
k, N2, 
l) = t32(
j, 
k, 
l);
 
  106    for (int ii = 0; ii != 2; ++ii)
  107      for (int jj = 0; jj != 3; ++jj)
  108        for (int kk = 0; kk != 4; ++kk) {
  110                        "T4(i,j,N1,k)(" + to_string(ii) + "," + to_string(jj) +
  111                            "," + to_string(kk) + ")");
  112          for (int ll : {0, 2}) {
  113            test_for_zero(t_4(ii, jj, ll, kk), 
"T4(i,j,k,ll)(" + to_string(ii) +
 
  114                                                   "," + to_string(jj) + "," +
  115                                                   to_string(ll) + "," +
  116                                                   to_string(kk) + ")");
  117          }
  118        }
  119  }
  120  {
  122    t_4(
j, 
k, N0, 
l) = t32(
j, 
k, 
l);
 
  123    t_4(
j, 
k, N1, 
l) = t32(
j, 
k, 
l);
 
  124    t_4(
j, 
k, N2, 
l) = t3_2(
j, 
k, 
l);
 
  125    for (int ii = 0; ii != 2; ++ii)
  126      for (int jj = 0; jj != 3; ++jj)
  127        for (int kk = 0; kk != 4; ++kk) {
  129                        "T4(i,j,N2,k)(" + to_string(ii) + "," + to_string(jj) +
  130                            "," + to_string(kk) + ")");
  131          for (int ll : {0, 1}) {
  132            test_for_zero(t_4(ii, jj, ll, kk), 
"T4(i,j,k,ll)(" + to_string(ii) +
 
  133                                                   "," + to_string(jj) + "," +
  134                                                   to_string(ll) + "," +
  135                                                   to_string(kk) + ")");
  136          }
  137        }
  138  }
  139 
  140  
  141  {
  148    for (int ii = 0; ii != 3; ++ii)
  149      for (int jj = 0; jj != 3; ++jj)
  150        for (int kk = 0; kk != 2; ++kk)
  151          for (int ll = 0; ll != 2; ++ll) {
  152            t_4(ii, jj, kk, ll) = 1 + ii + 10. * jj + 100 * kk + 1000 * ll;
  153          }
  155    for (int ii = 0; ii != 3; ++ii)
  156      for (int jj = 0; jj != 3; ++jj)
  157        for (int kk = 0; kk != 2; ++kk)
  158          for (int ll = 0; ll != 2; ++ll) {
  160                              t_4(jj, ii, ll, kk),
  161                          "T4(i,j,k,l)||T4(j,i,l,k)(" + to_string(ii) + "," +
  162                              to_string(jj) + "," + to_string(ll) + "," +
  163                              to_string(kk) + ")");
  164          }
  165  }
  166 
  167  
  168  {
  172    for (int ii = 0; ii != 1; ++ii)
  173      for (int jj = 0; jj != 2; ++jj) {
  174        t_2_1(ii, jj) = 1 + ii + 10. * jj;
  175      }
  176    for (int kk = 0; kk != 3; ++kk)
  177      for (int ll = 0; ll != 4; ++ll) {
  178        t_2_2(kk, ll) = 1 + 100 * kk + 1000 * ll;
  179      }
  180    t_4(
i, 
j, 
k, 
l) = t_2_1(
i, 
j) * t_2_2(
k, 
l);
 
  182    for (int kk = 0; kk != 3; ++kk)
  183      for (int ll = 0; ll != 4; ++ll)
  184        for (int mm = 0; mm != 3; ++mm) {
  185          t_3_1(kk, ll, mm) = 1 + 100 * kk + 1000 * ll + 10000 * mm;
  186        }
  189    t_3_2(
i, 
j, 
m) = t_4(
i, 
j, 
k, 
l) * t_3_1(
k, 
l, 
m) -
 
  190                     t_2_1(
i, 
j) * (t_3_1(
k, 
l, 
m) * t_2_2(
k, 
l));
 
  191    for (int ii = 0; ii != 1; ++ii)
  192      for (int jj = 0; jj != 2; ++jj)
  193        for (int mm = 0; mm != 3; ++mm) {
  195                        "T4(i,j,k,l)*T3(k,l,m)(" + to_string(ii) + "," +
  196                            to_string(jj) + "," + to_string(mm) + ")");
  197        }
  198  }
  199 
  200  
  201  {
  205    for (int ii = 0; ii != 1; ++ii)
  206      for (int ll = 0; ll != 4; ++ll) {
  207        t_2_1(ii, ll) = 1 + ii + 10. * ll;
  208      }
  209    for (int jj = 0; jj != 2; ++jj)
  210      for (int kk = 0; kk != 3; ++kk) {
  211        t_2_2(jj, kk) = 1 + 100 * jj + 1000 * kk;
  212      }
  213    t_4(
i, 
j, 
k, 
l) = t_2_1(
i, 
l) * t_2_2(
j, 
k);
 
  215    for (int mm = 0; mm != 3; ++mm)
  216      for (int kk = 0; kk != 3; ++kk)
  217        for (int jj = 0; jj != 2; ++jj) {
  218          t_3_1(mm, kk, jj) = 1 + 100 * mm + 1000 * kk + 10000 * jj;
  219        }
  222    t_3_2(
i, 
l, 
m) = t_4(
i, 
j, 
k, 
l) * t_3_1(
m, 
k, 
j) -
 
  223                     t_2_1(
i, 
l) * (t_3_1(
m, 
k, 
j) * t_2_2(
j, 
k));
 
  224    for (int ii = 0; ii != 1; ++ii)
  225      for (int ll = 0; ll != 4; ++ll)
  226        for (int mm = 0; mm != 3; ++mm) {
  228                        "T4(i,j,k,l)*T3(m,k,j)(" + to_string(ii) + "," +
  229                            to_string(ll) + "," + to_string(mm) + ")");
  230        }
  231  }
  232 
  233}
FTensor::Index< 'i', SPACE_DIM > i
const double n
refractive index of diffusive medium
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
FTensor::Index< 'm', 3 > m
void test_for_zero(const T &t, const std::string &s)