#include #include #include #include "gsl/gsl_math.h" #include "gsl/gsl_spline.h" class foo { public: foo(std::vector, std::vector); double operator()(double); private: std::vector _x, _y; std::unique_ptr acc; std::unique_ptr spline; }; foo::foo(std::vector x, std::vector y): _x(x), _y(y), acc(gsl_interp_accel_alloc(),gsl_interp_accel_free), spline(gsl_spline_alloc(gsl_interp_cspline, _x.size()),gsl_spline_free) { gsl_spline_init(spline.get(), _x.data(), _y.data(), _x.size()); } auto foo::operator()(double x) -> double { return gsl_spline_eval(spline.get(), x, acc.get()); } auto function(double x, void* params) -> double { return foo(x); } int main() { gsl_function F; F.function = &function; }