rob1[mtot_, wt_, g_, nd_, dpar_]:= ( gsorted=Sort[Table[{g[[i]],wt[[i]]},{i,mtot}]]; gg=Table[gsorted[[i,1]],{i,mtot}]; w=Table[gsorted[[i,2]],{i,mtot}]; w1=Sum[wt[[i]],{i,1,mtot}]; wg1=Sum[wt[[i]]*gg[[i]],{i,1,mtot}]; wg2=Sum[wt[[i]]*(gg[[i]])^2,{i,1,mtot}]; d=Table[ Sum[wt[[j]],{j,1,i}],{i,1,mtot}]; t=Table[ Sum[wt[[j]]*gg[[j]],{j,1,i}],{i,1,mtot}]; amu=wg1/w1; asd=Sqrt[wg2/w1-amu^2]; For[id=1, id <=nd, id++, ak=Exp[dpar[[id]]]; l=Floor[mtot/2]; lstep=l; ql=gg[[l]]-1; (* trick *) While[ql < gg[[l]] || ql > gg[[l+1]], lstep=Floor[(lstep-1)/2+1]; ql=(t[[l]]+ak*(wg1-t[[l]]))/(d[[l]]+ak*(w1-d[[l]])); If[ql>gg[[l+1]], l=l+lstep, If[ql