NAG CL Interface
e01bfc (dim1_​monotonic_​eval)

1 Purpose

e01bfc evaluates a piecewise cubic Hermite interpolant at a set of points.

2 Specification

#include <nag.h>
void  e01bfc (Integer n, const double x[], const double f[], const double d[], Integer m, const double px[], double pf[], NagError *fail)
The function may be called by the names: e01bfc, nag_interp_dim1_monotonic_eval or nag_monotonic_evaluate.

3 Description

A piecewise cubic Hermite interpolant, as computed by e01bec, is evaluated at the points px[i] , for i=0,1,,m-1. If any point lies outside the interval from x[0] to x[n-1] , a value is extrapolated from the nearest extreme cubic, and a warning is returned.
The algorithm is derived from routine PCHFE in Fritsch (1982).

4 References

Fritsch F N (1982) PCHIP final specifications Report UCID-30194 Lawrence Livermore National Laboratory

5 Arguments

1: n Integer Input
On entry: n must be unchanged from the previous call of e01bec.
2: x[n] const double Input
3: f[n] const double Input
4: d[n] const double Input
On entry: x, f and d must be unchanged from the previous call of e01bec.
5: m Integer Input
On entry: m , the number of points at which the interpolant is to be evaluated.
Constraint: m1 .
6: px[m] const double Input
On entry: the m values of x at which the interpolant is to be evaluated.
7: pf[m] double Output
On exit: pf[i] contains the value of the interpolant evaluated at the point px[i] , for i=0,1,,m-1.
8: fail NagError * Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).

6 Error Indicators and Warnings

On entry, m=value.
Constraint: m1.
On entry, n=value.
Constraint: n2.
On entry, x[r-1] x[r] for r=value : x[r-1] , x[r] = values .
The values of x[r] , for r=0,1,,n - 1, are not in strictly increasing order.
Warning – some points in array PX lie outside the range x[0] x[n-1] . Values at these points are unreliable as they have been computed by extrapolation.

7 Accuracy

The computational errors in the array pf should be negligible in most practical situations.

8 Parallelism and Performance

e01bfc is not threaded in any implementation.

9 Further Comments

The time taken by e01bfc is approximately proportional to the number of evaluation points, m . The evaluation will be most efficient if the elements of px are in nondecreasing order (or, more generally, if they are grouped in increasing order of the intervals x r-1 , x r ). A single call of e01bfc with m>1 is more efficient than several calls with m=1 .

10 Example

This example program reads in values of n, x, f, d and m, and then calls e01bfc to evaluate the interpolant at equally spaced points.

10.1 Program Text

Program Text (e01bfce.c)

10.2 Program Data

Program Data (e01bfce.d)

10.3 Program Results

Program Results (e01bfce.r)