NAG CL Interface
e01bgc (dim1_​monotonic_​deriv)

Settings help

CL Name Style:


1 Purpose

e01bgc evaluates a piecewise cubic Hermite interpolant and its first derivative at a set of points.

2 Specification

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

3 Description

e01bgc evaluates a piecewise cubic Hermite interpolant, as computed by the NAG function e01bec, at the points px[i] , for i=0,1,,m - 1. The first derivatives at the points are also computed. If any point lies outside the interval from x[0] to x[n-1] , values of the interpolant and its derivative are extrapolated from the nearest extreme cubic, and a warning is returned.
If values of the interpolant only, and not of its derivative, are required, e01bfc should be used.
The function is derived from routine PCHFD 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: pd[m] double Output
On exit: pd[i] contains the first derivative of the interpolant evaluated at the point px[i] , for i=0,1,,m - 1.
9: 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

NE_INT_ARG_LT
On entry, m=value.
Constraint: m1.
On entry, n=value.
Constraint: n2.
NE_NOT_MONOTONIC
On entry, x[r-1] x[r] for r=value : x[r-1] = value, x[r] = value.
The values of x[r] , for r=0,1,,n - 1, are not in strictly increasing order.
NW_EXTRAPOLATE
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 arrays pf and pd should be negligible in most practical situations.

8 Parallelism and Performance

Background information to multithreading can be found in the Multithreading documentation.
e01bgc is not threaded in any implementation.

9 Further Comments

The time taken by e01bgc 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 e01bgc with m>1 is more efficient than several calls with m=1 .

10 Example

This example program reads in values of n, x, f and d and calls e01bgc to compute the values of the interpolant and its derivative at equally spaced points.

10.1 Program Text

Program Text (e01bgce.c)

10.2 Program Data

Program Data (e01bgce.d)

10.3 Program Results

Program Results (e01bgce.r)