12 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
13 char k,
int Current_Dim0,
int Current_Dim1,
int Current_Dim2>
19 iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1)
20 = result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1);
25 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
26 char k,
int Current_Dim1,
int Current_Dim2>
32 iter(0, Current_Dim1 - 1, Current_Dim2 - 1)
33 = result(0, Current_Dim1 - 1, Current_Dim2 - 1);
38 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
39 char k,
int Current_Dim2>
45 iter(0, 0, Current_Dim2 - 1) = result(0, 0, Current_Dim2 - 1);
50 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
56 iter(0, 0, 0) = result(0, 0, 0);
59 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim2,
int Dim01,
60 int Dim2,
char i,
char j,
char k>
61 template <
class B,
class U>
62 Dg_Expr<Dg<A, Tensor_Dim01, Tensor_Dim2>, T, Dim01, Dim2,
i,
j,
k> &
63 Dg_Expr<Dg<A, Tensor_Dim01, Tensor_Dim2>, T, Dim01, Dim2,
i,
j,
k>::
73 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim2,
int Dim01,
74 int Dim2,
char i,
char j,
char k>
88 template <
typename L,
typename R>
static inline void op(
L &
l,
R &&
r) {
94 template <
typename L,
typename R>
static inline void op(
L &
l,
R &&
r) {
99 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
100 char k,
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
107 Op::op(iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1),
108 result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1));
113 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
114 char k,
int Current_Dim1,
int Current_Dim2,
class Op>
119 Op::op(iter(0, Current_Dim1 - 1, Current_Dim2 - 1),
120 result(0, Current_Dim1 - 1, Current_Dim2 - 1));
126 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
127 char k,
int Current_Dim2,
class Op>
132 Op::op(iter(0, 0, Current_Dim2 - 1), result(0, 0, Current_Dim2 - 1));
137 template <
class A,
class B,
class U,
int Dim01,
int Dim2,
char i,
char j,
143 Op::op(iter(0, 0, 0), result(0, 0, 0));
146 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim2,
int Dim01,
147 int Dim2,
char i,
char j,
char k>
148 template <
class B,
class U>
149 Dg_Expr<Dg<A, Tensor_Dim01, Tensor_Dim2>, T, Dim01, Dim2,
i,
j,
k> &
150 Dg_Expr<Dg<A, Tensor_Dim01, Tensor_Dim2>, T, Dim01, Dim2,
i,
j,
k>::
159 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim2,
int Dim01,
160 int Dim2,
char i,
char j,
char k>
161 template <
class B,
class U>
173 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim2,
int Dim01,
174 int Dim2,
char i,
char j,
char k>
183 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim2,
int Dim01,
184 int Dim2,
char i,
char j,
char k>
195 template <
class A,
class U,
int Dim01,
int Dim2,
int Current_Dim0,
196 int Current_Dim1,
int Current_Dim2>
202 iter(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1) = u;
208 template <
class A,
class U,
int Dim01,
int Dim2,
int Current_Dim1,
215 iter(0, Current_Dim1 - 1, Current_Dim2 - 1) = u;
221 template <
class A,
class U,
int Dim01,
int Dim2,
int Current_Dim2>
226 iter(0, 0, Current_Dim2 - 1) = u;
232 template <
class A,
class U,
int Dim01,
int Dim2>
240 template <
class A,
class T,
int Tensor_Dim01,
int Tensor_Dim2,
int Dim01,
241 int Dim2,
char i,
char j,
char k>
243 Dg_Expr<Dg<A, Tensor_Dim01, Tensor_Dim2>, T, Dim01, Dim2,
i,
j,
k> &
244 Dg_Expr<Dg<A, Tensor_Dim01, Tensor_Dim2>, T, Dim01, Dim2,
i,
j,
k>::
245 operator=(
const U &u)
264 template <
typename L,
typename R>
static inline void op(
L &
l,
R &&
r) {
270 template <
typename L,
typename R>
static inline void op(
L &
l,
R &&
r) {
276 template <
typename L,
typename R>
static inline void op(
L &
l,
R &&
r) {
281 template <
class A,
class B,
class U,
int Dim12,
int Dim0,
char i,
char j,
282 char k,
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
288 Op::op(iter(Current_Dim2 - 1, Current_Dim0 - 1, Current_Dim1 - 1),
289 result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1));
294 template <
class A,
class B,
class U,
int Dim12,
int Dim0,
char i,
char j,
295 char k,
int Current_Dim1,
int Current_Dim2,
class Op>
300 Op::op(iter(Current_Dim2 - 1, 0, Current_Dim1 - 1),
301 result(0, Current_Dim1 - 1, Current_Dim2 - 1));
306 template <
class A,
class B,
class U,
int Dim12,
int Dim0,
char i,
char j,
307 char k,
int Current_Dim2,
class Op>
312 Op::op(iter(Current_Dim2 - 1, 0, 0), result(0, 0, Current_Dim2 - 1));
317 template <
class A,
class B,
class U,
int Dim12,
int Dim0,
char i,
char j,
323 Op::op(iter(0, 0, 0), result(0, 0, 0));
326 template <
class Tp,
class T,
int Tensor_Dim0,
int Tensor_Dim12,
int Dim12,
327 int Dim0,
char i,
char j,
char k>
328 template <
class B,
class U>
329 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k> &
330 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k>::
331 operator=(
const Dg_Expr<B, U, Dim12, Dim0, i, j, k> &result)
334 Number<Dim0>(), T3ch_equals_T3dg_Op<0>());
338 template <
class Tp,
class T,
int Tensor_Dim0,
int Tensor_Dim12,
int Dim12,
339 int Dim0,
char i,
char j,
char k>
340 template <
class B,
class U>
341 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k> &
342 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k>::
343 operator+=(
const Dg_Expr<B, U, Dim12, Dim0, i, j, k> &result)
346 Number<Dim0>(), T3ch_equals_T3dg_Op<1>());
350 template <
class Tp,
class T,
int Tensor_Dim0,
int Tensor_Dim12,
int Dim12,
351 int Dim0,
char i,
char j,
char k>
352 template <
class B,
class U>
353 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k> &
354 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k>::
355 operator-=(
const Dg_Expr<B, U, Dim12, Dim0, i, j, k> &result)
358 Number<Dim0>(), T3ch_equals_T3dg_Op<2>());
364 template <
class Tp,
class T,
int Tensor_Dim0,
int Tensor_Dim12,
int Dim12,
365 int Dim0,
char i,
char j,
char k>
366 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k> &
367 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k>::
368 operator=(
const Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12,
369 Dim0,
i,
j,
k> &result)
371 return operator=<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T>(result);
374 template <
class Tp,
class T,
int Tensor_Dim0,
int Tensor_Dim12,
int Dim12,
375 int Dim0,
char i,
char j,
char k>
376 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k> &
377 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k>::
378 operator+=(
const Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12,
379 Dim0,
i,
j,
k> &result)
381 return operator+=<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T>(result);
384 template <
class Tp,
class T,
int Tensor_Dim0,
int Tensor_Dim12,
int Dim12,
385 int Dim0,
char i,
char j,
char k>
386 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k> &
387 Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k>::
388 operator-=(
const Dg_Expr<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T, Dim12,
389 Dim0,
i,
j,
k> &result)
391 return operator-=<Christof<Tp, Tensor_Dim0, Tensor_Dim12>, T>(result);
396 template <
class A,
class U,
int Dim12,
int Dim0,
int Current_Dim0,
397 int Current_Dim1,
int Current_Dim2>
403 iter(Current_Dim2 - 1, Current_Dim0 - 1, Current_Dim1 - 1) = u;
409 template <
class A,
class U,
int Dim12,
int Dim0,
int Current_Dim1,
416 iter(Current_Dim2 - 1, 0, Current_Dim1 - 1) = u;
422 template <
class A,
class U,
int Dim12,
int Dim0,
int Current_Dim2>
427 iter(Current_Dim2 - 1, 0, 0) = u;
433 template <
class A,
class U,
int Dim12,
int Dim0>
441 template <
class A,
class T,
int Tensor_Dim0,
int Tensor_Dim12,
int Dim12,
442 int Dim0,
char i,
char j,
char k>
444 Dg_Expr<Christof<A, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k> &
445 Dg_Expr<Christof<A, Tensor_Dim0, Tensor_Dim12>, T, Dim12, Dim0,
i,
j,
k>::
446 operator=(
const U &u)
457 template <
class A,
class B,
class U,
int Dim23,
int Dim1,
char i,
char j,
458 char k,
int Current_Dim0,
int Current_Dim1,
int Current_Dim2,
int N>
465 iter(
N, Current_Dim2 - 1, Current_Dim0 - 1, Current_Dim1 - 1)
466 = result(Current_Dim0 - 1, Current_Dim1 - 1, Current_Dim2 - 1);
472 template <
class A,
class B,
class U,
int Dim23,
int Dim1,
char i,
char j,
473 char k,
int Current_Dim1,
int Current_Dim2,
int N>
479 iter(
N, Current_Dim2 - 1, 0, Current_Dim1 - 1)
480 = result(0, Current_Dim1 - 1, Current_Dim2 - 1);
486 template <
class A,
class B,
class U,
int Dim23,
int Dim1,
char i,
char j,
487 char k,
int Current_Dim2,
int N>
493 iter(
N, Current_Dim2 - 1, 0, 0) = result(0, 0, Current_Dim2 - 1);
498 template <
class A,
class B,
class U,
int Dim23,
int Dim1,
char i,
char j,
505 iter(
N, 0, 0, 0) = result(0, 0, 0);
508 template <
class A,
class T,
int Dim23,
int Dim1,
char i,
char j,
char k,
510 template <
class B,
class U>
511 Dg_Expr<Ddg_number_rhs_0<A, T, N>, T, Dim23, Dim1,
i,
j,
k> &
512 Dg_Expr<Ddg_number_rhs_0<A, T, N>, T, Dim23, Dim1,
i,
j,
k>::
513 operator=(
const Dg_Expr<B, U, Dim23, Dim1, i, j, k> &result)
516 Number<Dim1>(), Number<N>());
522 template <
class A,
class T,
int Dim23,
int Dim1,
char i,
char j,
char k,
524 Dg_Expr<Ddg_number_rhs_0<A, T, N>, T, Dim23, Dim1,
i,
j,
k> &
525 Dg_Expr<Ddg_number_rhs_0<A, T, N>, T, Dim23, Dim1,
i,
j,
k>::operator=(
526 const Dg_Expr<Ddg_number_rhs_0<A, T, N>, T, Dim23, Dim1,
i,
j,
k> &result)
528 return operator=<Ddg_number_rhs_0<A, T, N>, T>(result);