8 template <
class A,
class B,
class T,
class U,
int Dim0_0,
int Dim1_0,
9 int Dim2_0,
int Dim0_1,
int Dim1_1,
int Dim2_1,
char i0,
char j0,
10 char k0,
char i1,
char j1,
char k1>
16 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim12,
char i,
18 class Tensor3_or_Tensor3<
A,
B,
T, U, Dim0, Dim12, Dim12, Dim0, Dim12, Dim12,
28 return iterA(N3,
N1,
N2) + iterB(N3,
N2,
N1);
40 template <
class A,
class B,
class T,
class U,
int Dim02,
int Dim1,
char i,
42 class Tensor3_or_Tensor3<
A,
B,
T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02,
52 return iterA(
N1, N3,
N2) + iterB(
N2, N3,
N1);
64 template <
class A,
class B,
class T,
class U,
int Dim02,
int Dim1,
char i,
66 class Tensor3_or_Tensor3<
A,
B,
T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02,
76 return iterA(
N1,
N2, N3) + iterB(
N2,
N1, N3);
86 template <
class A,
class B,
class T,
class U,
int Dim0_0,
int Dim1_0,
87 int Dim2_0,
int Dim0_1,
int Dim1_1,
int Dim2_1,
char i0,
char j0,
88 char k0,
char i1,
char j1,
char k1>
95 Dim2_1, i0, j0, k0, i1, j1, k1>;
97 !std::is_empty<TensorExpr>::value,
98 "Indexes or Dimensions are not compatible with the || operator");
101 constexpr char i = (k0 == i1 || k0 == j1) ? ((i0 == i1) ? j0 : i0) : i0;
102 constexpr char j = (k0 == i1 || k0 == j1) ? k0 : j0;
103 constexpr char k = (k0 == i1 || k0 == j1) ? ((i0 == i1) ? i0 : j0) : k0;
106 j,
k>(TensorExpr(
a, b));
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, j, i, k >::iterA Tensor3_Expr< A, T, Dim02, Dim1, Dim02, i, j, k > iterA
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, j, i, k >::Tensor3_or_Tensor3 Tensor3_or_Tensor3(const Tensor3_Expr< A, T, Dim02, Dim1, Dim02, i, j, k > &a, const Tensor3_Expr< B, U, Dim02, Dim1, Dim02, j, i, k > &b)
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, j, i, k >::operator() promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, j, i, k >::iterB Tensor3_Expr< B, U, Dim02, Dim1, Dim02, j, i, k > iterB
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, k, j, i >::iterB Tensor3_Expr< B, U, Dim02, Dim1, Dim02, k, j, i > iterB
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, k, j, i >::Tensor3_or_Tensor3 Tensor3_or_Tensor3(const Tensor3_Expr< A, T, Dim02, Dim1, Dim02, i, j, k > &a, const Tensor3_Expr< B, U, Dim02, Dim1, Dim02, k, j, i > &b)
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, k, j, i >::operator() promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim02, Dim1, Dim02, Dim02, Dim1, Dim02, i, j, k, k, j, i >::iterA Tensor3_Expr< A, T, Dim02, Dim1, Dim02, i, j, k > iterA
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim0, Dim12, Dim12, Dim0, Dim12, Dim12, i, j, k, i, k, j >::iterB Tensor3_Expr< B, U, Dim0, Dim12, Dim12, i, k, j > iterB
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim0, Dim12, Dim12, Dim0, Dim12, Dim12, i, j, k, i, k, j >::iterA Tensor3_Expr< A, T, Dim0, Dim12, Dim12, i, j, k > iterA
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim0, Dim12, Dim12, Dim0, Dim12, Dim12, i, j, k, i, k, j >::operator() promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
FTensor::Tensor3_or_Tensor3< A, B, T, U, Dim0, Dim12, Dim12, Dim0, Dim12, Dim12, i, j, k, i, k, j >::Tensor3_or_Tensor3 Tensor3_or_Tensor3(const Tensor3_Expr< A, T, Dim0, Dim12, Dim12, i, j, k > &a, const Tensor3_Expr< B, U, Dim0, Dim12, Dim12, i, k, j > &b)
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
Tensors class implemented by Walter Landry.
Ddg_Expr< Ddg_or_Ddg< A, B, T, U, Dim, i, j, k, l >, typename promote< T, U >::V, Dim, Dim, i, k, j, l > operator||(const Ddg_Expr< A, T, Dim, Dim, i, j, k, l > &a, const Ddg_Expr< B, U, Dim, Dim, i, l, k, j > &b)