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>
54 template<
class T,
unsigned Dim,
class RHS,
class OP>
59 template<
class T1,
unsigned Dim,
class RHS,
class OP>
65 template<
class T1,
unsigned Dim,
class RHS,
class OP>
72 template<
class A,
class RHS,
class OP,
class Tag,
class TP>
78 template<
class T1,
unsigned D1,
class RHS,
class Op>
83 template<
class T1,
unsigned D1,
class RHS,
class Op>
90 template<
class T,
unsigned D,
class OP>
97 template<
class T,
unsigned D,
class OP>
115 #define ASSIGNMENT_OPERATORS(FUNC,OP) \
117 template<class LHS, class RHS> \
119 FUNC(const PETE_Expr<LHS>& lhs, const PETE_Expr<RHS>& rhs) \
121 assign(lhs.PETE_unwrap(), rhs.PETE_unwrap().MakeExpression(), \
122 OP(),ExprTag< IsExprTrait<RHS>::IsExpr >()); \
125 template<class T, unsigned D> \
127 FUNC(const IndexedBareField<T,D,D>& lhs, const T& rhs) \
129 assign(lhs,PETE_Scalar<T>(rhs), OP(),ExprTag<true>(),true); \
132 template<class T, unsigned D> \
134 FUNC(const BareField<T,D>& lhs, const T& rhs) \
136 assign(lhs,PETE_Scalar<T>(rhs),OP(),ExprTag<true>()); \
139 template<class A, class TP> \
141 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const bool& rhs) \
143 assign(lhs,PETE_Scalar<bool>(rhs),OP(),ExprTag<true>()); \
145 template<class A, class TP> \
147 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const char& rhs) \
149 assign(lhs,PETE_Scalar<char>(rhs),OP(),ExprTag<true>()); \
151 template<class A, class TP> \
153 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const int& rhs) \
155 assign(lhs,PETE_Scalar<int>(rhs),OP(),ExprTag<true>()); \
157 template<class A,class TP> \
159 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const float& rhs) \
161 assign(lhs,PETE_Scalar<float>(rhs),OP(),ExprTag<true>()); \
163 template<class A, class TP> \
165 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const double& rhs) \
167 assign(lhs,PETE_Scalar<double>(rhs),OP(),ExprTag<true>()); \
169 template<class A, class TP> \
171 FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const std::complex<double>& rhs)\
173 assign(lhs,PETE_Scalar<std::complex<double>>(rhs),OP(),ExprTag<true>()); \
190 template<class
T,
unsigned Dim, class A, class Op>
195 #include "Field/Assign.hpp"
void mineq(const PETE_Expr< LHS > &lhs, const PETE_Expr< RHS > &rhs)
void assign(const BareField< T, Dim > &a, RHS b, OP op, ExprTag< true >)
void maxeq(const PETE_Expr< LHS > &lhs, const PETE_Expr< RHS > &rhs)
#define ASSIGNMENT_OPERATORS(FUNC, OP)
bool TryCompressLHS(LField< T, Dim > &, A &, Op, const NDIndex< Dim > &)
MMatrix< m_complex > complex(MMatrix< double > real)