7#ifndef QDP_PRIMSPINMAT_H
8#define QDP_PRIMSPINMAT_H
63template <
class T>
class PSpinMatrix<T,4> :
public PMatrix<T,4, PSpinMatrix>
75template<
class T1,
int N>
81template<
class T1,
int N>
87template<
class T1,
int N>
94template<
class T,
int N>
100template<
class T,
int N>
106template<
class T,
int N>
117template<
class T1,
int N,
class Op>
123template<
class T1,
class T2,
int N,
class Op>
129template<
class T1,
class T2,
int N,
class Op>
135template<
class T1,
int N,
class T2,
class Op>
142template<
class T1,
class T2>
151template<
class T1,
class T2,
int N>
156template<
class T1,
class T2,
int N>
161template<
class T1,
class T2,
int N>
166template<
class T1,
class T2,
int N>
172template<
class T1,
class T2,
int N>
177template<
class T1,
class T2,
int N>
182template<
class T1,
class T2,
int N>
187template<
class T1,
class T2,
int N>
192template<
class T1,
class T2,
int N>
200template<
class T,
int N>
205template<
class T,
int N>
210template<
class T,
int N>
215template<
class T,
int N>
220template<
class T,
int N>
225template<
class T,
int N>
230template<
class T1,
class T2,
int N>
235template<
class T1,
class T2,
int N>
240template<
class T1,
class T2,
int N>
245template<
class T1,
class T2,
int N>
250template<
class T1,
class T2,
int N>
255template<
class T1,
class T2,
int N>
260template<
class T1,
class T2,
int N>
265template<
class T1,
class T2,
int N>
270template<
class T1,
class T2,
int N>
275template<
class T1,
class T2,
int N>
280template<
class T1,
class T2,
int N>
285template<
class T1,
class T2,
int N>
290template<
class T1,
class T2,
int N>
295template<
class T1,
class T2,
int N>
300template<
class T1,
class T2,
int N>
308template<
int m,
class T2,
int N,
class OpGammaConstMultiply>
313template<
class T2,
int N,
int m,
class OpMultiplyGammaConst>
318template<
class T2,
int N,
class OpGammaTypeMultiply>
323template<
class T2,
int N,
class OpMultiplyGammaType>
330template<
int m,
class T2,
int N,
class OpGammaConstDPMultiply>
335template<
class T2,
int N,
int m,
class OpMultiplyGammaConstDP>
340template<
class T2,
int N,
class OpGammaTypeDPMultiply>
345template<
class T2,
int N,
class OpMultiplyGammaTypeDP>
363template<
class T,
int N>
368template<
class T,
int N>
376 d.elem() = s1.elem(0,0);
377 for(
int i=1; i < N; ++i)
378 d.elem() += s1.elem(i,i);
384template<
class T1,
class T2,
int N>
389template<
class T1,
class T2,
int N>
396 d.elem() = l.elem(0,0) * r.elem(0,0);
397 for(
int k=1; k < N; ++k)
398 d.elem() += l.elem(0,k) * r.elem(k,0);
400 for(
int j=1; j < N; ++j)
401 for(
int k=0; k < N; ++k)
402 d.elem() += l.elem(j,k) * r.elem(k,j);
408template<
class T1,
class T2,
int N>
413template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
420 d.elem() = l.elem(0,0) * r.
elem();
421 for(
int k=1; k < N; ++k)
422 d.elem() += l.elem(k,k) * r.
elem();
428template<
class T1,
class T2,
int N>
433template<
class T1,
class T2,
int N>
440 d.elem() = l.
elem() * r.elem(0,0);
441 for(
int k=1; k < N; ++k)
442 d.elem() += l.
elem() * r.elem(k,k);
450template <
class T,
int N>
457template<
class T,
int N>
463 for(
int i=0; i < N; i++) {
464 for(
int j=0; j < N; j++) {
466 d.elem(i,j) = s1.elem(j,i);
475template<
class T1,
class T2,
int N>
480template<
class T1,
class T2,
int N>
486 for(
int i=0; i < N; ++i)
487 for(
int j=0; j < N; ++j)
490 for(
int k=1; k < N; ++k)
505template<
class T1,
class T2,
int N>
510template<
class T1,
class T2,
int N>
516 for(
int i=0; i < N; ++i)
517 for(
int j=0; j < N; ++j)
528template<
class T1,
class T2,
int N>
533template<
class T1,
class T2,
int N>
540 for(
int i=1; i < N; ++i)
551template<
class T,
int N>
556template<
class T,
int N>
563 d.elem() = l.elem(row,col);
568template<
class T1,
class T2,
int N>
569inline PSpinMatrix<T1,N>&
573 l.elem(row,col) = r.
elem();
589 for(
int i=0; i < 4; ++i)
591 d.elem(0,i) = r.elem(0,i);
592 d.elem(1,i) = r.elem(1,i);
593 d.elem(2,i) = r.elem(2,i);
594 d.elem(3,i) = r.elem(3,i);
606 for(
int i=0; i < 4; ++i)
608 d.elem(0,i) =
timesI(r.elem(3,i));
609 d.elem(1,i) =
timesI(r.elem(2,i));
623 for(
int i=0; i < 4; ++i)
625 d.elem(0,i) = -r.elem(3,i);
626 d.elem(1,i) = r.elem(2,i);
627 d.elem(2,i) = r.elem(1,i);
628 d.elem(3,i) = -r.elem(0,i);
640 for(
int i=0; i < 4; ++i)
643 d.elem(1,i) =
timesI(r.elem(1,i));
645 d.elem(3,i) =
timesI(r.elem(3,i));
657 for(
int i=0; i < 4; ++i)
659 d.elem(0,i) =
timesI(r.elem(2,i));
662 d.elem(3,i) =
timesI(r.elem(1,i));
674 for(
int i=0; i < 4; ++i)
676 d.elem(0,i) = -r.elem(1,i);
677 d.elem(1,i) = r.elem(0,i);
678 d.elem(2,i) = -r.elem(3,i);
679 d.elem(3,i) = r.elem(2,i);
691 for(
int i=0; i < 4; ++i)
708 for(
int i=0; i < 4; ++i)
710 d.elem(0,i) = r.elem(2,i);
711 d.elem(1,i) = r.elem(3,i);
712 d.elem(2,i) = -r.elem(0,i);
713 d.elem(3,i) = -r.elem(1,i);
725 for(
int i=0; i < 4; ++i)
727 d.elem(0,i) = r.elem(2,i);
728 d.elem(1,i) = r.elem(3,i);
729 d.elem(2,i) = r.elem(0,i);
730 d.elem(3,i) = r.elem(1,i);
742 for(
int i=0; i < 4; ++i)
744 d.elem(0,i) =
timesI(r.elem(1,i));
745 d.elem(1,i) =
timesI(r.elem(0,i));
759 for(
int i=0; i < 4; ++i)
761 d.elem(0,i) = -r.elem(1,i);
762 d.elem(1,i) = r.elem(0,i);
763 d.elem(2,i) = r.elem(3,i);
764 d.elem(3,i) = -r.elem(2,i);
776 for(
int i=0; i < 4; ++i)
779 d.elem(1,i) =
timesI(r.elem(3,i));
781 d.elem(3,i) =
timesI(r.elem(1,i));
793 for(
int i=0; i < 4; ++i)
795 d.elem(0,i) =
timesI(r.elem(0,i));
798 d.elem(3,i) =
timesI(r.elem(3,i));
810 for(
int i=0; i < 4; ++i)
812 d.elem(0,i) = -r.elem(3,i);
813 d.elem(1,i) = r.elem(2,i);
814 d.elem(2,i) = -r.elem(1,i);
815 d.elem(3,i) = r.elem(0,i);
827 for(
int i=0; i < 4; ++i)
844 for(
int i=0; i < 4; ++i)
846 d.elem(0,i) = r.elem(0,i);
847 d.elem(1,i) = r.elem(1,i);
848 d.elem(2,i) = -r.elem(2,i);
849 d.elem(3,i) = -r.elem(3,i);
864 for(
int i=0; i < 4; ++i)
866 d.elem(i,0) = l.elem(i,0);
867 d.elem(i,1) = l.elem(i,1);
868 d.elem(i,2) = l.elem(i,2);
869 d.elem(i,3) = l.elem(i,3);
881 for(
int i=0; i < 4; ++i)
885 d.elem(i,2) =
timesI(l.elem(i,1));
886 d.elem(i,3) =
timesI(l.elem(i,0));
898 for(
int i=0; i < 4; ++i)
900 d.elem(i,0) = -l.elem(i,3);
901 d.elem(i,1) = l.elem(i,2);
902 d.elem(i,2) = l.elem(i,1);
903 d.elem(i,3) = -l.elem(i,0);
915 for(
int i=0; i < 4; ++i)
918 d.elem(i,1) =
timesI(l.elem(i,1));
920 d.elem(i,3) =
timesI(l.elem(i,3));
932 for(
int i=0; i < 4; ++i)
935 d.elem(i,1) =
timesI(l.elem(i,3));
936 d.elem(i,2) =
timesI(l.elem(i,0));
949 for(
int i=0; i < 4; ++i)
951 d.elem(i,0) = l.elem(i,1);
952 d.elem(i,1) = -l.elem(i,0);
953 d.elem(i,2) = l.elem(i,3);
954 d.elem(i,3) = -l.elem(i,2);
966 for(
int i=0; i < 4; ++i)
983 for(
int i=0; i < 4; ++i)
985 d.elem(i,0) = -l.elem(i,2);
986 d.elem(i,1) = -l.elem(i,3);
987 d.elem(i,2) = l.elem(i,0);
988 d.elem(i,3) = l.elem(i,1);
1000 for(
int i=0; i < 4; ++i)
1002 d.elem(i,0) = l.elem(i,2);
1003 d.elem(i,1) = l.elem(i,3);
1004 d.elem(i,2) = l.elem(i,0);
1005 d.elem(i,3) = l.elem(i,1);
1017 for(
int i=0; i < 4; ++i)
1019 d.elem(i,0) =
timesI(l.elem(i,1));
1020 d.elem(i,1) =
timesI(l.elem(i,0));
1034 for(
int i=0; i < 4; ++i)
1036 d.elem(i,0) = l.elem(i,1);
1037 d.elem(i,1) = -l.elem(i,0);
1038 d.elem(i,2) = -l.elem(i,3);
1039 d.elem(i,3) = l.elem(i,2);
1051 for(
int i=0; i < 4; ++i)
1054 d.elem(i,1) =
timesI(l.elem(i,3));
1056 d.elem(i,3) =
timesI(l.elem(i,1));
1068 for(
int i=0; i < 4; ++i)
1070 d.elem(i,0) =
timesI(l.elem(i,0));
1073 d.elem(i,3) =
timesI(l.elem(i,3));
1085 for(
int i=0; i < 4; ++i)
1087 d.elem(i,0) = l.elem(i,3);
1088 d.elem(i,1) = -l.elem(i,2);
1089 d.elem(i,2) = l.elem(i,1);
1090 d.elem(i,3) = -l.elem(i,0);
1102 for(
int i=0; i < 4; ++i)
1119 for(
int i=0; i < 4; ++i)
1121 d.elem(i,0) = l.elem(i,0);
1122 d.elem(i,1) = l.elem(i,1);
1123 d.elem(i,2) = -l.elem(i,2);
1124 d.elem(i,3) = -l.elem(i,3);
1141 for(
int i=0; i < 4; ++i)
1143 d.elem(0,i) = r.elem(0,i);
1144 d.elem(1,i) = r.elem(1,i);
1145 d.elem(2,i) = r.elem(2,i);
1146 d.elem(3,i) = r.elem(3,i);
1158 for(
int i=0; i < 4; ++i)
1162 d.elem(2,i) =
timesI(r.elem(1,i));
1163 d.elem(3,i) =
timesI(r.elem(0,i));
1175 for(
int i=0; i < 4; ++i)
1177 d.elem(0,i) = -r.elem(3,i);
1178 d.elem(1,i) = r.elem(2,i);
1179 d.elem(2,i) = r.elem(1,i);
1180 d.elem(3,i) = -r.elem(0,i);
1192 for(
int i=0; i < 4; ++i)
1194 d.elem(0,i) =
timesI(r.elem(0,i));
1196 d.elem(2,i) =
timesI(r.elem(2,i));
1209 for(
int i=0; i < 4; ++i)
1212 d.elem(1,i) =
timesI(r.elem(3,i));
1213 d.elem(2,i) =
timesI(r.elem(0,i));
1226 for(
int i=0; i < 4; ++i)
1228 d.elem(0,i) = -r.elem(1,i);
1229 d.elem(1,i) = r.elem(0,i);
1230 d.elem(2,i) = -r.elem(3,i);
1231 d.elem(3,i) = r.elem(2,i);
1243 for(
int i=0; i < 4; ++i)
1245 d.elem(0,i) =
timesI(r.elem(1,i));
1246 d.elem(1,i) =
timesI(r.elem(0,i));
1247 d.elem(2,i) =
timesI(r.elem(3,i));
1248 d.elem(3,i) =
timesI(r.elem(2,i));
1260 for(
int i=0; i < 4; ++i)
1262 d.elem(0,i) = r.elem(2,i);
1263 d.elem(1,i) = r.elem(3,i);
1264 d.elem(2,i) = -r.elem(0,i);
1265 d.elem(3,i) = -r.elem(1,i);
1277 for(
int i=0; i < 4; ++i)
1279 d.elem(0,i) = r.elem(0,i);
1280 d.elem(1,i) = r.elem(1,i);
1281 d.elem(2,i) = -r.elem(2,i);
1282 d.elem(3,i) = -r.elem(3,i);
1294 for(
int i=0; i < 4; ++i)
1296 d.elem(0,i) =
timesI(r.elem(3,i));
1297 d.elem(1,i) =
timesI(r.elem(2,i));
1298 d.elem(2,i) =
timesI(r.elem(1,i));
1299 d.elem(3,i) =
timesI(r.elem(0,i));
1311 for(
int i=0; i < 4; ++i)
1313 d.elem(0,i) = r.elem(3,i);
1314 d.elem(1,i) = -r.elem(2,i);
1315 d.elem(2,i) = r.elem(1,i);
1316 d.elem(3,i) = -r.elem(0,i);
1328 for(
int i=0; i < 4; ++i)
1330 d.elem(0,i) =
timesI(r.elem(0,i));
1333 d.elem(3,i) =
timesI(r.elem(3,i));
1345 for(
int i=0; i < 4; ++i)
1347 d.elem(0,i) =
timesI(r.elem(2,i));
1349 d.elem(2,i) =
timesI(r.elem(0,i));
1362 for(
int i=0; i < 4; ++i)
1364 d.elem(0,i) = -r.elem(1,i);
1365 d.elem(1,i) = r.elem(0,i);
1366 d.elem(2,i) = r.elem(3,i);
1367 d.elem(3,i) = -r.elem(2,i);
1379 for(
int i=0; i < 4; ++i)
1381 d.elem(0,i) =
timesI(r.elem(1,i));
1382 d.elem(1,i) =
timesI(r.elem(0,i));
1396 for(
int i=0; i < 4; ++i)
1398 d.elem(0,i) = -r.elem(2,i);
1399 d.elem(1,i) = -r.elem(3,i);
1400 d.elem(2,i) = -r.elem(0,i);
1401 d.elem(3,i) = -r.elem(1,i);
1416 for(
int i=0; i < 4; ++i)
1418 d.elem(i,0) = l.elem(i,0);
1419 d.elem(i,1) = l.elem(i,1);
1420 d.elem(i,2) = l.elem(i,2);
1421 d.elem(i,3) = l.elem(i,3);
1433 for(
int i=0; i < 4; ++i)
1435 d.elem(i,0) =
timesI(l.elem(i,3));
1436 d.elem(i,1) =
timesI(l.elem(i,2));
1450 for(
int i=0; i < 4; ++i)
1452 d.elem(i,0) = -l.elem(i,3);
1453 d.elem(i,1) = l.elem(i,2);
1454 d.elem(i,2) = l.elem(i,1);
1455 d.elem(i,3) = -l.elem(i,0);
1467 for(
int i=0; i < 4; ++i)
1469 d.elem(i,0) =
timesI(l.elem(i,0));
1471 d.elem(i,2) =
timesI(l.elem(i,2));
1484 for(
int i=0; i < 4; ++i)
1486 d.elem(i,0) =
timesI(l.elem(i,2));
1489 d.elem(i,3) =
timesI(l.elem(i,1));
1501 for(
int i=0; i < 4; ++i)
1503 d.elem(i,0) = l.elem(i,1);
1504 d.elem(i,1) = -l.elem(i,0);
1505 d.elem(i,2) = l.elem(i,3);
1506 d.elem(i,3) = -l.elem(i,2);
1518 for(
int i=0; i < 4; ++i)
1520 d.elem(i,0) =
timesI(l.elem(i,1));
1521 d.elem(i,1) =
timesI(l.elem(i,0));
1522 d.elem(i,2) =
timesI(l.elem(i,3));
1523 d.elem(i,3) =
timesI(l.elem(i,2));
1535 for(
int i=0; i < 4; ++i)
1537 d.elem(i,0) = -l.elem(i,2);
1538 d.elem(i,1) = -l.elem(i,3);
1539 d.elem(i,2) = l.elem(i,0);
1540 d.elem(i,3) = l.elem(i,1);
1552 for(
int i=0; i < 4; ++i)
1554 d.elem(i,0) = l.elem(i,0);
1555 d.elem(i,1) = l.elem(i,1);
1556 d.elem(i,2) = -l.elem(i,2);
1557 d.elem(i,3) = -l.elem(i,3);
1569 for(
int i=0; i < 4; ++i)
1571 d.elem(i,0) =
timesI(l.elem(i,3));
1572 d.elem(i,1) =
timesI(l.elem(i,2));
1573 d.elem(i,2) =
timesI(l.elem(i,1));
1574 d.elem(i,3) =
timesI(l.elem(i,0));
1586 for(
int i=0; i < 4; ++i)
1588 d.elem(i,0) = -l.elem(i,3);
1589 d.elem(i,1) = l.elem(i,2);
1590 d.elem(i,2) = -l.elem(i,1);
1591 d.elem(i,3) = l.elem(i,0);
1603 for(
int i=0; i < 4; ++i)
1605 d.elem(i,0) =
timesI(l.elem(i,0));
1608 d.elem(i,3) =
timesI(l.elem(i,3));
1620 for(
int i=0; i < 4; ++i)
1622 d.elem(i,0) =
timesI(l.elem(i,2));
1624 d.elem(i,2) =
timesI(l.elem(i,0));
1637 for(
int i=0; i < 4; ++i)
1639 d.elem(i,0) = l.elem(i,1);
1640 d.elem(i,1) = -l.elem(i,0);
1641 d.elem(i,2) = -l.elem(i,3);
1642 d.elem(i,3) = l.elem(i,2);
1654 for(
int i=0; i < 4; ++i)
1656 d.elem(i,0) =
timesI(l.elem(i,1));
1657 d.elem(i,1) =
timesI(l.elem(i,0));
1671 for(
int i=0; i < 4; ++i)
1673 d.elem(i,0) = -l.elem(i,2);
1674 d.elem(i,1) = -l.elem(i,3);
1675 d.elem(i,2) = -l.elem(i,0);
1676 d.elem(i,3) = -l.elem(i,1);
1691 for(
int i=0; i < 4; ++i)
1693 d.elem(0,i) = s1.elem(0,i);
1694 d.elem(1,i) = s1.elem(1,i);
1709 for(
int i=0; i < 4; ++i)
1713 d.elem(2,i) = s1.elem(2,i);
1714 d.elem(3,i) = s1.elem(3,i);
1722template<
class T1,
class T2>
1728template<
class T1,
class T2>
1735 for(
int k=1; k < 4; ++k)
1738 for(
int j=1; j < 4; ++j)
1739 for(
int k=0; k < 4; ++k)
1747template<
class T1,
class T2>
1753 for(
int j=0; j < 4; ++j)
1754 for(
int i=0; i < 4; ++i)
1757 for(
int k=1; k < 4; ++k)
1764template<
class T1,
class T2>
1770 for(
int j=0; j < 4; ++j)
1771 for(
int i=0; i < 4; ++i)
1774 for(
int k=1; k < 4; ++k)
1781template<
class T1,
class T2>
1787 for(
int j=0; j < 4; ++j)
1788 for(
int i=0; i < 4; ++i)
1791 for(
int k=1; k < 4; ++k)
1798template<
class T1,
class T2>
1804 for(
int j=0; j < 4; ++j)
1805 for(
int i=0; i < 4; ++i)
1808 for(
int k=1; k < 4; ++k)
1815template<
class T1,
class T2>
1821 for(
int j=0; j < 4; ++j)
1822 for(
int i=0; i < 4; ++i)
1825 for(
int k=1; k < 4; ++k)
1832template<
class T1,
class T2>
1838 for(
int j=0; j < 4; ++j)
1839 for(
int i=0; i < 4; ++i)
1842 for(
int k=1; k < 4; ++k)
CC & assign(const PScalar< T1 > &rhs)
Primitive Spin Matrix class.
PSpinMatrix & operator=(const PScalar< T1 > &rhs)
PSpinMatrix = PScalar.
PSpinMatrix & operator=(const PSpinMatrix< T1, N > &rhs)
PSpinMatrix = PSpinMatrix.
Primitive spin Vector class.
void zero_rep(IScalar< T > &dest)
dest = 0
OLattice< PScalar< PColorMatrix< RComplexFloat, 3 > > > C
BinaryReturn< PColorMatrix< T1, 3 >, PColorMatrix< T2, 3 >, FnQuarkContractXX >::Type_t quarkContractXX(const PColorMatrix< T1, 3 > &s1, const PColorMatrix< T2, 3 > &s2)
dest = QuarkContractXX(Qprop1,Qprop2)
BinaryReturn< PMatrix< T1, N, C >, PMatrix< T2, N, C >, FnTraceSpinMultiply >::Type_t traceSpinMultiply(const PMatrix< T1, N, C > &l, const PMatrix< T2, N, C > &r)
BinaryReturn< PScalar< T1 >, PScalar< T2 >, FnTraceSpinOuterProduct >::Type_t traceSpinOuterProduct(const PScalar< T1 > &l, const PScalar< T2 > &r)
PScalar = traceSpin(outerProduct(PScalar, PScalar)).
BinaryReturn< PSpinMatrix< T1, 4 >, PSpinMatrix< T2, 4 >, FnTraceSpinQuarkContract13 >::Type_t traceSpinQuarkContract13(const PSpinMatrix< T1, 4 > &l, const PSpinMatrix< T2, 4 > &r)
PScalar = traceSpinQuarkContract13(PSpinMatrix,PSpinMatrix).
Yet another random number generator.
MakeReturn< UnaryNode< FnTraceSpin, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTraceSpin >::Type_t >::Expression_t traceSpin(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnTimesMinusI, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTimesMinusI >::Type_t >::Expression_t timesMinusI(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnTimesI, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTimesI >::Type_t >::Expression_t timesI(const QDPExpr< T1, C1 > &l)
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< FnQuarkContract14, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnQuarkContract14 >::Type_t >::Expression_t quarkContract14(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< FnQuarkContract12, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnQuarkContract12 >::Type_t >::Expression_t quarkContract12(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< FnQuarkContract34, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnQuarkContract34 >::Type_t >::Expression_t quarkContract34(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< FnOuterProduct, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnOuterProduct >::Type_t >::Expression_t outerProduct(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< FnLocalColorInnerProduct, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnLocalColorInnerProduct >::Type_t >::Expression_t localColorInnerProduct(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< UnaryNode< FnPeekSpinMatrix, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, C1 >::Expression_t peekSpin(const QDPExpr< T1, C1 > &l, int row, int col)
MakeReturn< UnaryNode< FnTransposeSpin, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTransposeSpin >::Type_t >::Expression_t transposeSpin(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnChiralProjectMinus, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnChiralProjectMinus >::Type_t >::Expression_t chiralProjectMinus(const QDPExpr< T1, C1 > &l)
MakeReturn< BinaryNode< FnQuarkContract23, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnQuarkContract23 >::Type_t >::Expression_t quarkContract23(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< UnaryNode< FnChiralProjectPlus, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnChiralProjectPlus >::Type_t >::Expression_t chiralProjectPlus(const QDPExpr< T1, C1 > &l)
MakeReturn< BinaryNode< FnQuarkContract13, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnQuarkContract13 >::Type_t >::Expression_t quarkContract13(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< FnQuarkContract24, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnQuarkContract24 >::Type_t >::Expression_t quarkContract24(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
C1 & pokeSpin(QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r, int row, int col)
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProduct >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProduct >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceMultiply >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceSpinMultiply >::Type_t > Type_t
PSpinMatrix< typename BinaryReturn< T1, T2, Op >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceSpinQuarkContract13 >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProduct >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProduct >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceMultiply >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceSpinMultiply >::Type_t > Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< typename BinaryReturn< T1, T2, Op >::Type_t, N > Type_t
PSpinMatrix< typename BinaryReturn< T1, T2, FnLocalColorInnerProduct >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProduct >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProduct >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceMultiply >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceSpinMultiply >::Type_t > Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< T1, N > & Type_t
PSpinMatrix< typename BinaryReturn< T1, T2, Op >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProductReal >::Type_t > Type_t
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PSpinMatrix< typename UnaryReturn< T2, OpUnaryPlus >::Type_t, N > Type_t
PSpinMatrix< typename BinaryReturn< T1, T2, FnOuterProduct >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnOuterProduct >::Type_t > Type_t
PSpinMatrix< typename DoublePrecType< T1 >::Type_t, N > Type_t
Structure for extracting spin matrix components.
PScalar< typename InternalScalar< T >::Type_t > Type_t
Construct simple word type used at some level within primitives.
PSpinMatrix< typename LatticeScalar< T >::Type_t, N > Type_t
Makes a lattice scalar leaving primitive indices alone.
PScalar< typename PrimitiveScalar< T >::Type_t > Type_t
Makes a primitive scalar leaving grid alone.
PSpinMatrix< typename SinglePrecType< T1 >::Type_t, N > Type_t
PSpinMatrix< typename UnaryReturn< T1, Op >::Type_t, N > Type_t
PScalar< typename UnaryReturn< T, FnImagTrace >::Type_t > Type_t
PScalar< typename UnaryReturn< T, FnLocalNorm2 >::Type_t > Type_t
PScalar< typename UnaryReturn< T, FnNorm2 >::Type_t > Type_t
PScalar< typename UnaryReturn< T, FnPeekSpinMatrix >::Type_t > Type_t
PScalar< typename UnaryReturn< T, FnRealTrace >::Type_t > Type_t
PSpinMatrix< typename UnaryReturn< T, FnSumMulti >::Type_t, N > Type_t
PScalar< typename UnaryReturn< T, FnTraceSpin >::Type_t > Type_t
PScalar< typename UnaryReturn< T, FnTrace >::Type_t > Type_t
PSpinMatrix< typename UnaryReturn< T, FnTransposeSpin >::Type_t, N > Type_t
WordType< T1 >::Type_t Type_t
Find the underlying word type of a field.