_vector_add_assign((*r).s1,psi); _vector_sub_assign((*r).s2,psi);
_vector_add_assign(temp.s1,psi); _vector_sub_assign(temp.s2,psi);
void Hopping_Matrix(int ieo, spinor * const l, spinor * const k){  int ix,iy;  int ioff,ioff2,icx,icy;  su3 *up,*um;  spinor *r,*sp,*sm;  spinor temp;  /* for parallelization */#ifdef MPI  xchange_field(k);#endif  if(k == l){    printf("Error in H_psi (simple.c):\n");    printf("Arguments k and l must be different\n");    printf("Program aborted\n");    exit(1);  }  if(ieo == 0){    ioff = 0;  }   else{    ioff = (VOLUME+RAND)/2;  }   ioff2 = (VOLUME+RAND)/2-ioff;  /**************** loop over all lattice sites ****************/  for (icx = ioff; icx < (VOLUME/2 + ioff); icx++){    ix=g_eo2lexic[icx];    r=l+(icx-ioff);    /*********************** direction +0 ************************/    iy=g_iup[ix][0]; icy=g_lexic2eosub[iy];    sp=k+icy;    up=&g_gauge_field[ix][0];          _vector_add(psi,(*sp).s0,(*sp).s2);    _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka0,chi);          _vector_assign(temp.s0,psi);    _vector_assign(temp.s2,psi);    _vector_add(psi,(*sp).s1,(*sp).s3);    _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka0,chi);                _vector_assign(temp.s1,psi);    _vector_assign(temp.s3,psi);    /*********************** direction -0 ************************/    iy=g_idn[ix][0]; icy=g_lexic2eosub[iy];    sm=k+icy;#ifndef _GAUGE_COPY    um=&g_gauge_field[iy][0];#else    um = &g_gauge_field_back[ix][0];#endif    _vector_sub(psi,(*sm).s0,(*sm).s2);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka0,chi);    _vector_add_assign(temp.s0,psi);    _vector_sub_assign(temp.s2,psi);    _vector_sub(psi,(*sm).s1,(*sm).s3);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka0,chi);          _vector_add_assign(temp.s1,psi);    _vector_sub_assign(temp.s3,psi);    /*********************** direction +1 ************************/    iy=g_iup[ix][1]; icy=g_lexic2eosub[iy];    sp=k+icy;    up=&g_gauge_field[ix][1];                _vector_i_add(psi,(*sp).s0,(*sp).s3);    _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka1,chi);    _vector_add_assign(temp.s0,psi);    _vector_i_sub_assign(temp.s3,psi);    _vector_i_add(psi,(*sp).s1,(*sp).s2);    _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka1,chi);    _vector_add_assign(temp.s1,psi);    _vector_i_sub_assign(temp.s2,psi);    /*********************** direction -1 ************************/    iy=g_idn[ix][1]; icy=g_lexic2eosub[iy];    sm=k+icy;#ifndef _GAUGE_COPY    um=&g_gauge_field[iy][1];#else    um = &g_gauge_field_back[ix][1];#endif    _vector_i_sub(psi,(*sm).s0,(*sm).s3);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka1,chi);    _vector_add_assign(temp.s0,psi);    _vector_i_add_assign(temp.s3,psi);    _vector_i_sub(psi,(*sm).s1,(*sm).s2);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka1,chi);    _vector_add_assign(temp.s1,psi);    _vector_i_add_assign(temp.s2,psi);    /*********************** direction +2 ************************/    iy=g_iup[ix][2]; icy=g_lexic2eosub[iy];    sp=k+icy;    up=&g_gauge_field[ix][2];          _vector_add(psi,(*sp).s0,(*sp).s3);    _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka2,chi);    _vector_add_assign(temp.s0,psi);    _vector_add_assign(temp.s3,psi);    _vector_sub(psi,(*sp).s1,(*sp).s2);    _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka2,chi);          _vector_add_assign((*r).s1,psi);    _vector_sub_assign((*r).s2,psi);    /*********************** direction -2 ************************/    iy=g_idn[ix][2]; icy=g_lexic2eosub[iy];    sm=k+icy;#ifndef _GAUGE_COPY    um = &g_gauge_field[iy][2];#else    um = &g_gauge_field_back[ix][2];#endif    _vector_sub(psi,(*sm).s0,(*sm).s3);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka2,chi);    _vector_add_assign(temp.s0,psi);    _vector_sub_assign(temp.s3,psi);    _vector_add(psi,(*sm).s1,(*sm).s2);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka2,chi);          _vector_add_assign(temp.s1,psi);    _vector_add_assign(temp.s2,psi);    /*********************** direction +3 ************************/    iy=g_iup[ix][3]; icy=g_lexic2eosub[iy];    sp=k+icy;    up=&g_gauge_field[ix][3];          _vector_i_add(psi,(*sp).s0,(*sp).s2);          _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka3,chi);    _vector_add_assign(temp.s0,psi);    _vector_i_sub_assign(temp.s2,psi);    _vector_i_sub(psi,(*sp).s1,(*sp).s3);    _su3_multiply(chi,(*up),psi);    _complex_times_vector(psi,ka3,chi);    _vector_add_assign(temp.s1,psi);    _vector_i_add_assign(temp.s3,psi);    /*********************** direction -3 ************************/    iy=g_idn[ix][3]; icy=g_lexic2eosub[iy];    sm=k+icy;#ifndef _GAUGE_COPY    um = &g_gauge_field[iy][3];#else    um = &g_gauge_field_back[ix][3];#endif    _vector_i_sub(psi,(*sm).s0,(*sm).s2);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka3,chi);      #ifdef OlD    _vector_add_assign((*r).s0,psi);    _vector_i_add_assign((*r).s2,psi);#else    _vector_add((*r).s0, temp.s0, psi);    _vector_i_add((*r).s2, temp.s2, psi);#endif    _vector_i_add(psi,(*sm).s1,(*sm).s3);    _su3_inverse_multiply(chi,(*um),psi);    _complexcjg_times_vector(psi,ka3,chi);#ifdef OlD    _vector_add_assign((*r).s1,psi);    _vector_i_sub_assign((*r).s3,psi);#else    _vector_add((*r).s1, temp.s1, psi);    _vector_i_sub((*r).s3, temp.s3, psi);#endif    /************************ end of loop ************************/  }}