7  template <
int Dim0, 
int Dim1, 
int Dim2, 
int Dim3, 
char i, 
char j, 
char k,
 
   14    template <
class B, 
class U>
 
   15    U 
eval(
const Tensor4_Expr<B, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &rhs,
 
   16           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   18      return rhs(N0, N1, N2, N3);
 
 
   21    template <
class B, 
class U>
 
   22    U 
eval(
const Tensor4_Expr<B, U, Dim0, Dim1, Dim3, Dim2, i, j, l, k> &rhs,
 
   23           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   25      return rhs(N0, N1, N3, N2);
 
 
   28    template <
class B, 
class U>
 
   29    U 
eval(
const Tensor4_Expr<B, U, Dim0, Dim2, Dim1, Dim3, i, k, j, l> &rhs,
 
   30           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   32      return rhs(N0, N2, N1, N3);
 
 
   35    template <
class B, 
class U>
 
   36    U 
eval(
const Tensor4_Expr<B, U, Dim0, Dim2, Dim3, Dim1, i, k, l, j> &rhs,
 
   37           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   39      return rhs(N0, N2, N3, N1);
 
 
   42    template <
class B, 
class U>
 
   43    U 
eval(
const Tensor4_Expr<B, U, Dim0, Dim3, Dim1, Dim2, i, l, j, k> &rhs,
 
   44           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   46      return rhs(N0, N3, N1, N2);
 
 
   49    template <
class B, 
class U>
 
   50    U 
eval(
const Tensor4_Expr<B, U, Dim0, Dim3, Dim2, Dim1, i, l, k, j> &rhs,
 
   51           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   53      return rhs(N0, N3, N2, N1);
 
 
   57    template <
class B, 
class U>
 
   58    U 
eval(
const Tensor4_Expr<B, U, Dim1, Dim0, Dim2, Dim3, j, i, k, l> &rhs,
 
   59           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   61      return rhs(N1, N0, N2, N3);
 
 
   64    template <
class B, 
class U>
 
   65    U 
eval(
const Tensor4_Expr<B, U, Dim1, Dim0, Dim3, Dim2, j, i, l, k> &rhs,
 
   66           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   68      return rhs(N1, N0, N3, N2);
 
 
   71    template <
class B, 
class U>
 
   72    U 
eval(
const Tensor4_Expr<B, U, Dim1, Dim2, Dim0, Dim3, j, k, i, l> &rhs,
 
   73           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   75      return rhs(N1, N2, N0, N3);
 
 
   78    template <
class B, 
class U>
 
   79    U 
eval(
const Tensor4_Expr<B, U, Dim1, Dim2, Dim3, Dim0, j, k, l, i> &rhs,
 
   80           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   82      return rhs(N1, N2, N3, N0);
 
 
   85    template <
class B, 
class U>
 
   86    U 
eval(
const Tensor4_Expr<B, U, Dim1, Dim3, Dim0, Dim2, j, l, i, k> &rhs,
 
   87           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   89      return rhs(N1, N3, N0, N2);
 
 
   92    template <
class B, 
class U>
 
   93    U 
eval(
const Tensor4_Expr<B, U, Dim1, Dim3, Dim2, Dim0, j, l, k, i> &rhs,
 
   94           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
   96      return rhs(N1, N3, N2, N0);
 
 
  100    template <
class B, 
class U>
 
  101    U 
eval(
const Tensor4_Expr<B, U, Dim2, Dim1, Dim0, Dim3, k, j, i, l> &rhs,
 
  102           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  104      return rhs(N2, N1, N0, N3);
 
 
  107    template <
class B, 
class U>
 
  108    U 
eval(
const Tensor4_Expr<B, U, Dim2, Dim1, Dim3, Dim0, k, j, l, i> &rhs,
 
  109           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  111      return rhs(N2, N1, N3, N0);
 
 
  114    template <
class B, 
class U>
 
  115    U 
eval(
const Tensor4_Expr<B, U, Dim2, Dim0, Dim1, Dim3, k, i, j, l> &rhs,
 
  116           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  118      return rhs(N2, N0, N1, N3);
 
 
  121    template <
class B, 
class U>
 
  122    U 
eval(
const Tensor4_Expr<B, U, Dim2, Dim0, Dim3, Dim1, k, i, l, j> &rhs,
 
  123           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  125      return rhs(N2, N0, N3, N1);
 
 
  128    template <
class B, 
class U>
 
  129    U 
eval(
const Tensor4_Expr<B, U, Dim2, Dim3, Dim1, Dim0, k, l, j, i> &rhs,
 
  130           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  132      return rhs(N2, N3, N1, N0);
 
 
  135    template <
class B, 
class U>
 
  136    U 
eval(
const Tensor4_Expr<B, U, Dim2, Dim3, Dim0, Dim1, k, l, i, j> &rhs,
 
  137           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  139      return rhs(N2, N3, N0, N1);
 
 
  143    template <
class B, 
class U>
 
  144    U 
eval(
const Tensor4_Expr<B, U, Dim3, Dim1, Dim2, Dim0, l, j, k, i> &rhs,
 
  145           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  147      return rhs(N3, N1, N2, N0);
 
 
  150    template <
class B, 
class U>
 
  151    U 
eval(
const Tensor4_Expr<B, U, Dim3, Dim1, Dim0, Dim2, l, j, i, k> &rhs,
 
  152           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  154      return rhs(N3, N1, N0, N2);
 
 
  157    template <
class B, 
class U>
 
  158    U 
eval(
const Tensor4_Expr<B, U, Dim3, Dim2, Dim1, Dim0, l, k, j, i> &rhs,
 
  159           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  161      return rhs(N3, N2, N1, N0);
 
 
  164    template <
class B, 
class U>
 
  165    U 
eval(
const Tensor4_Expr<B, U, Dim3, Dim2, Dim0, Dim1, l, k, i, j> &rhs,
 
  166           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  168      return rhs(N3, N2, N0, N1);
 
 
  171    template <
class B, 
class U>
 
  172    U 
eval(
const Tensor4_Expr<B, U, Dim3, Dim0, Dim1, Dim2, l, i, j, k> &rhs,
 
  173           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  175      return rhs(N3, N0, N1, N2);
 
 
  178    template <
class B, 
class U>
 
  179    U 
eval(
const Tensor4_Expr<B, U, Dim3, Dim0, Dim2, Dim1, l, i, k, j> &rhs,
 
  180           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  182      return rhs(N3, N0, N2, N1);
 
 
  186    template <
class B, 
class U, 
int Dim1_0, 
int Dim1_1, 
int Dim1_2, 
int Dim1_3,
 
  187              char i1, 
char j1, 
char k1, 
char l1>
 
  190           const int N0, 
const int N1, 
const int N2, 
const int N3)
 
  192      static_assert(error_when_instantiated<B>(), 
"Incompatible indices");
 
  193      return rhs(0, 0, 0, 0);
 
 
  197    template <
class B, 
class U>
 
  199           const int N1, 
const int N2, 
const int N3) {
 
  200      static_assert(Dim0 == Dim1 && Dim2 == Dim3, 
"Incompatible indices");
 
  201      return rhs(N0, N1, N2, N3);
 
 
  205    template <
class B, 
class U>
 
  207           const int N1, 
const int N2, 
const int N3) {
 
  208      static_assert(Dim2 == Dim3 & Dim0 == Dim1, 
"Incompatible indices");
 
  209      return rhs(N2, N3, N0, N1);
 
 
  213    template <
class B, 
class U, 
int Dim1_01, 
int Dim1_23, 
char i1, 
char j1,
 
  216           const int N0, 
const int N1, 
const int N2, 
const int N3) {
 
  217      static_assert(error_when_instantiated<B>(), 
"Incompatible indices");
 
  218      return rhs(0, 0, 0, 0);
 
 
 
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
Tensors class implemented by Walter Landry.
U eval(const Tensor4_Expr< B, U, Dim3, Dim0, Dim1, Dim2, l, i, j, k > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim0, Dim1, Dim3, Dim2, i, j, l, k > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim2, Dim1, Dim0, Dim3, k, j, i, l > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Ddg_Expr< B, U, Dim0, Dim2, k, l, i, j > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim3, Dim2, Dim0, Dim1, l, k, i, j > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim3, Dim1, Dim2, Dim0, l, j, k, i > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim1, Dim2, Dim3, Dim0, j, k, l, i > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim0, Dim2, Dim3, Dim1, i, k, l, j > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim1, Dim2, Dim0, Dim3, j, k, i, l > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim0, Dim3, Dim1, Dim2, i, l, j, k > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim0, Dim3, Dim2, Dim1, i, l, k, j > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Ddg_Expr< B, U, Dim0, Dim2, i, j, k, l > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim1, Dim3, Dim2, Dim0, j, l, k, i > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i1, j1, k1, l1 > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim1, Dim0, Dim2, Dim3, j, i, k, l > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim2, Dim0, Dim3, Dim1, k, i, l, j > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim2, Dim0, Dim1, Dim3, k, i, j, l > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim0, Dim2, Dim1, Dim3, i, k, j, l > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim2, Dim3, Dim0, Dim1, k, l, i, j > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim3, Dim2, Dim1, Dim0, l, k, j, i > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim2, Dim1, Dim3, Dim0, k, j, l, i > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Ddg_Expr< B, U, Dim1_01, Dim1_23, i1, j1, k1, l1 > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim1, Dim3, Dim0, Dim2, j, l, i, k > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim1, Dim0, Dim3, Dim2, j, i, l, k > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim3, Dim0, Dim2, Dim1, l, i, k, j > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim2, Dim3, Dim1, Dim0, k, l, j, i > &rhs, const int N0, const int N1, const int N2, const int N3)
U eval(const Tensor4_Expr< B, U, Dim3, Dim1, Dim0, Dim2, l, j, i, k > &rhs, const int N0, const int N1, const int N2, const int N3)