# NAG FL Interfacee01sbf (dim2_​scat_​eval)

## 1Purpose

e01sbf evaluates at a given point the two-dimensional interpolant function computed by e01saf.

## 2Specification

Fortran Interface
 Subroutine e01sbf ( m, x, y, f, px, py, pf,
 Integer, Intent (In) :: m, triang(7*m) Integer, Intent (Inout) :: ifail Real (Kind=nag_wp), Intent (In) :: x(m), y(m), f(m), grads(2,m), px, py Real (Kind=nag_wp), Intent (Out) :: pf
#include <nag.h>
 void e01sbf_ (const Integer *m, const double x[], const double y[], const double f[], const Integer triang[], const double grads[], const double *px, const double *py, double *pf, Integer *ifail)
The routine may be called by the names e01sbf or nagf_interp_dim2_scat_eval.

## 3Description

e01sbf takes as input the arguments defining the interpolant $F\left(x,y\right)$ of a set of scattered data points $\left({x}_{r},{y}_{r},{f}_{r}\right)$, for $\mathit{r}=1,2,\dots ,m$, as computed by e01saf, and evaluates the interpolant at the point $\left(px,py\right)$.
If $\left(px,py\right)$ is equal to $\left({x}_{r},{y}_{r}\right)$ for some value of $r$, the returned value will be equal to ${f}_{r}$.
If $\left(px,py\right)$ is not equal to $\left({x}_{r},{y}_{r}\right)$ for any $r$, the derivatives in grads will be used to compute the interpolant. A triangle is sought which contains the point $\left(px,py\right)$, and the vertices of the triangle along with the partial derivatives and ${f}_{r}$ values at the vertices are used to compute the value $F\left(px,py\right)$. If the point $\left(px,py\right)$ lies outside the triangulation defined by the input arguments, the returned value is obtained by extrapolation. In this case, the interpolating function ${\mathbf{f}}$ is extended linearly beyond the triangulation boundary. The method is described in more detail in Renka and Cline (1984) and the code is derived from Renka (1984).
e01sbf must only be called after a call to e01saf.

## 4References

Renka R L (1984) Algorithm 624: triangulation and interpolation of arbitrarily distributed points in the plane ACM Trans. Math. Software 10 440–442
Renka R L and Cline A K (1984) A triangle-based ${C}^{1}$ interpolation method Rocky Mountain J. Math. 14 223–237

## 5Arguments

1: $\mathbf{m}$Integer Input
2: $\mathbf{x}\left({\mathbf{m}}\right)$Real (Kind=nag_wp) array Input
3: $\mathbf{y}\left({\mathbf{m}}\right)$Real (Kind=nag_wp) array Input
4: $\mathbf{f}\left({\mathbf{m}}\right)$Real (Kind=nag_wp) array Input
5: $\mathbf{triang}\left(7×{\mathbf{m}}\right)$Integer array Input
6: $\mathbf{grads}\left(2,{\mathbf{m}}\right)$Real (Kind=nag_wp) array Input
On entry: m, x, y, f, triang and grads must be unchanged from the previous call of e01saf.
7: $\mathbf{px}$Real (Kind=nag_wp) Input
8: $\mathbf{py}$Real (Kind=nag_wp) Input
On entry: the point $\left(px,py\right)$ at which the interpolant is to be evaluated.
9: $\mathbf{pf}$Real (Kind=nag_wp) Output
On exit: the value of the interpolant evaluated at the point $\left(px,py\right)$.
10: $\mathbf{ifail}$Integer Input/Output
On entry: ifail must be set to $0$, $-1$ or $1$ to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of $0$ causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of $-1$ means that an error message is printed while a value of $1$ means that it is not.
If halting is not appropriate, the value $-1$ or $1$ is recommended. If message printing is undesirable, then the value $1$ is recommended. Otherwise, the value $0$ is recommended. When the value $-\mathbf{1}$ or $\mathbf{1}$ is used it is essential to test the value of ifail on exit.
On exit: ${\mathbf{ifail}}={\mathbf{0}}$ unless the routine detects an error or a warning has been flagged (see Section 6).

## 6Error Indicators and Warnings

If on entry ${\mathbf{ifail}}=0$ or $-1$, explanatory error messages are output on the current error message unit (as defined by x04aaf).
Errors or warnings detected by the routine:
${\mathbf{ifail}}=1$
On entry, ${\mathbf{m}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{m}}\ge 3$.
${\mathbf{ifail}}=2$
On entry, triang does not contain a valid data point triangulation; triang may have been corrupted since the call to e01saf.
${\mathbf{ifail}}=3$
Warning – the evaluation point $\left(〈\mathit{\text{value}}〉,〈\mathit{\text{value}}〉\right)$ lies outside the triangulation boundary. The returned value was computed by extrapolation.
${\mathbf{ifail}}=-99$
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

## 7Accuracy

Computational errors should be negligible in most practical situations.

## 8Parallelism and Performance

The time taken for a call of e01sbf is approximately proportional to the number of data points, $m$.