E02 Chapter Contents
E02 Chapter Introduction
NAG Library Manual

# NAG Library Routine DocumentE02JFF

Note:  before using this routine, please read the Users' Note for your implementation to check the interpretation of bold italicised terms and other implementation-dependent details.

## 1  Purpose

E02JFF calculates a mesh of values of a spline computed by E02JDF.

## 2  Specification

 SUBROUTINE E02JFF ( NXEVAL, NYEVAL, XEVALM, YEVALM, COEFS, FEVALM, IOPTS, OPTS, IFAIL)
 INTEGER NXEVAL, NYEVAL, IOPTS(*), IFAIL REAL (KIND=nag_wp) XEVALM(NXEVAL), YEVALM(NYEVAL), COEFS(*), FEVALM(NXEVAL,NYEVAL), OPTS(*)

## 3  Description

E02JFF calculates values on a rectangular mesh of a bivariate spline computed by E02JDF. The points in the mesh are defined by $x$ coordinates (${x}_{\mathit{i}}$), for $\mathit{i}=1,2,\dots ,{n}_{x}$, and $y$ coordinates (${y}_{\mathit{j}}$), for $\mathit{j}=1,2,\dots ,{n}_{y}$. This routine is derived from the TSFIT package of O. Davydov and F. Zeilfelder.

## 4  References

Davydov O and Zeilfelder F (2004) Scattered data fitting by direct extension of local polynomials to bivariate splines Advances in Comp. Math. 21 223–271
Farin G and Hansford D (2000) The Essentials of CAGD Natic, MA: A K Peters, Ltd.

## 5  Parameters

1:     NXEVAL – INTEGERInput
On entry: ${n}_{x}$, the number of values in the $x$ direction forming the mesh on which the spline is to be evaluated.
Constraint: ${\mathbf{NXEVAL}}\ge 1$.
2:     NYEVAL – INTEGERInput
On entry: ${n}_{y}$, the number of values in the $y$ direction forming the mesh on which the spline is to be evaluated.
Constraint: ${\mathbf{NYEVAL}}\ge 1$.
3:     XEVALM(NXEVAL) – REAL (KIND=nag_wp) arrayInput
On entry: the $\left({x}_{i}\right)$ values forming the mesh on which the spline is to be evaluated.
Constraint: for all $i$, ${\mathbf{XEVALM}}\left(i\right)$ must lie inside, or on the boundary of, the spline's bounding box as determined by E02JDF.
4:     YEVALM(NYEVAL) – REAL (KIND=nag_wp) arrayInput
On entry: the $\left({y}_{j}\right)$ values forming the mesh on which the spline is to be evaluated.
Constraint: for all $j$, ${\mathbf{YEVALM}}\left(j\right)$ must lie inside, or on the boundary of, the spline's bounding box as determined by E02JDF.
5:     COEFS($*$) – REAL (KIND=nag_wp) arrayInput
On entry: the computed spline coefficients COEFS as output from E02JDF.
6:     FEVALM(NXEVAL,NYEVAL) – REAL (KIND=nag_wp) arrayOutput
On exit: if ${\mathbf{IFAIL}}={\mathbf{0}}$ on exit ${\mathbf{FEVALM}}\left(i,j\right)$ contains the computed spline value at $\left({x}_{i},{y}_{j}\right)$.
7:     IOPTS($*$) – INTEGER arrayCommunication Array
On entry: must be the same array IOPTS supplied in a previous call to E02JDF. The contents of the array must not have been modified either directly or indirectly, by a call to E02ZKF, between calls to E02JDF and E02JFF.
8:     OPTS($*$) – REAL (KIND=nag_wp) arrayCommunication Array
On entry: must be the same array OPTS supplied in a previous call to E02JDF. The contents of the array must not have been modified either directly or indirectly, by a call to E02ZKF, between calls to E02JDF and E02JFF.
9:     IFAIL – INTEGERInput/Output
On entry: IFAIL must be set to $0$, $-1\text{​ or ​}1$. If you are unfamiliar with this parameter you should refer to Section 3.3 in the Essential Introduction for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value $-1\text{​ or ​}1$ is recommended. If the output of error messages is undesirable, then the value $1$ is recommended. Otherwise, if you are not familiar with this parameter, the recommended value is $0$. When the value $-\mathbf{1}\text{​ 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).

## 6  Error Indicators and Warnings

If on entry ${\mathbf{IFAIL}}={\mathbf{0}}$ or $-{\mathbf{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}}=6$
On entry, ${\mathbf{NXEVAL}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{NXEVAL}}\ge 1$.
${\mathbf{IFAIL}}=7$
On entry, ${\mathbf{NYEVAL}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{NYEVAL}}\ge 1$.
${\mathbf{IFAIL}}=9$
Option arrays are not initialized or are corrupted.
${\mathbf{IFAIL}}=10$
The fitting routine has not been called, or the array of coefficients has been corrupted.
${\mathbf{IFAIL}}=13$
On entry, ${\mathbf{XEVALM}}\left(⟨\mathit{\text{value}}⟩\right)=⟨\mathit{\text{value}}⟩$ was outside the bounding box.
Constraint: $⟨\mathit{\text{value}}⟩\le {\mathbf{XEVALM}}\left(i\right)\le ⟨\mathit{\text{value}}⟩$ for all $i$.
${\mathbf{IFAIL}}=14$
On entry, ${\mathbf{YEVALM}}\left(⟨\mathit{\text{value}}⟩\right)=⟨\mathit{\text{value}}⟩$ was outside the bounding box.
Constraint: $⟨\mathit{\text{value}}⟩\le {\mathbf{YEVALM}}\left(j\right)\le ⟨\mathit{\text{value}}⟩$ for all $j$.
${\mathbf{IFAIL}}=-999$
Dynamic memory allocation failed.

## 7  Accuracy

E02JFF uses the de Casteljau algorithm and thus is numerically stable. See Farin and Hansford (2000) for details.

A real array of length $\mathit{O}\left(1\right)$ is dynamically allocated by each invocation of E02JFF.