10#ifndef QDP_SCALARSITE_SSE_LINALG_DOUBLE_H
11#define QDP_SCALARSITE_SSE_LINALG_DOUBLE_H
20#define QDP_SCALARSITE_USE_EVALUATE
53#if defined(QDP_SCALARSITE_DEBUG)
54 cout <<
"M*M" << endl;
81#if defined(QDP_SCALARSITE_DEBUG)
82 cout <<
"PSc<M>*PSc<M>" << endl;
107#if defined(QDP_SCALARSITE_DEBUG)
108 cout <<
"PSc<PSc<M>>*PSc<PSc<M>>" << endl;
111 REAL64* lm = (
REAL64 *)&(l.elem().elem().elem(0,0).real());
112 REAL64* rm = (
REAL64 *)&(r.elem().elem().elem(0,0).real());
113 REAL64* dm = (
REAL64 *)&(d.elem().elem().elem(0,0).real());
126 PMatrix<RComplex<REAL64>,3,PColorMatrix>, OpAdjMultiply>
::Type_t
133#if defined(QDP_SCALARSITE_DEBUG)
134 cout <<
"adj(M)*M" << endl;
150 PScalar<PColorMatrix<RComplex<REAL64>,3> >, OpAdjMultiply>
::Type_t
157#if defined(QDP_SCALARSITE_DEBUG)
158 cout <<
"adj(PSc<M>)*PSc<M>" << endl;
177 PScalar<PScalar<PColorMatrix<RComplex<REAL64>,3> > >, OpAdjMultiply>
::Type_t
184#if defined(QDP_SCALARSITE_DEBUG)
185 cout <<
"adj(PSc<PSc<M>>)*PSc<PSc<M>>" << endl;
188 REAL64* lm = (
REAL64 *)&(l.elem().elem().elem(0,0).real());
189 REAL64* rm = (
REAL64 *)&(r.elem().elem().elem(0,0).real());
190 REAL64* dm = (
REAL64 *)&(d.elem().elem().elem(0,0).real());
202 PMatrix<RComplex<REAL64>,3,PColorMatrix>, OpMultiplyAdj>
::Type_t
209#if defined(QDP_SCALARSITE_DEBUG)
210 cout <<
"M*adj(M)" << endl;
228 PScalar<PColorMatrix<RComplex<REAL64>,3> >, OpMultiplyAdj>
::Type_t
235#if defined(QDP_SCALARSITE_DEBUG)
236 cout <<
"PSc<M>*adj(PSc<M>)" << endl;
252 PScalar<PScalar<PColorMatrix<RComplex<REAL64>,3> > >, OpMultiplyAdj>
::Type_t
259#if defined(QDP_SCALARSITE_DEBUG)
260 cout <<
"PSc<PSc<M>>*adj(PSc<PSc<M>>)" << endl;
262 REAL64* lm = (
REAL64 *)&(l.elem().elem().elem(0,0).real());
263 REAL64* rm = (
REAL64 *)&(r.elem().elem().elem(0,0).real());
264 REAL64* dm = (
REAL64 *)&(d.elem().elem().elem(0,0).real());
277 PMatrix<RComplex<REAL64>,3,PColorMatrix>, OpAdjMultiplyAdj>
::Type_t
303operator*(
const PMatrix<RComplex<REAL64>,3,PColorMatrix>& l,
304 const PVector<RComplex<REAL64>,3,PColorVector>& r)
309#if defined(QDP_SCALARSITE_DEBUG)
310 cout <<
"M*V" << endl;
314 su3_vectorf* rv = (su3_vectorf *)&(r.elem(0).real());
315 su3_vectorf* dv = (su3_vectorf *)&(d.elem(0).real());
317 intrin_sse_mult_su3_mat_vec(lm,rv,dv);
335#if defined(QDP_SCALARSITE_DEBUG)
336 cout <<
"PSc<M>*PSc<V>" << endl;
340 su3_vectorf* rv = (su3_vectorf *)&(r.elem().elem(0).real());
341 su3_vectorf* dv = (su3_vectorf *)&(d.elem().elem(0).real());
343 intrin_sse_mult_su3_mat_vec(lm,rv,dv);
360#if defined(QDP_SCALARSITE_DEBUG)
361 cout <<
"adj(M)*V" << endl;
365 su3_vectorf* rv = (su3_vectorf *)&(r.elem(0).real());
366 su3_vectorf* dv = (su3_vectorf *)&(d.elem(0).real());
368 intrin_sse_mult_adj_su3_mat_vec(lm,rv,dv);
385#if defined(QDP_SCALARSITE_DEBUG)
386 cout <<
"M*S" << endl;
389 su3_vectorf* rv = (su3_vectorf *)&(r.elem(0).elem(0).real());
390 su3_vectorf* dv = (su3_vectorf *)&(d.elem(0).elem(0).real());
392 intrin_sse_mult_su3_mat_vec(lm,rv,dv);
409#if defined(QDP_SCALARSITE_DEBUG)
410 cout <<
"adj(PSc<M>)*PSc<V>" << endl;
413 su3_vectorf* rv = (su3_vectorf *)&(r.elem().elem(0).real());
414 su3_vectorf* dv = (su3_vectorf *)&(d.elem().elem(0).real());
416 intrin_sse_mult_adj_su3_mat_vec(lm,rv,dv);
433#if defined(QDP_SCALARSITE_DEBUG)
434 cout <<
"adj(PSc<M>)*S" << endl;
437 su3_vectorf* rv = (su3_vectorf *)&(r.elem(0).elem(0).real());
438 su3_vectorf* dv = (su3_vectorf *)&(d.elem(0).elem(0).real());
440 intrin_sse_mult_adj_su3_mat_vec(lm,rv,dv);
458#if defined(QDP_SCALARSITE_DEBUG)
459 cout <<
"PSc<M>*H" << endl;
462 half_wilson_vectorf* rh = (half_wilson_vectorf *)&(r.elem(0).elem(0).real() );
463 half_wilson_vectorf* dh = (half_wilson_vectorf *)&(d.elem(0).elem(0).real() );
465 intrin_sse_mult_su3_mat_hwvec(lm,rh,dh);
483#if defined(QDP_SCALARSITE_DEBUG)
484 cout <<
"adj(PSc<M>)*H" << endl;
488 half_wilson_vectorf* rh = (half_wilson_vectorf *)&(r.elem(0).elem(0).real() );
489 half_wilson_vectorf* dh = (half_wilson_vectorf *)&(d.elem(0).elem(0).real() );
491 intrin_sse_mult_adj_su3_mat_hwvec(lm,rh,dh);
508#if defined(QDP_SCALARSITE_DEBUG)
509 cout <<
"V+V" << endl;
512 su3_vectorf *lv = (su3_vectorf *)&( l.elem(0).real() );
513 su3_vectorf *rv = (su3_vectorf *)&( r.elem(0).real() );
514 su3_vectorf *dv = (su3_vectorf *)&( d.elem(0).real() );
516 intrin_sse_add_su3_vector(lv,rv,dv);
534#if defined(QDP_SCALARSITE_DEBUG)
535 cout <<
"PSc<M>*D" << endl;
538 su3_vectorf *rv0 = (su3_vectorf *)&(r.elem(0).elem(0).real());
539 su3_vectorf *rv1 = (su3_vectorf *)&(r.elem(1).elem(0).real());
540 su3_vectorf *rv2 = (su3_vectorf *)&(r.elem(2).elem(0).real());
541 su3_vectorf *rv3 = (su3_vectorf *)&(r.elem(3).elem(0).real());
543 su3_vectorf *dv0 = (su3_vectorf *)&(d.elem(0).elem(0).real());
544 su3_vectorf *dv1 = (su3_vectorf *)&(d.elem(1).elem(0).real());
545 su3_vectorf *dv2 = (su3_vectorf *)&(d.elem(2).elem(0).real());
546 su3_vectorf *dv3 = (su3_vectorf *)&(d.elem(3).elem(0).real());
548 intrin_sse_mult_su3_mat_vec(lm,rv0,dv0);
549 intrin_sse_mult_su3_mat_vec(lm,rv1,dv1);
550 intrin_sse_mult_su3_mat_vec(lm,rv2,dv2);
551 intrin_sse_mult_su3_mat_vec(lm,rv3,dv3);
569#if defined(QDP_SCALARSITE_DEBUG)
570 cout <<
"adj(PSc<M>)*D" << endl;
573 su3_vectorf *rv0 = (su3_vectorf *)&(r.elem(0).elem(0).real());
574 su3_vectorf *rv1 = (su3_vectorf *)&(r.elem(1).elem(0).real());
575 su3_vectorf *rv2 = (su3_vectorf *)&(r.elem(2).elem(0).real());
576 su3_vectorf *rv3 = (su3_vectorf *)&(r.elem(3).elem(0).real());
578 su3_vectorf *dv0 = (su3_vectorf *)&(d.elem(0).elem(0).real());
579 su3_vectorf *dv1 = (su3_vectorf *)&(d.elem(1).elem(0).real());
580 su3_vectorf *dv2 = (su3_vectorf *)&(d.elem(2).elem(0).real());
581 su3_vectorf *dv3 = (su3_vectorf *)&(d.elem(3).elem(0).real());
583 intrin_sse_mult_adj_su3_mat_vec(lm,rv0,dv0);
584 intrin_sse_mult_adj_su3_mat_vec(lm,rv1,dv1);
585 intrin_sse_mult_adj_su3_mat_vec(lm,rv2,dv2);
586 intrin_sse_mult_adj_su3_mat_vec(lm,rv3,dv3);
604#if defined(QDP_SCALARSITE_DEBUG)
605 cout <<
"PSc<V>+PSc<V>" << endl;
608 su3_vectorf *lv = (su3_vectorf *)&(l.elem().elem(0).real());
609 su3_vectorf *rv = (su3_vectorf *)&(r.elem().elem(0).real());
610 su3_vectorf *dv = (su3_vectorf *)&(d.elem().elem(0).real());
612 intrin_sse_add_su3_vector(lv,rv,dv);
620#if defined(QDP_SCALARSITE_USE_EVALUATE)
814#if defined(QDP_SCALARSITE_DEBUG)
815#undef QDP_SCALARSITE_DEBUG
818#if defined(QDP_SCALARSITE_USE_EVALUATE)
819#undef QDP_SCALARSITE_USE_EVALUATE
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.
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)
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)
PScalar< PColorMatrix< RComplex< REAL64 >, 3 > > DCol
StandardOutputStream cout
Yet another random number generator.
void ssed_m_eq_hh_u(REAL64 *m3, REAL64 *m2, REAL64 *m1, int n_mat)
void ssed_m_eq_mm_u(REAL64 *m3, REAL64 *m2, REAL64 *m1, int n_mat)
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)
void ssed_m_eq_mh_u(REAL64 *m3, REAL64 *m2, REAL64 *m1, int n_mat)
void ssed_m_eq_hm_u(REAL64 *m3, REAL64 *m2, REAL64 *m1, int n_mat)