8 spline(
const std::vector<doublereal>& x, 
 
    9         const std::vector<doublereal>& y, 
 
   10         std::vector<doublereal>& b, 
 
   11         std::vector<doublereal>& 
c, 
 
   12         std::vector<doublereal>& d)
 
   46         ASSERTMSGBREAK(x.size() == y.size(), 
"Error in spline, x.size()!=y.size()");
 
   58                 b[0] = (y[1] - y[0])/(x[1] - x[0]);
 
   71                 c[1] = (y[1] - y[0])/d[0];
 
   72                 for (
int i = 1; i < nm1; i++) {
 
   73                         d[i] = x[i + 1] - x[i];
 
   74                         b[i] = 2.*(d[i - 1] + d[i]);
 
   75                         c[i + 1] = (y[i + 1] - y[i])/d[i];
 
   76                         c[i] = c[i + 1] - c[i];
 
   87                         c[0] = c[2]/(x[3] - x[1]) - c[1]/(x[2] - x[0]);
 
   88                         c[n - 1] = c[n - 2]/(x[n - 1] - x[n - 3]) - c[n - 3]/(x[n - 2] - x[n - 4]);
 
   89                         c[0] = c[0]*d[0]*d[0]/(x[3] - x[0]);
 
   90                         c[n - 1] = -c[n - 1]*d[n - 2]*d[n - 2]/(x[n - 1] - x[n - 4]);
 
   95                 for (
int i = 1; i < n; i++) {
 
   97                          b[i] = b[i] - t*d[i - 1];
 
   98                          c[i] = c[i] - t*c[i - 1];
 
  104                 c[n - 1] = c[n - 1]/b[n - 1];
 
  105                 for (
int ib = 0; ib < nm1; ib++) {
 
  107                         c[i] = (c[i] - d[i]*c[i + 1])/b[i];
 
  114                 b[n-1] = (y[n - 1] - y[nm1 - 1])/d[nm1 - 1] + d[nm1 - 1]*(c[nm1 - 1] + 2.*c[n - 1]);
 
  115                 for (
int i=0; i<nm1; i++) {
 
  116                         b[i] = (y[i + 1] - y[i])/d[i] - d[i]*(c[i + 1] + 2.*c[i]);
 
  117                         d[i] = (c[i + 1] - c[i])/d[i];
 
  120                 c[n - 1] = 3.*c[n - 1];
 
  129         const std::vector<doublereal>& x,
 
  130         const std::vector<doublereal>& y,
 
  131         const std::vector<doublereal>& b,
 
  132         const std::vector<doublereal>& 
c,
 
  133         const std::vector<doublereal>& d,
 
  156         ASSERTMSGBREAK(x.size() == y.size(), 
"Error in seval, x.size()!=y.size()");
 
  157         ASSERTMSGBREAK(x.size() == b.size(), 
"Error in seval, x.size()!=b.size()");
 
  158         ASSERTMSGBREAK(x.size() == c.size(), 
"Error in seval, x.size()!=c.size()");
 
  159         ASSERTMSGBREAK(x.size() == d.size(), 
"Error in seval, x.size()!=d.size()");
 
  172                         return y[0] + dx*b[0];
 
  182         } 
else if (u >= x[n - 1]) {
 
  186                         return y[n - 1] + dx*b[n - 1];
 
  221                         return y[i] + dx*(b[i] + dx*(c[i] + dx*d[i]));
 
  224                         return b[i] + dx*(2.*c[i] + 3.*dx*d[i]);
 
  227                         return 2.*c[i] + 6.*dx*d[i];
 
  243         const std::vector<doublereal>& x,
 
  244         const std::vector<doublereal>& y,
 
  267         ASSERTMSGBREAK(x.size() == y.size(), 
"Error in leval, x.size()!=y.size()");
 
  290         m = (y[i+1] - y[i])/(x[i+1] - x[i]);
 
  294         ASSERTMSGBREAK(diff >=0, 
"Error in multilinear evaluation, diff<0");
 
#define ASSERTMSGBREAK(expr, msg)
void spline(const std::vector< doublereal > &x, const std::vector< doublereal > &y, std::vector< doublereal > &b, std::vector< doublereal > &c, std::vector< doublereal > &d)
doublereal leval(const doublereal &u, const std::vector< doublereal > &x, const std::vector< doublereal > &y, const int diff)
static std::stack< cleanup * > c
doublereal seval(const doublereal &u, const std::vector< doublereal > &x, const std::vector< doublereal > &y, const std::vector< doublereal > &b, const std::vector< doublereal > &c, const std::vector< doublereal > &d, const int diff)