Spline Abstract Class

Spline Abstract Class — Base class for implementing splines

Synopsis

struct              NcmSpline;
struct              NcmSplineClass;
const gdouble       bterm;
const gdouble       cterm;
const gdouble       dterm;
void                ncm_spline_clear                    (NcmSpline **s);
NcmSpline *         ncm_spline_copy                     (const NcmSpline *s);
NcmSpline *         ncm_spline_copy_empty               (const NcmSpline *s);
gdouble             ncm_spline_eval                     (const NcmSpline *s,
                                                         const gdouble x);
gdouble             ncm_spline_eval_deriv               (const NcmSpline *s,
                                                         const gdouble x);
gdouble             ncm_spline_eval_deriv2              (const NcmSpline *s,
                                                         const gdouble x);
gdouble             ncm_spline_eval_integ               (const NcmSpline *s,
                                                         const gdouble x0,
                                                         const gdouble x1);
void                ncm_spline_free                     (NcmSpline *s);
guint               ncm_spline_get_index                (const NcmSpline *s,
                                                         const gdouble x);
NcmVector *         ncm_spline_get_xv                   (NcmSpline *s);
NcmVector *         ncm_spline_get_yv                   (NcmSpline *s);
gboolean            ncm_spline_is_empty                 (const NcmSpline *s);
gsize               ncm_spline_min_size                 (const NcmSpline *s);
NcmSpline *         ncm_spline_new                      (const NcmSpline *s,
                                                         NcmVector *xv,
                                                         NcmVector *yv,
                                                         const gboolean init);
NcmSpline *         ncm_spline_new_array                (const NcmSpline *s,
                                                         GArray *x,
                                                         GArray *y,
                                                         const gboolean init);
NcmSpline *         ncm_spline_new_data                 (const NcmSpline *s,
                                                         gdouble *x,
                                                         gdouble *y,
                                                         const gsize len,
                                                         const gboolean init);
void                ncm_spline_prepare                  (NcmSpline *s);
void                ncm_spline_prepare_base             (NcmSpline *s);
NcmSpline *         ncm_spline_ref                      (NcmSpline *s);
NcmSpline *         ncm_spline_set                      (NcmSpline *s,
                                                         NcmVector *xv,
                                                         NcmVector *yv,
                                                         gboolean init);
void                ncm_spline_set_array                (NcmSpline *s,
                                                         GArray *x,
                                                         GArray *y,
                                                         gboolean init);
void                ncm_spline_set_data_static          (NcmSpline *s,
                                                         gdouble *x,
                                                         gdouble *y,
                                                         gsize len,
                                                         gboolean init);
void                ncm_spline_set_xv                   (NcmSpline *s,
                                                         NcmVector *xv,
                                                         gboolean init);
void                ncm_spline_set_yv                   (NcmSpline *s,
                                                         NcmVector *yv,
                                                         gboolean init);
const gdouble       r1;
const gdouble       r12;
const gdouble       r2;

Object Hierarchy

  GObject
   +----NcmSpline
         +----NcmSplineCubic
         +----NcmSplineGsl

Description

This class comprises all functions to provide a NcmSpline, together with all necessary methods.

Details

struct NcmSpline

struct NcmSpline;

struct NcmSplineClass

struct NcmSplineClass {
};

bterm

  const gdouble bterm = 0.5 * bi * r12;

cterm

  const gdouble cterm = (1.0 / 3.0) * ci * (r1 * r1 + r2 * r2 + r1 * r2);

dterm

  const gdouble dterm = 0.25 * di * r12 * (r1 * r1 + r2 * r2);

ncm_spline_clear ()

void                ncm_spline_clear                    (NcmSpline **s);

Atomically decrements the reference count of s by one. If the reference count drops to 0, all memory allocated by s is released. The pointer is set to NULL.

s :

a NcmSpline.

ncm_spline_copy ()

NcmSpline *         ncm_spline_copy                     (const NcmSpline *s);

