9 template <
class A,
class B,
class U,
int Current_Dim0,
int Current_Dim1,
10 int Current_Dim2,
int Current_Dim3,
int Dim01,
int Dim23,
char i,
11 char j,
char k,
char l>
20 iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
22 = result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
29 template <
class A,
class B,
class U,
int Current_Dim1,
int Current_Dim2,
30 int Current_Dim3,
int Dim01,
int Dim23,
char i,
char j,
char k,
39 iter(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1)
40 = result(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1);
46 template <
class A,
class B,
class U,
int Current_Dim2,
int Current_Dim3,
47 int Dim01,
int Dim23,
char i,
char j,
char k,
char l>
55 iter(0, 0, Current_Dim2 - 1, Current_Dim3 - 1)
56 = result(0, 0, Current_Dim2 - 1, Current_Dim3 - 1);
61 template <
class A,
class B,
class U,
int Current_Dim3,
int Dim01,
int Dim23,
62 char i,
char j,
char k,
char l>
69 iter(0, 0, 0, Current_Dim3 - 1) = result(0, 0, 0, Current_Dim3 - 1);
74 template <
class A,
class B,
class U,
int Dim01,
int Dim23,
char i,
char j,
82 iter(0, 0, 0, 0) = result(0, 0, 0, 0);
85 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
86 int Dim23,
char i,
char j,
char k,
char l>
87 template <
class B,
class U>
88 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
l> &
89 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
l>::
97 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
98 int Dim23,
char i,
char j,
char k,
char l>
110 template <
typename L,
typename R>
static inline void op(
L &
l,
R &&
r) {
116 template <
typename L,
typename R>
static inline void op(
L &
l,
R &&
r) {
121 template <
class A,
class B,
class U,
int Current_Dim0,
int Current_Dim1,
122 int Current_Dim2,
int Current_Dim3,
int Dim01,
int Dim23,
char i,
123 char j,
char k,
char l,
class Op>
129 Op::op(iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
131 result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
138 template <
class A,
class B,
class U,
int Current_Dim1,
139 int Current_Dim2,
int Current_Dim3,
int Dim01,
int Dim23,
char i,
140 char j,
char k,
char l,
class Op>
145 Op::op(iter(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1),
146 result(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1));
152 template <
class A,
class B,
class U,
int Current_Dim2,
153 int Current_Dim3,
int Dim01,
int Dim23,
char i,
char j,
char k,
159 Op::op(iter(0, 0, Current_Dim2 - 1, Current_Dim3 - 1),
160 result(0, 0, Current_Dim2 - 1, Current_Dim3 - 1));
166 template <
class A,
class B,
class U,
int Current_Dim3,
int Dim01,
167 int Dim23,
char i,
char j,
char k,
char l,
class Op>
172 Op::op(iter(0, 0, 0, Current_Dim3 - 1), result(0, 0, 0, Current_Dim3 - 1));
178 template <
class A,
class B,
class U,
int Dim01,
int Dim23,
char i,
char j,
179 char k,
char l,
class Op>
186 Op::op(iter(0, 0, 0, 0), result(0, 0, 0, 0));
189 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
190 int Dim23,
char i,
char j,
char k,
char l>
191 template <
class B,
class U>
192 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
l> &
193 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
l>::
202 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
203 int Dim23,
char i,
char j,
char k,
char l>
212 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
213 int Dim23,
char i,
char j,
char k,
char l>
214 template <
class B,
class U>
225 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
226 int Dim23,
char i,
char j,
char k,
char l>
237 template <
class A,
class T,
class U,
int Dim01,
int Dim23>
243 template <
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
247 iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1,
248 Current_Dim3 - 1) *=
u;
253 template <
int Current_Dim1,
int Current_Dim2,
int Current_Dim3>
256 iter(0, Current_Dim1 - 1, Current_Dim2 - 1, Current_Dim3 - 1) *=
u;
261 template <
int Current_Dim2,
int Current_Dim3>
264 iter(0, 0, Current_Dim2 - 1, Current_Dim3 - 1) *=
u;
269 template <
int Current_Dim3>
272 iter(0, 0, 0, Current_Dim3 - 1) *=
u;
279 iter(0, 0, 0, 0) *=
u;
291 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
292 int Dim23,
char i,
char j,
char k,
char l>
294 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
l> &
295 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
l>::
296 operator*=(
const U &
d) {
301 template <
class A,
class T,
class U,
int Dim01,
int Dim23>
307 template <
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
317 template <
int Current_Dim1,
int Current_Dim2,
int Current_Dim3>
326 template <
int Current_Dim2,
int Current_Dim3>
335 template <
int Current_Dim3>
357 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim23,
int Dim01,
358 int Dim23,
char i,
char j,
char k,
char l>
360 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
l> &
361 Ddg_Expr<Ddg<A, Tensor_Dim01, Tensor_Dim23>, T, Dim01, Dim23,
i,
j,
k,
362 l>::operator=(
const U &
d) {