Class interp_steffen (o2scl)

O2scl : Class List

template<class vec_t, class vec2_t = vec_t, class fp_t = double>
class interp_steffen : public o2scl::interp_base<vec_t, vec_t, double>

Steffen’s monotonicity-preserving interpolation.

Adapted from the GSL version by J.-F. Caron which was based on [Steffen90].

Storage for cubic spline interpolation

ubvector a
ubvector b
ubvector c
ubvector d
ubvector y_prime
inline fp_t copysign(const fp_t x, const fp_t y)

Flip the sign of x if x and y have different signs.

inline interp_steffen()

Create a base interpolation object.

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

Initialize interpolation routine.

inline virtual fp_t eval(fp_t x0) const

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

inline virtual fp_t deriv(fp_t x0) const

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

inline virtual fp_t deriv2(fp_t x0) const

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

inline virtual fp_t integ(fp_t al, fp_t bl) const

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

inline virtual const char *type() const

Return the type, "interp_steffen".

interp_steffen(const interp_steffen<vec_t, vec2_t, fp_t>&)
interp_steffen<vec_t, vec2_t, fp_t> &operator=(const interp_steffen<vec_t, vec2_t, fp_t>&)

Public Types

typedef boost::numeric::ublas::vector<fp_t> 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