s Chapter Contents
s Chapter Introduction
NAG C Library Manual

NAG Library Function Documentnag_bessel_i0 (s18aec)

1  Purpose

nag_bessel_i0 (s18aec) returns the value of the modified Bessel function ${I}_{0}\left(x\right)$.

2  Specification

 #include #include
 double nag_bessel_i0 (double x, NagError *fail)

3  Description

nag_bessel_i0 (s18aec) evaluates an approximation to the modified Bessel function of the first kind, ${I}_{0}\left(x\right)$.
The function is based on Chebyshev expansions.
For large $x$, the function must fail because of the danger of overflow in calculating ${e}^{x}$.

4  References

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

5  Arguments

1:     xdoubleInput
On entry: the argument $x$ of the function.
2:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_REAL_ARG_GT
On entry, ${\mathbf{x}}=〈\mathit{\text{value}}〉$.
Constraint: $\left|{\mathbf{x}}\right|\le 〈\mathit{\text{value}}〉$.
$\left|{\mathbf{x}}\right|$ is too large and the function returns the approximate value of ${i}_{0}\left(x\right)$ at the nearest valid argument.

7  Accuracy

Let $\delta$ and $\epsilon$ be the relative errors in the argument and result respectively.
If $\delta$ is somewhat larger than the machine precision (i.e., if $\delta$ is due to data errors etc.), then $\epsilon$ and $\delta$ are approximately related by $\epsilon \simeq \left|{xI}_{1}\left(x\right)/{I}_{0}\left(x\right)\right|\delta$.
However, if $\delta$ is of the same order as machine precision, then rounding errors could make $\epsilon$ slightly larger than the above relation predicts.
For small $x$ the amplification factor is approximately ${x}^{2}/2$, which implies strong attenuation of the error, but in general $\epsilon$ can never be less than the machine precision.
For large $x$, $\epsilon \simeq x\delta$ and we have strong amplification of errors. However, the function must fail for quite moderate values of $x$, because ${I}_{0}\left(x\right)$ would overflow; hence in practice the loss of accuracy for large $x$ is not excessive. Note that for large $x$ the errors will be dominated by those of the math library function exp.

None.

9  Example

The following program reads values of the argument $x$ from a file, evaluates the function at each value of $x$ and prints the results.

9.1  Program Text

Program Text (s18aece.c)

9.2  Program Data

Program Data (s18aece.d)

9.3  Program Results

Program Results (s18aece.r)