1 #ifndef SimTK_SIMMATH_GCVSPL_UTIL_H_
2 #define SimTK_SIMMATH_GCVSPL_UTIL_H_
69 for (
int j = 0; j < K; ++j)
70 for (
int i = 0; i < ny; ++i)
71 yvec[index++] = y[i][j];
79 SimTK_gcvspl_(&x[0], &yvec[0], &ny, &wx[0], &wy[0], &m, &n, &k, &md, &val, &cvec[0], &n, &wk[0], &ier);
87 for (
int j = 0; j < K; ++j)
88 for (
int i = 0; i < n; ++i)
89 c[i][j] = cvec[index++];
94 assert(derivOrder >= 0);
95 assert(t >= x[0] && t <= x[x.
size()-1]);
96 assert(x.
size() == coeff.size());
97 assert(degree > 0 && degree%2==1);
104 int m = (degree+1)/2;
106 int interval = (int) ceil(n*(t-x[0])/(x[n-1]-x[0]));
108 const int MaxCheapM = 32;
109 Real qbuf[2*MaxCheapM];
115 int offset = (int) (&coeff[1][0]-&coeff[0][0]);
119 for (
int i = 0; i < K; ++i)
120 result[i] =
SimTK_splder_(&derivOrder, &m, &n, &t, &x[0], &coeff[0][i], &interval, q, offset);
130 #endif // SimTK_SIMMATH_GCVSPL_UTIL_H_