45 const C& l =
static_cast<const C&
>(rhs.expression().left());
46 const C& r =
static_cast<const C&
>(rhs.expression().right());
48#ifdef DEBUG_BAGELQDP_LINALG
54 unsigned int start = s.
start();
55 unsigned int end = s.
end();
57 unsigned long num_sites = end - start + 1;
59 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
60 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
61 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
64 qdp_su3_mm(resptr, lptr, rptr, num_sites, (
unsigned long)0);
71 for(
unsigned int j=0; j < num_sites; j++) {
73 unsigned long one_site = 1;
74 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
76 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
77 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
79 qdp_su3_mm(resptr, lptr, rptr, one_site, (
unsigned long)0);
99 const C& l =
static_cast<const C&
>(rhs.expression().left().child());
100 const C& r =
static_cast<const C&
>(rhs.expression().right());
102#ifdef DEBUG_BAGELQDP_LINALG
103 QDPIO::cout <<
"evaluate(A*M) subset = s " << endl;
108 unsigned int start = s.
start();
109 unsigned int end = s.
end();
111 unsigned long num_sites = end - start + 1;
113 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
114 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
115 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
118 qdp_su3_am(resptr, lptr, rptr, num_sites, (
unsigned long)0);
125 for(
unsigned int j=0; j < num_sites; j++) {
127 unsigned long one_site = 1;
128 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
130 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
131 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
133 qdp_su3_am(resptr, lptr, rptr, one_site, (
unsigned long)0);
168 const C& l =
static_cast<const C&
>(rhs.expression().left());
169 const C& r =
static_cast<const C&
>(rhs.expression().right().child());
171#ifdef DEBUG_BAGELQDP_LINALG
172 QDPIO::cout <<
"evaluate(M*A) subset = s " << endl;
177 unsigned int start = s.
start();
178 unsigned int end = s.
end();
180 unsigned long num_sites = end - start + 1;
182 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
183 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
184 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
187 qdp_su3_ma(resptr, lptr, rptr, num_sites, (
unsigned long)0);
194 for(
unsigned int j=0; j < num_sites; j++) {
196 unsigned long one_site = 1;
197 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
199 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
200 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
202 qdp_su3_ma(resptr, lptr, rptr, one_site, (
unsigned long)0);
223 const C& l =
static_cast<const C&
>(rhs.expression().left().child());
224 const C& r =
static_cast<const C&
>(rhs.expression().right().child());
226#ifdef DEBUG_BAGELQDP_LINALG
227 QDPIO::cout <<
"evaluate(A*A) subset = s " << endl;
230 one_minus_i[0] = (BAGELQDPFloat)1;
231 one_minus_i[1] = (BAGELQDPFloat)(-1);
235 unsigned int start = s.
start();
236 unsigned int end = s.
end();
238 unsigned long num_sites = end - start + 1;
240 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
241 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
242 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
245 qdp_su3_aa(resptr, lptr, rptr, num_sites, (
unsigned long)one_minus_i);
252 for(
unsigned int j=0; j < num_sites; j++) {
254 unsigned long one_site = 1;
255 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
257 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
258 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
260 qdp_su3_aa(resptr, lptr, rptr, one_site, (
unsigned long)one_minus_i);
282 const C& l =
static_cast<const C&
>(rhs.expression().left());
283 const C& r =
static_cast<const C&
>(rhs.expression().right());
285#ifdef DEBUG_BAGELQDP_LINALG
286 QDPIO::cout <<
"evaluate(M*M) subset = s " << endl;
290 plus_one[0] = (BAGELQDPFloat)1;
291 plus_one[1] = (BAGELQDPFloat)0;
295 unsigned int start = s.
start();
296 unsigned int end = s.
end();
298 unsigned long num_sites = end - start + 1;
300 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
301 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
302 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
304 qdp_su3_mm_peq(resptr, plus_one, lptr, rptr, num_sites, (
unsigned long)0);
311 for(
unsigned int j=0; j < num_sites; j++) {
313 unsigned long one_site = 1;
314 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
316 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
317 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
319 qdp_su3_mm_peq(resptr, plus_one, lptr, rptr, one_site, (
unsigned long)0);
339 const C& l =
static_cast<const C&
>(rhs.expression().left().child());
340 const C& r =
static_cast<const C&
>(rhs.expression().right());
342#ifdef DEBUG_BAGELQDP_LINALG
343 QDPIO::cout <<
"evaluate(A*M) subset = s " << endl;
347 plus_one[0] = (BAGELQDPFloat)1;
348 plus_one[1] = (BAGELQDPFloat)0;
352 unsigned int start = s.
start();
353 unsigned int end = s.
end();
355 unsigned long num_sites = end - start + 1;
357 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
358 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
359 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
362 qdp_su3_am_peq(resptr, plus_one, lptr, rptr, num_sites, (
unsigned long)0);
369 for(
unsigned int j=0; j < num_sites; j++) {
371 unsigned long one_site = 1;
372 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
374 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
375 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
377 qdp_su3_am_peq(resptr, plus_one, lptr, rptr, one_site, (
unsigned long)0);
405 const C& l =
static_cast<const C&
>(rhs.expression().left());
406 const C& r =
static_cast<const C&
>(rhs.expression().right().child());
408#ifdef DEBUG_BAGELQDP_LINALG
409 QDPIO::cout <<
"evaluate(M*A) subset = s " << endl;
412 plus_one[0] = (BAGELQDPFloat)1;
413 plus_one[1] = (BAGELQDPFloat)0;
417 unsigned int start = s.
start();
418 unsigned int end = s.
end();
420 unsigned long num_sites = end - start + 1;
422 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
423 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
424 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
427 qdp_su3_ma_peq(resptr, plus_one, lptr, rptr, num_sites, (
unsigned long)0);
434 for(
unsigned int j=0; j < num_sites; j++) {
436 unsigned long one_site = 1;
437 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
439 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
440 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
442 qdp_su3_ma_peq(resptr, plus_one, lptr, rptr, one_site, (
unsigned long)0);
463 const C& l =
static_cast<const C&
>(rhs.expression().left().child());
464 const C& r =
static_cast<const C&
>(rhs.expression().right().child());
466#ifdef DEBUG_BAGELQDP_LINALG
467 QDPIO::cout <<
"evaluate(A*A) subset = s " << endl;
470 one_minus_i[0] = (BAGELQDPFloat)1;
471 one_minus_i[1] = (BAGELQDPFloat)(-1);
474 plus_one[0] = (BAGELQDPFloat)1;
475 plus_one[1] = (BAGELQDPFloat)0;
479 unsigned int start = s.
start();
480 unsigned int end = s.
end();
482 unsigned long num_sites = end - start + 1;
484 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
485 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
486 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
489 qdp_su3_aa_peq(resptr, plus_one, lptr, rptr, num_sites, (
unsigned long)one_minus_i);
496 for(
unsigned int j=0; j < num_sites; j++) {
498 unsigned long one_site = 1;
499 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
501 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
502 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
504 qdp_su3_aa_peq(resptr, plus_one, lptr, rptr, one_site, (
unsigned long)one_minus_i);
528 const C& l =
static_cast<const C&
>(rhs.expression().left());
529 const C& r =
static_cast<const C&
>(rhs.expression().right());
531#ifdef DEBUG_BAGELQDP_LINALG
532 QDPIO::cout <<
"evaluate(M*M) subset = s " << endl;
536 minus_one[0] = (BAGELQDPFloat)-1;
537 minus_one[1] = (BAGELQDPFloat)0;
541 unsigned int start = s.
start();
542 unsigned int end = s.
end();
544 unsigned long num_sites = end - start + 1;
546 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
547 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
548 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
550 qdp_su3_mm_peq(resptr, minus_one, lptr, rptr, num_sites, (
unsigned long)0);
557 for(
unsigned int j=0; j < num_sites; j++) {
559 unsigned long one_site = 1;
560 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
562 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
563 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
565 qdp_su3_mm_peq(resptr, minus_one, lptr, rptr, one_site, (
unsigned long)0);
585 const C& l =
static_cast<const C&
>(rhs.expression().left().child());
586 const C& r =
static_cast<const C&
>(rhs.expression().right());
588#ifdef DEBUG_BAGELQDP_LINALG
589 QDPIO::cout <<
"evaluate(A*M) subset = s " << endl;
593 minus_one[0] = (BAGELQDPFloat)-1;
594 minus_one[1] = (BAGELQDPFloat)0;
598 unsigned int start = s.
start();
599 unsigned int end = s.
end();
601 unsigned long num_sites = end - start + 1;
603 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
604 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
605 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
608 qdp_su3_am_peq(resptr, minus_one, lptr, rptr, num_sites, (
unsigned long)0);
615 for(
unsigned int j=0; j < num_sites; j++) {
617 unsigned long one_site = 1;
618 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
620 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
621 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
623 qdp_su3_am_peq(resptr, minus_one, lptr, rptr, one_site, (
unsigned long)0);
658 const C& l =
static_cast<const C&
>(rhs.expression().left());
659 const C& r =
static_cast<const C&
>(rhs.expression().right().child());
661#ifdef DEBUG_BAGELQDP_LINALG
662 QDPIO::cout <<
"evaluate(M*A) subset = s " << endl;
665 minus_one[0] = (BAGELQDPFloat)-1;
666 minus_one[1] = (BAGELQDPFloat)0;
670 unsigned int start = s.
start();
671 unsigned int end = s.
end();
673 unsigned long num_sites = end - start + 1;
675 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
676 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
677 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
680 qdp_su3_ma_peq(resptr, minus_one, lptr, rptr, num_sites, (
unsigned long)0);
687 for(
unsigned int j=0; j < num_sites; j++) {
689 unsigned long one_site = 1;
690 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
692 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
693 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
695 qdp_su3_ma_peq(resptr, minus_one, lptr, rptr, one_site, (
unsigned long)0);
716 const C& l =
static_cast<const C&
>(rhs.expression().left().child());
717 const C& r =
static_cast<const C&
>(rhs.expression().right().child());
719#ifdef DEBUG_BAGELQDP_LINALG
720 QDPIO::cout <<
"evaluate(A*A) subset = s " << endl;
723 one_minus_i[0] = (BAGELQDPFloat)1;
724 one_minus_i[1] = (BAGELQDPFloat)(-1);
727 minus_one[0] = (BAGELQDPFloat)-1;
728 minus_one[1] = (BAGELQDPFloat)0;
732 unsigned int start = s.
start();
733 unsigned int end = s.
end();
735 unsigned long num_sites = end - start + 1;
737 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
738 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
739 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
742 qdp_su3_aa_peq(resptr, minus_one, lptr, rptr, num_sites, (
unsigned long)one_minus_i);
749 for(
unsigned int j=0; j < num_sites; j++) {
751 unsigned long one_site = 1;
752 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
754 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
755 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
757 qdp_su3_aa_peq(resptr, minus_one, lptr, rptr, one_site, (
unsigned long)one_minus_i);
821 const BN& node =
static_cast<const BN&
>(rhs.expression().left());
822 const F& scal =
static_cast<const F&
>(node.left());
823 const C& l =
static_cast<const C&
>(node.right());
824 const C& r =
static_cast<const C&
>(rhs.expression().right());
826#if DEBUG_BAGELQDP_LINALG
827 QDPIO::cout <<
"evaluate(M += alpha*M*M 2 ) subset = s " << endl;
831 scalar[0] = (BAGELQDPFloat)(scal.elem().elem().elem().elem());
832 scalar[1] = (BAGELQDPFloat)0;
836 unsigned int start = s.
start();
837 unsigned int end = s.
end();
839 unsigned long num_sites = end - start + 1;
841 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
842 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
843 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
845 qdp_su3_mm_peq(resptr, scalar, lptr, rptr, num_sites, (
unsigned long)0);
852 for(
unsigned int j=0; j < num_sites; j++) {
854 unsigned long one_site = 1;
855 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
857 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
858 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
860 qdp_su3_mm_peq(resptr, scalar, lptr, rptr, one_site, (
unsigned long)0);
921 const BN& node =
static_cast<const BN&
>(rhs.expression().left());
922 const F& scal =
static_cast<const F&
>(node.left());
923 const C& l =
static_cast<const C&
>(node.right());
924 const C& r =
static_cast<const C&
>(rhs.expression().right());
926#if DEBUG_BAGELQDP_LINALG
927 QDPIO::cout <<
"evaluate(M -= alpha*M*M 2 ) subset = s " << endl;
931 scalar[0] = -(BAGELQDPFloat)(scal.elem().elem().elem().elem());
932 scalar[1] = (BAGELQDPFloat)0;
936 unsigned int start = s.
start();
937 unsigned int end = s.
end();
939 unsigned long num_sites = end - start + 1;
941 BAGELQDPFloat *resptr = &(d.elem(start).elem().elem(0,0).
real());
942 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(start).elem().elem(0,0).
real()));
943 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
945 qdp_su3_mm_peq(resptr, scalar, lptr, rptr, num_sites, (
unsigned long)0);
952 for(
unsigned int j=0; j < num_sites; j++) {
954 unsigned long one_site = 1;
955 BAGELQDPFloat *resptr = &(d.elem(i).elem().elem(0,0).
real());
957 BAGELQDPFloat *lptr =
const_cast<BAGELQDPFloat*
>(&(l.
elem(i).elem().elem(0,0).
real()));
958 BAGELQDPFloat *rptr =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
960 qdp_su3_mm_peq(resptr, scalar, lptr, rptr, one_site, (
unsigned long)0);
1000 const F& scal =
static_cast<const F&
>(rhs.expression().left());
1001 const C& r =
static_cast<const C&
>(rhs.expression().right());
1003#if DEBUG_BAGELQDP_LINALG
1004 QDPIO::cout <<
"evaluate(M += alpha*M ) subset = s " << endl;
1007 BAGELQDPFloat *scalar =
const_cast<BAGELQDPFloat*
>(&(scal.elem().elem().elem().elem()));
1010 unsigned int start = s.
start();
1011 unsigned int end = s.
end();
1013 unsigned long num_sites = end - start + 1;
1015 BAGELQDPFloat *y = &(d.elem(start).elem().elem(0,0).
real());
1017 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
1019 qdp_vaxpy3(y, scalar, x, y, 3*num_sites);
1026 for(
unsigned int j=0; j < num_sites; j++) {
1028 BAGELQDPFloat *y = &(d.elem(i).elem().elem(0,0).
real());
1029 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
1031 qdp_vaxpy3(y, scalar, x,y, 3);
1070 const F& scal =
static_cast<const F&
>(rhs.expression().left());
1071 const C& r =
static_cast<const C&
>(rhs.expression().right());
1073#if DEBUG_BAGELQDP_LINALG
1074 QDPIO::cout <<
"evaluate(M -= alpha*M ) subset = s " << endl;
1077 BAGELQDPFloat scalar = -scal.elem().elem().elem().elem();
1080 unsigned int start = s.
start();
1081 unsigned int end = s.
end();
1083 unsigned long num_sites = end - start + 1;
1085 BAGELQDPFloat *y = &(d.elem(start).elem().elem(0,0).
real());
1087 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
1089 qdp_vaxpy3(y, &scalar, x, y, 3*num_sites);
1096 for(
unsigned int j=0; j < num_sites; j++) {
1098 BAGELQDPFloat *y = &(d.elem(i).elem().elem(0,0).
real());
1099 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
1101 qdp_vaxpy3(y, &scalar, x,y, 3);
1129 const C& r =
static_cast<const C&
>(rhs.expression().child());
1131#if DEBUG_BAGELQDP_LINALG
1132 QDPIO::cout <<
"evaluate(M += M ) subset = s " << endl;
1137 unsigned int start = s.
start();
1138 unsigned int end = s.
end();
1140 unsigned long num_sites = end - start + 1;
1142 BAGELQDPFloat *y = &(d.elem(start).elem().elem(0,0).
real());
1143 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
1145 qdp_vadd3(y, x, y, 3*num_sites);
1152 for(
unsigned int j=0; j < num_sites; j++) {
1154 BAGELQDPFloat *y = &(d.elem(i).elem().elem(0,0).
real());
1155 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
1157 qdp_vadd3(y,x,y, 3);
1186 const C& r =
static_cast<const C&
>(rhs.expression().child());
1188#if DEBUG_BAGELQDP_LINALG
1189 QDPIO::cout <<
"evaluate(M -= M ) subset = s " << endl;
1194 unsigned int start = s.
start();
1195 unsigned int end = s.
end();
1197 unsigned long num_sites = end - start + 1;
1199 BAGELQDPFloat *y = &(d.elem(start).elem().elem(0,0).
real());
1201 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(start).elem().elem(0,0).
real()));
1203 qdp_vsub3(y, y,x, 3*num_sites);
1210 for(
unsigned int j=0; j < num_sites; j++) {
1212 BAGELQDPFloat *y = &(d.elem(i).elem().elem(0,0).
real());
1213 BAGELQDPFloat *x =
const_cast<BAGELQDPFloat*
>(&(r.
elem(i).elem().elem(0,0).
real()));
1215 qdp_vsub3(y,y,x, 3);
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)
MakeReturn< UnaryNode< FnReal, typenameCreateLeaf< QDPExpr< T1, C1 > >::Leaf_t >, typenameUnaryReturn< C1, FnReal >::Type_t >::Expression_t real(const QDPExpr< T1, C1 > &l)