# NAG FL Interfaces17acf (bessel_​y0_​real)

## ▸▿ Contents

Settings help

FL Name Style:

FL Specification Language:

## 1Purpose

s17acf returns the value of the Bessel function ${Y}_{0}\left(x\right)$, via the function name.

## 2Specification

Fortran Interface
 Function s17acf ( x,
 Real (Kind=nag_wp) :: s17acf Integer, Intent (Inout) :: ifail Real (Kind=nag_wp), Intent (In) :: x
#include <nag.h>
 double s17acf_ (const double *x, Integer *ifail)
The routine may be called by the names s17acf or nagf_specfun_bessel_y0_real.

## 3Description

s17acf evaluates an approximation to the Bessel function of the second kind ${Y}_{0}\left(x\right)$.
Note:  ${Y}_{0}\left(x\right)$ is undefined for $x\le 0$ and the routine will fail for such arguments.
The routine is based on four Chebyshev expansions:
For $0,
 $Y0(x)=2π ln⁡x∑r=0′arTr(t)+∑r=0′brTr(t), with ​t=2 (x8) 2-1.$
For $x>8$,
 $Y0(x)=2πx {P0(x)sin(x-π4)+Q0(x)cos(x-π4)}$
where ${P}_{0}\left(x\right)=\underset{r=0}{{\sum }^{\prime }}\phantom{\rule{0.25em}{0ex}}{c}_{r}{T}_{r}\left(t\right)$,
and ${Q}_{0}\left(x\right)=\frac{8}{x}\underset{r=0}{{\sum }^{\prime }}\phantom{\rule{0.25em}{0ex}}{d}_{r}{T}_{r}\left(t\right),\text{with ​}t=2{\left(\frac{8}{x}\right)}^{2}-1\text{.}$
For $x$ near zero, ${Y}_{0}\left(x\right)\simeq \frac{2}{\pi }\left(\mathrm{ln}\left(\frac{x}{2}\right)+\gamma \right)$, where $\gamma$ denotes Euler's constant. This approximation is used when $x$ is sufficiently small for the result to be correct to machine precision.
For very large $x$, it becomes impossible to provide results with any reasonable accuracy (see Section 7), hence the routine fails. Such arguments contain insufficient information to determine the phase of oscillation of ${Y}_{0}\left(x\right)$; only the amplitude, $\sqrt{\frac{2}{\pi n}}$, can be determined and this is returned on soft failure. The range for which this occurs is roughly related to machine precision; the routine will fail if (see the Users' Note for your implementation for details).

## 4References

NIST Digital Library of Mathematical Functions
Clenshaw C W (1962) Chebyshev Series for Mathematical Functions Mathematical tables HMSO

## 5Arguments

1: $\mathbf{x}$Real (Kind=nag_wp) Input
On entry: the argument $x$ of the function.
Constraint: ${\mathbf{x}}>0.0$.
2: $\mathbf{ifail}$Integer Input/Output
On entry: ifail must be set to $0$, $-1$ or $1$ to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of $0$ causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of $-1$ means that an error message is printed while a value of $1$ means that it is not.
If halting is not appropriate, the value $-1$ or $1$ is recommended. If message printing is undesirable, then the value $1$ is recommended. Otherwise, the value $0$ is recommended. When the value $-\mathbf{1}$ 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).

## 6Error Indicators and Warnings

If on entry ${\mathbf{ifail}}=0$ or $-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}}=1$
On entry, ${\mathbf{x}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{x}}\le ⟨\mathit{\text{value}}⟩$.
x is too large. On soft failure the routine returns the amplitude of the ${Y}_{0}$ oscillation, $\sqrt{2/\left(\pi x\right)}$.
${\mathbf{ifail}}=2$
On entry, ${\mathbf{x}}=⟨\mathit{\text{value}}⟩$.
Constraint: ${\mathbf{x}}>0.0$.
${\mathbf{ifail}}=-99$
See Section 7 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library FL Interface for further information.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.
See Section 9 in the Introduction to the NAG Library FL Interface for further information.

## 7Accuracy

Let $\delta$ be the relative error in the argument and $E$ be the absolute error in the result. (Since ${Y}_{0}\left(x\right)$ oscillates about zero, absolute error and not relative error is significant, except for very small $x$.)
If $\delta$ is somewhat larger than the machine representation error (e.g., if $\delta$ is due to data errors etc.), then $E$ and $\delta$ are approximately related by
 $E≃|xY1(x)|δ$
(provided $E$ is also within machine bounds). Figure 1 displays the behaviour of the amplification factor $|x{Y}_{1}\left(x\right)|$.
However, if $\delta$ is of the same order as the machine representation errors, then rounding errors could make $E$ slightly larger than the above relation predicts.
For very small $x$, the errors are essentially independent of $\delta$ and the routine should provide relative accuracy bounded by the machine precision.
For very large $x$, the above relation ceases to apply. In this region, ${Y}_{0}\left(x\right)\simeq \sqrt{\frac{2}{\pi x}}\mathrm{sin}\left(x-\frac{\pi }{4}\right)$. The amplitude $\sqrt{\frac{2}{\pi x}}$ can be calculated with reasonable accuracy for all $x$, but $\mathrm{sin}\left(x-\frac{\pi }{4}\right)$ cannot. If $x-\frac{\pi }{4}$ is written as $2N\pi +\theta$ where $N$ is an integer and $0\le \theta <2\pi$, then $\mathrm{sin}\left(x-\frac{\pi }{4}\right)$ is determined by $\theta$ only. If $x\gtrsim {\delta }^{-1}$, $\theta$ cannot be determined with any accuracy at all. Thus if $x$ is greater than, or of the order of the inverse of machine precision, it is impossible to calculate the phase of ${Y}_{0}\left(x\right)$ and the routine must fail.

## 8Parallelism and Performance

s17acf is not threaded in any implementation.

None.

## 10Example

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

### 10.1Program Text

Program Text (s17acfe.f90)

### 10.2Program Data

Program Data (s17acfe.d)

### 10.3Program Results

Program Results (s17acfe.r)