#include #include "Malloc.h" #include "error.h" #include "qromo.h" #define NR_END 1 static double *vector(long nl, long nh) /* allocate a double vector with subscript range v[nl..nh] */ { double *v; v = Malloc((nh-nl+1+NR_END)*sizeof(double)); return v-nl+NR_END; } static void free_vector(v,nl,nh) double *v; long nh,nl; /* free a double vector allocated with vector() */ { Free(v+nl-NR_END); } void polintd(double xa[], double ya[], int n, double x, double *y, double *dy) { int i,m,ns=1; double den,dif,dift,ho,hp,w; double *c,*d; dif=fabs(x-xa[1]); c=vector(1,n); d=vector(1,n); for (i=1;i<=n;i++) { if ( (dift=fabs(x-xa[i])) < dif) { ns=i; dif=dift; } c[i]=ya[i]; d[i]=ya[i]; } *y=ya[ns--]; for (m=1;m= K) { polintd(&h[j-K],&s[j-K],K,0.0,&ss,&dss); if (fabs(dss) < EPS*fabs(ss)) return ss; } s[j+1]=s[j]; h[j+1]=h[j]/9.0; } Error("Too many steps in routine qromod\n"); return 0.0; }