# NAG Library Function Documentnag_kelvin_ker (s19acc)

## 1  Purpose

nag_kelvin_ker (s19acc) returns a value for the Kelvin function $\mathrm{ker}x$.

## 2  Specification

#include <nag.h>
#include <nags.h>

double  nag_kelvin_ker (double x,  NagError *fail)

## 3  Description

nag_kelvin_ker (s19acc) evaluates an approximation to the Kelvin function $\mathrm{ker}x$.
The function is based on several Chebyshev expansions.
For large $x$, $\mathrm{ker}x$ is so small that it cannot be computed without underflow and the function evaluation fails.

## 4  References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications

## 5  Arguments

1:     x – doubleInput
On entry: the argument $x$ of the function.
Constraint: ${\mathbf{x}}>0$.
2:     fail – NagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_REAL_ARG_GT
On entry, ${\mathbf{x}}=〈\mathit{\text{value}}〉$.
Constraint: ${\mathbf{x}}\le 〈\mathit{\text{value}}〉$.
x is too large, the result underflows and the function returns zero.
NE_REAL_ARG_LE
On entry, x must not be less than or equal to 0.0: ${\mathbf{x}}=〈\mathit{\text{value}}〉$.
The function is undefined and returns zero.

## 7  Accuracy

Let $E$ be the absolute error in the result, $\epsilon $ be the relative error in the result and $\delta $ be the relative error in the argument. If $\delta $ is somewhat larger than the machine precision, then we have $E\simeq \left|x\left({\mathrm{ker}}_{1}x+{\mathrm{kei}}_{1}x\right)/\sqrt{2}\right|\delta $, $\epsilon \simeq \left|x\left({\mathrm{ker}}_{1}x+{\mathrm{kei}}_{1}x\right)/\sqrt{2}\mathrm{ker}x\right|\delta $.
For very small $x$, the relative error amplification factor is approximately given by $1/\left|\mathrm{log}x\right|$, which implies a strong attenuation of relative error. However, $\epsilon $ in general cannot be less than the machine precision.
For small $x$, errors are damped by the function and hence are limited by the machine precision.
For medium and large $x$, the error behaviour, like the function itself, is oscillatory, and hence only the absolute accuracy for the function can be maintained. For this range of $x$, the amplitude of the absolute error decays like $\sqrt{\pi x/2}{e}^{-x/\sqrt{2}}$ which implies a strong attenuation of error. Eventually, $\mathrm{ker}x$, which asymptotically behaves like $\sqrt{\pi /2x}{e}^{-x/\sqrt{2}}$, becomes so small that it cannot be calculated without causing underflow, and the function returns zero. Note that for large $x$ the errors are dominated by those of the math library function exp.

## 8  Further Comments

Underflow may occur for a few values of $x$ close to the zeros of $\mathrm{ker}x$, which causes a failure NE_REAL_ARG_GT.

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

### 9.2  Program Data

Program Data (s19acce.d)

### 9.3  Program Results

Program Results (s19acce.r)
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 29, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.3, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.6597682237625122, "perplexity_flag": "middle"}