s Chapter Contents
s Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_kelvin_bei_vector (s19apc)

## 1  Purpose

nag_kelvin_bei_vector (s19apc) returns an array of values for the Kelvin function $\mathrm{bei}x$.

## 2  Specification

 #include #include
 void nag_kelvin_bei_vector (Integer n, const double x[], double f[], Integer ivalid[], NagError *fail)

## 3  Description

nag_kelvin_bei_vector (s19apc) evaluates an approximation to the Kelvin function $\mathrm{bei}{x}_{i}$ for an array of arguments ${x}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,n$.
Note:  $\mathrm{bei}\left(-x\right)=\mathrm{bei}x$, so the approximation need only consider $x\ge 0.0$.
The function is based on several Chebyshev expansions:
For $0\le x\le 5$,
 $bei⁡x = x24 ∑′r=0 ar Tr t , with ​ t=2 x5 4 - 1 ;$
For $x>5$,
 $bei⁡x = e x/2 2πx 1 + 1x a t sin⁡α - 1x b t cos⁡α$
 $+ e x/2 2π x 1 + 1x c t cos⁡β - 1x d t sin⁡β$
where $\alpha =\frac{x}{\sqrt{2}}-\frac{\pi }{8}$, $\beta =\frac{x}{\sqrt{2}}+\frac{\pi }{8}$,
and $a\left(t\right)$, $b\left(t\right)$, $c\left(t\right)$, and $d\left(t\right)$ are expansions in the variable $t=\frac{10}{x}-1$.
When $x$ is sufficiently close to zero, the result is computed as $\mathrm{bei}x=\frac{{x}^{2}}{4}$. If this result would underflow, the result returned is $\mathrm{bei}x=0.0$.
For large $x$, there is a danger of the result being totally inaccurate, as the error amplification factor grows in an essentially exponential manner; therefore the function must fail.

## 4  References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications

## 5  Arguments

1:     nIntegerInput
On entry: $n$, the number of points.
Constraint: ${\mathbf{n}}\ge 0$.
2:     x[n]const doubleInput
On entry: the argument ${x}_{\mathit{i}}$ of the function, for $\mathit{i}=1,2,\dots ,{\mathbf{n}}$.
3:     f[n]doubleOutput
On exit: $\mathrm{bei}{x}_{i}$, the function values.
4:     ivalid[n]IntegerOutput
On exit: ${\mathbf{ivalid}}\left[\mathit{i}-1\right]$ contains the error code for ${x}_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,{\mathbf{n}}$.
${\mathbf{ivalid}}\left[i-1\right]=0$
No error.
${\mathbf{ivalid}}\left[i-1\right]=1$
$\mathrm{abs}\left({x}_{i}\right)$ is too large for an accurate result to be returned. ${\mathbf{f}}\left[\mathit{i}-1\right]$ contains zero. The threshold value is the same as for NE_REAL_ARG_GT in nag_kelvin_bei (s19abc), as defined in the Users' Note for your implementation.
5:     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.
NE_INT
On entry, ${\mathbf{n}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{n}}\ge 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.
NW_IVALID
On entry, at least one value of x was invalid.

## 7  Accuracy

Since the function is oscillatory, the absolute error rather than the relative error is important. Let $E$ be the absolute error in the function, and $\delta$ be the relative error in the argument. If $\delta$ is somewhat larger than the machine precision, then we have:
 $E≃ x2 - ber1⁡x+ bei1⁡x δ$
(provided $E$ is within machine bounds).
For small $x$ the error amplification is insignificant and thus the absolute error is effectively bounded by the machine precision.
For medium and large $x$, the error behaviour is oscillatory and its amplitude grows like $\sqrt{\frac{x}{2\pi }}{e}^{x/\sqrt{2}}$. Therefore it is impossible to calculate the functions with any accuracy when $\sqrt{x}{e}^{x/\sqrt{2}}>\frac{\sqrt{2\pi }}{\delta }$. Note that this value of $x$ is much smaller than the minimum value of $x$ for which the function overflows.

None.

## 9  Example

This example reads values of x from a file, evaluates the function at each value of ${x}_{i}$ and prints the results.

### 9.1  Program Text

Program Text (s19apce.c)

### 9.2  Program Data

Program Data (s19apce.d)

### 9.3  Program Results

Program Results (s19apce.r)