#include #include "nr.h" using namespace std; namespace { inline void get_psum(Mat_I_DP &p, Vec_O_DP &psum) { int i,j; DP sum; int mpts=p.nrows(); int ndim=p.ncols(); for (j=0;jy[1] ? (inhi=1,0) : (inhi=0,1); for (i=0;i y[ihi]) { inhi=ihi; ihi=i; } else if (y[i] > y[inhi] && i != ihi) inhi=i; } rtol=2.0*fabs(y[ihi]-y[ilo])/(fabs(y[ihi])+fabs(y[ilo])+TINY); if (rtol < ftol) { SWAP(y[0],y[ilo]); for (i=0;i= NMAX) nrerror("NMAX exceeded"); nfunk += 2; ytry=amotry(p,y,psum,funk,ihi,-1.0); if (ytry <= y[ilo]) ytry=amotry(p,y,psum,funk,ihi,2.0); else if (ytry >= y[inhi]) { ysave=y[ihi]; ytry=amotry(p,y,psum,funk,ihi,0.5); if (ytry >= ysave) { for (i=0;i