This function copies the two NcmVector of the spline s into those two NcmVector of a new NcmSpline.

s :

a costant NcmSpline.

Returns :

A NcmSpline. [transfer full]

ncm_spline_copy_empty ()

NcmSpline *         ncm_spline_copy_empty               (const NcmSpline *s);

This function copies the spline s into an initialized empty NcmSpline of a specific type.

s :

a constant NcmSpline.

Returns :

A NcmSpline. [transfer full]

ncm_spline_eval ()

gdouble             ncm_spline_eval                     (const NcmSpline *s,
                                                         const gdouble x);

s :

a constant NcmSpline.

x :

x-coordinate value.

Returns :

The interpolated value of a function computed at x.

ncm_spline_eval_deriv ()

gdouble             ncm_spline_eval_deriv               (const NcmSpline *s,
                                                         const gdouble x);

s :

a constant NcmSpline.

x :

x-coordinate value.

Returns :

The derivative of an interpolated function computed at x.

ncm_spline_eval_deriv2 ()

gdouble             ncm_spline_eval_deriv2              (const NcmSpline *s,
                                                         const gdouble x);

s :

a constant NcmSpline.

x :

x-coordinate value.

Returns :

The second derivative of an interpolated function computed at x.

ncm_spline_eval_integ ()

gdouble             ncm_spline_eval_integ               (const NcmSpline *s,
                                                         const gdouble x0,
                                                         const gdouble x1);

s :

a constant NcmSpline.

x0 :

lower integration limit.

x1 :

upper integration limit.

Returns :

The numerical integral of an interpolated function over the range [x0, x1].

ncm_spline_free ()

void                ncm_spline_free                     (NcmSpline *s);

Atomically decrements the reference count of s by one. If the reference count drops to 0, all memory allocated by s is released.

s :

a NcmSpline.

ncm_spline_get_index ()

guint               ncm_spline_get_index                (const NcmSpline *s,
                                                         const gdouble x);

s :

a constant NcmSpline.

x :

a value of the abscissa axis.

Returns :

The index of the lower knot of the interval x belongs to.

ncm_spline_get_xv ()

NcmVector *         ncm_spline_get_xv                   (NcmSpline *s);

This function returns the s NcmVector of knots.

s :

a NcmSpline

Returns :

A NcmVector. [transfer full]

ncm_spline_get_yv ()

NcmVector *         ncm_spline_get_yv                   (NcmSpline *s);

This function returns the s NcmVector of the values of the function to be interpolated.

s :

a NcmSpline.

Returns :

A NcmVector. [transfer full]

ncm_spline_is_empty ()

gboolean            ncm_spline_is_empty                 (const NcmSpline *s);

ncm_spline_min_size ()

gsize               ncm_spline_min_size                 (const NcmSpline *s);

s :

a constant NcmSpline.

Returns :

Minimum number of knots required.

ncm_spline_new ()

NcmSpline *         ncm_spline_new                      (const NcmSpline *s,
                                                         NcmVector *xv,
                                                         NcmVector *yv,
                                                         const gboolean init);

This function returns a new NcmSpline, where the knots of this new spline are given in the NcmVector xv and the values of the function, at those knots, to be interpolated are given in the NcmVector yv.

s :

a constant NcmSpline.

xv :

NcmVector of knots.

yv :

NcmVector of the values of the function, to be interpolated, computed at xv.

init :

TRUE to prepare the new NcmSpline or FALSE to not prepare it.

Returns :

A new NcmSpline. [transfer full]

ncm_spline_new_array ()

NcmSpline *         ncm_spline_new_array                (const NcmSpline *s,
                                                         GArray *x,
                                                         GArray *y,
                                                         const gboolean init);

This function returns a new NcmSpline, where the knots of this new spline are given in the GArray x and the values of the function, at those knots, to be interpolated are given in the GArray y.

s :

a constant NcmSpline.

x :

GArray of knots.

y :

