19 template<
class T,
unsigned Dim>
class BareField;
20 template<
class T,
unsigned Dim>
class LField;
26 #define ASSIGNMSG(x) x
46 template <
bool IsExpr>
60 template<
class T,
unsigned Dim,
class RHS,
class OP>
65 template<
class T1,
unsigned Dim,
class RHS,
class OP>
71 template<
class T1,
unsigned Dim,
class RHS,
class OP>
74 assign(a, b, op, et,
true);
80 template<
class A,
class RHS,
class OP,
class Tag,
class TP>
83 assign(lhs, rhs, op, tag,
true);
87 template<
class A,
class RHS,
class OP,
class Tag,
class TP>
94 template<
class A,
class RHS,
class OP,
class Tag,
class TP>
101 template<
class T1,
unsigned D1,
class RHS,
class Op>
106 template<
class T1,
unsigned D1,
class RHS,
class Op>
113 template<
class T,
unsigned D,
class OP>
120 template<
class T,
unsigned D,
class OP>
138 #define ASSIGNMENT_OPERATORS(FUNC,OP) \
140 template<class LHS, class RHS> \
142 FUNC(const PETE_Expr<LHS>& lhs, const PETE_Expr<RHS>& rhs) \
144 assign(lhs.PETE_unwrap(), rhs.PETE_unwrap().MakeExpression(), \
145 OP(),ExprTag< IsExprTrait<RHS>::IsExpr >()); \
148 template<class T, unsigned D> \
150 FUNC(const IndexedBareField<T,D,D>& lhs, const T& rhs) \
152 assign(lhs,PETE_Scalar<T>(rhs), OP(),ExprTag<true>(),true); \
155 template<class T, unsigned D> \
157 FUNC(const BareField<T,D>& lhs, const T& rhs) \
159 assign(lhs,PETE_Scalar<T>(rhs),OP(),ExprTag<true>()); \
162 template<class A, class TP> \
164 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const bool& rhs) \
166 assign(lhs,PETE_Scalar<bool>(rhs),OP(),ExprTag<true>()); \
168 template<class A, class TP> \
170 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const char& rhs) \
172 assign(lhs,PETE_Scalar<char>(rhs),OP(),ExprTag<true>()); \
174 template<class A, class TP> \
176 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const int& rhs) \
178 assign(lhs,PETE_Scalar<int>(rhs),OP(),ExprTag<true>()); \
180 template<class A,class TP> \
182 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const float& rhs) \
184 assign(lhs,PETE_Scalar<float>(rhs),OP(),ExprTag<true>()); \
186 template<class A, class TP> \
188 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const double& rhs) \
190 assign(lhs,PETE_Scalar<double>(rhs),OP(),ExprTag<true>()); \
192 template<class A, class TP> \
194 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const dcomplex& rhs)\
196 assign(lhs,PETE_Scalar<dcomplex>(rhs),OP(),ExprTag<true>()); \
201 template<
class LHS> \
208 template<class LHS> \
215 template<class LHS> \
238 template<class
T,
unsigned Dim, class A, class Op>
243 #include "Field/Assign.hpp"
void mineq(const PETE_Expr< LHS > &lhs, const PETE_Expr< RHS > &rhs)
void maxeq(const PETE_Expr< LHS > &lhs, const PETE_Expr< RHS > &rhs)
std::complex< double > dcomplex
void assign(const BareField< T, Dim > &a, RHS b, OP op, ExprTag< true >)
#define ASSIGNMENT_OPERATORS(FUNC, OP)
bool TryCompressLHS(LField< T, Dim > &, A &, Op, const NDIndex< Dim > &)