9#ifndef QDP_SCALARSITE_GENERIC_H
10#define QDP_SCALARSITE_GENERIC_H
27#define RComplexFloat RComplex<float>
52#if defined(QDP_SCALARSITE_DEBUG)
53 cout <<
"M*M" << endl;
74#if defined(QDP_SCALARSITE_DEBUG)
75 cout <<
"PSc<M>*PSc<M>" << endl;
88 PMatrix<RComplexFloat,3,PColorMatrix>, OpAdjMultiply>
::Type_t
95#if defined(QDP_SCALARSITE_DEBUG)
96 cout <<
"adj(M)*M" << endl;
109 PScalar<PColorMatrix<RComplexFloat,3> >, OpAdjMultiply>
::Type_t
116#if defined(QDP_SCALARSITE_DEBUG)
117 cout <<
"adj(PSc<M>)*PSc<M>" << endl;
130 PMatrix<RComplexFloat,3,PColorMatrix>, OpMultiplyAdj>
::Type_t
137#if defined(QDP_SCALARSITE_DEBUG)
138 cout <<
"M*adj(M)" << endl;
151 PScalar<PColorMatrix<RComplexFloat,3> >, OpMultiplyAdj>
::Type_t
158#if defined(QDP_SCALARSITE_DEBUG)
159 cout <<
"PSc<M>*adj(PSc<M>)" << endl;
176 PMatrix<RComplexFloat,3,PColorMatrix>, OpAdjMultiplyAdj>
::Type_t
177adjMultiplyAdj(
const PMatrix<RComplexFloat,3,PColorMatrix>& l,
178 const PMatrix<RComplexFloat,3,PColorMatrix>& r)
181 PMatrix<RComplexFloat,3,PColorMatrix>, OpAdjMultiplyAdj>
::Type_t d;
183#if defined(QDP_SCALARSITE_DEBUG)
184 cout <<
"adj(PSc<M>)*adj(PSc<M>)" << endl;
205#if defined(QDP_SCALARSITE_DEBUG)
206 cout <<
"M*V" << endl;
226#if defined(QDP_SCALARSITE_DEBUG)
227 cout <<
"PSc<M>*PSc<V>" << endl;
240 PVector<RComplexFloat,3,PColorVector>, OpAdjMultiply>
::Type_t
247#if defined(QDP_SCALARSITE_DEBUG)
248 cout <<
"adj(M)*V" << endl;
268#if defined(QDP_SCALARSITE_DEBUG)
269 cout <<
"PSc<M>*S" << endl;
282 PScalar<PColorVector<RComplexFloat,3> >, OpAdjMultiply>
::Type_t
289#if defined(QDP_SCALARSITE_DEBUG)
290 cout <<
"adj(PSc<M>)*PSc<V>" << endl;
303 PVector<PColorVector<RComplexFloat,3>,1,PSpinVector>, OpAdjMultiply>
::Type_t
310#if defined(QDP_SCALARSITE_DEBUG)
311 cout <<
"adj(PSc<M>)*S" << endl;
332#if defined(QDP_SCALARSITE_DEBUG)
333 cout <<
"PSc<M>*H" << endl;
348 PVector<PColorVector<RComplexFloat,3>,2,PSpinVector>, OpAdjMultiply>
::Type_t
355#if defined(QDP_SCALARSITE_DEBUG)
356 cout <<
"adj(PSc<M>)*H" << endl;
377#if defined(QDP_SCALARSITE_DEBUG)
378 cout <<
"V+V" << endl;
399#if defined(QDP_SCALARSITE_DEBUG)
400 cout <<
"PSc<M>*D" << endl;
417 PVector<PColorVector<RComplexFloat,3>,4,PSpinVector>, OpAdjMultiply>
::Type_t
424#if defined(QDP_SCALARSITE_DEBUG)
425 cout <<
"adj(PSc<M>)*D" << endl;
450#if defined(QDP_SCALARSITE_DEBUG)
451 cout <<
"PSc<V>+PSc<V>" << endl;
476#if defined(QDP_SCALARSITE_DEBUG)
477 cout <<
"specialized QDP_H_M_times_H" << endl;
483 const C& l =
static_cast<const C&
>(rhs.expression().left());
484 const H& r =
static_cast<const H&
>(rhs.expression().right());
505#if defined(QDP_SCALARSITE_DEBUG)
506#undef QDP_SCALARSITE_DEBUG
MakeReturn< BinaryNode< OpMultiply, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpMultiply >::Type_t >::Expression_t operator*(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< OpAdd, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpAdd >::Type_t >::Expression_t operator+(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
Primitive color Matrix class.
Primitive color Vector class.
Primitive spin Vector class.
Expression class for QDP.
QDPType - major type class/container for all QDP objects.
Subsets - controls how lattices are looped.
const multi1d< int > & siteTable() const
const T * slice() const
Return ref to a column slice.
BinaryReturn< IScalar< T1 >, IScalar< T2 >, OpMultiplyAdj >::Type_t multiplyAdj(const IScalar< T1 > &l, const IScalar< T2 > &r)
BinaryReturn< IScalar< T1 >, IScalar< T2 >, OpAdjMultiply >::Type_t adjMultiply(const IScalar< T1 > &l, const IScalar< T2 > &r)
OLattice< PSpinVector< PColorVector< RComplexFloat, 3 >, 2 > > H
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
Yet another random number generator.
#define _inline_generic_mult_adj_su3_mat_vec(aa, bb, cc)
#define _inline_generic_mult_su3_an(aa, bb, cc)
#define _inline_generic_mult_su3_aa(aa, bb, cc)
#define _inline_generic_mult_su3_na(aa, bb, cc)
#define _inline_generic_add_su3_vector(aa, bb, cc)
#define _inline_generic_mult_su3_nn(aa, bb, cc)
#define _inline_generic_mult_su3_mat_vec(aa, bb, cc)