19template<
class T,
unsigned Dim>
class BareField;
20template<
class T,
unsigned Dim>
class LField;
54template<
class T,
unsigned Dim,
class RHS,
class OP>
59template<
class T1,
unsigned Dim,
class RHS,
class OP>
65template<
class T1,
unsigned Dim,
class RHS,
class OP>
72template<
class A,
class RHS,
class OP,
class Tag,
class TP>
78template<
class T1,
unsigned D1,
class RHS,
class Op>
83template<
class T1,
unsigned D1,
class RHS,
class Op>
90template<
class T,
unsigned D,
class OP>
97template<
class T,
unsigned D,
class OP>
115#define ASSIGNMENT_OPERATORS(FUNC,OP) \
117template<class LHS, class RHS> \
119FUNC(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 >()); \
125template<class T, unsigned D> \
127FUNC(const IndexedBareField<T,D,D>& lhs, const T& rhs) \
129 assign(lhs,PETE_Scalar<T>(rhs), OP(),ExprTag<true>(),true); \
132template<class T, unsigned D> \
134FUNC(const BareField<T,D>& lhs, const T& rhs) \
136 assign(lhs,PETE_Scalar<T>(rhs),OP(),ExprTag<true>()); \
139template<class A, class TP> \
141FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const bool& rhs) \
143 assign(lhs,PETE_Scalar<bool>(rhs),OP(),ExprTag<true>()); \
145template<class A, class TP> \
147FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const char& rhs) \
149 assign(lhs,PETE_Scalar<char>(rhs),OP(),ExprTag<true>()); \
151template<class A, class TP> \
153FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const int& rhs) \
155 assign(lhs,PETE_Scalar<int>(rhs),OP(),ExprTag<true>()); \
157template<class A,class TP> \
159FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const float& rhs) \
161 assign(lhs,PETE_Scalar<float>(rhs),OP(),ExprTag<true>()); \
163template<class A, class TP> \
165FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const double& rhs) \
167 assign(lhs,PETE_Scalar<double>(rhs),OP(),ExprTag<true>()); \
169template<class A, class TP> \
171FUNC(const PETE_TUTree<OpParens<TP>,A>& lhs, const std::complex<double>& rhs)\
173 assign(lhs,PETE_Scalar<std::complex<double>>(rhs),OP(),ExprTag<true>()); \
190template<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)