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

## Purpose

nag_specfun_erfc_real (s15ad) returns the value of the complementary error function, erfc(x)$\mathrm{erfc}\left(x\right)$, via the function name.

## Syntax

[result, ifail] = nag_specfun_erfc_real(x)

## Description

nag_specfun_erfc_real (s15ad) calculates an approximate value for the complement of the error function
 ∞ erfc(x) = 2/(sqrt(π)) ∫ e − t2dt = 1 − erf(x). x
$erfc(x)=2π∫x∞e-t2dt=1-erf(x).$
Let $\stackrel{^}{x}$ be the root of the equation erfc(x)erf(x) = 0$\mathrm{erfc}\left(x\right)-\mathrm{erf}\left(x\right)=0$ (then 0.46875$\stackrel{^}{x}\approx 0.46875$). For |x|$|x|\le \stackrel{^}{x}$ the value of erfc(x)$\mathrm{erfc}\left(x\right)$ is based on the following rational Chebyshev expansion for erf(x)$\mathrm{erf}\left(x\right)$:
 erf(x) ≈ xRℓ,m(x2), $erf(x)≈xRℓ,m(x2),$
where R,m${R}_{\ell ,m}$ denotes a rational function of degree $\ell$ in the numerator and m$m$ in the denominator.
For |x| > $|x|>\stackrel{^}{x}$ the value of erfc(x)$\mathrm{erfc}\left(x\right)$ is based on a rational Chebyshev expansion for erfc(x)$\mathrm{erfc}\left(x\right)$: for < |x|4$\stackrel{^}{x}<|x|\le 4$ the value is based on the expansion
 erfc(x) ≈ ex2Rℓ,m(x); $erfc(x)≈ex2Rℓ,m(x);$
and for |x| > 4$|x|>4$ it is based on the expansion
 erfc(x) ≈ (ex2)/x(1/(sqrt(π)) + 1/(x2)Rℓ,m(1 / x2)). $erfc(x)≈ex2x(1π+1x2Rℓ,m(1/x2)).$
For each expansion, the specific values of $\ell$ and m$m$ are selected to be minimal such that the maximum relative error in the expansion is of the order 10d${10}^{-d}$, where d$d$ is the maximum number of decimal digits that can be accurately represented for the particular implementation (see nag_machine_decimal_digits (x02be)).
For |x|xhi$|x|\ge {x}_{\mathrm{hi}}$ there is a danger of setting underflow in erfc(x)$\mathrm{erfc}\left(x\right)$. For xxhi$x\ge {x}_{\mathrm{hi}}$, nag_specfun_erfc_real (s15ad) returns erfc(x) = 0$\mathrm{erfc}\left(x\right)=0$; for xxhi$x\le -{x}_{\mathrm{hi}}$ it returns erfc(x) = 2$\mathrm{erfc}\left(x\right)=2$.

## References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications
Cody W J (1969) Rational Chebyshev approximations for the error function Math.Comp. 23 631–637

## Parameters

### Compulsory Input Parameters

1:     x – double scalar
The argument x$x$ of the function.

None.

None.

### Output Parameters

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

## Error Indicators and Warnings

There are no failure exits from nag_specfun_erfc_real (s15ad). The parameter ifail has been included for consistency with other functions in this chapter.

## Accuracy

If δ$\delta$ and ε$\epsilon$ are relative errors in the argument and result, respectively, then in principle
 |ε| ≃ |( 2x e − x2 )/(sqrt(π)erfc(x))δ| . $|ε|≃ | 2x e -x2 πerfc(x) δ | .$
That is, the relative error in the argument, x$x$, is amplified by a factor (2xex2)/(sqrt(π)erfc(x)) $\frac{2x{e}^{-{x}^{2}}}{\sqrt{\pi }\mathrm{erfc}\left(x\right)}$ in the result.
The behaviour of this factor is shown in Figure 1.
Figure 1
It should be noted that near x = 0$x=0$ this factor behaves as (2x)/(sqrt(π)) $\frac{2x}{\sqrt{\pi }}$ and hence the accuracy is largely determined by the machine precision. Also for large negative x$x$, where the factor is (xex2)/(sqrt(π)) $\text{}\sim \frac{x{e}^{-{x}^{2}}}{\sqrt{\pi }}$, accuracy is mainly limited by machine precision. However, for large positive x$x$, the factor becomes 2x2$\text{}\sim 2{x}^{2}$ and to an extent relative accuracy is necessarily lost. The absolute accuracy E$E$ is given by
 E ≃ (2xe − x2)/(sqrt(π))δ $E≃2xe-x2πδ$
so absolute accuracy is guaranteed for all x$x$.

None.

## Example

function nag_specfun_erfc_real_example
x = -10;
[result, ifail] = nag_specfun_erfc_real(x)

result =

2

ifail =

0

x = -10;

result =

2

ifail =

0