GArray of the values of the function, to be interpolated, computed at x.

init :

TRUE to prepare the new NcmSpline or FALSE to not prepare it.

Returns :

A new NcmSpline. [transfer full]

ncm_spline_new_data ()

NcmSpline *         ncm_spline_new_data                 (const NcmSpline *s,
                                                         gdouble *x,
                                                         gdouble *y,
                                                         const gsize len,
                                                         const gboolean init);

This function returns a new NcmSpline, where the knots of this new spline are given in the array x and the values of the function, at those knots, to be interpolated are given in the array y.

s :

a constant NcmSpline.

x :

array of knots.

y :

array of the values of the function, to be interpolated, computed at x.

len :

lenght of x and y.

init :

TRUE to prepare the new NcmSpline or FALSE to not prepare it.

Returns :

A new NcmSpline. [transfer full]

ncm_spline_prepare ()

void                ncm_spline_prepare                  (NcmSpline *s);

This function prepares the spline s such that one can evaluate it (ncm_spline_eval), as well as to compute its first and second derivatives (ncm_spline_eval_deriv, ncm_spline_eval_deriv2) and integration (ncm_spline_eval_integ).

s :

a NcmSpline.

ncm_spline_prepare_base ()

void                ncm_spline_prepare_base             (NcmSpline *s);

This function computes the second derivatives of s and it is used to prepare a bidimensional spline.

s :

a NcmSpline.

ncm_spline_ref ()

NcmSpline *         ncm_spline_ref                      (NcmSpline *s);

FIXME

s :

a NcmSpline.

Returns :

FIXME. [transfer full]

ncm_spline_set ()

NcmSpline *         ncm_spline_set                      (NcmSpline *s,
                                                         NcmVector *xv,
                                                         NcmVector *yv,
                                                         gboolean init);

This funtion sets both xv and yv vectors to s. The two vectors must have the same length.

s :

a NcmSpline.

xv :

NcmVector of knots.

yv :

NcmVector of the values of the function, to be interpolated, computed at xv.

init :

TRUE to prepare s or FALSE to not prepare it.

Returns :

FIXME. [transfer none]

ncm_spline_set_array ()

void                ncm_spline_set_array                (NcmSpline *s,
                                                         GArray *x,
                                                         GArray *y,
                                                         gboolean init);

This function sets x as the knot vector and y as the function values vector of the spline.

s :

a NcmSpline.

x :

GArray of knots.

y :

GArray of the values of the function, to be interpolated, computed at x.

init :

TRUE to prepare s or FALSE to not prepare it.

ncm_spline_set_data_static ()

void                ncm_spline_set_data_static          (NcmSpline *s,
                                                         gdouble *x,
                                                         gdouble *y,
                                                         gsize len,
                                                         gboolean init);

This function sets x as the knot vector and y as the function values vector of the spline.

s :

a NcmSpline.

x :

array of knots.

y :

array of the values of the function, to be interpolated, computed at x.

len :

lenght of x and y.

init :

TRUE to prepare s or FALSE to not prepare it.

ncm_spline_set_xv ()

void                ncm_spline_set_xv                   (NcmSpline *s,
                                                         NcmVector *xv,
                                                         gboolean init);

This function sets xv as the knot vector of the spline.

s :

a NcmSpline.

xv :

NcmVector of knots.

init :

TRUE to prepare s or FALSE to not prepare it.

ncm_spline_set_yv ()

void                ncm_spline_set_yv                   (NcmSpline *s,
                                                         NcmVector *yv,
                                                         gboolean init);

This function sets yv as the function values vector. This NcmVector yv comprises the function values computed at the knots of the spline.

s :

a NcmSpline.

yv :

NcmVector of the values of the function to be interpolated.

init :

TRUE to prepare s or FALSE to not prepare it.

r1

  const gdouble r1 = a - xi;

r12

  const gdouble r12 = r1 + r2;

r2

  const gdouble r2 = b - xi;