00001 #ifndef _theplu_yat_regression_gslinterpolation_
00002 #define _theplu_yat_regression_gslinterpolation_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <gsl/gsl_interp.h>
00027
00028 namespace theplu {
00029 namespace yat {
00030 namespace utility {
00031 class VectorBase;
00032 }
00033 namespace regression {
00034
00059 class GSLInterpolation
00060 {
00061
00062 public:
00076 GSLInterpolation(const gsl_interp_type*, const utility::VectorBase& x,
00077 const utility::VectorBase& y);
00078
00082 virtual ~GSLInterpolation(void)=0;
00083
00093 double evaluate(double x);
00094
00104 double evaluate_derivative(double x);
00105
00115 double evaluate_derivative2(double x);
00116
00126 double evaluate_integral(double a, double b);
00127
00134 double evaluation(void) const;
00135
00145 unsigned int min_size(void) const;
00146
00147 private:
00151 GSLInterpolation(const GSLInterpolation&);
00152
00153 GSLInterpolation& operator=(const GSLInterpolation&);
00154
00155 gsl_interp_accel* accelerator_;
00156 double evaluation_;
00157 gsl_interp* interpolator_;
00158 double* x_;
00159 double* y_;
00160 };
00161
00162 }}}
00163
00164 #endif