/****************** magsq_su3vec.c (in su3.a) ****************************** * * * float magsq_su3vec( su3_vector *a ) * * return squared magnitude of an SU3 vector */ #include "complex.h" #include "su3.h" #ifndef FAST float magsq_su3vec( su3_vector *a ){ register float sum; register int i; for(i=0,sum=0.0;i<3;i++)sum += a->c[i].real*a->c[i].real + a->c[i].imag*a->c[i].imag; return(sum); } #else #ifdef NATIVEDOUBLE /* IBM RS6000 version */ float magsq_su3vec(su3_vector *a){ register double ar,ai,sum; ar=a->c[0].real; ai=a->c[0].imag; sum = ar*ar + ai*ai; ar=a->c[1].real; ai=a->c[1].imag; sum += ar*ar + ai*ai; ar=a->c[2].real; ai=a->c[2].imag; sum += ar*ar + ai*ai; return((float)sum); } #else float magsq_su3vec( su3_vector *a ){ register float temp,sum; sum=0.0; temp = a->c[0].real*a->c[0].real; sum += temp; temp = a->c[0].imag*a->c[0].imag; sum += temp; temp = a->c[1].real*a->c[1].real; sum += temp; temp = a->c[1].imag*a->c[1].imag; sum += temp; temp = a->c[2].real*a->c[2].real; sum += temp; temp = a->c[2].imag*a->c[2].imag; sum += temp; return(sum); } #endif /* End of "#ifdef NATIVEDOUBLE" */ #endif /* end ifdef FAST */