﻿ s15ag Method
s15ag returns the value of the scaled complementary error function $\mathrm{erfcx}\left(x\right)$.

Syntax

C#
```public static double s15ag(
double x,
out int ifail
)```
Visual Basic
```Public Shared Function s15ag ( _
x As Double, _
<OutAttribute> ByRef ifail As Integer _
) As Double```
Visual C++
```public:
static double s15ag(
double x,
[OutAttribute] int% ifail
)```
F#
```static member s15ag :
x : float *
ifail : int byref -> float
```

Parameters

x
Type: System..::..Double
On entry: the argument $x$ of the function.
ifail
Type: System..::..Int32%
On exit: ${\mathbf{ifail}}={0}$ unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

Return Value

s15ag returns the value of the scaled complementary error function $\mathrm{erfcx}\left(x\right)$.

Description

s15ag calculates an approximate value for the scaled complementary error function
 $erfcxx=ex2erfcx=2πex2∫x∞e-t2dt=ex21-erfx.$
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 $\left|x\right|\le \stackrel{^}{x}$ the value of $\mathrm{erfcx}\left(x\right)$ is based on the following rational Chebyshev expansion for $\mathrm{erf}\left(x\right)$:
 $erfx≈xRℓ,mx2,$
where ${R}_{\ell ,m}$ denotes a rational function of degree $\ell$ in the numerator and $m$ in the denominator.
For $\left|x\right|>\stackrel{^}{x}$ the value of $\mathrm{erfcx}\left(x\right)$ is based on a rational Chebyshev expansion for $\mathrm{erfc}\left(x\right)$: for $\stackrel{^}{x}<\left|x\right|\le 4$ the value is based on the expansion
 $erfcx≈ex2Rℓ,mx;$
and for $\left|x\right|>4$ it is based on the expansion
 $erfcx≈ex2x1π+1x2Rℓ,m1/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 x02be).
Asymptotically, $\mathrm{erfcx}\left(x\right)\sim 1/\left(\sqrt{\pi }\left|x\right|\right)$. There is a danger of setting underflow in $\mathrm{erfcx}\left(x\right)$ whenever $x\ge {x}_{\mathrm{hi}}=\mathrm{min}\phantom{\rule{0.125em}{0ex}}\left({x}_{\mathrm{huge}},1/\left(\sqrt{\pi }{x}_{\mathrm{tiny}}\right)\right)$, where ${x}_{\mathrm{huge}}$ is the largest positive model number (see x02al) and ${x}_{\mathrm{tiny}}$ is the smallest positive model number (see x02ak). In this case s15ag exits with ${\mathbf{ifail}}={1}$ and returns $\mathrm{erfcx}\left(x\right)=0$. For $x$ in the range $1/\left(2\sqrt{\epsilon }\right)\le x<{x}_{\mathrm{hi}}$, where $\epsilon$ is the machine precision, the asymptotic value $1/\left(\sqrt{\pi }\left|x\right|\right)$ is returned for $\mathrm{erfcx}\left(x\right)$ and s15ag exits with ${\mathbf{ifail}}={2}$.
There is a danger of setting overflow in ${e}^{{x}^{2}}$ whenever $x<{x}_{\mathrm{neg}}=-\sqrt{\mathrm{log}\left({x}_{\mathrm{huge}}/2\right)}$. In this case s15ag exits with ${\mathbf{ifail}}={3}$ and returns $\mathrm{erfcx}\left(x\right)={x}_{\mathrm{huge}}$.
The values of ${x}_{\mathrm{hi}}$, $1/\left(2\sqrt{\epsilon }\right)$ and ${x}_{\mathrm{neg}}$ are given in the Users' Note for your implementation.

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

Error Indicators and Warnings

Note: s15ag may return useful information for one or more of the following detected errors or warnings.
Errors or warnings detected by the method:
${\mathbf{ifail}}=1$
On entry, ${\mathbf{x}}\ge {x}_{\mathrm{hi}}$ (see [Description]). On failure the function value returned is $0$.
${\mathbf{ifail}}=2$
On entry, $1/\left(2\sqrt{\epsilon }\right)\le {\mathbf{x}}<{x}_{\mathrm{hi}}$ (see [Description]). On failure the function value returned is $1/\left(\sqrt{\pi }\mathrm{abs}\left({\mathbf{x}}\right)\right)$.
${\mathbf{ifail}}=3$
On entry, ${\mathbf{x}}<{x}_{\mathrm{neg}}$ (see [Description]). On failure the function value returned is the largest positive model number.
${\mathbf{ifail}}=-9000$
An error occured, see message report.

Accuracy

The relative error in computing $\mathrm{erfcx}\left(x\right)$ may be estimated by evaluating
 $E=erfcxx-ex2∑n=1∞Inerfcxerfcxx,$
where ${I}^{n}$ denotes repeated integration. Empirical results suggest that on the interval $\left(\stackrel{^}{x},2\right)$ the loss in base $b$ significant digits for maximum relative error is around $3.3$, while for root-mean-square relative error on that interval it is $1.2$ (see x02bh for the definition of the model parameter $b$). On the interval $\left(2,20\right)$ the values are around $3.5$ for maximum and $0.45$ for root-mean-square relative errors; note that on these two intervals $\mathrm{erfc}\left(x\right)$ is the primary computation. See also [Accuracy] in s15ad.

None.

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.

Example program (C#): s15age.cs

Example program data: s15age.d

Example program results: s15age.r