nag_complex_airy_bi (s17dhc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual

# NAG Library Function Documentnag_complex_airy_bi (s17dhc)

## 1  Purpose

nag_complex_airy_bi (s17dhc) returns the value of the Airy function $\mathrm{Bi}\left(z\right)$ or its derivative ${\mathrm{Bi}}^{\prime }\left(z\right)$ for complex $z$, with an option for exponential scaling.

## 2  Specification

 #include #include
 void nag_complex_airy_bi (Nag_FunType deriv, Complex z, Nag_ScaleResType scal, Complex *bi, NagError *fail)

## 3  Description

nag_complex_airy_bi (s17dhc) returns a value for the Airy function $\mathrm{Bi}\left(z\right)$ or its derivative ${\mathrm{Bi}}^{\prime }\left(z\right)$, where $z$ is complex, $-\pi <\mathrm{arg}z\le \pi$. Optionally, the value is scaled by the factor ${e}^{\left|\mathrm{Re}\left(2z\sqrt{z}/3\right)\right|}$.
The function is derived from the function CBIRY in Amos (1986). It is based on the relations $\mathrm{Bi}\left(z\right)=\frac{\sqrt{z}}{\sqrt{3}}\left({I}_{-1/3}\left(w\right)+{I}_{1/3}\left(w\right)\right)$, and ${\mathrm{Bi}}^{\prime }\left(z\right)=\frac{z}{\sqrt{3}}\left({I}_{-2/3}\left(w\right)+{I}_{2/3}\left(w\right)\right)$, where ${I}_{\nu }$ is the modified Bessel function and $w=2z\sqrt{z}/3$.
For very large $\left|z\right|$, argument reduction will cause total loss of accuracy, and so no computation is performed. For slightly smaller $\left|z\right|$, the computation is performed but results are accurate to less than half of machine precision. If $\mathrm{Re}\left(z\right)$ is too large, and the unscaled function is required, there is a risk of overflow and so no computation is performed. In all the above cases, a warning is given by the function.
Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications
Amos D E (1986) Algorithm 644: A portable package for Bessel functions of a complex argument and non-negative order ACM Trans. Math. Software 12 265–273

## 5  Arguments

1:     derivNag_FunTypeInput
On entry: specifies whether the function or its derivative is required.
${\mathbf{deriv}}=\mathrm{Nag_Function}$
$\mathrm{Bi}\left(z\right)$ is returned.
${\mathbf{deriv}}=\mathrm{Nag_Deriv}$
${\mathrm{Bi}}^{\prime }\left(z\right)$ is returned.
Constraint: ${\mathbf{deriv}}=\mathrm{Nag_Function}$ or $\mathrm{Nag_Deriv}$.
2:     zComplexInput
On entry: the argument $z$ of the function.
3:     scalNag_ScaleResTypeInput
On entry: the scaling option.
${\mathbf{scal}}=\mathrm{Nag_UnscaleRes}$
The result is returned unscaled.
${\mathbf{scal}}=\mathrm{Nag_ScaleRes}$
The result is returned scaled by the factor ${e}^{\left|\mathrm{Re}\left(2z\sqrt{z}/3\right)\right|}$.
Constraint: ${\mathbf{scal}}=\mathrm{Nag_UnscaleRes}$ or $\mathrm{Nag_ScaleRes}$.
4:     biComplex *Output
On exit: the required function or derivative value.
5:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_BAD_PARAM
On entry, argument $⟨\mathit{\text{value}}⟩$ had an illegal value.
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.
NE_OVERFLOW_LIKELY
No computation because ${\mathbf{z}}\mathbf{.}\mathbf{re}=⟨\mathit{\text{value}}⟩$ is too large when ${\mathbf{scal}}=\mathrm{Nag_UnscaleRes}$.
NE_TERMINATION_FAILURE
No computation – algorithm termination condition not met.
NE_TOTAL_PRECISION_LOSS
No computation because $\left|{\mathbf{z}}\right|=⟨\mathit{\text{value}}⟩>⟨\mathit{\text{value}}⟩$.
NW_SOME_PRECISION_LOSS
Results lack precision because $\left|{\mathbf{z}}\right|=⟨\mathit{\text{value}}⟩>⟨\mathit{\text{value}}⟩$.

## 7  Accuracy

All constants in nag_complex_airy_bi (s17dhc) are given to approximately $18$ digits of precision. Calling the number of digits of precision in the floating-point arithmetic being used $t$, then clearly the maximum number of correct digits in the results obtained is limited by $p=\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left(t,18\right)$. Because of errors in argument reduction when computing elementary functions inside nag_complex_airy_bi (s17dhc), the actual number of correct digits is limited, in general, by $p-s$, where $s\approx \mathrm{max}\phantom{\rule{0.125em}{0ex}}\left(1,\left|{\mathrm{log}}_{10}\left|z\right|\right|\right)$ represents the number of digits lost due to the argument reduction. Thus the larger the value of $\left|z\right|$, the less the precision in the result.
Empirical tests with modest values of $z$, checking relations between Airy functions $\mathrm{Ai}\left(z\right)$, ${\mathrm{Ai}}^{\prime }\left(z\right)$, $\mathrm{Bi}\left(z\right)$ and ${\mathrm{Bi}}^{\prime }\left(z\right)$, have shown errors limited to the least significant $3$ – $4$ digits of precision.

Not applicable.

## 9  Further Comments

Note that if the function is required to operate on a real argument only, then it may be much cheaper to call nag_airy_bi (s17ahc) or nag_airy_bi_deriv (s17akc).

## 10  Example

This example prints a caption and then proceeds to read sets of data from the input data stream. The first datum is a value for the argument deriv, the second is a complex value for the argument, z, and the third is a character value used as a flag to set the argument scal. The program calls the function and prints the results. The process is repeated until the end of the input data stream is encountered.

### 10.1  Program Text

Program Text (s17dhce.c)

### 10.2  Program Data

Program Data (s17dhce.d)

### 10.3  Program Results

Program Results (s17dhce.r)

nag_complex_airy_bi (s17dhc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual