00001 00002 #define POLYMAX 100 00003 #define SP_NATURAL 1 00004 #define SP_DERIVATIVE 2 00005 #define SP_PERIODIC 3 00006 00007 #define splint(poly,x) (poly.a + (x)*(poly.b + (x)*(poly.c + (x)*poly.d))) 00008 #define splint1(poly,x) (poly.b + (x)*(2.*poly.c + (x)*3.*poly.d)) 00009 #define splint2(poly,x) (2.*poly.c + (x)*6.*poly.d) 00010 00011 00012 typedef struct { 00013 real a, b, c, d; 00014 } polynom3; 00015 00016 extern real polynomial(real *xp, real *yp, real *z, real x, real y); 00017 00018 extern void CubicPolynom(real x0, real y0, real x1, real y1, 00019 real x2, real y2, real x3, real y3, 00020 real *ex, real *fx, real *gx, 00021 real *ey, real *fy, real *gy, 00022 real *rd2); 00023 00024 extern void spline(real1D x, real1D y, int n, real yp1, real ypn, real1D d2y, 00025 polynom3 *poly, int flag); 00026 00027 extern void tridag(real1D a, real1D b, real1D c, real1D r, real1D u, int n); 00028 00029 extern void Pspline(real1D x, real1D y, real1D d2y, real lp, 00030 int n, polynom3 *poly); 00031 00032 extern real splint_find(real1D xa, polynom3 *poly, int n, real x); 00033 00034 extern int distmin(polynom3 px, polynom3 py, real xp, real yp, real *tmin, 00035 real t1, real t2, real prec); 00036 00037 extern int polyroot(polynom3 poly, real x1, real x2, real *x, real prec); 00038 00039 extern int polyroots(polynom3 poly, real x1, real x2, 00040 real *x, real y, real prec); 00041 00042 extern void bcucof(real2D f, int i, int j, real *c, int nx, int ny); 00043 00044 extern real bcuint(real t, real u, real *c); 00045 00046 extern real polydistmin(polynom3 px1, polynom3 px2, polynom3 py1, polynom3 py2, 00047 real *t1, real *t2, real ftol); 00048 00049 extern real trapzd(real (*func)(polynom3, polynom3, real), 00050 polynom3 px, polynom3 py, 00051 real a, real b, int n); 00052 00053 extern real qtrap(real (*func)(polynom3, polynom3, real), 00054 polynom3 px, polynom3 py, 00055 real a, real b, real eps); 00056