Class interp_cspline (o2scl)

O2scl : Class List

template<class vec_t, class vec2_t = vec_t>
class o2scl::interp_cspline : public o2scl::interp_base<vec_t, vec_t>

Cubic spline interpolation (GSL)

See also the Interpolation section of the O2scl User’s guide.

By default, this class uses natural boundary conditions, where the second derivative vanishes at each end point. Extrapolation effectively assumes that the second derivative is linear outside of the endpoints.

Storage for cubic spline interpolation

ubvector c
ubvector g
ubvector diag
ubvector offdiag
o2scl_linalg::ubvector_4_mem p4m

Memory for the tridiagonalization.

inline void coeff_calc(const ubvector &c_array, double dy, double dx, size_t index, double &b, double &c2, double &d) const

Compute coefficients for cubic spline interpolation.

inline interp_cspline()

Create a base interpolation object with natural or periodic boundary conditions.

inline virtual ~interp_cspline()
inline virtual void set(size_t size, const vec_t &xa, const vec2_t &ya)

Initialize interpolation routine.

inline virtual double eval(double x0) const

Give the value of the function \( y(x=x_0) \) .

inline virtual double deriv(double x0) const

Give the value of the derivative \( y^{\prime}(x=x_0) \) .

inline virtual double deriv2(double x0) const

Give the value of the second derivative \( y^{\prime \prime}(x=x_0) \) .

inline virtual double integ(double a, double b) const

Give the value of the integral \( \int_a^{b}y(x)~dx \) .

inline virtual const char *type() const

Return the type, "interp_cspline".

interp_cspline(const interp_cspline<vec_t, vec2_t>&)
interp_cspline<vec_t, vec2_t> &operator=(const interp_cspline<vec_t, vec2_t>&)

Public Types

typedef boost::numeric::ublas::vector<double> ubvector
typedef boost::numeric::ublas::vector_slice<ubvector> ubvector_slice
typedef boost::numeric::ublas::vector_range<ubvector> ubvector_range
typedef boost::numeric::ublas::slice slice
typedef boost::numeric::ublas::range range