nag_bessel_k0 (s18acc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual

NAG Library Function Document

nag_bessel_k0 (s18acc)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_bessel_k0 (s18acc) returns the value of the modified Bessel function K0x.

2  Specification

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

3  Description

nag_bessel_k0 (s18acc) evaluates an approximation to the modified Bessel function of the second kind K0x.
Note:  K0x is undefined for x0 and the function will fail for such arguments.
The function is based on five Chebyshev expansions:
For 0<x1,
K0x=-lnxr=0arTrt+r=0brTrt,   where ​t=2x2-1.
For 1<x2,
K0x=e-xr=0crTrt,   where ​t=2x-3.
For 2<x4,
K0x=e-xr=0drTrt,   where ​t=x-3.
For x>4,
K0x=e-xx r=0erTrt,where ​ t=9-x 1+x .
For x near zero, K0x-γ-ln x2 , where γ denotes Euler's constant. This approximation is used when x is sufficiently small for the result to be correct to machine precision.
For large x, where there is a danger of underflow due to the smallness of K0, the result is set exactly to zero.

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.
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

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_REAL_ARG_LE
On entry, x=value.
Constraint: x>0.0.
K0 is undefined and the function returns zero.

7  Accuracy

Let δ and ε be the relative errors in the argument and result respectively.
If δ is somewhat larger than the machine precision (i.e., if δ is due to data errors etc.), then ε and δ are approximately related by:
ε x K1 x K0 x δ.
Figure 1 shows the behaviour of the error amplification factor
x K1x K0 x .
However, if δ is of the same order as machine precision, then rounding errors could make ε slightly larger than the above relation predicts.
For small x, the amplification factor is approximately 1lnx , which implies strong attenuation of the error, but in general ε can never be less than the machine precision.
For large x, εxδ and we have strong amplification of the relative error. Eventually K0, which is asymptotically given by e-xx , becomes so small that it cannot be calculated without underflow and hence the function will return zero. Note that for large x the errors will be dominated by those of the standard math library function exp.
Figure 1
Figure 1

8  Parallelism and Performance

Not applicable.

9  Further Comments

None.

10  Example

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

10.1  Program Text

Program Text (s18acce.c)

10.2  Program Data

Program Data (s18acce.d)

10.3  Program Results

Program Results (s18acce.r)

Produced by GNUPLOT 4.4 patchlevel 0 0 0.5 1 1.5 2 2.5 3 3.5 4 0 0.5 1 1.5 2 2.5 3 3.5 4 K0(x) x Example Program Returned Values for the Bessel Function K0(x)

nag_bessel_k0 (s18acc) (PDF version)
s Chapter Contents
s Chapter Introduction
NAG Library Manual

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