#include "nr.h" void NR::spline(Vec_I_DP &x, Vec_I_DP &y, const DP yp1, const DP ypn, Vec_O_DP &y2) { int i,k; DP p,qn,sig,un; int n=y2.size(); Vec_DP u(n-1); if (yp1 > 0.99e30) y2[0]=u[0]=0.0; else { y2[0] = -0.5; u[0]=(3.0/(x[1]-x[0]))*((y[1]-y[0])/(x[1]-x[0])-yp1); } for (i=1;i 0.99e30) qn=un=0.0; else { qn=0.5; un=(3.0/(x[n-1]-x[n-2]))*(ypn-(y[n-1]-y[n-2])/(x[n-1]-x[n-2])); } y2[n-1]=(un-qn*u[n-2])/(qn*y2[n-2]+1.0); for (k=n-2;k>=0;k--) y2[k]=y2[k]*y2[k+1]+u[k]; }