/***************** s_m_atm_wvec.c (in su3.a) ******************** * *void scalar_mult_addtm_wvec(wilson_vector *src1, wilson_vector *src2, float s, wilson_vector *dest) * Multiply a Wilson vector by a scalar and add to minus one times * another vector * dest <- (-1)*src1 + s*src2 */ #include "complex.h" #include "su3.h" void scalar_mult_addtm_wvec(wilson_vector *src1,wilson_vector *src2, float s,wilson_vector *dest){ #ifndef NATIVEDOUBLE register int i,j; for(i=0;i<4;i++){ /*spins*/ for(j=0;j<3;j++){ /*colors*/ dest->d[i].c[j].real = -src1->d[i].c[j].real + s*src2->d[i].c[j].real; dest->d[i].c[j].imag = -src1->d[i].c[j].imag + s*src2->d[i].c[j].imag; } } #else /* RS6000 version */ register double ss; ss = s; dest->d[0].c[0].real = -src1->d[0].c[0].real + ss*src2->d[0].c[0].real; dest->d[0].c[0].imag = -src1->d[0].c[0].imag + ss*src2->d[0].c[0].imag; dest->d[0].c[1].real = -src1->d[0].c[1].real + ss*src2->d[0].c[1].real; dest->d[0].c[1].imag = -src1->d[0].c[1].imag + ss*src2->d[0].c[1].imag; dest->d[0].c[2].real = -src1->d[0].c[2].real + ss*src2->d[0].c[2].real; dest->d[0].c[2].imag = -src1->d[0].c[2].imag + ss*src2->d[0].c[2].imag; dest->d[1].c[0].real = -src1->d[1].c[0].real + ss*src2->d[1].c[0].real; dest->d[1].c[0].imag = -src1->d[1].c[0].imag + ss*src2->d[1].c[0].imag; dest->d[1].c[1].real = -src1->d[1].c[1].real + ss*src2->d[1].c[1].real; dest->d[1].c[1].imag = -src1->d[1].c[1].imag + ss*src2->d[1].c[1].imag; dest->d[1].c[2].real = -src1->d[1].c[2].real + ss*src2->d[1].c[2].real; dest->d[1].c[2].imag = -src1->d[1].c[2].imag + ss*src2->d[1].c[2].imag; dest->d[2].c[0].real = -src1->d[2].c[0].real + ss*src2->d[2].c[0].real; dest->d[2].c[0].imag = -src1->d[2].c[0].imag + ss*src2->d[2].c[0].imag; dest->d[2].c[1].real = -src1->d[2].c[1].real + ss*src2->d[2].c[1].real; dest->d[2].c[1].imag = -src1->d[2].c[1].imag + ss*src2->d[2].c[1].imag; dest->d[2].c[2].real = -src1->d[2].c[2].real + ss*src2->d[2].c[2].real; dest->d[2].c[2].imag = -src1->d[2].c[2].imag + ss*src2->d[2].c[2].imag; dest->d[3].c[0].real = -src1->d[3].c[0].real + ss*src2->d[3].c[0].real; dest->d[3].c[0].imag = -src1->d[3].c[0].imag + ss*src2->d[3].c[0].imag; dest->d[3].c[1].real = -src1->d[3].c[1].real + ss*src2->d[3].c[1].real; dest->d[3].c[1].imag = -src1->d[3].c[1].imag + ss*src2->d[3].c[1].imag; dest->d[3].c[2].real = -src1->d[3].c[2].real + ss*src2->d[3].c[2].real; dest->d[3].c[2].imag = -src1->d[3].c[2].imag + ss*src2->d[3].c[2].imag; #endif }