template struct Krig { const MatDoub &x; const T &vgram; Int ndim, npt; Doub lastval, lasterr; VecDoub y,dstar,vstar,yvi; MatDoub v; LUdcmp *vi; Krig(MatDoub_I &xx, VecDoub_I &yy, T &vargram, const Doub *err=NULL) : x(xx),vgram(vargram),npt(xx.nrows()),ndim(xx.ncols()),dstar(npt+1), vstar(npt+1),v(npt+1,npt+1),y(npt+1),yvi(npt+1) { Int i,j; for (i=0;isolve(y,yvi); } ~Krig() { delete vi; } Doub interp(VecDoub_I &xstar) { Int i; for (i=0;isolve(vstar,dstar); lasterr = 0; for (Int i=0;i<=npt;i++) lasterr += dstar[i]*vstar[i]; esterr = lasterr = sqrt(MAX(0.,lasterr)); return lastval; } Doub rdist(const Doub *x1, const Doub *x2) { Doub d=0.; for (Int i=0;i