Class interp_steffen (o2scl)

O2scl : Class List

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

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 double copysign(const double x, const double 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 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 al, double 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>&)
interp_steffen<vec_t, vec2_t> &operator=(const interp_steffen<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