10#ifndef QDP_SCALARSITE_GENERIC_LINALG_H
11#define QDP_SCALARSITE_GENERIC_LINALG_H
48#if defined(QDP_SCALARSITE_DEBUG)
49 cout <<
"M*M" << endl;
70#if defined(QDP_SCALARSITE_DEBUG)
71 cout <<
"PSc<M>*PSc<M>" << endl;
91#if defined(QDP_SCALARSITE_DEBUG)
92 cout <<
"adj(M)*M" << endl;
105 PScalar<PColorMatrix<RComplexFloat,3> >, OpAdjMultiply>
::Type_t
112#if defined(QDP_SCALARSITE_DEBUG)
113 cout <<
"adj(PSc<M>)*PSc<M>" << endl;
126 PMatrix<RComplexFloat,3,PColorMatrix>, OpMultiplyAdj>
::Type_t
133#if defined(QDP_SCALARSITE_DEBUG)
134 cout <<
"M*adj(M)" << endl;
147 PScalar<PColorMatrix<RComplexFloat,3> >, OpMultiplyAdj>
::Type_t
154#if defined(QDP_SCALARSITE_DEBUG)
155 cout <<
"PSc<M>*adj(PSc<M>)" << endl;
172 PMatrix<RComplexFloat,3,PColorMatrix>, OpAdjMultiplyAdj>
::Type_t
174 const PMatrix<RComplexFloat,3,PColorMatrix>& r)
177 PMatrix<RComplexFloat,3,PColorMatrix>, OpAdjMultiplyAdj>
::Type_t d;
179#if defined(QDP_SCALARSITE_DEBUG)
180 cout <<
"adj(PSc<M>)*adj(PSc<M>)" << endl;
201#if defined(QDP_SCALARSITE_DEBUG)
202 cout <<
"M*V" << endl;
222#if defined(QDP_SCALARSITE_DEBUG)
223 cout <<
"PSc<M>*PSc<V>" << endl;
236 PVector<RComplexFloat,3,PColorVector>, OpAdjMultiply>
::Type_t
243#if defined(QDP_SCALARSITE_DEBUG)
244 cout <<
"adj(M)*V" << endl;
264#if defined(QDP_SCALARSITE_DEBUG)
265 cout <<
"PSc<M>*S" << endl;
278 PScalar<PColorVector<RComplexFloat,3> >, OpAdjMultiply>
::Type_t
285#if defined(QDP_SCALARSITE_DEBUG)
286 cout <<
"adj(PSc<M>)*PSc<V>" << endl;
299 PVector<PColorVector<RComplexFloat,3>,1,PSpinVector>, OpAdjMultiply>
::Type_t
306#if defined(QDP_SCALARSITE_DEBUG)
307 cout <<
"adj(PSc<M>)*S" << endl;
328#if defined(QDP_SCALARSITE_DEBUG)
329 cout <<
"PSc<M>*H" << endl;
344 PVector<PColorVector<RComplexFloat,3>,2,PSpinVector>, OpAdjMultiply>
::Type_t
351#if defined(QDP_SCALARSITE_DEBUG)
352 cout <<
"adj(PSc<M>)*H" << endl;
373#if defined(QDP_SCALARSITE_DEBUG)
374 cout <<
"V+V" << endl;
395#if defined(QDP_SCALARSITE_DEBUG)
396 cout <<
"PSc<M>*D" << endl;
413 PVector<PColorVector<RComplexFloat,3>,4,PSpinVector>, OpAdjMultiply>
::Type_t
420#if defined(QDP_SCALARSITE_DEBUG)
421 cout <<
"adj(PSc<M>)*D" << endl;
446#if defined(QDP_SCALARSITE_DEBUG)
447 cout <<
"PSc<V>+PSc<V>" << endl;
482#if defined(QDP_SCALARSITE_DEBUG)
483 cout <<
"specialized QDP_H_M_times_H" << endl;
492 const C& l =
static_cast<const C&
>(rhs.expression().left());
493 const H& r =
static_cast<const H&
>(rhs.expression().right());
497 int totalSize = s.
end() - s.
start() + 1;
499 int base = s.
start();
551#if defined(QDP_SCALARSITE_DEBUG)
552#undef QDP_SCALARSITE_DEBUG
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
bool hasOrderedRep() const
const T * slice() const
Return ref to a column slice.
BinaryReturn< IScalar< T1 >, IScalar< T2 >, OpAdjMultiplyAdj >::Type_t adjMultiplyAdj(const IScalar< T1 > &l, const IScalar< T2 > &r)
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 ordered_linalg_evaluate_userfunc(int lo, int hi, int myId, ordered_linalg_user_arg *a)
user function for the evaluate function in the ordered situation
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
RComplex< BAGELQDPFloat > RComplexFloat
void unordered_linalg_evaluate_userfunc(int lo, int hi, int myId, unordered_linalg_user_arg *a)
user function for the evaluate function in the unordered situation
Yet another random number generator.
void dispatch_to_threads(int numSiteTable, Arg a, void(*func)(int, int, int, Arg *))
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)
#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)
user argument for the evaluate function in the ordered situation
user argument for the evaluate function in the unordered situation
OLattice< PSpinVector< PColorVector< RComplexFloat, 3 >, 2 > > & d