|
| v0.14.0
|
Go to the documentation of this file.
10 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
11 int Dim3,
int Dim4,
char i,
char j,
char k,
char l,
char m>
16 template <
int Current_Dim0,
int Current_Dim1>
20 return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1) *
21 iterB(Current_Dim0 - 1, Current_Dim1 - 1, N3) +
24 template <
int Current_Dim1>
28 return iterA(N1, N2, 0, Current_Dim1 - 1) *
iterB(0, Current_Dim1 - 1, N3) +
43 const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
46 static_assert(Dim2 == Dim3,
"Dim2 and Dim3 should be equal");
50 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
51 int Dim3,
int Dim4,
char i,
char j,
char k,
char l,
char m>
52 inline Tensor3_Expr<
const Tensor4_times_Dg_23<
A, B, T,
U, Dim0, Dim1, Dim2,
53 Dim3, Dim4,
i,
j,
k,
l,
m>,
55 operator*(
const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
57 typedef const Tensor4_times_Dg_23<
A, B, T,
U, Dim0, Dim1, Dim2, Dim3, Dim4,
i,
61 i,
j,
m>(TensorExpr(
a, b));
66 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
67 int Dim3,
int Dim4,
char i,
char j,
char k,
char l,
char m>
68 inline Tensor3_Expr<
const Tensor4_times_Dg_23<
A, B, T,
U, Dim0, Dim1, Dim2,
69 Dim3, Dim4,
i,
j,
k,
l,
m>,
73 typedef const Tensor4_times_Dg_23<
A, B, T,
U, Dim0, Dim1, Dim2, Dim3, Dim4,
i,
77 i,
j,
m>(TensorExpr(
a, b));
82 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
83 int Dim3,
int Dim4,
char i,
char j,
char k,
char l,
char m>
88 template <
int Current_Dim0,
int Current_Dim1>
92 return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1, N2) *
93 iterB(Current_Dim0 - 1, Current_Dim1 - 1, N3) +
96 template <
int Current_Dim1>
100 return iterA(0, Current_Dim1 - 1, N1, N2) *
iterB(0, Current_Dim1 - 1, N3) +
110 const int N3)
const {
115 const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
118 static_assert(Dim0 == Dim1,
"Dim0 and Dim1 should be equal");
122 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
123 int Dim3,
int Dim4,
char i,
char j,
char k,
char l,
char m>
124 inline Tensor3_Expr<
const Tensor4_times_Dg_01<
A, B, T,
U, Dim0, Dim1, Dim2,
125 Dim3, Dim4,
i,
j,
k,
l,
m>,
127 operator*(
const Tensor4_Expr<A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l> &
a,
129 typedef const Tensor4_times_Dg_01<
A, B, T,
U, Dim0, Dim1, Dim2, Dim3, Dim4,
i,
133 k,
l,
m>(TensorExpr(
a, b));
138 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
139 int Dim3,
int Dim4,
char i,
char j,
char k,
char l,
char m>
140 inline Tensor3_Expr<
const Tensor4_times_Dg_01<
A, B, T,
U, Dim0, Dim1, Dim2,
141 Dim3, Dim4,
i,
j,
k,
l,
m>,
145 typedef const Tensor4_times_Dg_01<
A, B, T,
U, Dim0, Dim1, Dim2, Dim3, Dim4,
i,
149 k,
l,
m>(TensorExpr(
a, b));
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
promote< T, U >::V operator*(const Ddg_Expr< A, T, Dim, Dim, i, j, k, l > &a, const Ddg_Expr< B, U, Dim, Dim, i, k, j, l > &b)
const Dg_Expr< B, U, Dim2, Dim4, k, l, m > iterB
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &, const Number< Current_Dim1 > &) const
Tensor4_times_Dg_01(const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &a, const Dg_Expr< B, U, Dim0, Dim4, i, j, m > &b)
Tensor4_times_Dg_23(const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &a, const Dg_Expr< B, U, Dim2, Dim4, k, l, m > &b)
const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > iterA
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
FTensor::Index< 'i', SPACE_DIM > i
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
const Dg_Expr< B, U, Dim0, Dim4, i, j, m > iterB
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &, const Number< 1 > &) const
FTensor::Index< 'j', 3 > j
FTensor::Index< 'm', 3 > m
const Tensor4_Expr< A, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > iterA
FTensor::Index< 'k', 3 > k
FTensor::Index< 'l', 3 > l