|
| v0.14.0
|
Go to the documentation of this file.
6 #include "../permute.hpp"
11 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
12 int Dim3,
int Dim4,
char i,
char j,
char k,
char l,
char m,
13 int DimA,
int DimX,
int DimY,
char a,
char x,
char y>
29 for(
int xx = 0; xx < DimX; ++xx)
30 for(
int yy = 0; yy < DimY; ++yy)
41 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
42 char i,
char j,
char k>
48 i,
j,
k,
j,
k, Dim0, Dim1, Dim2,
i,
j,
k>;
54 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
55 char i,
char j,
char k>
63 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
64 char i,
char j,
char k>
70 i,
j,
k,
k,
j, Dim0, Dim1, Dim2,
i,
j,
k>;
76 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
77 char i,
char j,
char k>
85 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
86 char i,
char j,
char k>
92 i,
j,
k,
i,
k, Dim1, Dim0, Dim2,
j,
i,
k>;
98 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
99 char i,
char j,
char k>
107 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
108 char i,
char j,
char k>
114 i,
j,
k,
k,
i, Dim1, Dim0, Dim2,
j,
i,
k>;
120 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
121 char i,
char j,
char k>
129 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
130 char i,
char j,
char k>
136 i,
j,
k,
i,
j, Dim2, Dim0, Dim1,
k,
i,
j>;
142 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
143 char i,
char j,
char k>
151 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
152 char i,
char j,
char k>
158 i,
j,
k,
j,
i, Dim2, Dim0, Dim1,
k,
i,
j>;
164 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
165 char i,
char j,
char k>
174 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
175 int Dim3,
char i,
char j,
char k,
char l>
181 template <
int Current_Dim>
185 return iterA(N1, N2, Current_Dim - 1) *
iterB(Current_Dim - 1, N3)
207 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
208 int Dim3,
char i,
char j,
char k,
char l>
210 Tensor3_times_Tensor2_2_01<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
218 Dim3,
i,
j,
l>(TensorExpr(
a, b));
223 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
224 int Dim3,
char i,
char j,
char k,
char l>
226 Tensor3_times_Tensor2_2_01<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
234 Dim3,
i,
j,
l>(TensorExpr(
a, b));
239 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
240 int Dim3,
char i,
char j,
char k,
char l>
246 template <
int Current_Dim>
250 return iterA(N1, N2, Current_Dim - 1) *
iterB(N3, Current_Dim - 1)
272 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
273 int Dim3,
char i,
char j,
char k,
char l>
275 Tensor3_times_Tensor2_2_10<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
283 Dim3,
i,
j,
l>(TensorExpr(
a, b));
288 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
289 int Dim3,
char i,
char j,
char k,
char l>
291 Tensor3_times_Tensor2_2_10<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
299 Dim3,
i,
j,
l>(TensorExpr(
a, b));
304 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
305 int Dim3,
char i,
char j,
char k,
char l>
311 template <
int Current_Dim>
315 return iterA(N1, Current_Dim - 1, N3) *
iterB(Current_Dim - 1, N2)
337 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
338 int Dim3,
char i,
char j,
char k,
char l>
340 Tensor3_times_Tensor2_1_01<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
348 Dim3,
i,
k,
l>(TensorExpr(
a, b));
353 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
354 int Dim3,
char i,
char j,
char k,
char l>
356 Tensor3_times_Tensor2_1_01<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
364 Dim3,
i,
k,
l>(TensorExpr(
a, b));
369 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
370 int Dim3,
char i,
char j,
char k,
char l>
376 template <
int Current_Dim>
380 return iterA(N1, Current_Dim - 1, N3) *
iterB(N2, Current_Dim - 1)
402 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
403 int Dim3,
char i,
char j,
char k,
char l>
405 Tensor3_times_Tensor2_1_10<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
413 Dim3,
i,
k,
l>(TensorExpr(
a, b));
418 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
419 int Dim3,
char i,
char j,
char k,
char l>
421 Tensor3_times_Tensor2_1_10<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
429 Dim3,
i,
k,
l>(TensorExpr(
a, b));
434 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
435 int Dim3,
char i,
char j,
char k,
char l>
441 template <
int Current_Dim>
445 return iterA(Current_Dim - 1, N2, N3) *
iterB(Current_Dim - 1, N1)
467 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
468 int Dim3,
char i,
char j,
char k,
char l>
470 Tensor3_times_Tensor2_0_01<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
478 Dim3,
j,
k,
l>(TensorExpr(
a, b));
483 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
484 int Dim3,
char i,
char j,
char k,
char l>
486 Tensor3_times_Tensor2_0_01<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
494 Dim3,
j,
k,
l>(TensorExpr(
a, b));
499 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
500 int Dim3,
char i,
char j,
char k,
char l>
506 template <
int Current_Dim>
510 return iterA(Current_Dim - 1, N2, N3) *
iterB(N1, Current_Dim - 1)
532 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
533 int Dim3,
char i,
char j,
char k,
char l>
535 Tensor3_times_Tensor2_0_10<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
543 Dim3,
j,
k,
l>(TensorExpr(
a, b));
548 template <
class A,
class B,
class T,
class U,
int Dim0,
int Dim1,
int Dim2,
549 int Dim3,
char i,
char j,
char k,
char l>
551 Tensor3_times_Tensor2_0_10<A, B, T, U, Dim0, Dim1, Dim2, Dim3, i, j, k, l>,
559 Dim3,
j,
k,
l>(TensorExpr(
a, b));
U eval(const Tensor2_Expr< B, U, Dim0, Dim1, i, j > &rhs, const int N0, const int N1)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Tensor2_Expr< B, U, Dim3, Dim2, l, k > iterB
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)
Tensor3_Expr< A, T, Dim0, Dim2, Dim3, i, k, l > iterA
Tensor3_times_Tensor2_1_10(const Tensor3_Expr< A, T, Dim0, Dim1, Dim3, i, j, l > &a, const Tensor2_Expr< B, U, Dim2, Dim1, k, j > &b)
Tensor3_Expr< A, T, Dim0, Dim1, Dim3, i, j, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Tensor2_Expr< B, U, Dim1, Dim2, j, k > iterB
promote< T, U >::V operator()(const int N1) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
U eval(const Tensor3_Expr< B, U, Dim0, Dim1, Dim2, i, j, k > &rhs, const int N0, const int N1, const int N2)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
Tensor2_Expr< B, U, Dim1, Dim0, j, i > iterB
Tensor3_Expr< A, T, Dim0, Dim1, Dim3, i, j, l > iterA
Tensor2_Expr< B, U, Dim3, Dim4, l, m > iterB
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > iterA
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Tensor3_times_Tensor2_0_10(const Tensor3_Expr< A, T, Dim0, Dim2, Dim3, i, k, l > &a, const Tensor2_Expr< B, U, Dim1, Dim0, j, i > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Tensor3_times_Tensor2_double(const Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > &Itera, const Tensor2_Expr< B, U, Dim3, Dim4, l, m > &Iterb)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
Tensor3_times_Tensor2_1_01(const Tensor3_Expr< A, T, Dim0, Dim1, Dim3, i, j, l > &a, const Tensor2_Expr< B, U, Dim1, Dim2, j, k > &b)
Tensor2_Expr< B, U, Dim0, Dim1, i, j > iterB
FTensor::Index< 'i', SPACE_DIM > i
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > iterA
FTensor::Index< 'j', 3 > j
Tensor3_times_Tensor2_2_01(const Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim2, Dim3, k, l > &b)
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< 1 > &) const
promote< T, U >::V operator()(const int N1, const int N2, const int N3) const
FTensor::Index< 'm', 3 > m
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
Tensor2_Expr< B, U, Dim2, Dim1, k, j > iterB
Tensor3_times_Tensor2_2_10(const Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > &a, const Tensor2_Expr< B, U, Dim2, Dim3, l, k > &b)
Tensor3_Expr< A, T, Dim0, Dim2, Dim3, i, k, l > iterA
promote< T, U >::V eval(const int N1, const int N2, const int N3, const Number< Current_Dim > &) const
FTensor::Index< 'k', 3 > k
Tensor3_times_Tensor2_0_01(const Tensor3_Expr< A, T, Dim0, Dim2, Dim3, i, k, l > &a, const Tensor2_Expr< B, U, Dim0, Dim1, i, j > &b)
Tensor2_Expr< B, U, Dim2, Dim3, k, l > iterB
FTensor::Index< 'l', 3 > l
Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > iterA