e01 Chapter Contents
e01 Chapter Introduction
NAG Library Manual

# NAG Library Function Documentnag_5d_shep_eval (e01tnc)

## 1  Purpose

nag_5d_shep_eval (e01tnc) evaluates the five-dimensional interpolating function generated by nag_5d_shep_interp (e01tmc) and its first partial derivatives.

## 2  Specification

 #include #include
 void nag_5d_shep_eval (Integer m, const double x[], const double f[], const Integer iq[], const double rq[], Integer n, const double xe[], double q[], double qx[], NagError *fail)

## 3  Description

nag_5d_shep_eval (e01tnc) takes as input the interpolant $Q\left(\mathbf{x}\right)$, $\mathbf{x}\in {ℝ}^{5}$ of a set of scattered data points $\left({\mathbf{x}}_{\mathit{r}},{f}_{\mathit{r}}\right)$, for $\mathit{r}=1,2,\dots ,m$, as computed by nag_5d_shep_interp (e01tmc), and evaluates the interpolant and its first partial derivatives at the set of points ${\mathbf{x}}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$.
nag_5d_shep_eval (e01tnc) must only be called after a call to nag_5d_shep_interp (e01tmc).
nag_5d_shep_eval (e01tnc) is derived from the new implementation of QS3GRD described by Renka (1988). It uses the modification for five-dimensional interpolation described by Berry and Minser (1999).

## 4  References

Berry M W, Minser K S (1999) Algorithm 798: high-dimensional interpolation using the modified Shepard method ACM Trans. Math. Software 25 353–366
Renka R J (1988) Algorithm 661: QSHEP3D: Quadratic Shepard method for trivariate interpolation of scattered data ACM Trans. Math. Software 14 151–152

## 5  Arguments

1:     mIntegerInput
On entry: must be the same value supplied for argument m in the preceding call to nag_5d_shep_interp (e01tmc).
Constraint: ${\mathbf{m}}\ge 23$.
2:     x[$5×{\mathbf{m}}$]const doubleInput
Note: the $\left(i,j\right)$th element of the matrix $X$ is stored in ${\mathbf{x}}\left[\left(j-1\right)×5+i-1\right]$.
On entry: must be the same array supplied as argument x in the preceding call to nag_5d_shep_interp (e01tmc). It must remain unchanged between calls.
3:     f[m]const doubleInput
On entry: must be the same array supplied as argument f in the preceding call to nag_5d_shep_interp (e01tmc). It must remain unchanged between calls.
4:     iq[$2×{\mathbf{m}}+1$]const IntegerInput
On entry: must be the same array returned as argument iq in the preceding call to nag_5d_shep_interp (e01tmc). It must remain unchanged between calls.
5:     rq[$21×{\mathbf{m}}+11$]const doubleInput
On entry: must be the same array returned as argument rq in the preceding call to nag_5d_shep_interp (e01tmc). It must remain unchanged between calls.
6:     nIntegerInput
On entry: $n$, the number of evaluation points.
Constraint: ${\mathbf{n}}\ge 1$.
7:     xe[$5×{\mathbf{n}}$]const doubleInput
Note: the $\left(i,j\right)$th element of the matrix is stored in ${\mathbf{xe}}\left[\left(j-1\right)×5+i-1\right]$.
On entry: ${\mathbf{xe}}\left[\left(\mathit{i}-1\right)×5\right],\dots ,{\mathbf{xe}}\left[\left(\mathit{i}-1\right)×5+4\right]$ must be set to the evaluation point ${\mathbf{x}}_{\mathit{i}}$ , for $\mathit{i}=1,2,\dots ,n$.
8:     q[n]doubleOutput
On exit: ${\mathbf{q}}\left[\mathit{i}-1\right]$ contains the value of the interpolant, at ${\mathbf{x}}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$. If any of these evaluation points lie outside the region of definition of the interpolant the corresponding entries in q are set to the largest machine representable number (see nag_real_largest_number (X02ALC)), and nag_5d_shep_eval (e01tnc) returns with ${\mathbf{fail}}\mathbf{.}\mathbf{code}=$ NE_BAD_POINT.
9:     qx[$5×{\mathbf{n}}$]doubleOutput
Note: the $\left(i,j\right)$th element of the matrix is stored in ${\mathbf{qx}}\left[\left(j-1\right)×5+i-1\right]$.
On exit: ${\mathbf{qx}}\left[\left(i-1\right)×5+j-1\right]$ contains the value of the partial derivatives with respect to ${\mathbf{x}}_{j}$ of the interpolant $Q\left(\mathbf{x}\right)$ at ${\mathbf{x}}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$, and for each of the five partial derivatives $j=1,2,3,4,5$. If any of these evaluation points lie outside the region of definition of the interpolant, the corresponding entries in qx are set to the largest machine representable number (see nag_real_largest_number (X02ALC)), and nag_5d_shep_eval (e01tnc) returns with ${\mathbf{fail}}\mathbf{.}\mathbf{code}=$ NE_BAD_POINT.
10:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

On entry, argument $⟨\mathit{\text{value}}⟩$ had an illegal value.
On entry, at least one evaluation point lies outside the region of definition of the interpolant. At all such points the corresponding values in q and qx have been set to ${\mathbf{nag_real_largest_number}}$: ${\mathbf{nag_real_largest_number}}=⟨\mathit{\text{value}}⟩$.
NE_INT
On entry, ${\mathbf{m}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{m}}\ge 23$.
On entry, ${\mathbf{n}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{n}}\ge 1$.
NE_INT_ARRAY
On entry, values in iq appear to be invalid. Check that iq has not been corrupted between calls to nag_5d_shep_interp (e01tmc) and nag_5d_shep_eval (e01tnc).
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NE_REAL_ARRAY
On entry, values in rq appear to be invalid. Check that rq has not been corrupted between calls to nag_5d_shep_interp (e01tmc) and nag_5d_shep_eval (e01tnc).

## 7  Accuracy

Computational errors should be negligible in most practical situations.

## 8  Parallelism and Performance

nag_5d_shep_eval (e01tnc) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
nag_5d_shep_eval (e01tnc) makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.

The time taken for a call to nag_5d_shep_eval (e01tnc) will depend in general on the distribution of the data points. If the data points are approximately uniformly distributed, then the time taken should be only $\mathit{O}\left(n\right)$. At worst $\mathit{O}\left(mn\right)$ time will be required.

## 10  Example

This program evaluates the function
 $f x = 1.25 + cos5.4x5 cos6x1 cos6x2 cos6x3 6 + 6 3 x4 - 1 2$
at a set of $30$ randomly generated data points and calls nag_5d_shep_interp (e01tmc) to construct an interpolating function $Q\left(\mathbf{x}\right)$. It then calls nag_5d_shep_eval (e01tnc) to evaluate the interpolant at a set of random points.
To reduce the time taken by this example, the number of data points is limited to $30$. Increasing this value to the suggested minimum of $4000$ improves the interpolation accuracy at the expense of more time.

### 10.1  Program Text

Program Text (e01tnce.c)

### 10.2  Program Data

Program Data (e01tnce.d)

### 10.3  Program Results

Program Results (e01tnce.r)