count21+=bicg(DUM_DERI+1,DUM_DERI+2,0.,EPS_SQ3*q_off2);
count21+=bicg(DUM_DERI+1,DUM_DERI+2,0.,EPS_SQ3*q_off2, g_relative_precision_flag);
void deri(double q_off,double q_off2) {  int j,jmax=1;  int i,mu;  double qo;  for(i=0;i<(VOLUME+RAND);i++){     for(mu=0;mu<4;mu++){       _zero_su3adj(df0[i][mu]);    }  }  if(g_use_clover_flag == 1){       /* All the clover stuff */    for(i=0;i<(VOLUME+RAND);i++){       for(mu=0;mu<4;mu++){ 	_zero_su3adj(dclover[i][mu]);      }    }        for(i=0;i<VOLUME;i++){       for(mu=0;mu<4;mu++){ 	_su3_zero(swm[i][mu]); 	_su3_zero(swp[i][mu]);       }    }  }  if(q_off==0.){    jmax=1;  }   else{    jmax=2;  }  if(q_off2>0.){    jmax=3;  }  if(g_nr_of_psf == 2) {    jmax = 3;  }  if(g_nr_of_psf == 3) {    jmax = 5;  }  for(j=0;j<jmax;j++){     if(j==0){      g_mu = g_mu1;      if(ITER_MAX_BCG == 0){	/* If CG is used anyhow */	gamma5(DUM_DERI+1, first_psf);	/* Invert Q_{+} Q_{-} */	/* X_o -> DUM_DERI+1 */	count00 += solve_cg(DUM_DERI+1, first_psf, q_off, EPS_SQ1);	/* Y_o -> DUM_DERI  */	Qtm_minus_psi(spinor_field[DUM_DERI], spinor_field[DUM_DERI+1]);      }      else{	/*contributions from field 0 -> first_psf*/	gamma5(DUM_DERI, first_psf);	/* Invert first Q_+ */	/* Y_o -> DUM_DERI  */	count00 += bicg(DUM_DERI, first_psf, q_off, EPS_SQ1);	gamma5(DUM_DERI+1,DUM_DERI);	/* Now Q_- */	/* X_o -> DUM_DERI+1 */	g_mu = -g_mu;	count01 += bicg(DUM_DERI+1,DUM_DERI,q_off,EPS_SQ1);	g_mu = -g_mu;         }    }    if(j==1){      if(g_use_clover_flag == 1) {	/* contributions from field 1 -> second_psf*/	gamma5(DUM_DERI, second_psf);	qo=q_off-q_off2;	count10+=bicg(DUM_DERI, second_psf, q_off2, EPS_SQ2/qo);	deri_linalg(spinor_field[DUM_DERI+2], qo*qo, spinor_field[DUM_DERI], qo, spinor_field[second_psf], VOLUME/2);	gamma5(DUM_DERI+1, DUM_DERI+2);	count11+=bicg(DUM_DERI+1, DUM_DERI+2, q_off2, EPS_SQ2*qo);      }      else {	/* First term coming from the second field */	/* Multiply with W_+ */	g_mu = g_mu1;		Qtm_plus_psi(spinor_field[DUM_DERI+2], spinor_field[second_psf]);	g_mu = g_mu2;	if(ITER_MAX_BCG == 0){	  /* If CG is used anyhow */	  gamma5(DUM_DERI+1, DUM_DERI+2);	  /* Invert Q_{+} Q_{-} */	  /* X_W -> DUM_DERI+1 */	  count10 += solve_cg(DUM_DERI+1, DUM_DERI+2, q_off, EPS_SQ1);	  /* Y_W -> DUM_DERI  */	  Qtm_minus_psi(spinor_field[DUM_DERI], spinor_field[DUM_DERI+1]);	}	else{	  gamma5(DUM_DERI, DUM_DERI+2);	  /* Invert first Q_+ */	  /* Y_o -> DUM_DERI  */	  count10 += bicg(DUM_DERI, DUM_DERI+2, q_off, EPS_SQ1);	  gamma5(DUM_DERI+1,DUM_DERI);	  /* Now Q_- */	  /* X_o -> DUM_DERI+1 */	  g_mu = -g_mu;	  count11 += bicg(DUM_DERI+1,DUM_DERI,q_off,EPS_SQ1);	  g_mu = -g_mu;   	}      }    }    if(j==2){      if(g_use_clover_flag == 1) {	/* contributions from field 2 (stored on 4) */	gamma5(DUM_DERI,4);	count20+=bicg(DUM_DERI,4,0.,EPS_SQ3/q_off2);	deri_linalg(spinor_field[DUM_DERI+2],q_off2*q_off2, spinor_field[DUM_DERI],q_off2, spinor_field[4], VOLUME/2);	gamma5(DUM_DERI+1,DUM_DERI+2);	count21+=bicg(DUM_DERI+1,DUM_DERI+2,0.,EPS_SQ3*q_off2);      }      else {	/* Second term coming from the second field */	/* The sign is opposite!! */	mul_r(spinor_field[DUM_DERI], -1., spinor_field[second_psf], VOLUME/2);	g_mu = g_mu1;      }    }    if(j == 3) {      /* First term coming from the second field */      /* Multiply with W_+ */      g_mu = g_mu2;	      Qtm_plus_psi(spinor_field[DUM_DERI+2], spinor_field[third_psf]);      g_mu = g_mu3;      if(ITER_MAX_BCG == 0){	/* If CG is used anyhow */	gamma5(DUM_DERI+1, DUM_DERI+2);	/* Invert Q_{+} Q_{-} */	/* X_W -> DUM_DERI+1 */	count20 += solve_cg(DUM_DERI+1, DUM_DERI+2, q_off, EPS_SQ1);	/* Y_W -> DUM_DERI  */	Qtm_minus_psi(spinor_field[DUM_DERI], spinor_field[DUM_DERI+1]);      }      else{	gamma5(DUM_DERI, DUM_DERI+2);	/* Invert first Q_+ */	/* Y_o -> DUM_DERI  */	count20 += bicg(DUM_DERI, DUM_DERI+2, q_off, EPS_SQ1);	gamma5(DUM_DERI+1,DUM_DERI);	/* Now Q_- */	/* X_o -> DUM_DERI+1 */	g_mu = -g_mu;	count21 += bicg(DUM_DERI+1,DUM_DERI,q_off,EPS_SQ1);	g_mu = -g_mu;         }    }    if(j == 4) {      /* Second term coming from the third field */      /* The sign is opposite!! */      mul_r( spinor_field[DUM_DERI], -1., spinor_field[third_psf], VOLUME/2);      g_mu = g_mu2;    }    if(g_use_clover_flag == 1){       /* apply H_eo to  Q^{-2} phi */      H_eo_psi(1,DUM_DERI+2,DUM_DERI+1);      /* result resides on odd sites */            deriv_Sb(0,DUM_DERI,DUM_DERI+2);            /* add the other contibution */      H_eo_psi(1,DUM_DERI+3,DUM_DERI);      /* includes (1+T_oo)^{-1} now */      /* apply (1+T_oo)^{-1} to the result !!!! */      deriv_Sb(1,DUM_DERI+3,DUM_DERI+1);            /* add the contribution from inside */      gamma5(DUM_DERI+2,DUM_DERI+2);      sw_spinor(1,DUM_DERI+2,DUM_DERI+3);            /* compute the contribution for the det-part */      gamma5(DUM_DERI,DUM_DERI);      sw_spinor(0,DUM_DERI,DUM_DERI+1);    }       else{      /* apply Hopping Matrix M_{eo} */      /* to get the even sites of X */      H_eo_tm_inv_psi(spinor_field[DUM_DERI+2], spinor_field[DUM_DERI+1], EO, -1.);      /* \delta Q sandwitched by Y_o^\dagger and X_e */      deriv_Sb(OE, DUM_DERI, DUM_DERI+2);       /* to get the even sites of Y */      H_eo_tm_inv_psi(spinor_field[DUM_DERI+3], spinor_field[DUM_DERI], EO, +1);      /* \delta Q sandwitched by Y_e^\dagger and X_o */      deriv_Sb(EO, DUM_DERI+3, DUM_DERI+1);       g_mu = g_mu1;    }  }}