7#ifndef QDP_PRIMMATRIX_H
8#define QDP_PRIMMATRIX_H
30template <
class T,
int N,
template<
class,
int>
class C>
class PMatrix
44 for(
int i=0; i < N; ++i)
45 for(
int j=0; j < N; ++j)
51 return static_cast<CC&
>(*this);
60 for(
int i=0; i < N; ++i)
61 for(
int j=0; j < N; ++j)
64 return static_cast<CC&
>(*this);
72 for(
int i=0; i < N; ++i)
73 for(
int j=0; j < N; ++j)
76 return static_cast<CC&
>(*this);
84 for(
int i=0; i < N; ++i)
85 for(
int j=0; j < N; ++j)
88 return static_cast<CC&
>(*this);
96 for(
int i=0; i < N; ++i)
99 return static_cast<CC&
>(*this);
107 for(
int i=0; i < N; ++i)
110 return static_cast<CC&
>(*this);
118 for(
int i=0; i < N; ++i)
119 for(
int j=0; j < N; ++j)
122 return static_cast<CC&
>(*this);
130 for(
int i=0; i < N; ++i)
131 for(
int j=0; j < N; ++j)
134 return static_cast<CC&
>(*this);
144#if defined(QDP_USE_ARRAY_INITIALIZER)
151 for(
int i=0; i < N*N; ++i)
158 T&
elem(
int i,
int j) {
return F[j+N*i];}
159 const T&
elem(
int i,
int j)
const {
return F[j+N*i];}
167template<
class T,
int N,
template<
class,
int>
class C>
171 for(
int j=0; j < N; ++j)
172 for(
int i=0; i < N; ++i)
179template<
class T,
int N,
template<
class,
int>
class C>
183 for(
int j=0; j < N; ++j)
184 for(
int i=0; i < N; ++i)
190#ifdef QDP_USE_LIBXML2
192template<
class T,
int N,
template<
class,
int>
class C>
194XMLWriter&
operator<<(XMLWriter& xml,
const PMatrix<T,N,C>& d)
196 xml.openTag(
"Matrix");
198 XMLWriterAPI::AttributeList alist;
200 for(
int i=0; i < N; ++i)
202 for(
int j=0; j < N; ++j)
205 alist.push_back(XMLWriterAPI::Attribute(
"row", i));
206 alist.push_back(XMLWriterAPI::Attribute(
"col", j));
208 xml.openTag(
"elem", alist);
225template<
class T1,
int N,
template<
class,
int>
class C>
232template<
class T1,
int N,
template<
class,
int>
class C>
240template<
class T1,
int N,
template<
class,
int>
class C>
247template<
class T,
int N,
template<
class,
int>
class C>
253template<
class T,
int N,
template<
class,
int>
class C>
259template<
class T,
int N,
template<
class,
int>
class C>
276template<
class T1,
class T2>
283template<
class T,
int N,
template<
class,
int>
class C>
290template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
295template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
300template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
305template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
310template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
315template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
320template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
325template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
341template<
class T,
int N,
template<
class,
int>
class C>
346template<
class T1,
int N,
template<
class,
int>
class C>
352 for(
int i=0; i < N; ++i)
353 for(
int j=0; j < N; ++j)
354 d.elem(i,j) = +l.
elem(i,j);
361template<
class T,
int N,
template<
class,
int>
class C>
366template<
class T1,
int N,
template<
class,
int>
class C>
372 for(
int i=0; i < N; ++i)
373 for(
int j=0; j < N; ++j)
374 d.elem(i,j) = -l.
elem(i,j);
381template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
386template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
392 for(
int i=0; i < N; ++i)
393 for(
int j=0; j < N; ++j)
394 d.elem(i,j) = l.
elem(i,j) + r.
elem(i,j);
400template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
405template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
411 for(
int i=0; i < N; ++i)
412 for(
int j=0; j < N; ++j)
413 d.elem(i,j) = (i == j) ? l.
elem(i,i) + r.
elem() : l.
elem(i,j);
419template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
424template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
430 for(
int i=0; i < N; ++i)
431 for(
int j=0; j < N; ++j)
432 d.elem(i,j) = (i == j) ? l.
elem() + r.
elem(i,i) : r.
elem(i,j);
439template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
444template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
450 for(
int i=0; i < N; ++i)
451 for(
int j=0; j < N; ++j)
452 d.elem(i,j) = l.
elem(i,j) - r.
elem(i,j);
458template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
463template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
469 for(
int i=0; i < N; ++i)
470 for(
int j=0; j < N; ++j)
471 d.elem(i,j) = (i == j) ? l.
elem(i,i) - r.
elem() : l.
elem(i,j);
477template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
482template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
488 for(
int i=0; i < N; ++i)
489 for(
int j=0; j < N; ++j)
490 d.elem(i,j) = (i == j) ? l.
elem() - r.
elem(i,i) : -r.
elem(i,j);
497template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
502template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
508 for(
int i=0; i < N; ++i)
509 for(
int j=0; j < N; ++j)
510 d.elem(i,j) = l.
elem(i,j) * r.
elem();
515template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
520template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
526 for(
int i=0; i < N; ++i)
527 for(
int j=0; j < N; ++j)
533template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
538template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
544 for(
int i=0; i < N; ++i)
545 for(
int j=0; j < N; ++j)
551template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
556template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
562 for(
int i=0; i < N; ++i)
563 for(
int j=0; j < N; ++j)
571template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
576template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
582 for(
int i=0; i < N; ++i)
583 for(
int j=0; j < N; ++j)
584 d.elem(i,j) = l.
elem() * r.
elem(i,j);
589template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
594template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
600 for(
int i=0; i < N; ++i)
601 for(
int j=0; j < N; ++j)
607template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
612template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
618 for(
int i=0; i < N; ++i)
619 for(
int j=0; j < N; ++j)
625template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
630template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
636 for(
int i=0; i < N; ++i)
637 for(
int j=0; j < N; ++j)
644template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
649template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
655 for(
int i=0; i < N; ++i)
656 for(
int j=0; j < N; ++j)
658 d.elem(i,j) = l.
elem(i,0) * r.
elem(0,j);
659 for(
int k=1; k < N; ++k)
660 d.elem(i,j) += l.
elem(i,k) * r.
elem(k,j);
667template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
672template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
678 for(
int i=0; i < N; ++i)
679 for(
int j=0; j < N; ++j)
682 for(
int k=1; k < N; ++k)
690template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
695template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
701 for(
int i=0; i < N; ++i)
702 for(
int j=0; j < N; ++j)
705 for(
int k=1; k < N; ++k)
713template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
718template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
724 for(
int i=0; i < N; ++i)
725 for(
int j=0; j < N; ++j)
728 for(
int k=1; k < N; ++k)
737template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
742template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
748 for(
int i=0; i < N; ++i)
749 for(
int j=0; j < N; ++j)
750 d.elem(i,j) = l.
elem(i,j) / r.
elem();
759template<
class T1,
int N,
template<
class,
int>
class C>
764template<
class T1,
int N,
template<
class,
int>
class C>
770 for(
int i=0; i < N; ++i)
771 for(
int j=0; j < N; ++j)
778template<
class T1,
int N,
template<
class,
int>
class C>
783template<
class T1,
int N,
template<
class,
int>
class C>
789 for(
int i=0; i < N; ++i)
790 for(
int j=0; j < N; ++j)
797template<
class T1,
int N,
template<
class,
int>
class C>
802template<
class T1,
int N,
template<
class,
int>
class C>
808 for(
int i=0; i < N; ++i)
809 for(
int j=0; j < N; ++j)
816template<
class T1,
int N,
template<
class,
int>
class C>
821template<
class T1,
int N,
template<
class,
int>
class C>
827 for(
int i=0; i < N; ++i)
828 for(
int j=0; j < N; ++j)
839template<
class T,
int N,
template<
class,
int>
class C>
844template<
class T1,
int N,
template<
class,
int>
class C>
850 for(
int i=0; i < N; ++i)
851 for(
int j=0; j < N; ++j)
852 d.elem(i,j) =
adj(l.
elem(j,i));
859template<
class T,
int N,
template<
class,
int>
class C>
864template<
class T1,
int N,
template<
class,
int>
class C>
870 for(
int i=0; i < N; ++i)
871 for(
int j=0; j < N; ++j)
879template<
class T,
int N,
template<
class,
int>
class C>
884template<
class T1,
int N,
template<
class,
int>
class C>
890 for(
int i=0; i < N; ++i)
891 for(
int j=0; j < N; ++j)
900template<
class T,
int N,
template<
class,
int>
class C>
905template<
class T,
int N,
template<
class,
int>
class C>
912 for(
int i=1; i < N; ++i)
920template<
class T,
int N,
template<
class,
int>
class C>
925template<
class T1,
int N,
template<
class,
int>
class C>
932 for(
int i=1; i < N; ++i)
940template<
class T,
int N,
template<
class,
int>
class C>
945template<
class T1,
int N,
template<
class,
int>
class C>
952 for(
int i=1; i < N; ++i)
960template<
class T,
int N,
template<
class,
int>
class C>
965template<
class T,
int N,
template<
class,
int>
class C>
971 for(
int i=0; i < N; ++i)
972 for(
int j=0; j < N; ++j)
980template<
class T,
int N,
template<
class,
int>
class C>
985template<
class T,
int N,
template<
class,
int>
class C>
991 for(
int i=0; i < N; ++i)
992 for(
int j=0; j < N; ++j)
1001template<
class T,
int N,
template<
class,
int>
class C>
1008template<
class T,
int N,
template<
class,
int>
class C>
1013 for(
int i=0; i < N; ++i) {
1014 for(
int j=0; j < N; ++j) {
1025template<
class T,
int N,
template<
class,
int>
class C>
1032template<
class T,
int N,
template<
class,
int>
class C>
1037 for(
int i=0; i < N; ++i) {
1038 for(
int j=0; j < N; ++j) {
1048template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1053template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1060 for(
int k=1; k < N; ++k)
1063 for(
int j=1; j < N; ++j)
1064 for(
int k=0; k < N; ++k)
1071template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1076template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1083 for(
int k=1; k < N; ++k)
1090template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1095template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1102 for(
int k=1; k < N; ++k)
1111template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1116template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1122 for(
int i=0; i < N; ++i)
1123 for(
int j=0; j < N; ++j)
1126 for(
int k=1; k < N; ++k)
1134template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1139template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1145 for(
int i=0; i < N; ++i)
1146 for(
int j=0; j < N; ++j)
1153template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1158template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1164 for(
int i=0; i < N; ++i)
1165 for(
int j=0; j < N; ++j)
1173template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1178template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1184 for(
int i=0; i < N; ++i)
1185 for(
int j=0; j < N; ++j)
1188 for(
int k=1; k < N; ++k)
1196template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1201template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1207 for(
int i=0; i < N; ++i)
1208 for(
int j=0; j < N; ++j)
1215template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1220template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1226 for(
int i=0; i < N; ++i)
1227 for(
int j=0; j < N; ++j)
1235template<
class T,
int N,
template<
class,
int>
class C>
1240template<
class T,
int N,
template<
class,
int>
class C>
1246 for(
int i=0; i < N; ++i)
1247 for(
int j=0; j < N; ++j)
1255template<
class T,
int N,
template<
class,
int>
class C>
1260template<
class T,
int N,
template<
class,
int>
class C>
1266 for(
int i=0; i < N; ++i)
1267 for(
int j=0; j < N; ++j)
1275template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1281 for(
int i=0; i < N; ++i)
1282 for(
int j=0; j < N; ++j)
1293template<
class T,
int N,
template<
class,
int>
class C>
1298template<
class T,
int N,
template<
class,
int>
class C>
1304 for(
int i=0; i < N; ++i)
1305 for(
int j=0; j < N; ++j)
1312template<
class T,
int N,
template<
class,
int>
class C>
1317template<
class T,
int N,
template<
class,
int>
class C>
1323 for(
int i=0; i < N; ++i)
1324 for(
int j=0; j < N; ++j)
1332template<
class T,
int N,
template<
class,
int>
class C>
1337template<
class T,
int N,
template<
class,
int>
class C>
1343 for(
int i=0; i < N; ++i)
1344 for(
int j=0; j < N; ++j)
1352template<
class T,
int N,
template<
class,
int>
class C>
1357template<
class T,
int N,
template<
class,
int>
class C>
1363 for(
int i=0; i < N; ++i)
1364 for(
int j=0; j < N; ++j)
1371template<
class T,
int N,
template<
class,
int>
class C>
1376template<
class T,
int N,
template<
class,
int>
class C>
1382 for(
int i=0; i < N; ++i)
1383 for(
int j=0; j < N; ++j)
1390template<
class T,
int N,
template<
class,
int>
class C>
1395template<
class T,
int N,
template<
class,
int>
class C>
1401 for(
int i=0; i < N; ++i)
1402 for(
int j=0; j < N; ++j)
1409template<
class T,
int N,
template<
class,
int>
class C>
1414template<
class T,
int N,
template<
class,
int>
class C>
1420 for(
int i=0; i < N; ++i)
1421 for(
int j=0; j < N; ++j)
1428template<
class T,
int N,
template<
class,
int>
class C>
1433template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1439 for(
int i=0; i < N; ++i)
1440 for(
int j=0; j < N; ++j)
1442 return static_cast<Return_t&
>(l);
1447template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1453 for(
int i=0; i < N; ++i)
1454 for(
int j=0; j < N; ++j)
1456 return static_cast<Return_t&
>(l);
1461template<
class T,
int N,
template<
class,
int>
class C>
1466template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1472 for(
int i=0; i < N; ++i)
1473 for(
int j=0; j < N; ++j)
1475 return static_cast<Return_t&
>(l);
1480template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1486 for(
int i=0; i < N; ++i)
1487 for(
int j=0; j < N; ++j)
1489 return static_cast<Return_t&
>(l);
1495template<
class T,
int N,
template<
class,
int>
class C>
1499 for(
int i=0; i < N; ++i)
1500 for(
int j=0; j < N; ++j)
1506template<
class T,
class T1,
int N,
template<
class,
int>
class C>
1510 for(
int i=0; i < N; ++i)
1511 for(
int j=0; j < N; ++j)
1517template<
class T,
class T1,
int N,
template<
class,
int>
class C>
1521 for(
int i=0; i < N; ++i)
1522 for(
int j=0; j < N; ++j)
1527template<
class T,
class T1,
int N,
template<
class,
int>
class C>
1531 for(
int i=0; i < N; ++i)
1532 for(
int j=0; j < N; ++j)
1538template<
class T,
class T1,
int N,
template<
class,
int>
class C>
1546 for(
int i=0; i < N; ++i)
1547 for(
int j=0; j < N; ++j)
1557template<
class T,
int N,
template<
class,
int>
class C,
class T1,
class T2>
1562 for(
int i=0; i < N; ++i)
1563 for(
int j=0; j < N; ++j)
1568template<
class T,
int N,
template<
class,
int>
class C>
1572 for(
int i=0; i < N; ++i)
1573 for(
int j=0; j < N; ++j)
1581template<
class T,
int N,
template<
class,
int>
class C>
1586template<
class T,
int N,
template<
class,
int>
class C>
1592 for(
int i=0; i < N; ++i)
1593 for(
int j=0; j < N; ++j)
1594 d.elem(i,j) =
sum(s1.elem(i,j));
1602template<
class T,
int N,
template<
class,
int>
class C>
1607template<
class T,
int N,
template<
class,
int>
class C>
1612template<
class T,
int N,
template<
class,
int>
class C>
1619 for(
int j=1; j < N; ++j)
1622 for(
int i=1; i < N; ++i)
1623 for(
int j=0; j < N; ++j)
1631template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1637template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1642template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1649 for(
int k=1; k < N; ++k)
1652 for(
int j=1; j < N; ++j)
1653 for(
int k=0; k < N; ++k)
1660template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1665template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1672 for(
int k=1; k < N; ++k)
1679template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1684template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1691 for(
int k=1; k < N; ++k)
1702template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1708template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1713template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1720 for(
int k=1; k < N; ++k)
1723 for(
int j=1; j < N; ++j)
1724 for(
int k=0; k < N; ++k)
1731template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1736template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1743 for(
int k=1; k < N; ++k)
1750template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1755template<
class T1,
class T2,
int N,
template<
class,
int>
class C>
1762 for(
int k=1; k < N; ++k)
1774template<
class T1,
class T2,
class T3,
int N,
template<
class,
int>
class C>
1779template<
class T1,
class T2,
class T3,
int N,
template<
class,
int>
class C>
1786 for(
int i=0; i < N; ++i)
1787 for(
int j=0; j < N; ++j)
CC & operator*=(const PScalar< T1 > &rhs)
PMatrix *= PScalar.
CC & assign(const PScalar< T1 > &rhs)
PMatrix = PScalar.
CC & operator-=(const PScalar< T1 > &rhs)
PMatrix -= PScalar.
CC & operator-=(const C< T1, N > &rhs)
PMatrix -= PMatrix.
CC & operator+=(const PScalar< T1 > &rhs)
PMatrix += PScalar.
CC & operator+=(const C< T1, N > &rhs)
PMatrix += PMatrix.
CC & assign(const C< T1, N > &rhs)
PMatrix = PMatrix.
const T & elem(int i, int j) const
CC & operator/=(const PScalar< T1 > &rhs)
PMatrix /= PScalar.
bool isnan(const QDPExpr< T, C > &s1)
bool = isnan(source)
bool isfinite(const QDPExpr< T, C > &s1)
bool = isfinite(source)
bool isnormal(const QDPExpr< T, C > &s1)
bool = isnormal(source)
bool isinf(const QDPExpr< T, C > &s1)
bool = isinf(source)
UnaryReturn< C, FnSum >::Type_t sum(const QDPType< T, C > &s1)
OScalar = sum(source).
void gather_sites(ILattice< T, 2 > &d, const ILattice< T1, 2 > &s0, int i0, const ILattice< T1, 2 > &s1, int i1)
gather several inner sites together
TextWriter & operator<<(TextWriter &txt, const std::string &output)
TextReader & operator>>(TextReader &txt, std::string &input)
void fill_gaussian(IScalar< T > &d, IScalar< T > &r1, IScalar< T > &r2)
dest = gaussian
void copy_site(IScalar< T > &d, int isite, const IScalar< T1 > &s1)
dest [some type] = source [some type]
void zero_rep(IScalar< T > &dest)
dest = 0
void copymask(IScalar< T > &d, const IScalar< T1 > &mask, const IScalar< T > &s1)
dest = (mask) ? s1 : dest
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)
UnaryReturn< IScalar< T >, FnGetSite >::Type_t getSite(const IScalar< T > &s1, int innersite)
OLattice< PScalar< PColorMatrix< RComplexFloat, 3 > > > C
BinaryReturn< PColorMatrix< T1, N >, PColorMatrix< T2, N >, FnTraceColorMultiply >::Type_t traceColorMultiply(const PColorMatrix< T1, N > &l, const PColorMatrix< T2, N > &r)
BinaryReturn< PMatrix< T1, N, C >, PMatrix< T2, N, C >, FnTraceMultiply >::Type_t traceMultiply(const PMatrix< T1, N, C > &l, const PMatrix< T2, N, C > &r)
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)
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< FnAdjoint, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnAdjoint >::Type_t >::Expression_t adj(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnReal, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnReal >::Type_t >::Expression_t real(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< TrinaryNode< FnWhere, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPType< T2, C2 > >::Leaf_t, typenameCreateLeaf< typenameSimpleScalar< typenameWordType< C1 >::Type_t >::Type_t >::Leaf_t >, typenameTrinaryReturn< C1, C2, typenameSimpleScalar< typenameWordType< C1 >::Type_t >::Type_t, FnWhere >::Type_t >::Expression_t where(const QDPType< T1, C1 > &a, const QDPType< T2, C2 > &b, const typename WordType< C1 >::Type_t &c)
MakeReturn< UnaryNode< FnPeekColorMatrix, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, C1 >::Expression_t peekColor(const QDPExpr< T1, C1 > &l, int row, int col)
MakeReturn< UnaryNode< FnTimesI, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTimesI >::Type_t >::Expression_t timesI(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnRealTrace, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnRealTrace >::Type_t >::Expression_t realTrace(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnTrace, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTrace >::Type_t >::Expression_t trace(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< FnLocalInnerProductReal, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnLocalInnerProductReal >::Type_t >::Expression_t localInnerProductReal(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)
MakeReturn< BinaryNode< OpSubtract, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpSubtract >::Type_t >::Expression_t operator-(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< UnaryNode< FnTraceColor, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTraceColor >::Type_t >::Expression_t traceColor(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnConjugate, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnConjugate >::Type_t >::Expression_t conj(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnTransposeColor, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTransposeColor >::Type_t >::Expression_t transposeColor(const QDPExpr< T1, C1 > &l)
MakeReturn< BinaryNode< FnLocalInnerProduct, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnLocalInnerProduct >::Type_t >::Expression_t localInnerProduct(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
C1 & pokeColor(QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r, int row, int col)
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< BinaryNode< FnCmplx, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, FnCmplx >::Type_t >::Expression_t cmplx(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< BinaryNode< OpDivide, typenameCreateLeaf< QDPType< T1, C1 > >::Leaf_t, typenameCreateLeaf< QDPExpr< T2, C2 > >::Leaf_t >, typenameBinaryReturn< C1, C2, OpDivide >::Type_t >::Expression_t operator/(const QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r)
MakeReturn< UnaryNode< FnTranspose, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnTranspose >::Type_t >::Expression_t transpose(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnImag, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnImag >::Type_t >::Expression_t imag(const QDPExpr< T1, C1 > &l)
MakeReturn< UnaryNode< FnImagTrace, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnImagTrace >::Type_t >::Expression_t imagTrace(const QDPExpr< T1, C1 > &l)
void fill_random(float &d, T1 &seed, T2 &skewed_seed, const T1 &seed_mult)
dest = random
MakeReturn< UnaryNode< FnLocalNorm2, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnLocalNorm2 >::Type_t >::Expression_t localNorm2(const QDPExpr< T1, C1 > &l)
C1 & pokeSpin(QDPType< T1, C1 > &l, const QDPExpr< T2, C2 > &r, int row, int col)
OLattice< PScalar< PColorMatrix< RComplexFloat, 3 > > > C
C< typename BinaryReturn< T1, T2, FnTraceSpinMultiply >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceMultiply >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProductReal >::Type_t > Type_t
C< typename BinaryReturn< T1, T2, FnTraceColorMultiply >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnInnerProduct >::Type_t > Type_t
C< typename BinaryReturn< T1, T2, OpAdd >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdjMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpMultiplyAdj >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpSubtract >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdjMultiplyAdj >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProduct >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProduct >::Type_t > Type_t
C< typename BinaryReturn< T1, T2, FnTraceColorMultiply >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceMultiply >::Type_t > Type_t
C< typename BinaryReturn< T1, T2, FnTraceSpinMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdd >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdjMultiplyAdj >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdjMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpDivide >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpMultiplyAdj >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpSubtract >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProductReal >::Type_t > Type_t
PScalar< typename BinaryReturn< T1, T2, FnLocalInnerProduct >::Type_t > Type_t
C< typename BinaryReturn< T1, T2, FnTraceColorMultiply >::Type_t, N > Type_t
PScalar< typename BinaryReturn< T1, T2, FnTraceMultiply >::Type_t > Type_t
C< typename BinaryReturn< T1, T2, FnTraceSpinMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdd >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdjMultiplyAdj >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpAdjMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpMultiplyAdj >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpMultiply >::Type_t, N > Type_t
C< typename BinaryReturn< T1, T2, OpSubtract >::Type_t, N > Type_t
PMatrix< typename DoublePrecType< T1 >::Type_t, N, C > Type_t
Structure for extracting color matrix components.
Structure for extracting color vector components.
Structure for extracting spin matrix components.
Structure for extracting spin vector components.
Structure for inserting color matrix components.
Structure for inserting spin matrix components.
PScalar< typename InternalScalar< T >::Type_t > Type_t
Construct simple word type used at some level within primitives.
C< 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.
PMatrix< typename SinglePrecType< T1 >::Type_t, N, C > Type_t
C< typename TrinaryReturn< T1, T2, T3, FnWhere >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnAdjoint >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnConjugate >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnGetSite >::Type_t, N > Type_t
PScalar< typename UnaryReturn< T, FnImagTrace >::Type_t > Type_t
C< typename UnaryReturn< T, FnImag >::Type_t, N > Type_t
PScalar< typename UnaryReturn< T, FnLocalNorm2 >::Type_t > Type_t
PScalar< typename UnaryReturn< T, FnNorm2 >::Type_t > Type_t
C< typename UnaryReturn< T, FnPeekColorMatrix >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnPeekColorVector >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnPeekSpinMatrix >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnPeekSpinVector >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnPokeColorMatrix >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnPokeSpinMatrix >::Type_t, N > Type_t
PScalar< typename UnaryReturn< T, FnRealTrace >::Type_t > Type_t
C< typename UnaryReturn< T, FnReal >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnTimesI >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnTimesMinusI >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnTraceColor >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnTraceSpin >::Type_t, N > Type_t
PScalar< typename UnaryReturn< T, FnTrace >::Type_t > Type_t
C< typename UnaryReturn< T, FnTransposeColor >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnTransposeSpin >::Type_t, N > Type_t
C< typename UnaryReturn< T, FnTranspose >::Type_t, N > Type_t
C< typename UnaryReturn< T, OpIdentity >::Type_t, N > Type_t
C< typename UnaryReturn< T, OpUnaryMinus >::Type_t, N > Type_t
C< typename UnaryReturn< T, OpUnaryPlus >::Type_t, N > Type_t
WordType< T1 >::Type_t Type_t
Find the underlying word type of a field.