typedef struct { int Ndim; int * dims; ptrdiff_t * strides; double * Min; double * Step; double * Max; void * data; /* internal buffer for all pointer data */ int fsize; } Interp; void interp_init(Interp * obj, int Ndim, int * dims); /* set the upper and lower limit of dimension d */ void interp_init_dim(Interp * obj, int d, double Min, double Max); /* interpolate the table at point x; * status: array of length dimension, * will be -1 if below lower bound * +1 if above upper bound */ double interp_eval(Interp * obj, double * x, double * ydata, int * status); double interp_eval_periodic(Interp * obj, double * x, double * ydata); void interp_destroy(Interp * obj);