nag_bessel_y1 (s17adc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_bessel_y1 (s17adc)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_bessel_y1 (s17adc) returns the value of the Bessel function Y 1 x .

2  Specification

#include <nag.h>
#include <nags.h>
double  nag_bessel_y1 (double x, NagError *fail)

3  Description

nag_bessel_y1 (s17adc) evaluates the Bessel function of the second kind, Y 1 , x>0 .
The approximation is based on Chebyshev expansions.
For x  near zero, Y 1 x -2 / π x . This approximation is used when x  is sufficiently small for the result to be correct to machine precision. For extremely small x , there is a danger of overflow in calculating -2 / π x  and for such arguments the function will fail.
For very large x , it becomes impossible to provide results with any reasonable accuracy (see Section 8), hence the function fails. Such arguments contain insufficient information to determine the phase of oscillation of Y 1 x , only the amplitude, 2 / π x , can be determined and this is returned. The range for which this occurs is roughly related to machine precision; the function will fail if x1 / machine precision.

4  References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications
Clenshaw C W (1962) Chebyshev Series for Mathematical Functions Mathematical tables HMSO

5  Arguments

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

6  Error Indicators and Warnings

On entry, x=value.
Constraint: xvalue.
x is too large, the function returns the amplitude of the Y 1  oscillation, 2 / π x .
On entry, x must not be less than or equal to 0.0: x=value .
Y 1  is undefined, the function returns zero.
On entry, x must be greater than value: x=value .
x is too close to zero, there is a danger of overflow, the function returns the value of Y 1 x  at the smallest valid argument.

7  Accuracy

Let δ  be the relative error in the argument and E  be the absolute error in the result. (Since Y 1 x  oscillates about zero, absolute error and not relative error is significant, except for very small x .)
If δ  is somewhat larger than the machine precision (e.g., if δ  is due to data errors etc.), then E  and δ  are approximately related by: E xY 0 x - Y 1 x δ  (provided E  is also within machine bounds).
However, if δ  is of the same order as machine precision, then rounding errors could make E  slightly larger than the above relation predicts.
For very small x , absolute error becomes large, but the relative error in the result is of the same order as δ .
For very large x , the above relation ceases to apply. In this region, Y 1 x 2 sin x - 3 π / 4 / π x . The amplitude 2 / π x  can be calculated with reasonable accuracy for all x , but sin x - 3 π / 4  cannot. If x - 3 π / 4  is written as 2 N π + θ  where N  is an integer and 0 θ < 2 π , then sin x - 3 π / 4  is determined by θ  only. If x > δ -1 , θ  cannot be determined with any accuracy at all. Thus if x  is greater than, or of the order of, the inverse of the machine precision, it is impossible to calculate the phase of Y 1 x  and the function must fail.

8  Further Comments


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 (s17adce.c)

9.2  Program Data

Program Data (s17adce.d)

9.3  Program Results

Program Results (s17adce.r)

nag_bessel_y1 (s17adc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012