|
| v0.14.0
|
Go to the documentation of this file.
8 template <
class A,
class B,
class T,
class U,
int Dim,
char i,
char j,
char k,
9 char l,
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
16 return a(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
18 b(Current_Dim0 - 1, Current_Dim2 - 1, Current_Dim1 - 1,
25 template <
class A,
class B,
class T,
class U,
int Dim,
char i,
char j,
char k,
26 char l,
int Current_Dim1,
int Current_Dim2,
int Current_Dim3>
33 return a(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1) *
34 b(0, Current_Dim2 - 1, Current_Dim1 - 1, Current_Dim3 - 1) +
39 template <
class A,
class B,
class T,
class U,
int Dim,
char i,
char j,
char k,
40 char l,
int Current_Dim2,
int Current_Dim3>
47 return a(0, 0, Current_Dim2 - 1, Current_Dim3 - 1) *
48 b(0, Current_Dim2 - 1, 0, Current_Dim3 - 1) +
54 template <
class A,
class B,
class T,
class U,
int Dim,
char i,
char j,
char k,
55 char l,
int Current_Dim3>
61 return a(0, 0, 0, Current_Dim3 - 1) * b(0, 0, 0, Current_Dim3 - 1) +
66 template <
class A,
class B,
class T,
class U,
int Dim,
char i,
char j,
char k,
73 return a(0, 0, 0, 0) * b(0, 0, 0, 0);
76 template <
class A,
class B,
class T,
class U,
int Dim,
char i,
char j,
char k,
87 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
88 char i,
char j,
char k,
char l,
char m,
char n>
100 template <
int Current_Dim0,
int Current_Dim1>
104 return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1, N2) *
105 iterB(Current_Dim0 - 1, Current_Dim1 - 1, N3, N4) +
109 template <
int Current_Dim1>
113 return iterA(0, Current_Dim1 - 1, N1, N2) *
114 iterB(0, Current_Dim1 - 1, N3, N4) +
121 return iterA(0, 0, N1, N2) *
iterB(0, 0, N3, N4);
125 const int N4)
const {
130 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
131 char i,
char j,
char k,
char l,
char m,
char n>
135 Ddg_times_Ddg_0101<A, B, T, U, Dim01, Dim23, Dim45, i, j, k, l, m, n>;
137 l>(TensorExpr(
a, b));
142 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
143 char i,
char j,
char k,
char l,
char m,
char n>
155 template <
int Current_Dim0,
int Current_Dim1>
159 return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1) *
160 iterB(Current_Dim0 - 1, Current_Dim1 - 1, N3, N4) +
164 template <
int Current_Dim1>
168 return iterA(N1, N2, 0, Current_Dim1 - 1) *
169 iterB(0, Current_Dim1 - 1, N3, N4) +
175 return iterA(N1, N2, 0, 0) *
iterB(0, 0, N3, N4);
179 const int N4)
const {
185 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
186 char i,
char j,
char k,
char l,
char m,
char n>
187 Ddg_Expr<Ddg_times_Ddg_2301<A, B, T, U, Dim01, Dim23, Dim45, i, j, k, l, m, n>,
192 Ddg_times_Ddg_2301<A, B, T, U, Dim01, Dim23, Dim45, i, j, k, l, m, n>;
194 l>(TensorExpr(
a, b));
199 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
200 char i,
char j,
char k,
char l,
char m,
char n>
212 template <
int Current_Dim0,
int Current_Dim1>
216 return iterA(Current_Dim0 - 1, Current_Dim1 - 1, N1, N2) *
217 iterB(N3, N4, Current_Dim0 - 1, Current_Dim1 - 1) +
221 template <
int Current_Dim1>
225 return iterA(0, Current_Dim1 - 1, N1, N2) *
226 iterB(N3, N4, 0, Current_Dim1 - 1) +
232 return iterA(0, 0, N1, N2) *
iterB(N3, N4, 0, 0);
236 const int N4)
const {
243 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
244 char i,
char j,
char k,
char l,
char m,
char n>
245 Ddg_Expr<Ddg_times_Ddg_0123<A, B, T, U, Dim01, Dim23, Dim45, i, j, k, l, m, n>,
250 Ddg_times_Ddg_0123<A, B, T, U, Dim01, Dim23, Dim45, i, j, k, l, m, n>;
252 l>(TensorExpr(
a, b));
257 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
258 char i,
char j,
char k,
char l,
char m,
char n>
270 template <
int Current_Dim0,
int Current_Dim1>
272 eval(
const int N1,
const int N2,
const int N3,
const int N4,
274 return iterA(N1, N2, Current_Dim0 - 1, Current_Dim1 - 1) *
275 iterB(N3, N4, Current_Dim0 - 1, Current_Dim1 - 1) +
279 template <
int Current_Dim1>
281 eval(
const int N1,
const int N2,
const int N3,
const int N4,
283 return iterA(N1, N2, 0, Current_Dim1 - 1) *
284 iterB(N3, N4, 0, Current_Dim1 - 1) +
288 const int N3,
const int N4,
291 return iterA(N1, N2, 0, 0) *
iterB(N3, N4, 0, 0);
295 const int N4)
const {
301 template <
class A,
class B,
class T,
class U,
int Dim01,
int Dim23,
int Dim45,
302 char i,
char j,
char k,
char l,
char m,
char n>
303 Ddg_Expr<Ddg_times_Ddg_2323<A, B, T, U, Dim01, Dim23, Dim45, i, j, k, l, m, n>,
308 Ddg_times_Ddg_2323<A, B, T, U, Dim01, Dim23, Dim45, i, j, k, l, m, n>;
310 l>(TensorExpr(
a, b));
Ddg_times_Ddg_0123(const IterA &a, const IterB &b)
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)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< 1 > &) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
promote< T, U >::V T4ddg_times_T4ddg_0213(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 Number< Current_Dim0 > &, const Number< Current_Dim1 > &, const Number< Current_Dim2 > &, const Number< Current_Dim3 > &)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< 1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< 1 > &) const
Ddg_times_Ddg_2323(const IterA &a, const IterB &b)
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
Ddg_times_Ddg_2301(const IterA &a, const IterB &b)
Ddg_times_Ddg_0101(const IterA &a, const IterB &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
FTensor::Index< 'i', SPACE_DIM > i
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< 1 > &) const
FTensor::Index< 'j', 3 > j
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< Current_Dim1 > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< Current_Dim0 > &, const Number< Current_Dim1 > &) const
FTensor::Index< 'm', 3 > m
promote< T, U >::V operator()(const int N1, const int N2, const int N3, const int N4) const
FTensor::Index< 'k', 3 > k
FTensor::Index< 'l', 3 > l
promote< T, U >::V eval(const int N1, const int N2, const int N3, const int N4, const Number< 1 > &, const Number< Current_Dim1 > &) const