diff --git a/src/rtkpos.c b/src/rtkpos.c index 5f780c40a5b94d8a1354fc646120c9464a98f71b..3d7ce4e350ea05c76233b7f7cfd3a0ca6fc117e3 100644 --- a/src/rtkpos.c +++ b/src/rtkpos.c @@ -1216,7 +1216,7 @@ static int ddres(rtk_t *rtk, const nav_t *nav, const obsd_t *obs, double dt, con prcopt_t *opt=&rtk->opt; double bl,dr[3],posu[3],posr[3],didxi=0.0,didxj=0.0,*im,icb,threshadj; double *tropr,*tropu,*dtdxr,*dtdxu,*Ri,*Rj,lami,lamj,fi,fj,df,*Hi=NULL; - int i,j,k,m,f,frq,code,nv=0,nb[NFREQ*4*2+2]={0},b=0,sysi,sysj,nf=NF(opt); + int i,j,ii,jj,k,m,f,frq,code,nv=0,nb[NFREQ*4*2+2]={0},b=0,sysi,sysj,nf=NF(opt); trace(3,"ddres : dt=%.1f nx=%d ns=%d\n",dt,rtk->nx,ns); @@ -1363,9 +1363,11 @@ static int ddres(rtk_t *rtk, const nav_t *nav, const obsd_t *obs, double dt, con else rtk->ssat[sat[j]-1].resc[frq]=v[nv]; /* carrier phase */ /* if residual too large, flag as outlier */ - k=IB(sat[j],frq,opt); - /* adjust threshold by error stdev ratio unless phase bias just initialized*/ - threshadj=code||(rtk->P[k+rtk->nx*k]>SQR(rtk->opt.std[0]/2))?opt->eratio[frq]:1; + ii=IB(sat[i],frq,opt); + jj=IB(sat[j],frq,opt); + /* adjust threshold by error stdev ratio unless one of the phase biases was just initialized*/ + threshadj=code||(rtk->P[ii+rtk->nx*ii]>SQR(rtk->opt.std[0]/2))|| + (rtk->P[jj+rtk->nx*jj]>SQR(rtk->opt.std[0]/2))?opt->eratio[frq]:1; if (opt->maxinno>0.0&&fabs(v[nv])>opt->maxinno*threshadj) { if (!code) { rtk->ssat[sat[j]-1].vsat[frq]=0;