# NAG CL Interfaced02uwc (bvp_​ps_​lin_​grid_​vals)

## 1Purpose

d02uwc interpolates from a set of function values on a supplied grid onto a set of values for a uniform grid on the same range. The interpolation is performed using barycentric Lagrange interpolation. d02uwc is primarily a utility function to map a set of function values specified on a Chebyshev Gauss–Lobatto grid onto a uniform grid.

## 2Specification

 #include
 void d02uwc (Integer n, Integer nip, const double x[], const double f[], double xip[], double fip[], NagError *fail)
The function may be called by the names: d02uwc or nag_ode_bvp_ps_lin_grid_vals.

## 3Description

d02uwc interpolates from a set of $n+1$ function values, $f\left({x}_{\mathit{i}}\right)$, on a supplied grid, ${x}_{\mathit{i}}$, for $\mathit{i}=0,1,\dots ,n$, onto a set of $m$ values, $\stackrel{^}{f}\left({\stackrel{^}{x}}_{\mathit{j}}\right)$, on a uniform grid, ${\stackrel{^}{x}}_{\mathit{j}}$, for $\mathit{j}=1,2,\dots ,m$. The image $\stackrel{^}{x}$ has the same range as $x$, so that ${\stackrel{^}{x}}_{\mathit{j}}={x}_{\mathrm{min}}+\left(\left(\mathit{j}-1\right)/\left(m-1\right)\right)×\left({x}_{\mathrm{max}}-{x}_{\mathrm{min}}\right)$, for $\mathit{j}=1,2,\dots ,m$. The interpolation is performed using barycentric Lagrange interpolation as described in Berrut and Trefethen (2004).
d02uwc is primarily a utility function to map a set of function values specified on a Chebyshev Gauss–Lobatto grid computed by d02ucc onto an evenly-spaced grid with the same range as the original grid.

## 4References

Berrut J P and Trefethen L N (2004) Barycentric lagrange interpolation SIAM Rev. 46(3) 501–517

## 5Arguments

1: $\mathbf{n}$Integer Input
On entry: $n$, where the number of grid points for the input data is $n+1$.
Constraint: ${\mathbf{n}}>0$ and n is even.
2: $\mathbf{nip}$Integer Input
On entry: the number, $m$, of grid points in the uniform mesh $\stackrel{^}{x}$ onto which function values are interpolated. If ${\mathbf{nip}}=1$ then on successful exit from d02uwc, ${\mathbf{fip}}\left[0\right]$ will contain the value $f\left({x}_{n}\right)$.
Constraint: ${\mathbf{nip}}>0$.
3: $\mathbf{x}\left[{\mathbf{n}}+1\right]$const double Input
On entry: the grid points, ${x}_{\mathit{i}}$, for $\mathit{i}=0,1,\dots ,n$, at which the function is specified.
Usually this should be the array of Chebyshev Gauss–Lobatto points returned in d02ucc.
4: $\mathbf{f}\left[{\mathbf{n}}+1\right]$const double Input
On entry: the function values, $f\left({x}_{\mathit{i}}\right)$, for $\mathit{i}=0,1,\dots ,n$.
5: $\mathbf{xip}\left[{\mathbf{nip}}\right]$double Output
On exit: the evenly-spaced grid points, ${\stackrel{^}{x}}_{\mathit{j}}$, for $\mathit{j}=1,2,\dots ,m$.
6: $\mathbf{fip}\left[{\mathbf{nip}}\right]$double Output
On exit: the set of interpolated values $\stackrel{^}{f}\left({\stackrel{^}{x}}_{\mathit{j}}\right)$, for $\mathit{j}=1,2,\dots ,m$. Here $\stackrel{^}{f}\left({\stackrel{^}{x}}_{\mathit{j}}\right)\approx f\left(x={\stackrel{^}{x}}_{\mathit{j}}\right)$.
7: $\mathbf{fail}$NagError * Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).

## 6Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 3.1.2 in the Introduction to the NAG Library CL Interface for further information.
On entry, argument $〈\mathit{\text{value}}〉$ had an illegal value.
NE_INT
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}>0$.
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: n is even.
On entry, ${\mathbf{nip}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{nip}}>0$.
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.
See Section 7.5 in the Introduction to the NAG Library CL Interface for further information.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library CL Interface for further information.

## 7Accuracy

d02uwc is intended, primarily, for use with Chebyshev Gauss–Lobatto input grids. For such input grids and for well-behaved functions (no discontinuities, peaks or cusps), the accuracy should be a small multiple of machine precision.

## 8Parallelism and Performance

d02uwc is not threaded in any implementation.

None.

## 10Example

This example interpolates the function $x+\mathrm{cos}\left(5x\right)$, as specified on a $65$-point Gauss–Lobatto grid on $\left[-1,1\right]$, onto a coarse uniform grid.

### 10.1Program Text

Program Text (d02uwce.c)

### 10.2Program Data

Program Data (d02uwce.d)

### 10.3Program Results

Program Results (d02uwce.r)