27template<
class T,
class C>
53 C* me =
static_cast<C*
>(
this);
62 C* me =
static_cast<C*
>(
this);
67 template<
class T1,
class C1>
71 C* me =
static_cast<C*
>(
this);
76 template<
class T1,
class C1>
80 C* me =
static_cast<C*
>(
this);
97 C* me =
static_cast<C*
>(
this);
103 template<
class T1,
class C1>
107 C* me =
static_cast<C*
>(
this);
112 template<
class T1,
class C1>
116 C* me =
static_cast<C*
>(
this);
125 C* me =
static_cast<C*
>(
this);
131 template<
class T1,
class C1>
135 C* me =
static_cast<C*
>(
this);
140 template<
class T1,
class C1>
144 C* me =
static_cast<C*
>(
this);
153 C* me =
static_cast<C*
>(
this);
159 template<
class T1,
class C1>
163 C* me =
static_cast<C*
>(
this);
168 template<
class T1,
class C1>
172 C* me =
static_cast<C*
>(
this);
181 C* me =
static_cast<C*
>(
this);
187 template<
class T1,
class C1>
191 C* me =
static_cast<C*
>(
this);
196 template<
class T1,
class C1>
200 C* me =
static_cast<C*
>(
this);
209 C* me =
static_cast<C*
>(
this);
215 template<
class T1,
class C1>
219 C* me =
static_cast<C*
>(
this);
224 template<
class T1,
class C1>
228 C* me =
static_cast<C*
>(
this);
237 C* me =
static_cast<C*
>(
this);
243 template<
class T1,
class C1>
247 C* me =
static_cast<C*
>(
this);
252 template<
class T1,
class C1>
256 C* me =
static_cast<C*
>(
this);
265 C* me =
static_cast<C*
>(
this);
271 template<
class T1,
class C1>
275 C* me =
static_cast<C*
>(
this);
280 template<
class T1,
class C1>
284 C* me =
static_cast<C*
>(
this);
293 C* me =
static_cast<C*
>(
this);
299 template<
class T1,
class C1>
303 C* me =
static_cast<C*
>(
this);
308 template<
class T1,
class C1>
312 C* me =
static_cast<C*
>(
this);
321 C* me =
static_cast<C*
>(
this);
327 template<
class T1,
class C1>
331 C* me =
static_cast<C*
>(
this);
336 template<
class T1,
class C1>
340 C* me =
static_cast<C*
>(
this);
349 C* me =
static_cast<C*
>(
this);
355 template<
class T1,
class C1>
359 C* me =
static_cast<C*
>(
this);
364 template<
class T1,
class C1>
368 C* me =
static_cast<C*
>(
this);
374 template<
class T1,
class C1>
379 QDP_error_exit(
"Assigning subtype(view) to qdptype is not supported");
384 for(
int j=0; j < rhs.
subset().numSiteTable(); ++j) {
395 const T&
elem(
int i)
const {
return static_cast<const C*
>(
this)->
elem(i);}
398 const T&
elem()
const {
return static_cast<const C*
>(
this)->
elem();}
408template<
class T1,
class C1,
class Op>
415template<
class T1,
class C1,
class T2,
class C2,
class Op>
424template<
class T1,
class C1,
class T2,
class C2,
class T3,
class C3,
class Op>
436template<
class T,
class C>
453template<
class T,
class C>
464template<
class T,
class C>
Expression class for QDP.
QDPSubType - type representing a field living on a subset.
const Subset & subset() const
QDPType - major type class/container for all QDP objects.
C & operator+=(const typename WordType< C >::Type_t &rhs)
C & operator<<=(const QDPType< T1, C1 > &rhs)
QDPType(const QDPType &)
Copy constructor.
C & operator*=(const typename WordType< C >::Type_t &rhs)
C & operator|=(const QDPExpr< T1, C1 > &rhs)
C & operator>>=(const QDPExpr< T1, C1 > &rhs)
C & operator+=(const QDPType< T1, C1 > &rhs)
C & assign(const QDPType< T1, C1 > &rhs)
C & operator/=(const QDPType< T1, C1 > &rhs)
C Container_t
Type of the container class.
C & operator|=(const typename WordType< C >::Type_t &rhs)
C & operator%=(const QDPType< T1, C1 > &rhs)
C & operator>>=(const typename WordType< C >::Type_t &rhs)
C & operator&=(const QDPExpr< T1, C1 > &rhs)
C & operator=(const QDPType &rhs)
Use this for default operator=.
C & operator<<=(const typename WordType< C >::Type_t &rhs)
C & operator<<=(const QDPExpr< T1, C1 > &rhs)
void assign(const QDPSubType< T1, C1 > &rhs)
C & operator^=(const typename WordType< C >::Type_t &rhs)
T Subtype_t
Type of the first argument.
C & operator-=(const QDPType< T1, C1 > &rhs)
C & operator>>=(const QDPType< T1, C1 > &rhs)
C & assign(const typename WordType< C >::Type_t &rhs)
C & operator&=(const QDPType< T1, C1 > &rhs)
C & operator^=(const QDPType< T1, C1 > &rhs)
QDPType()
Main constructor.
C & operator|=(const QDPType< T1, C1 > &rhs)
C & operator&=(const typename WordType< C >::Type_t &rhs)
C & assign(const QDPExpr< T1, C1 > &rhs)
C & operator%=(const typename WordType< C >::Type_t &rhs)
C & operator/=(const QDPExpr< T1, C1 > &rhs)
C & operator-=(const typename WordType< C >::Type_t &rhs)
C & operator-=(const QDPExpr< T1, C1 > &rhs)
const T & elem(int i) const
C & operator%=(const QDPExpr< T1, C1 > &rhs)
C & operator+=(const QDPExpr< T1, C1 > &rhs)
C & operator^=(const QDPExpr< T1, C1 > &rhs)
C & operator*=(const QDPType< T1, C1 > &rhs)
C & operator*=(const QDPExpr< T1, C1 > &rhs)
C & operator/=(const typename WordType< C >::Type_t &rhs)
const multi1d< int > & siteTable() const
const T * slice() const
Return ref to a column slice.
MakeReturn< UnaryNode< OpIdentity, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, OpIdentity >::Type_t >::Expression_t PETE_identity(const QDPType< T1, C1 > &l)
Identity operator.
void zero_rep(IScalar< T > &dest)
dest = 0
void evaluate(OLattice< DCol > &d, const OpAssign &op, const QDPExpr< BinaryNode< OpMultiply, Reference< QDPType< DCol, OLattice< DCol > > >, Reference< QDPType< DCol, OLattice< DCol > > > >, OLattice< DCol > > &rhs, const Subset &s)
OLattice< PScalar< PColorMatrix< RComplexFloat, 3 > > > C
Subset all
Default all subset.
Yet another random number generator.
void QDP_error_exit(const char *format,...)
Simple error display and abort routine.
QDPType< typename BinaryReturn< T1, T2, Op >::Type_t, typename BinaryReturn< C1, C2, Op >::Type_t > Type_t
Promote< T1, T2 >::Type_t Type_t
static Leaf_t make(const Inp_t &a)
Reference< Inp_t > Leaf_t
static Type_t apply(const QDPType< T, C > &a, const ElemLeaf &f)
static Type_t apply(const QDPType< T, C > &a, const EvalLeaf1 &f)
Construct simple word type. Default behavior is empty.
QDPType< typename BinaryReturn< T2, T3, Op >::Type_t, typename BinaryReturn< C2, C3, Op >::Type_t > Type_t
QDPType< typename UnaryReturn< T1, Op >::Type_t, typename UnaryReturn< C1, Op >::Type_t > Type_t