9#ifndef QDP_PROFILE_INCLUDE
10#define QDP_PROFILE_INCLUDE
21void initProfile(
const std::string& file,
const std::string& caller,
int line);
28void pushProfileInfo(
int level,
const std::string& file,
const std::string& caller,
int line);
36#if ! defined(QDP_USE_PROFILING)
38#define QDP_PUSH_PROFILE(a)
39#define QDP_POP_PROFILE()
43#define QDP_PUSH_PROFILE(a) pushProfileInfo(a, __FILE__, __func__, __LINE__)
44#define QDP_POP_PROFILE() popProfileInfo()
53void registerProfile(QDPProfile_t* qp);
70 QDPProfile_t() {init();}
73 template<
class T,
class C,
class Op,
class RHS,
class C1>
74 QDPProfile_t(
const QDPType<T,C>& dest,
const Op& op,
const QDPExpr<RHS,C1>& rhs)
81 printExprTree(os, dest, op, rhs);
83 registerProfile(
this);
88 template<
class T,
class C,
class Op,
class OpOuter,
class RHS,
class C1>
89 QDPProfile_t(
const QDPType<T,C>& dest,
const Op& op,
const OpOuter& opOuter,
const QDPExpr<RHS,C1>& rhs)
95 typedef UnaryNode<OpOuter, typename CreateLeaf<QDPExpr<RHS,C1> >::Leaf_t> Tree_t;
99 printExprTree(os, dest, op,
101 CreateLeaf<QDPExpr<RHS,C1> >::make(rhs))));
103 registerProfile(
this);
108 template<
class T,
class C,
class Op,
class OpOuter,
class T1,
class C1>
109 QDPProfile_t(
const QDPType<T,C>& dest,
const Op& op,
const OpOuter& opOuter,
const QDPType<T1,C1>& rhs)
115 typedef UnaryNode<OpOuter, typename CreateLeaf<QDPType<T1,C1> >::Leaf_t> Tree_t;
119 printExprTree(os, dest, op,
121 CreateLeaf<QDPType<T1,C1> >::make(rhs))));
123 registerProfile(
this);
129struct QDPProfileInfo_t
136 QDPProfileInfo_t() {line=level=0;}
138 QDPProfileInfo_t(
const QDPProfileInfo_t& a) :
139 level(a.level), file(a.file), caller(a.caller), line(a.line) {}
141 QDPProfileInfo_t(
int _level,
const std::string& _file,
const std::string& _caller,
int _line) :
142 level(_level), file(_file), caller(_caller), line(_line) {}
146struct QDPProfileHead_t
148 QDPProfileInfo_t info;
152 QDPProfileHead_t() {start=0; end=0;}
153 QDPProfileHead_t(
const QDPProfileInfo_t& a) : info(a), start(0), end(0) {}
154 QDPProfileHead_t(
const QDPProfileHead_t& a) : info(a.info), start(a.start), end(a.end) {}
164template<
class T,
class C,
class Op,
class RHS,
class C1>
166void printExprTree(ostream& os,
180 typedef ForEachInOrder<Assign_t, PrintTag, PrintTag, NullTag> Print_t;
181 Assign_t t(op, dest, e);
182 Print_t::apply(t, PrintTag(os), PrintTag(os), NullTag());
185 typedef ForEachInOrder<RHS, PrintTag, PrintTag, NullTag> Print_t;
190 Print_t::apply(e, PrintTag(os), PrintTag(os), NullTag());
204 mutable ostream &os_m;
205 PrintTag(ostream &os) : os_m(os) {}
217template<
class T,
class C>
221 static int apply(
const QDPType<T,C> &s,
const PrintTag &f)
223 return LeafFunctor<C,PrintTag>::apply(
static_cast<const C&
>(s),f);
239 static int apply(
const float &s,
const PrintTag &f)
250 static int apply(
const double &s,
const PrintTag &f)
261 static int apply(
const int &s,
const PrintTag &f)
272 static int apply(
const char &s,
const PrintTag &f)
283 static int apply(
const bool &s,
const PrintTag &f)
294 static int apply(
const IScalar<T> &s,
const PrintTag &f)
297 LeafFunctor<T,PrintTag>::apply(s.elem(),f);
303template<
class T,
int N>
307 static int apply(
const ILattice<T,N> &s,
const PrintTag &f)
310 LeafFunctor<T,PrintTag>::apply(s.elem(0),f);
311 f.os_m <<
"," << N <<
">";
320 static int apply(
const RScalar<T> &s,
const PrintTag &f)
323 LeafFunctor<T,PrintTag>::apply(s.elem(),f);
333 static int apply(
const RComplex<T> &s,
const PrintTag &f)
336 LeafFunctor<T,PrintTag>::apply(s.real(),f);
346 static int apply(
const PScalar<T> &s,
const PrintTag &f)
349 LeafFunctor<T,PrintTag>::apply(s.elem(),f);
359 static int apply(
const PSeed<T> &s,
const PrintTag &f)
362 LeafFunctor<T,PrintTag>::apply(s.elem(0),f);
368template <
class T,
int N>
372 static int apply(
const PColorMatrix<T,N> &s,
const PrintTag &f)
375 LeafFunctor<T,PrintTag>::apply(s.elem(0,0),f);
376 f.os_m <<
"," << N <<
">";
381template <
class T,
int N>
385 static int apply(
const PSpinMatrix<T,N> &s,
const PrintTag &f)
388 LeafFunctor<T,PrintTag>::apply(s.elem(0,0),f);
389 f.os_m <<
"," << N <<
">";
394template <
class T,
int N>
398 static int apply(
const PColorVector<T,N> &s,
const PrintTag &f)
400 f.os_m <<
"ColorVec<";
401 LeafFunctor<T,PrintTag>::apply(s.elem(0),f);
402 f.os_m <<
"," << N <<
">";
407template <
class T,
int N>
411 static int apply(
const PSpinVector<T,N> &s,
const PrintTag &f)
413 f.os_m <<
"SpinVec<";
414 LeafFunctor<T,PrintTag>::apply(s.elem(0),f);
415 f.os_m <<
"," << N <<
">";
420template <
class T,
int N,
template<
class,
int>
class C>
424 static int apply(
const PMatrix<T,N,C> &s,
const PrintTag &f)
426 return LeafFunctor<C<T,N>,PrintTag>::apply(
static_cast<const C<T,N>&
>(s),f);
430template <
class T,
int N,
template<
class,
int>
class C>
434 static int apply(
const PVector<T,N,C> &s,
const PrintTag &f)
436 return LeafFunctor<C<T,N>,PrintTag>::apply(
static_cast<const C<T,N>&
>(s),f);
444 static int apply(
const OScalar<T> &s,
const PrintTag &f)
447 LeafFunctor<T,PrintTag>::apply(s.elem(),f);
457 static int apply(
const OLattice<T> &s,
const PrintTag &f)
460 LeafFunctor<T,PrintTag>::apply(s.elem(0),f);
470 static int apply(
const GammaType<N> &s,
const PrintTag &f)
472 f.os_m <<
"GammaType";
477template<
int N,
int m>
481 static int apply(
const GammaConst<N,m> &s,
const PrintTag &f)
483 f.os_m <<
"GammaConst";
502 static void start(Op,PrintTag p)
505 static void center(Op,PrintTag p)
508 static void finish(Op,PrintTag p)
522struct TagVisitor<
FnArcCos, PrintTag> :
public ParenPrinter<FnArcCos>
524 static void visit(FnArcCos op, PrintTag t)
525 { t.os_m <<
"acos"; }
530struct TagVisitor<
FnArcSin, PrintTag> :
public ParenPrinter<FnArcSin>
532 static void visit(FnArcSin op, PrintTag t)
533 { t.os_m <<
"asin"; }
538struct TagVisitor<
FnArcTan, PrintTag> :
public ParenPrinter<FnArcTan>
540 static void visit(FnArcTan op, PrintTag t)
541 { t.os_m <<
"atan"; }
546struct TagVisitor<
FnCeil, PrintTag> :
public ParenPrinter<FnCeil>
548 static void visit(FnCeil op, PrintTag t)
549 { t.os_m <<
"ceil"; }
554struct TagVisitor<
FnCos, PrintTag> :
public ParenPrinter<FnCos>
556 static void visit(FnCos op, PrintTag t)
562struct TagVisitor<
FnHypCos, PrintTag> :
public ParenPrinter<FnHypCos>
564 static void visit(FnHypCos op, PrintTag t)
565 { t.os_m <<
"cosh"; }
570struct TagVisitor<
FnExp, PrintTag> :
public ParenPrinter<FnExp>
572 static void visit(FnExp op, PrintTag t)
578struct TagVisitor<
FnFabs, PrintTag> :
public ParenPrinter<FnFabs>
580 static void visit(FnFabs op, PrintTag t)
581 { t.os_m <<
"fabs"; }
586struct TagVisitor<
FnFloor, PrintTag> :
public ParenPrinter<FnFloor>
588 static void visit(FnFloor op, PrintTag t)
589 { t.os_m <<
"floor"; }
594struct TagVisitor<
FnLog, PrintTag> :
public ParenPrinter<FnLog>
596 static void visit(FnLog op, PrintTag t)
602struct TagVisitor<
FnLog10, PrintTag> :
public ParenPrinter<FnLog10>
604 static void visit(FnLog10 op, PrintTag t)
605 { t.os_m <<
"log10"; }
610struct TagVisitor<
FnSin, PrintTag> :
public ParenPrinter<FnSin>
612 static void visit(FnSin op, PrintTag t)
618struct TagVisitor<
FnHypSin, PrintTag> :
public ParenPrinter<FnHypSin>
620 static void visit(FnHypSin op, PrintTag t)
621 { t.os_m <<
"sinh"; }
626struct TagVisitor<
FnSqrt, PrintTag> :
public ParenPrinter<FnSqrt>
628 static void visit(FnSqrt op, PrintTag t)
629 { t.os_m <<
"sqrt"; }
634struct TagVisitor<
FnTan, PrintTag> :
public ParenPrinter<FnTan>
636 static void visit(FnTan op, PrintTag t)
642struct TagVisitor<
FnHypTan, PrintTag> :
public ParenPrinter<FnHypTan>
644 static void visit(FnHypTan op, PrintTag t)
645 { t.os_m <<
"tanh"; }
650struct TagVisitor<
OpUnaryMinus, PrintTag> :
public ParenPrinter<OpUnaryMinus>
652 static void visit(OpUnaryMinus op, PrintTag t)
658struct TagVisitor<
OpUnaryPlus, PrintTag> :
public ParenPrinter<OpUnaryPlus>
660 static void visit(OpUnaryPlus op, PrintTag t)
666struct TagVisitor<
OpBitwiseNot, PrintTag> :
public ParenPrinter<OpBitwiseNot>
668 static void visit(OpBitwiseNot op, PrintTag t)
674struct TagVisitor<
OpIdentity, PrintTag> :
public ParenPrinter<OpIdentity>
676 static void visit(OpIdentity op, PrintTag t)
677 { t.os_m <<
"PETE_identity"; }
682struct TagVisitor<
OpNot, PrintTag> :
public ParenPrinter<OpNot>
684 static void visit(OpNot op, PrintTag t)
690struct TagVisitor<
OpAdd, PrintTag> :
public ParenPrinter<OpAdd>
692 static void visit(OpAdd op, PrintTag t)
698struct TagVisitor<
OpSubtract, PrintTag> :
public ParenPrinter<OpSubtract>
700 static void visit(OpSubtract op, PrintTag t)
706struct TagVisitor<
OpMultiply, PrintTag> :
public ParenPrinter<OpMultiply>
708 static void visit(OpMultiply op, PrintTag t)
714struct TagVisitor<
OpDivide, PrintTag> :
public ParenPrinter<OpDivide>
716 static void visit(OpDivide op, PrintTag t)
722struct TagVisitor<
OpMod, PrintTag> :
public ParenPrinter<OpMod>
724 static void visit(OpMod op, PrintTag t)
730struct TagVisitor<
OpBitwiseAnd, PrintTag> :
public ParenPrinter<OpBitwiseAnd>
732 static void visit(OpBitwiseAnd op, PrintTag t)
738struct TagVisitor<
OpBitwiseOr, PrintTag> :
public ParenPrinter<OpBitwiseOr>
740 static void visit(OpBitwiseOr op, PrintTag t)
746struct TagVisitor<
OpBitwiseXor, PrintTag> :
public ParenPrinter<OpBitwiseXor>
748 static void visit(OpBitwiseXor op, PrintTag t)
754struct TagVisitor<
FnLdexp, PrintTag> :
public ParenPrinter<FnLdexp>
756 static void visit(FnLdexp op, PrintTag t)
757 { t.os_m <<
"ldexp"; }
762struct TagVisitor<
FnPow, PrintTag> :
public ParenPrinter<FnPow>
764 static void visit(FnPow op, PrintTag t)
770struct TagVisitor<
FnFmod, PrintTag> :
public ParenPrinter<FnFmod>
772 static void visit(FnFmod op, PrintTag t)
773 { t.os_m <<
"fmod"; }
778struct TagVisitor<
FnArcTan2, PrintTag> :
public ParenPrinter<FnArcTan2>
780 static void visit(FnArcTan2 op, PrintTag t)
781 { t.os_m <<
"atan2"; }
786struct TagVisitor<
OpLT, PrintTag> :
public ParenPrinter<OpLT>
788 static void visit(OpLT op, PrintTag t)
794struct TagVisitor<
OpLE, PrintTag> :
public ParenPrinter<OpLE>
796 static void visit(OpLE op, PrintTag t)
802struct TagVisitor<
OpGT, PrintTag> :
public ParenPrinter<OpGT>
804 static void visit(OpGT op, PrintTag t)
810struct TagVisitor<
OpGE, PrintTag> :
public ParenPrinter<OpGE>
812 static void visit(OpGE op, PrintTag t)
818struct TagVisitor<
OpEQ, PrintTag> :
public ParenPrinter<OpEQ>
820 static void visit(OpEQ op, PrintTag t)
826struct TagVisitor<
OpNE, PrintTag> :
public ParenPrinter<OpNE>
828 static void visit(OpNE op, PrintTag t)
834struct TagVisitor<
OpAnd, PrintTag> :
public ParenPrinter<OpAnd>
836 static void visit(OpAnd op, PrintTag t)
842struct TagVisitor<
OpOr, PrintTag> :
public ParenPrinter<OpOr>
844 static void visit(OpOr op, PrintTag t)
850struct TagVisitor<
OpLeftShift, PrintTag> :
public ParenPrinter<OpLeftShift>
852 static void visit(OpLeftShift op, PrintTag t)
858struct TagVisitor<
OpRightShift, PrintTag> :
public ParenPrinter<OpRightShift>
860 static void visit(OpRightShift op, PrintTag t)
866struct TagVisitor<
OpAssign, PrintTag> :
public ParenPrinter<OpAssign>
868 static void visit(OpAssign op, PrintTag t)
874struct TagVisitor<
OpAddAssign, PrintTag> :
public ParenPrinter<OpAddAssign>
876 static void visit(OpAddAssign op, PrintTag t)
882struct TagVisitor<
OpSubtractAssign, PrintTag> :
public ParenPrinter<OpSubtractAssign>
884 static void visit(OpSubtractAssign op, PrintTag t)
890struct TagVisitor<
OpMultiplyAssign, PrintTag> :
public ParenPrinter<OpMultiplyAssign>
892 static void visit(OpMultiplyAssign op, PrintTag t)
898struct TagVisitor<
OpDivideAssign, PrintTag> :
public ParenPrinter<OpDivideAssign>
900 static void visit(OpDivideAssign op, PrintTag t)
906struct TagVisitor<
OpModAssign, PrintTag> :
public ParenPrinter<OpModAssign>
908 static void visit(OpModAssign op, PrintTag t)
914struct TagVisitor<
OpBitwiseOrAssign, PrintTag> :
public ParenPrinter<OpBitwiseOrAssign>
916 static void visit(OpBitwiseOrAssign op, PrintTag t)
922struct TagVisitor<
OpBitwiseAndAssign, PrintTag> :
public ParenPrinter<OpBitwiseAndAssign>
924 static void visit(OpBitwiseAndAssign op, PrintTag t)
930struct TagVisitor<
OpBitwiseXorAssign, PrintTag> :
public ParenPrinter<OpBitwiseXorAssign>
932 static void visit(OpBitwiseXorAssign op, PrintTag t)
938struct TagVisitor<
OpLeftShiftAssign, PrintTag> :
public ParenPrinter<OpLeftShiftAssign>
940 static void visit(OpLeftShiftAssign op, PrintTag t)
946struct TagVisitor<
OpRightShiftAssign, PrintTag> :
public ParenPrinter<OpRightShiftAssign>
948 static void visit(OpRightShiftAssign op, PrintTag t)
954struct TagVisitor<
FnWhere, PrintTag> :
public ParenPrinter<FnWhere>
956 static void visit(FnWhere op, PrintTag t)
957 { t.os_m <<
"where"; }
962struct TagVisitor<
FnAdjoint, PrintTag> :
public ParenPrinter<FnAdjoint>
964 static void visit(FnAdjoint op, PrintTag t)
970struct TagVisitor<
FnConjugate, PrintTag> :
public ParenPrinter<FnConjugate>
972 static void visit(FnConjugate op, PrintTag t)
973 { t.os_m <<
"conj"; }
978struct TagVisitor<
FnTranspose, PrintTag> :
public ParenPrinter<FnTranspose>
980 static void visit(FnTranspose op, PrintTag t)
981 { t.os_m <<
"transpose"; }
986struct TagVisitor<
FnTrace, PrintTag> :
public ParenPrinter<FnTrace>
988 static void visit(FnTrace op, PrintTag t)
989 { t.os_m <<
"trace"; }
994struct TagVisitor<
FnRealTrace, PrintTag> :
public ParenPrinter<FnRealTrace>
996 static void visit(FnRealTrace op, PrintTag t)
997 { t.os_m <<
"realTrace"; }
1002struct TagVisitor<
FnImagTrace, PrintTag> :
public ParenPrinter<FnImagTrace>
1004 static void visit(FnImagTrace op, PrintTag t)
1005 { t.os_m <<
"imagTrace"; }
1010struct TagVisitor<
FnTraceColor, PrintTag> :
public ParenPrinter<FnTraceColor>
1012 static void visit(FnTraceColor op, PrintTag t)
1013 { t.os_m <<
"traceColor"; }
1018struct TagVisitor<
FnTraceSpin, PrintTag> :
public ParenPrinter<FnTraceSpin>
1020 static void visit(FnTraceSpin op, PrintTag t)
1021 { t.os_m <<
"traceSpin"; }
1026struct TagVisitor<
FnTransposeSpin, PrintTag> :
public ParenPrinter<FnTransposeSpin>
1028 static void visit(FnTransposeSpin op, PrintTag t)
1030 t.os_m <<
"transposeSpin"; }
1035struct TagVisitor<
FnReal, PrintTag> :
public ParenPrinter<FnReal>
1037 static void visit(FnReal op, PrintTag t)
1038 { t.os_m <<
"real"; }
1043struct TagVisitor<
FnImag, PrintTag> :
public ParenPrinter<FnImag>
1045 static void visit(FnImag op, PrintTag t)
1046 { t.os_m <<
"imag"; }
1051struct TagVisitor<
FnLocalNorm2, PrintTag> :
public ParenPrinter<FnLocalNorm2>
1053 static void visit(FnLocalNorm2 op, PrintTag t)
1054 { t.os_m <<
"localNorm2"; }
1059struct TagVisitor<
FnTimesI, PrintTag> :
public ParenPrinter<FnTimesI>
1061 static void visit(FnTimesI op, PrintTag t)
1062 { t.os_m <<
"timesI"; }
1067struct TagVisitor<
FnTimesMinusI, PrintTag> :
public ParenPrinter<FnTimesMinusI>
1069 static void visit(FnTimesMinusI op, PrintTag t)
1070 { t.os_m <<
"timesMinusI"; }
1075struct TagVisitor<
FnSeedToFloat, PrintTag> :
public ParenPrinter<FnSeedToFloat>
1077 static void visit(FnSeedToFloat op, PrintTag t)
1078 { t.os_m <<
"seedToFloat"; }
1085 static void visit(FnSpinProjectDir0Plus op, PrintTag t)
1086 { t.os_m <<
"spinProjectDir0Plus"; }
1093 static void visit(FnSpinProjectDir1Plus op, PrintTag t)
1094 { t.os_m <<
"spinProjectDir1Plus"; }
1101 static void visit(FnSpinProjectDir2Plus op, PrintTag t)
1102 { t.os_m <<
"spinProjectDir2Plus"; }
1109 static void visit(FnSpinProjectDir3Plus op, PrintTag t)
1110 { t.os_m <<
"spinProjectDir3Plus"; }
1117 static void visit(FnSpinProjectDir0Minus op, PrintTag t)
1118 { t.os_m <<
"spinProjectDir0Minus"; }
1125 static void visit(FnSpinProjectDir1Minus op, PrintTag t)
1126 { t.os_m <<
"spinProjectDir1Minus"; }
1133 static void visit(FnSpinProjectDir2Minus op, PrintTag t)
1134 { t.os_m <<
"spinProjectDir2Minus"; }
1141 static void visit(FnSpinProjectDir3Minus op, PrintTag t)
1142 { t.os_m <<
"spinProjectDir3Minus"; }
1149 static void visit(FnSpinReconstructDir0Plus op, PrintTag t)
1150 { t.os_m <<
"spinReconstructDir0Plus"; }
1157 static void visit(FnSpinReconstructDir1Plus op, PrintTag t)
1158 { t.os_m <<
"spinReconstructDir1Plus"; }
1165 static void visit(FnSpinReconstructDir2Plus op, PrintTag t)
1166 { t.os_m <<
"spinReconstructDir2Plus"; }
1173 static void visit(FnSpinReconstructDir3Plus op, PrintTag t)
1174 { t.os_m <<
"spinReconstructDir3Plus"; }
1181 static void visit(FnSpinReconstructDir0Minus op, PrintTag t)
1182 { t.os_m <<
"spinReconstructDir0Minus"; }
1189 static void visit(FnSpinReconstructDir1Minus op, PrintTag t)
1190 { t.os_m <<
"spinReconstructDir1Minus"; }
1197 static void visit(FnSpinReconstructDir2Minus op, PrintTag t)
1198 { t.os_m <<
"spinReconstructDir2Minus"; }
1205 static void visit(FnSpinReconstructDir3Minus op, PrintTag t)
1206 { t.os_m <<
"spinReconstructDir3Minus"; }
1211struct TagVisitor<
FnChiralProjectPlus, PrintTag> :
public ParenPrinter<FnChiralProjectPlus>
1213 static void visit(FnChiralProjectPlus op, PrintTag t)
1214 { t.os_m <<
"chiralProjectPlus"; }
1221 static void visit(FnChiralProjectMinus op, PrintTag t)
1222 { t.os_m <<
"chiralProjectMinus"; }
1227struct TagVisitor<
FnCmplx, PrintTag> :
public ParenPrinter<FnCmplx>
1229 static void visit(FnCmplx op, PrintTag t)
1230 { t.os_m <<
"cmplx"; }
1235struct TagVisitor<
FnOuterProduct, PrintTag> :
public ParenPrinter<FnOuterProduct>
1237 static void visit(FnOuterProduct op, PrintTag t)
1238 { t.os_m <<
"outerProduct"; }
1243struct TagVisitor<
FnLocalInnerProduct, PrintTag> :
public ParenPrinter<FnLocalInnerProduct>
1245 static void visit(FnLocalInnerProduct op, PrintTag t)
1246 { t.os_m <<
"localInnerProduct"; }
1253 static void visit(FnLocalInnerProductReal op, PrintTag t)
1254 { t.os_m <<
"localInnerProductReal"; }
1259struct TagVisitor<
FnQuarkContract13, PrintTag> :
public ParenPrinter<FnQuarkContract13>
1261 static void visit(FnQuarkContract13 op, PrintTag t)
1262 { t.os_m <<
"quarkContract13"; }
1267struct TagVisitor<
FnQuarkContract14, PrintTag> :
public ParenPrinter<FnQuarkContract14>
1269 static void visit(FnQuarkContract14 op, PrintTag t)
1270 { t.os_m <<
"quarkContract14"; }
1275struct TagVisitor<
FnQuarkContract23, PrintTag> :
public ParenPrinter<FnQuarkContract23>
1277 static void visit(FnQuarkContract23 op, PrintTag t)
1278 { t.os_m <<
"quarkContract23"; }
1283struct TagVisitor<
FnQuarkContract24, PrintTag> :
public ParenPrinter<FnQuarkContract24>
1285 static void visit(FnQuarkContract24 op, PrintTag t)
1286 { t.os_m <<
"quarkContract24"; }
1291struct TagVisitor<
FnQuarkContract12, PrintTag> :
public ParenPrinter<FnQuarkContract12>
1293 static void visit(FnQuarkContract12 op, PrintTag t)
1294 { t.os_m <<
"quarkContract12"; }
1299struct TagVisitor<
FnQuarkContract34, PrintTag> :
public ParenPrinter<FnQuarkContract34>
1301 static void visit(FnQuarkContract34 op, PrintTag t)
1302 { t.os_m <<
"quarkContract34"; }
1307struct TagVisitor<
FnColorContract, PrintTag> :
public ParenPrinter<FnColorContract>
1309 static void visit(FnColorContract op, PrintTag t)
1310 { t.os_m <<
"colorContract"; }
1319struct TagVisitor<
FnSum, PrintTag> :
public ParenPrinter<FnSum>
1321 static void visit(FnSum op, PrintTag t)
1322 { t.os_m <<
"sum"; }
1326struct TagVisitor<
FnNorm2, PrintTag> :
public ParenPrinter<FnNorm2>
1328 static void visit(FnNorm2 op, PrintTag t)
1329 { t.os_m <<
"norm2"; }
1335 static void visit(OpGammaConstMultiply op, PrintTag t)
1342 static void visit(OpMultiplyGammaConst op, PrintTag t)
1347struct TagVisitor<
OpGammaTypeMultiply, PrintTag> :
public ParenPrinter<OpGammaTypeMultiply>
1349 static void visit(OpGammaTypeMultiply op, PrintTag t)
1354struct TagVisitor<
OpMultiplyGammaType, PrintTag> :
public ParenPrinter<OpMultiplyGammaType>
1356 static void visit(OpMultiplyGammaType op, PrintTag t)
1366struct TagVisitor<
OpAdjMultiply, PrintTag> :
public ParenPrinter<OpAdjMultiply>
1368 static void visit(OpAdjMultiply op, PrintTag t)
1369 { t.os_m <<
"adjMultiply"; }
1373struct TagVisitor<
OpMultiplyAdj, PrintTag> :
public ParenPrinter<OpMultiplyAdj>
1375 static void visit(OpMultiplyAdj op, PrintTag t)
1376 { t.os_m <<
"multiplyAdj"; }
1380struct TagVisitor<
OpAdjMultiplyAdj, PrintTag> :
public ParenPrinter<OpAdjMultiplyAdj>
1382 static void visit(OpAdjMultiplyAdj op, PrintTag t)
1383 { t.os_m <<
"adjMultiplyAdj"; }
1387struct TagVisitor<
FnTraceMultiply, PrintTag> :
public ParenPrinter<FnTraceMultiply>
1389 static void visit(FnTraceMultiply op, PrintTag t)
1390 { t.os_m <<
"traceMultiply"; }
1396 static void visit(FnTraceColorMultiply op, PrintTag t)
1397 { t.os_m <<
"traceColorMultiply"; }
1401struct TagVisitor<
FnTraceSpinMultiply, PrintTag> :
public ParenPrinter<FnTraceSpinMultiply>
1403 static void visit(FnTraceSpinMultiply op, PrintTag t)
1404 { t.os_m <<
"traceSpinMultiply"; }
1410 static void visit(FnTraceSpinQuarkContract13 op, PrintTag t)
1411 { t.os_m <<
"traceSpinQuarkContract13"; }
Outer grid Scalar class */.
Primitive color Matrix class.
Primitive color Vector class.
Primitive Spin Matrix class.
Primitive spin Vector class.
Expression class for QDP.
QDPType - major type class/container for all QDP objects.
Scalar reality (not complex).
OLattice< PScalar< PColorMatrix< RComplexFloat, 3 > > > C
void init()
Initializer for layout.
Yet another random number generator.
int getProgramProfileLevel()
QDPTime_t getClockTime()
Get the wallclock time.
int setProfileLevel(int n)
void pushProfileInfo(int level, const std::string &file, const std::string &caller, int line)
int setProgramProfileLevel(int n)
void initProfile(const std::string &file, const std::string &caller, int line)
static Expression_t make(const T &a)
static Leaf_t make(const T &a)
static void visit(Op, VTag)