Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

Chapter Contents
Chapter Introduction
NAG Toolbox

# NAG Toolbox: nag_specfun_tanh (s10aa)

## Purpose

nag_specfun_tanh (s10aa) returns a value for the hyperbolic tangent, $\mathrm{tanh}x$, via the function name.

## Syntax

[result, ifail] = s10aa(x)
[result, ifail] = nag_specfun_tanh(x)

## Description

nag_specfun_tanh (s10aa) calculates an approximate value for the hyperbolic tangent of its argument, $\mathrm{tanh}x$.
For $\left|x\right|\le 1$ it is based on the Chebyshev expansion
 $tanh⁡x=x×yt=x∑′r=0arTrt$
where $-1\le x\le 1\text{, }-1\le t\le 1\text{, and }t=2{x}^{2}-1$.
For $1<\left|x\right|<{E}_{1}$
 $tanh⁡x=e2x-1 e2x+1 .$
For $\left|x\right|\ge {E}_{1}$, $\mathrm{tanh}x=\mathrm{sign}x$ to within the representation accuracy of the machine and so this approximation is used.

## References

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

## Parameters

### Compulsory Input Parameters

1:     $\mathrm{x}$ – double scalar
The argument $x$ of the function.

None.

### Output Parameters

1:     $\mathrm{result}$ – double scalar
The result of the function.
2:     $\mathrm{ifail}$int64int32nag_int scalar
${\mathbf{ifail}}={\mathbf{0}}$ unless the function detects an error (see Error Indicators and Warnings).

None.

## Accuracy

If $\delta$ and $\epsilon$ are the relative errors in the argument and the result respectively, then in principle,
 $ε≃ 2x sinh⁡2x δ .$
That is, a relative error in the argument, $x$, is amplified by a factor approximately $\frac{2x}{\mathrm{sinh}2x}$, in the result.
The equality should hold if $\delta$ is greater than the machine precision ($\delta$ due to data errors etc.) but if $\delta$ is due simply to the round-off in the machine representation it is possible that an extra figure may be lost in internal calculation round-off.
The behaviour of the amplification factor is shown in the following graph:
Figure 1
It should be noted that this factor is always less than or equal to $1.0$ and away from $x=0$ the accuracy will eventually be limited entirely by the precision of machine representation.

None.

## Example

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

fprintf('s10aa example results\n\n');

x = [20.0  -5.0    0.5     5.0];
n = size(x,2);
result = x;

for j=1:n
[result(j), ifail] = s10aa(x(j));
end

disp('      x         tanh(x)');
fprintf('%12.3e%12.3e\n',[x; result]);

```
```s10aa example results

x         tanh(x)
2.000e+01   1.000e+00
-5.000e+00  -9.999e-01
5.000e-01   4.621e-01
5.000e+00   9.999e-01
```