s Chapter Contents
s Chapter Introduction
NAG C Library Manual

# NAG Library Function Documentnag_complex_erfc (s15ddc)

## 1  Purpose

nag_complex_erfc (s15ddc) computes values of the function $w\left(z\right)={e}^{-{z}^{2}}\mathrm{erfc}\left(-iz\right)$, for Complex $z$.

## 2  Specification

 #include #include
 Complex nag_complex_erfc (Complex z, NagError *fail)

## 3  Description

nag_complex_erfc (s15ddc) computes values of the function $w\left(z\right)={e}^{-{z}^{2}}\mathrm{erfc}\left(-iz\right)$, where $\mathrm{erfc}z$ is the complementary error function
 $erfc⁡z=2π∫z∞e-t2dt,$
for Complex $z$. The method used is that in Gautschi (1970) for $z$ in the first quadrant of the complex plane, and is extended for $z$ in other quadrants via the relations $w\left(-z\right)=2{e}^{-{z}^{2}}-w\left(z\right)$ and $w\left(\overline{z}\right)=\overline{w\left(-z\right)}$. Following advice in Gautschi (1970) and van der Laan and Temme (1984), the code in Gautschi (1969) has been adapted to work in various precisions up to $18$ decimal places. The real part of $w\left(z\right)$ is sometimes known as the Voigt function.

## 4  References

Gautschi W (1969) Algorithm 363: Complex error function Comm. ACM 12 635
Gautschi W (1970) Efficient computation of the complex error function SIAM J. Numer. Anal. 7 187–198
van der Laan C G and Temme N M (1984) Calculation of special functions: the gamma function, the exponential integrals and error-like functions CWI Tract 10 Centre for Mathematics and Computer Science, Amsterdam

## 5  Arguments

1:     zComplexInput
On entry: the argument $z$ of the function.
2:     failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

## 6  Error Indicators and Warnings

NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NE_RESULT_HALF_PRECISION
Result has less than half precision when entered with argument ${\mathbf{z}}=\left(〈\mathit{\text{value}}〉,〈\mathit{\text{value}}〉\right)$.
NE_RESULT_IMAGINARY_OVERFLOW
Imaginary part of result overflows when entered with argument ${\mathbf{z}}=\left(〈\mathit{\text{value}}〉,〈\mathit{\text{value}}〉\right)$.
NE_RESULT_NO_PRECISION
Result has no precision when entered with argument ${\mathbf{z}}=\left(〈\mathit{\text{value}}〉,〈\mathit{\text{value}}〉\right)$.
NE_RESULT_OVERFLOW
Both real and imaginary parts of result overflow when entered with argument ${\mathbf{z}}=\left(〈\mathit{\text{value}}〉,〈\mathit{\text{value}}〉\right)$.
NE_RESULT_REAL_OVERFLOW
Real part of result overflows when entered with argument ${\mathbf{z}}=\left(〈\mathit{\text{value}}〉,〈\mathit{\text{value}}〉\right)$.

## 7  Accuracy

The accuracy of the returned result depends on the argument $z$. If $z$ lies in the first or second quadrant of the complex plane (i.e., $\mathrm{Im}\left(z\right)$ is greater than or equal to zero), the result should be accurate almost to machine precision, except that there is a limit of about $18$ decimal places on the achievable accuracy because constants in the function are given to this precision. With such arguments, fail can only return as NE_NOERROR.
If however $\mathrm{Im}\left(z\right)$ is less than zero, accuracy may be lost in two ways; firstly, in the evaluation of ${e}^{-{z}^{2}}$, if $\mathrm{Im}\left(-{z}^{2}\right)$ is large, in which case a warning will be issued through NE_RESULT_HALF_PRECISION or NE_RESULT_NO_PRECISION; and secondly, near the zeros of the required function, where precision is lost due to cancellation, in which case no warning is given – the result has absolute accuracy rather than relative accuracy. Note also that in this half-plane, one or both parts of the result may overflow – this is signalled through NE_RESULT_IMAGINARY_OVERFLOW, NE_RESULT_OVERFLOW or NE_RESULT_REAL_OVERFLOW.

The time taken for a call of nag_complex_erfc (s15ddc) depends on the argument $z$, the time increasing as $\left|z\right|\to 0.0$.
nag_complex_erfc (s15ddc) may be used to compute values of $\mathrm{erfc}z$ and $\mathrm{erf}z$ for Complex $z$ by the relations $\mathrm{erfc}z={e}^{-{z}^{2}}w\left(iz\right)$, $\mathrm{erf}z=1-\mathrm{erfc}z$. (For double arguments, nag_erfc (s15adc) and nag_erf (s15aec) should be used.)

## 9  Example

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

### 9.1  Program Text

Program Text (s15ddce.c)

### 9.2  Program Data

Program Data (s15ddce.d)

### 9.3  Program Results

Program Results (s15ddce.r)