14 #include "../permute.hpp"
20 template <
class A,
class T,
int Dim0,
int Dim1,
int Dim2,
int Dim3,
char i,
21 char j,
char k,
char l>
34 template <
class A,
class T,
int Dim0,
int Dim1,
int Dim2,
int Dim3,
char i,
35 char j,
char k,
char l>
56 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
int Dim1_3,
57 char i_1,
char j_1,
char k_1,
char l_1>
61 for(
int ii = 0; ii < Dim0; ++ii)
62 for(
int jj = 0; jj < Dim1; ++jj)
63 for(
int kk = 0; kk < Dim2; ++kk)
64 for(
int ll = 0; ll < Dim3; ++ll)
66 iter(ii, jj, kk, ll) =
permute(*
this, rhs, ii, jj, kk, ll);
71 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
int Dim1_3,
72 char i_1,
char j_1,
char k_1,
char l_1>
74 i_1, j_1, k_1, l_1> &rhs)
81 Dim1, Dim2, Dim3,
i,
j,
k,
l> &rhs)
86 template <
class B,
class U,
int Dim01,
int Dim23,
char i_1,
char j_1,
90 for(
int ii = 0; ii != Dim01; ++ii)
91 for(
int jj = 0; jj != Dim01; ++jj)
92 for(
int kk = 0; kk != Dim23; ++kk)
93 for (
int ll = 0; ll != Dim23; ++ll) {
94 iter(ii, jj, kk, ll) = rhs(ii, jj, kk, ll);
99 template <
class B,
class U,
int Dim01,
int Dim23,
char i_1,
char j_1,
106 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
int Dim1_3,
107 char i_1,
char j_1,
char k_1,
char l_1>
109 i_1, j_1, k_1, l_1> &rhs)
111 for(
int ii = 0; ii < Dim0; ++ii)
112 for(
int jj = 0; jj < Dim1; ++jj)
113 for(
int kk = 0; kk < Dim2; ++kk)
114 for(
int ll = 0; ll < Dim3; ++ll)
116 iter(ii, jj, kk, ll) +=
permute(*
this, rhs, ii, jj, kk, ll);
121 template <
class B,
class U,
int Dim1_0,
int Dim1_1,
int Dim1_2,
int Dim1_3,
122 char i_1,
char j_1,
char k_1,
char l_1>
124 i_1, j_1, k_1, l_1> &rhs)
126 for(
int ii = 0; ii < Dim0; ++ii)
127 for(
int jj = 0; jj < Dim1; ++jj)
128 for(
int kk = 0; kk < Dim2; ++kk)
129 for(
int ll = 0; ll < Dim3; ++ll)
131 iter(ii, jj, kk, ll) +=
permute(*
this, rhs, ii, jj, kk, ll);
136 template <
class B,
class U,
int Dim01,
int Dim23,
char i_1,
char j_1,
140 for (
int ii = 0; ii != Dim01; ++ii)
141 for (
int jj = 0; jj != Dim01; ++jj)
142 for (
int kk = 0; kk != Dim23; ++kk)
143 for (
int ll = 0; ll != Dim23; ++ll) {
144 iter(ii, jj, kk, ll) += rhs(ii, jj, kk, ll);
149 template <
class B,
class U,
int Dim01,
int Dim23,
char i_1,
char j_1,
153 for (
int ii = 0; ii != Dim01; ++ii)
154 for (
int jj = 0; jj != Dim01; ++jj)
155 for (
int kk = 0; kk != Dim23; ++kk)
156 for (
int ll = 0; ll != Dim23; ++ll) {
157 iter(ii, jj, kk, ll) -= rhs(ii, jj, kk, ll);
163 for (
int ii = 0; ii != Dim0; ++ii)
164 for (
int jj = 0; jj != Dim1; ++jj)
165 for (
int kk = 0; kk != Dim2; ++kk)
166 for (
int ll = 0; ll != Dim3; ++ll)
167 iter(ii, jj, kk, ll) =
d;
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 for (
int ll = 0; ll != Dim3; ++ll)
176 iter(ii, jj, kk, ll) *=
d;
181 for (
int ii = 0; ii != Dim0; ++ii)
182 for (
int jj = 0; jj != Dim1; ++jj)
183 for (
int kk = 0; kk != Dim2; ++kk)
184 for (
int ll = 0; ll != Dim3; ++ll)
185 iter(ii, jj, kk, ll) /=
d;
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::iter Tensor4< A, Dim0, Dim1, Dim2, Dim3 > & iter
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= auto & operator=(const U &d)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator+= auto & operator+=(const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator() T operator()(const int N1, const int N2, const int N3, const int N4) const
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator-= auto & operator-=(const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator() T & operator()(const int N1, const int N2, const int N3, const int N4)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= auto & operator=(const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::Tensor4_Expr Tensor4_Expr(Tensor4< A, Dim0, Dim1, Dim2, Dim3 > &a)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::equals auto & equals(const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator/= auto & operator/=(const U &d)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator-= auto & operator-=(const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator+= auto & operator+=(const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= auto & operator=(const Ddg_Expr< B, U, Dim01, Dim23, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator= auto & operator=(const Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::equals auto & equals(const Tensor4_Expr< B, U, Dim1_0, Dim1_1, Dim1_2, Dim1_3, i_1, j_1, k_1, l_1 > &rhs)
FTensor::Tensor4_Expr< Tensor4< A, Dim0, Dim1, Dim2, Dim3 >, T, Dim0, Dim1, Dim2, Dim3, i, j, k, l >::operator*= auto & operator*=(const U &d)
T operator()(const int N1, const int N2, const int N3, const int N4) const
FTensor::Index< 'l', 3 > l
FTensor::Index< 'j', 3 > j
FTensor::Index< 'i', 3 > i
FTensor::Index< 'k', 3 > k
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)
const Tensor1_Expr< const dTensor0< T, Dim, i >, typename promote< T, double >::V, Dim, i > d(const Tensor0< T * > &a, const Index< i, Dim > index, const Tensor1< int, Dim > &d_ijk, const Tensor1< double, Dim > &d_xyz)