10#ifndef QDP_SCALARSITE_BAGEL_QDP_BLAS_G5_H
11#define QDP_SCALARSITE_BAGEL_QDP_BLAS_G5_H
53 REAL ar = a.
elem().elem().elem().elem();
63 qdp_vxpay_chp(yptr, aptr,yptr, xptr, n_4vec);
70 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
71 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
72 qdp_vxpay_chp(yptr, aptr,yptr, xptr, 1);
99 REAL ar = a.
elem().elem().elem().elem();
108 qdp_vxpay_chm(yptr, aptr,yptr, xptr, n_4vec);
115 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
116 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
118 qdp_vxpay_chm(yptr, aptr,yptr, xptr, 1);
147 REAL ar = a.
elem().elem().elem().elem();
154 qdp_vxmay_chp(yptr, aptr,yptr, xptr, n_4vec);
161 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
162 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
164 qdp_vxmay_chp(yptr, aptr,yptr, xptr, 1);
191 REAL ar = a.
elem().elem().elem().elem();
200 qdp_vxmay_chm(yptr, aptr,yptr, xptr, n_4vec);
207 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
208 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
210 qdp_vxmay_chm(yptr, aptr,yptr, xptr, 1);
241 qdp_vadd_chp(yptr, yptr, xptr, n_4vec);
248 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
249 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
251 qdp_vadd_chp(yptr, yptr, xptr, 1);
282 qdp_vadd_chm(yptr, yptr, xptr, n_4vec);
289 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
290 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
291 qdp_vadd_chm(yptr, yptr, xptr, 1);
323 qdp_vsub_chp(yptr, yptr, xptr, n_4vec);
331 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
332 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
334 qdp_vsub_chp(yptr, yptr, xptr, 1);
365 qdp_vsub_chm(yptr, yptr, xptr, n_4vec);
372 REAL* xptr = (
REAL *)&(x.
elem(i).elem(0).elem(0).real());
373 REAL* yptr = (
REAL *)&(d.
elem(i).elem(0).elem(0).real());
374 qdp_vsub_chm(yptr, yptr, xptr, 1);
415 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
421 REAL ar = a.
elem().elem().elem().elem();
430 qdp_vxpay_chp(zptr, aptr, xptr, yptr, n_4vec);
437 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
438 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
441 qdp_vxpay_chp(zptr, aptr, xptr, yptr, 1);
482 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
488 REAL ar = a.
elem().elem().elem().elem();
498 qdp_vxpay_chm(zptr, aptr, xptr, yptr, n_4vec);
505 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
506 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
509 qdp_vxpay_chm(zptr, aptr, xptr, yptr, 1);
548 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
554 REAL ar = a.
elem().elem().elem().elem();
564 qdp_vxmay_chp(zptr, aptr, xptr, yptr, n_4vec);
571 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
572 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
575 qdp_vxmay_chp(zptr, aptr, xptr, yptr, 1);
614 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().right());
620 REAL ar = a.
elem().elem().elem().elem();
630 qdp_vxmay_chm(zptr, aptr, xptr, yptr, n_4vec);
637 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
638 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
641 qdp_vxmay_chm(zptr, aptr, xptr, yptr, 1);
675 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
681 REAL ar = a.
elem().elem().elem().elem();
692 qdp_vaxpy_chp(zptr, aptr, xptr, yptr, n_4vec);
699 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
700 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
703 qdp_vaxpy_chp(zptr, aptr, xptr, yptr, 1);
738 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
744 REAL ar = a.
elem().elem().elem().elem();
755 qdp_vaxpy_chm(zptr, aptr, xptr, yptr, n_4vec);
762 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
763 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
766 qdp_vaxpy_chm(zptr, aptr, xptr, yptr, 1);
802 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
808 REAL ar = a.
elem().elem().elem().elem();
819 qdp_vaxmy_chp(zptr, aptr, xptr, yptr, n_4vec);
826 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
827 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
830 qdp_vaxmy_chp(zptr, aptr, xptr, yptr, 1);
865 const BN &mulNode =
static_cast<const BN&
> (rhs.expression().left());
871 REAL ar = a.
elem().elem().elem().elem();
882 qdp_vaxmy_chm(zptr, aptr, xptr, yptr, n_4vec);
889 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
890 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
893 qdp_vaxmy_chm(zptr, aptr, xptr, yptr, 1);
914 cout <<
"BJ: v = a*P{+}v " << endl;
920 REAL ar = a.
elem().elem().elem().elem();
928 qdp_vscal_chp(zptr, aptr, xptr, n_4vec);
935 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
938 qdp_vscal_chp(zptr, aptr, xptr, 1);
959 cout <<
"BJ: v = a*P{-}v " << endl;
965 REAL ar = a.
elem().elem().elem().elem();
973 qdp_vscal_chm(zptr, aptr, xptr, n_4vec);
980 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
983 qdp_vscal_chm(zptr, aptr, xptr, 1);
1025 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1026 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1048 int n_4vec = (s.
end()-s.
start()+1);
1049 qdp_vaxpby_chp(zptr, aptr, xptr, bptr, yptr, n_4vec);
1055 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1056 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1060 qdp_vaxpby_chp(zptr, aptr, xptr, bptr, yptr, 1);
1103 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1104 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1126 int n_4vec = (s.
end()-s.
start()+1);
1127 qdp_vaxpby_chm(zptr, aptr, xptr, bptr, yptr, n_4vec);
1133 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1134 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1138 qdp_vaxpby_chm(zptr, aptr, xptr, bptr, yptr, 1);
1181 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1182 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1204 int n_4vec = (s.
end()-s.
start()+1);
1205 qdp_vaxmby_chp(zptr, aptr, xptr, bptr, yptr, n_4vec);
1212 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1213 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1217 qdp_vaxmby_chp(zptr, aptr, xptr, bptr, yptr, 1);
1260 const BN1 &mulNode1 =
static_cast<const BN1&
> (rhs.expression().left());
1261 const BN2 &mulNode2 =
static_cast<const BN2&
> (rhs.expression().right());
1283 int n_4vec = (s.
end()-s.
start()+1);
1284 qdp_vaxmby_chm(zptr, aptr, xptr, bptr, yptr, n_4vec);
1292 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1293 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1296 qdp_vaxmby_chm(zptr, aptr, xptr, bptr, yptr, 1);
1322 QDPIO::cout <<
"z = a*(GammaConst<Ns,Ns*Ns-1>()*x)" << endl;
1333 const BN1 &node =
static_cast<const BN1&
>(rhs.expression().right());
1337 REAL ar = a.
elem().elem().elem().elem();
1343 int n_4vec = (s.
end()-s.
start()+1);
1345 qdp_vscal_g5(zptr, aptr, xptr, n_4vec);
1352 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1355 qdp_vscal_g5(zptr, aptr, xptr, 1);
1385 QDPIO::cout <<
"z = x - a GammaConst<Ns,Ns*Ns-1>()*y" << endl;
1397 const MN& mul_node =
static_cast<const MN&
>(rhs.expression().right());
1407 const GN& gamma_node =
static_cast<const GN&
>(mul_node.right());
1410 REAL ar = a.
elem().elem().elem().elem();
1420 int n_4vec = (s.
end()-s.
start()+1);
1421 qdp_vxmag5y(zptr, aptr, xptr, yptr, n_4vec);
1428 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1429 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1431 qdp_vxmag5y(zptr, aptr, xptr, yptr, 1);
1464 QDPIO::cout <<
"z = a*x + b*GammaConst<Ns,Ns*Ns-1>()*y" << endl;
1487 const MN1& mulNode1 =
static_cast< const MN1&
>(rhs.expression().left());
1488 const MN2& mulNode2 =
static_cast< const MN2&
>(rhs.expression().right());
1489 const GN& gammaNode =
static_cast< const GN&
>(mulNode2.right());
1508 int n_4vec = (s.
end()-s.
start()+1);
1509 qdp_vaxpbg5y(zptr, aptr, xptr, bptr, yptr, n_4vec);
1516 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1517 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1519 qdp_vaxpbg5y(zptr, aptr, xptr, bptr, yptr, 1);
1551 QDPIO::cout <<
"z = GammaConst<Ns,Ns*Ns-1>()*(ax - by)" << endl;
1565 const AXMBY& axmby_node =
static_cast<const AXMBY&
>(rhs.expression().right());
1573 const MN& mulNode1 =
static_cast<const MN&
>( axmby_node.left());
1574 const MN& mulNode2 =
static_cast<const MN&
>( axmby_node.right());
1593 int n_4vec = (s.
end()-s.
start()+1);
1594 qdp_vg5axmby(zptr, aptr, xptr, bptr, yptr, n_4vec);
1601 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1602 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1605 qdp_vg5axmby(zptr, aptr, xptr, bptr, yptr, 1);
1640 QDPIO::cout <<
"z = a*x + b*GammaConst<Ns,Ns*Ns-1>()*timesI(y)" << endl;
1671 const MN1& mulNode1 =
static_cast< const MN1&
>(rhs.expression().left());
1672 const MN2& mulNode2 =
static_cast< const MN2&
>(rhs.expression().right());
1673 const GN& gammaNode =
static_cast< const GN&
>(mulNode2.right());
1674 const IN& mulINode =
static_cast< const IN&
>(gammaNode.right());
1693 int n_4vec = (s.
end()-s.
start()+1);
1694 qdp_vaxpbg5iy(zptr, aptr, xptr, bptr, yptr, n_4vec);
1701 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1702 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1705 qdp_vaxpbg5iy(zptr, aptr, xptr, bptr, yptr, 1);
1739 QDPIO::cout <<
"z = a*x + b*GammaConst<Ns,Ns*Ns-1>()*timesI(y)" << endl;
1770 const MN1& mulNode1 =
static_cast< const MN1&
>(rhs.expression().left());
1771 const MN2& mulNode2 =
static_cast< const MN2&
>(rhs.expression().right());
1772 const GN& gammaNode =
static_cast< const GN&
>(mulNode2.right());
1773 const IN& mulINode =
static_cast< const IN&
>(gammaNode.right());
1791 int n_4vec = (s.
end()-s.
start()+1);
1792 qdp_vaxmbg5iy(zptr, aptr, xptr, bptr, yptr, n_4vec);
1799 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1800 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1803 qdp_vaxmbg5iy(zptr, aptr, xptr, bptr, yptr, 1);
1834 QDPIO::cout <<
"z = x + a GammaConst<Ns,Ns*Ns-1>()*i*y" << endl;
1848 const MN& mul_node =
static_cast<const MN&
>(rhs.expression().right());
1864 const GN& gamma_node =
static_cast<const GN&
>(mul_node.right());
1865 const IN& timesI_node =
static_cast<const IN&
>(gamma_node.right());
1869 REAL ar = a.
elem().elem().elem().elem();
1878 int n_4vec = (s.
end()-s.
start()+1);
1879 qdp_vxpag5iy(zptr, aptr, xptr, yptr, n_4vec);
1886 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1887 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1890 qdp_vxpag5iy(zptr, aptr, xptr, yptr, 1);
1923 QDPIO::cout <<
"z = x - a GammaConst<Ns,Ns*Ns-1>()*i*y" << endl;
1937 const MN& mul_node =
static_cast<const MN&
>(rhs.expression().right());
1953 const GN& gamma_node =
static_cast<const GN&
>(mul_node.right());
1954 const IN& timesI_node =
static_cast<const IN&
>(gamma_node.right());
1958 REAL ar = a.
elem().elem().elem().elem();
1968 int n_4vec = (s.
end()-s.
start()+1);
1969 qdp_vxmag5iy(zptr, aptr, xptr, yptr, n_4vec);
1976 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
1977 REAL *yptr = (
REAL *) &(y.
elem(i).elem(0).elem(0).real());
1980 qdp_vxmag5iy(zptr, aptr, xptr, yptr, 1);
2011 QDPIO::cout <<
"z += a GammaConst<Ns,Ns*Ns-1>()*i*y" << endl;
2026 const MN& mul_node =
static_cast<const MN&
>(rhs.expression().right());
2043 const GN& gamma_node =
static_cast<const GN&
>(rhs.expression().right());
2044 const IN& timesI_node =
static_cast<const IN&
>(gamma_node.right());
2048 REAL ar = a.
elem().elem().elem().elem();
2057 int n_4vec = (s.
end()-s.
start()+1);
2058 qdp_vxpag5iy(zptr, aptr, zptr, xptr, n_4vec);
2065 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
2068 qdp_vxpag5iy(zptr, aptr, zptr, xptr, 1);
2099 QDPIO::cout <<
"z -= a GammaConst<Ns,Ns*Ns-1>()*i*y" << endl;
2114 const MN& mul_node =
static_cast<const MN&
>(rhs.expression().right());
2131 const GN& gamma_node =
static_cast<const GN&
>(rhs.expression().right());
2132 const IN& timesI_node =
static_cast<const IN&
>(gamma_node.right());
2136 REAL ar = a.
elem().elem().elem().elem();
2145 int n_4vec = (s.
end()-s.
start()+1);
2146 qdp_vxmag5iy(zptr, aptr, zptr, xptr, n_4vec);
2153 REAL *xptr = (
REAL *) &(x.
elem(i).elem(0).elem(0).real());
2156 qdp_vxmag5iy(zptr, aptr, zptr, xptr, 1);
Outer grid Scalar 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.
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)
StandardOutputStream cout
Yet another random number generator.
PScalar< PScalar< RScalar< REAL > > > TScal
MakeReturn< UnaryNode< FnReal, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnReal >::Type_t >::Expression_t real(const QDPExpr< T1, C1 > &l)
PSpinVector< PColorVector< RComplex< REAL >, 3 >, Ns > TVec