/****************** cs_m_a_vec.c (in su3.a) *************************** * * * c_scalar_mult_add_su3vec(): * * multiply an su3 vector by a complex scalar and add it to another * * vector: v1 <- v1 + number*v2 * */ #include "complex.h" #include "su3.h" void c_scalar_mult_add_su3vec( su3_vector *v1, complex *phase, su3_vector *v2 ){ #ifndef NATIVEDOUBLE register int i; complex t; for(i=0;i<3;i++){ t = cmul(&v2->c[i],phase); v1->c[i] = cadd(&v1->c[i],&t); } #else register int i; register double sr,si,br,bi,cr,ci; sr = (*phase).real; si = (*phase).imag; for(i=0;i<3;i++){ br=v2->c[i].real; bi=v2->c[i].imag; cr = sr*br - si*bi; ci = sr*bi + si*br; v1->c[i].real += cr; v1->c[i].imag += ci; } #endif }