Fixed 'y > yub' error by reducing default tolerances min_d{x,y} in
[sawsim.git] / interp.h
1 /* A full-fledged linear interpolating lookup table interface. */
2
3 /* the type of functions we'll interpolate for */
4 typedef double interp_fn_t (double x, void *params);
5 /* 0: acceptable tolerance, or 1: unacceptable? */
6 typedef int interp_tol_fn_t(double xA, double yA, double xB, double yB);
7
8 typedef struct interp_table {
9   void *table;
10   interp_fn_t *fn;
11   interp_tol_fn_t *tol;
12 } interp_table_t;
13
14 extern interp_table_t *interp_table_allocate (interp_fn_t *fn, interp_tol_fn_t *tol);
15 extern void interp_table_free (interp_table_t *itable);
16 extern double interp_table_eval (interp_table_t *itable, void *params, double x);