# NAG CL Interfaces15aec (erf_​real)

Internal changes have been made to this routine in some implementations at Mark 27.1.1.
This document reflects the updated function. The documentation of the Mark 27.1(.0) implementation is also available here.

Settings help

CL Name Style:

## 1Purpose

s15aec returns the value of the error function $\mathrm{erf}\left(x\right)$.

## 2Specification

 #include
 double s15aec (double x)
The function may be called by the names: s15aec, nag_specfun_erf_real or nag_erf.

## 3Description

s15aec calculates an approximate value for the error function
 $erf(x) = 2π ∫0x e-t2 dt = 1-erfc(x) .$
Unless stated otherwise in the Users' Note, s15aec calls the error function supplied by the compiler used for your implementation; as such, details of the underlying algorithm should be obtained from the documentation supplied by the compiler vendor. The following discussion only applies if the Users' Note for your implementation indicates that the compiler's supplied function was not available.
Let $\stackrel{^}{x}$ be the root of the equation $\mathrm{erfc}\left(x\right)-\mathrm{erf}\left(x\right)=0$ (then $\stackrel{^}{x}\approx 0.46875$). For $|x|\le \stackrel{^}{x}$ the value of $\mathrm{erf}\left(x\right)$ is based on the following rational Chebyshev expansion for $\mathrm{erf}\left(x\right)$:
 $erf(x) ≈ xRℓ,m (x2) ,$
where ${R}_{\ell ,m}$ denotes a rational function of degree $\ell$ in the numerator and $m$ in the denominator.
For $|x|>\stackrel{^}{x}$ the value of $\mathrm{erf}\left(x\right)$ is based on a rational Chebyshev expansion for $\mathrm{erfc}\left(x\right)$: for $\stackrel{^}{x}<|x|\le 4$ the value is based on the expansion
 $erfc(x) ≈ ex2 Rℓ,m (x) ;$
and for $|x|>4$ it is based on the expansion
 $erfc(x) ≈ ex2 x (1π+1x2Rℓ,m(1/x2)) .$
For each expansion, the specific values of $\ell$ and $m$ are selected to be minimal such that the maximum relative error in the expansion is of the order ${10}^{-d}$, where $d$ is the maximum number of decimal digits that can be accurately represented for the particular implementation (see X02BEC).
For $|x|\ge {x}_{\mathrm{hi}}$ there is a danger of setting underflow in $\mathrm{erfc}\left(x\right)$ (the value of ${x}_{\mathrm{hi}}$ is given in the Users' Note for your implementation). For $x\ge {x}_{\mathrm{hi}}$, s15aec returns $\mathrm{erf}\left(x\right)=1$; for $x\le -{x}_{\mathrm{hi}}$ it returns $\mathrm{erf}\left(x\right)=-1$.

## 4References

NIST Digital Library of Mathematical Functions
Cody W J (1969) Rational Chebyshev approximations for the error function Math.Comp. 23 631–637

## 5Arguments

1: $\mathbf{x}$double Input
On entry: the argument $x$ of the function.

None.

## 7Accuracy

See Section 7 in s15adc.

## 8Parallelism and Performance

s15aec is not threaded in any implementation.

## 9Further Comments

### 9.1Internal Changes

Internal changes have been made to this function as follows:
• At Mark 27.1:
Modified to use a compiler-supplied erf function, when available.
For details of all known issues which have been reported for the NAG Library please refer to the Known Issues.

## 10Example

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

### 10.1Program Text

Program Text (s15aece.c)

### 10.2Program Data

Program Data (s15aece.d)

### 10.3Program Results

Program Results (s15aece.r)