nag_bessel_j0 (s17aec) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_bessel_j0 (s17aec)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_bessel_j0 (s17aec) returns the value of the Bessel function J 0 x .

2  Specification

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

3  Description

nag_bessel_j0 (s17aec) evaluates the Bessel function of the first kind, J 0 x .
The approximation is based on Chebyshev expansions.
For x  near zero, J 0 x 1 . 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 8), hence the function fails. Such arguments contain insufficient information to determine the phase of oscillation of J 0 x ; only the amplitude, 2 / π x , can be determined and this is returned. The range for which this occurs is roughly related to the machine precision; the function will fail if x 1 /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.
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 j 0  oscillation, 2 / π x .

7  Accuracy

Let δ  be the relative error in the argument and E  be the absolute error in the result. (Since J 0 x  oscillates about zero, absolute error and not relative error is significant.)
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 x J 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 large x , the above relation ceases to apply. In this region, J 0 x 2 / π x cos x - π / 4 . The amplitude 2 / π x  can be calculated with reasonable accuracy for all x , but cos x - π / 4  cannot. If x - π / 4  is written as 2 N π + θ  where N  is an integer and 0 θ < 2 π , then cos x - π / 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 J 0 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 (s17aece.c)

9.2  Program Data

Program Data (s17aece.d)

9.3  Program Results

Program Results (s17aece.r)

nag_bessel_j0 (s17aec) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG C Library Manual

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