NAG Library Routine Document

s15adf (erfc_real)


    1  Purpose
    7  Accuracy


s15adf returns the value of the complementary error function, erfcx, via the function name.


Fortran Interface
Function s15adf ( x, ifail)
Real (Kind=nag_wp):: s15adf
Integer, Intent (Inout):: ifail
Real (Kind=nag_wp), Intent (In):: x
C Header Interface
#include nagmk26.h
double  s15adf_ (const double *x, Integer *ifail)


s15adf calculates an approximate value for the complement of the error function
Let x^ be the root of the equation erfcx-erfx=0 (then x^0.46875). For xx^ the value of erfcx is based on the following rational Chebyshev expansion for erfx:
where R,m denotes a rational function of degree  in the numerator and m in the denominator.
For x>x^ the value of erfcx is based on a rational Chebyshev expansion for erfcx: for x^<x4 the value is based on the expansion
and for x>4 it is based on the expansion
For each expansion, the specific values of  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 x02bef).
For xxhi there is a danger of setting underflow in erfcx (the value of xhi is given in the Users' Note for your implementation). For xxhi, s15adf returns erfcx=0; for x-xhi it returns erfcx=2.


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


1:     x – Real (Kind=nag_wp)Input
On entry: the argument x of the function.
2:     ifail – IntegerInput/Output
On entry: ifail must be set to 0, -1​ or ​1. If you are unfamiliar with this argument you should refer to Section 3.4 in How to Use the NAG Library and its Documentation for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value -1​ or ​1 is recommended. If the output of error messages is undesirable, then the value 1 is recommended. Otherwise, if you are not familiar with this argument, the recommended value is 0. When the value -1​ or ​1 is used it is essential to test the value of ifail on exit.
On exit: ifail=0 unless the routine detects an error or a warning has been flagged (see Section 6).

Error Indicators and Warnings

There are no failure exits from s15adf. The argument ifail has been included for consistency with other routines in this chapter.


If δ and ε are relative errors in the argument and result, respectively, then in principle
ε 2x e -x2 πerfcx δ .  
That is, the relative error in the argument, x, is amplified by a factor 2xe-x2 πerfcx  in the result.
The behaviour of this factor is shown in Figure 1.
Figure 1
Figure 1
It should be noted that near x=0 this factor behaves as 2xπ  and hence the accuracy is largely determined by the machine precision. Also for large negative x, where the factor is xe-x2π , accuracy is mainly limited by machine precision. However, for large positive x, the factor becomes 2x2 and to an extent relative accuracy is necessarily lost. The absolute accuracy E is given by
so absolute accuracy is guaranteed for all x.

Parallelism and Performance

s15adf is not threaded in any implementation.

Further Comments



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

Program Text

Program Text (s15adfe.f90)

Program Data

Program Data (s15adfe.d)

Program Results

Program Results (s15adfe.r)

© The Numerical Algorithms Group Ltd, Oxford, UK. 2017