8 #include "../../Exceptions/error.h"
30 void spline(
double *x,
double *y,
int n,
double yp1,
double ypn,
double *y2)
33 double p,qn,sig,un,*u,*vector();
42 u[0]=(3.0/(x[1]-x[0]))*((y[1]-y[0])/(x[1]-x[0])-yp1);
44 for (i=1;i<=n-2;i++) {
45 sig=(x[i]-x[i-1])/(x[i+1]-x[i-1]);
48 u[i]=(y[i+1]-y[i])/(x[i+1]-x[i]) - (y[i]-y[i-1])/(x[i]-x[i-1]);
49 u[i]=(6.0*u[i]/(x[i+1]-x[i-1])-sig*u[i-1])/p;
56 un=(3.0/(x[n-1]-x[n-2]))*(ypn-(y[n-1]-y[n-2])/(x[n-1]-x[n-2]));
58 y2[n-1]=(un-qn*u[n-2])/(qn*y2[n-2]+1.0);
59 for (k=n-2;k>=0;k--) {
60 y2[k]=y2[k]*y2[k+1]+u[k];
86 void splint(
double *xa,
double *ya,
double *y2a,
int n,
double x,
double *y)
101 throw error_msg(
"SPLINE_ERROR",
"Bad XA input to routine SPLINT");
104 *y=a*ya[klo]+b*ya[khi]+((a*a*a-a)*y2a[klo]+(b*b*b-b)*y2a[khi])*(h*h)/6.0;
void splint(double *xa, double *ya, double *y2a, int n, double x, double *y)
void spline(double *x, double *y, int n, double yp1, double ypn, double *y2)
Error message - stack of single_errors.