#include #include #include #include "nr.h" using namespace std; void NR::ratlsq(DP fn(const DP), const DP a, const DP b, const int mm, const int kk, Vec_O_DP &cof, DP &dev) { const int NPFAC=8,MAXIT=5; const DP BIG=1.0e30,PIO2=1.570796326794896619; int i,it,j,ncof,npt; DP devmax,e,hth,power,sum; ncof=mm+kk+1; npt=NPFAC*ncof; Vec_DP bb(npt),coff(ncof),ee(npt),fs(npt),w(ncof),wt(npt),xs(npt); Mat_DP u(npt,ncof),v(ncof,ncof); dev=BIG; for (i=0;i devmax) devmax=wt[j]; } e=sum/npt; if (devmax <= dev) { for (j=0;j