Sure, that would be a reasonable option, but I'd like to do a bit of
research (i.e. ask a few more people for opinions) to see what solution
will be the least confusing. After all, if there is a change to be made,
this is the time to do it, not later after the code is incorporated into
GSL. I think backward compatibility will not be too much of a problem
because people will have to make other changes anyway to transition from
the interp2d_* functions to the corresponding gsl_* functions.
I think 2 additional functions could be added to help solve this issue
and hide the indexing
from the user:
interp2d_grid_set(double zarr[], size_t i, size_t j, double z)
{
/* set point (i,j) of grid 'zarr' to value 'z' */
}
and
interp2d_grid_fill(double zarr[], int (*grid_func)(double x, double y,
void *params))
{
/* fill entire grid 'zarr' using callback function 'grid_func'; this
would be useful
* in cases where the user has a continuous/analytic function which
is expensive to call, but
* they'd like to make a grid and then interpolate from it
*/
}