18#include "../Tensor4/Tensor4_number.hpp"
22 template <
class A,
class T,
int Dim0,
int Dim1,
int Dim2,
char i,
char j,
31 T
operator()(
const int N1,
const int N2,
const int N3)
const
33 return iter(N1, N2, N3);
37 template <
class A,
class T,
int Tensor_Dim0,
int Tensor_Dim1,
int Tensor_Dim2,
38 int Dim0,
int Dim1,
int Dim2,
char i,
char j,
char k>
40 Dim0, Dim1, Dim2,
i,
j,
k>
51 return iter(N1, N2, N3);
53 T
operator()(
const int N1,
const int N2,
const int N3)
const
55 return iter(N1, N2, N3);
62 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
char i_1,
67 for(
int ii = 0; ii < Dim0; ++ii)
68 for(
int jj = 0; jj < Dim1; ++jj)
69 for(
int kk = 0; kk < Dim2; ++kk)
76 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
char i_1,
86 Dim0, Dim1, Dim2,
i,
j,
k> &rhs)
93 Dim1, Dim2,
i,
j,
k> &
96 for(
int ii = 0; ii < Dim0; ++ii)
97 for(
int jj = 0; jj < Dim1; ++jj)
98 for(
int kk = 0; kk < Dim2; ++kk)
100 iter(ii, jj, kk) = u;
107 Dim1, Dim2,
i,
j,
k> &
110 for(
int ii = 0; ii < Dim0; ++ii)
111 for(
int jj = 0; jj < Dim1; ++jj)
112 for(
int kk = 0; kk < Dim2; ++kk)
114 iter(ii, jj, kk) *= u;
121 Dim1, Dim2,
i,
j,
k> &
124 for(
int ii = 0; ii < Dim0; ++ii)
125 for(
int jj = 0; jj < Dim1; ++jj)
126 for(
int kk = 0; kk < Dim2; ++kk)
128 iter(ii, jj, kk) /= u;
133 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
char i_1,
137 for (
int ii = 0; ii < Dim0; ++ii)
138 for (
int jj = 0; jj < Dim1; ++jj)
139 for (
int kk = 0; kk < Dim2; ++kk) {
140 iter(ii, jj, kk) +=
permute(*
this, rhs, ii, jj, kk);
147 Dim0, Dim1, Dim2,
i,
j,
k> &rhs) {
148 for (
int ii = 0; ii < Dim0; ++ii)
149 for (
int jj = 0; jj < Dim1; ++jj)
150 for (
int kk = 0; kk < Dim2; ++kk) {
151 iter(ii, jj, kk) +=
permute(*
this, rhs, ii, jj, kk);
156 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
char i_1,
161 for (
int ii = 0; ii < Dim0; ++ii)
162 for (
int jj = 0; jj < Dim1; ++jj)
163 for (
int kk = 0; kk < Dim2; ++kk) {
164 iter(ii, jj, kk) -=
permute(*
this, rhs, ii, jj, kk);
171 Dim0, Dim1, Dim2,
i,
j,
k> &rhs) {
172 for (
int ii = 0; ii < Dim0; ++ii)
173 for (
int jj = 0; jj < Dim1; ++jj)
174 for (
int kk = 0; kk < Dim2; ++kk) {
175 iter(ii, jj, kk) -=
permute(*
this, rhs, ii, jj, kk);
180 template <
class B,
class U,
int Dim1_01,
int Dim1_2,
char i_1,
char j_1,
184 for (
int ii = 0; ii < Dim0; ++ii)
185 for (
int jj = 0; jj < Dim1; ++jj)
186 for (
int kk = 0; kk < Dim2; ++kk) {
187 iter(ii, jj, kk) =
permute(*
this, rhs, ii, jj, kk);
192 template <
class B,
class U,
int Dim1_01,
int Dim1_2,
char i_1,
char j_1,
196 for (
int ii = 0; ii < Dim0; ++ii)
197 for (
int jj = 0; jj < Dim1; ++jj)
198 for (
int kk = 0; kk < Dim2; ++kk) {
199 iter(ii, jj, kk) +=
permute(*
this, rhs, ii, jj, kk);
204 template <
class B,
class U,
int Dim1_01,
int Dim1_2,
char i_1,
char j_1,
208 for (
int ii = 0; ii < Dim0; ++ii)
209 for (
int jj = 0; jj < Dim1; ++jj)
210 for (
int kk = 0; kk < Dim2; ++kk) {
211 iter(ii, jj, kk) -=
permute(*
this, rhs, ii, jj, kk);
219 template <
class A,
class T,
int Dim0,
int Dim1,
int Dim2,
char i,
char j,
228 return iter(N0, N1, N2,
N);
230 T
operator()(
const int N0,
const int N1,
const int N2)
const {
231 return iter(N0, N1, N2,
N);
238 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
char i_1,
242 for (
int ii = 0; ii < Dim0; ++ii)
243 for (
int jj = 0; jj < Dim1; ++jj)
244 for (
int kk = 0; kk < Dim2; ++kk) {
251 Dim1, Dim2,
i,
j,
k> &result) {
259 template <
class A,
class T,
int Dim0,
int Dim1,
int Dim2,
char i,
char j,
268 return iter(N0, N1, N2,
N);
270 T
operator()(
const int N0,
const int N1,
const int N2)
const {
271 return iter(N0, N1, N2,
N);
278 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
char i_1,
283 for (
int ii = 0; ii < Dim0; ++ii)
284 for (
int jj = 0; jj < Dim1; ++jj)
285 for (
int kk = 0; kk < Dim2; ++kk) {
292 Dim1, Dim2,
i,
j,
k> &result) {
298 template <
class A,
class T,
int Dim0,
int Dim1,
int Dim2,
char i,
char j,
306 return -
iterA(N1, N2, N3);
313 template <
class A,
class T,
int Dim0,
int Dim1,
int Dim2,
char i,
char j,
315 Tensor3_Expr<minus_Tensor3<A, T, Dim0, Dim1, Dim2, i, j, k>, T, Dim0, Dim1,
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator-= auto & operator-=(const Tensor3_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, i_1, j_1, k_1 > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator-= auto & operator-=(const Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator= auto & operator=(const Tensor3_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, i_1, j_1, k_1 > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator= auto & operator=(const Dg_Expr< B, U, Dim1_01, Dim1_2, i_1, j_1, k_1 > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator= auto & operator=(const Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator+= auto & operator+=(const Dg_Expr< B, U, Dim1_01, Dim1_2, i_1, j_1, k_1 > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator+= auto & operator+=(const Tensor3_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, i_1, j_1, k_1 > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::Tensor3_Expr Tensor3_Expr(const Tensor3_Expr &)=default
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::Tensor3_Expr Tensor3_Expr(Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 > &a)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator-= auto & operator-=(const Dg_Expr< B, U, Dim1_01, Dim1_2, i_1, j_1, k_1 > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator() T & operator()(const int N1, const int N2, const int N3)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator/= Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > & operator/=(const U &u)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::iter Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 > & iter
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator= Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > & operator=(const U &u)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator+= auto & operator+=(const Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator() T operator()(const int N1, const int N2, const int N3) const
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::equals auto & equals(const Tensor3_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, i_1, j_1, k_1 > &rhs)
FTensor::Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k >::operator*= Tensor3_Expr< Tensor3< A, Tensor_Dim0, Tensor_Dim1, Tensor_Dim2 >, T, Dim0, Dim1, Dim2, i, j, k > & operator*=(const U &u)
auto & operator=(const Tensor3_Expr< Tensor4_number_rhs_2< A, T, N >, T, Dim0, Dim1, Dim2, i, j, k > &result)
auto & operator=(const Tensor3_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, i_1, j_1, k_1 > &rhs)
T & operator()(const int N0, const int N1, const int N2)
T operator()(const int N0, const int N1, const int N2) const
T operator()(const int N0, const int N1, const int N2) const
auto & operator=(const Tensor3_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, i_1, j_1, k_1 > &rhs)
T & operator()(const int N0, const int N1, const int N2)
auto & operator=(const Tensor3_Expr< Tensor4_number_rhs_3< A, T, N >, T, Dim0, Dim1, Dim2, i, j, k > &result)
Tensor3_Expr(const Tensor3_Expr &)=default
T operator()(const int N1, const int N2, const int N3) const
minus_Tensor3(const Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > &a)
T operator()(const int N1, const int N2, const int N3) const
Tensor3_Expr< A, T, Dim0, Dim1, Dim2, i, j, k > iterA
FTensor::Index< 'i', SPACE_DIM > i
FTensor::Index< 'j', 3 > j
FTensor::Index< 'k', 3 > k
Tensors class implemented by Walter Landry.
Ddg_Expr< Ddg_minus_Ddg< A, B, T, U, Dim01, Dim23, i, j, k, l >, typename promote< T, U >::V, Dim01, Dim23, i, j, k, l > operator-(const Ddg_Expr< A, T, Dim01, Dim23, i, j, k, l > &a, const Ddg_Expr< B, U, Dim01, Dim23, i, j, k, l > &b)
U permute(const Tensor2_Expr< A, T, Dim0_0, Dim0_1, i0, j0 > &, const Tensor2_Expr< B, U, Dim1_0, Dim1_1, i1, j1 > &rhs, const int N0, const int N1)