void random_jacobi_field(su3_vector * const k, const int V) { int ix; su3_vector *s; double v[6]; for (ix=0; ix<V ;ix++) { s=k+ix; *s=unif_su3_vector(); } #ifdef TM_USE_MPI xchange_jacobi(k); #endif }
su3 random_su3(void) { double norm,fact; complex z; su3_vector z1,z2,z3; su3 u; /* z1=random_su3_vector(); */ z1=unif_su3_vector(); for (;;) { /* z2=random_su3_vector(); */ z2=unif_su3_vector(); z.re=_vector_prod_re(z1,z2); z.im=_vector_prod_im(z1,z2); _vector_project(z2,z,z1); norm=_vector_prod_re(z2,z2); norm=sqrt(norm); if (1.0!=(1.0+norm)) break; } fact=1.0/norm; _vector_mul(z2,fact,z2); z3.c0.re= (z1.c1.re*z2.c2.re-z1.c1.im*z2.c2.im) -(z1.c2.re*z2.c1.re-z1.c2.im*z2.c1.im); z3.c0.im=-(z1.c1.re*z2.c2.im+z1.c1.im*z2.c2.re) +(z1.c2.re*z2.c1.im+z1.c2.im*z2.c1.re); z3.c1.re= (z1.c2.re*z2.c0.re-z1.c2.im*z2.c0.im) -(z1.c0.re*z2.c2.re-z1.c0.im*z2.c2.im); z3.c1.im=-(z1.c2.re*z2.c0.im+z1.c2.im*z2.c0.re) +(z1.c0.re*z2.c2.im+z1.c0.im*z2.c2.re); z3.c2.re= (z1.c0.re*z2.c1.re-z1.c0.im*z2.c1.im) -(z1.c1.re*z2.c0.re-z1.c1.im*z2.c0.im); z3.c2.im=-(z1.c0.re*z2.c1.im+z1.c0.im*z2.c1.re) +(z1.c1.re*z2.c0.im+z1.c1.im*z2.c0.re); u.c00=z1.c0; u.c01=z1.c1; u.c02=z1.c2; u.c10=z2.c0; u.c11=z2.c1; u.c12=z2.c2; u.c20=z3.c0; u.c21=z3.c1; u.c22=z3.c2; return(u); }