The error function is used in measurement theory (using probability and statistics), and its use in other branches of mathematics is typically unrelated to the characterization of measurement errors.
In statistics, it is common to have a variable
Y
and its unbiased estimator
Y
^
. The error is then defined as
ε
=
Y
^
−
Y
. This makes the error a normally distributed random variable with mean 0 (because the estimator is unbiased) and some variance
σ
2
; this is written as
ε
∼
N
(
0
,
σ
2
)
. For the case where
σ
2
=
1
2
, i.e. an unbiased error variable
ε
∼
N
(
0
,
1
2
)
, erf(x) describes the probability of the error ε falling in the range [−x, x]; in other words, the probability that the absolute error is no greater than x. This is true for any random variable with distribution
N
(
0
,
1
2
)
; but the application to error variables is how the error function got its name.
The previous paragraph can be generalized to any variance: given a variable (such as an unbiased error variable)
ε
∼
N
(
0
,
σ
2
)
, evaluating the error function at
erf
(
x
σ
⋅
1
2
)
describes the probability of ε falling in the range [−x, x]. This is used in statistics to predict behavior of any sample with respect to the population mean. This usage is similar to the Qfunction, which in fact can be written in terms of the error function.
The complementary error function, denoted erfc, is defined as
erfc
(
x
)
=
1
−
erf
(
x
)
=
2
π
∫
x
∞
e
−
t
2
d
t
=
e
−
x
2
erfcx
(
x
)
,
which also defines erfcx, the scaled complementary error function (which can be used instead of erfc to avoid arithmetic underflow). Another form of
erfc
(
x
)
for nonnegative
x
is known as Craig's formula:
erfc
(
x
∣
x
≥
0
)
=
2
π
∫
0
π
/
2
exp
(
−
x
2
sin
2
θ
)
d
θ
.
The imaginary error function, denoted erfi, is defined as
erfi
(
x
)
=
−
i
erf
(
i
x
)
=
2
π
∫
0
x
e
t
2
d
t
=
2
π
e
x
2
D
(
x
)
,
where D(x) is the Dawson function (which can be used instead of erfi to avoid arithmetic overflow).
Despite the name "imaginary error function",
erfi
(
x
)
is real when x is real.
When the error function is evaluated for arbitrary complex arguments z, the resulting complex error function is usually discussed in scaled form as the Faddeeva function:
w
(
z
)
=
e
−
z
2
erfc
(
−
i
z
)
=
erfcx
(
−
i
z
)
.
The error function is related to the cumulative distribution
Φ
, the integral of the standard normal distribution, by
Φ
(
x
)
=
1
2
+
1
2
erf
(
x
/
2
)
=
1
2
erfc
(
−
x
/
2
)
.
The property
erf
(
−
z
)
=
−
erf
(
z
)
means that the error function is an odd function. This directly results from the fact that the integrand
e
−
t
2
is an even function.
For any complex number z:
erf
(
z
¯
)
=
erf
(
z
)
¯
where
z
¯
is the complex conjugate of z.
The integrand ƒ = exp(−z^{2}) and ƒ = erf(z) are shown in the complex zplane in figures 2 and 3. Level of Im(ƒ) = 0 is shown with a thick green line. Negative integer values of Im(ƒ) are shown with thick red lines. Positive integer values of Im(f) are shown with thick blue lines. Intermediate levels of Im(ƒ) = constant are shown with thin green lines. Intermediate levels of Re(ƒ) = constant are shown with thin red lines for negative values and with thin blue lines for positive values.
The error function at +∞ is exactly 1 (see Gaussian integral). At the real axis, erf(z) approaches unity at z → +∞ and −1 at z → −∞. At the imaginary axis, it tends to ±i∞.
The error function is an entire function; it has no singularities (except that at infinity) and its Taylor expansion always converges.
The defining integral cannot be evaluated in closed form in terms of elementary functions, but by expanding the integrand e^{−z2} into its Maclaurin series and integrating term by term, one obtains the error function's Maclaurin series as:
erf
(
z
)
=
2
π
∑
n
=
0
∞
(
−
1
)
n
z
2
n
+
1
n
!
(
2
n
+
1
)
=
2
π
(
z
−
z
3
3
+
z
5
10
−
z
7
42
+
z
9
216
−
⋯
)
which holds for every complex number z. The denominator terms are sequence A007680 in the OEIS.
For iterative calculation of the above series, the following alternative formulation may be useful:
erf
(
z
)
=
2
π
∑
n
=
0
∞
(
z
∏
k
=
1
n
−
(
2
k
−
1
)
z
2
k
(
2
k
+
1
)
)
=
2
π
∑
n
=
0
∞
z
2
n
+
1
∏
k
=
1
n
−
z
2
k
because
−
(
2
k
−
1
)
z
2
k
(
2
k
+
1
)
expresses the multiplier to turn the k^{th} term into the (k + 1)^{th} term (considering z as the first term).
The imaginary error function has a very similar Maclaurin series, which is:
erfi
(
z
)
=
2
π
∑
n
=
0
∞
z
2
n
+
1
n
!
(
2
n
+
1
)
=
2
π
(
z
+
z
3
3
+
z
5
10
+
z
7
42
+
z
9
216
+
⋯
)
which holds for every complex number z.
The derivative of the error function follows immediately from its definition:
d
d
z
erf
(
z
)
=
2
π
e
−
z
2
.
From this, the derivative of the imaginary error function is also immediate:
d
d
z
erfi
(
z
)
=
2
π
e
z
2
.
An antiderivative of the error function, obtainable by integration by parts, is
z
erf
(
z
)
+
e
−
z
2
π
.
An antiderivative of the imaginary error function, also obtainable by integration by parts, is
z
erfi
(
z
)
−
e
z
2
π
.
Higher order derivatives are given by
erf
(
k
)
(
z
)
=
2
(
−
1
)
k
−
1
π
H
k
−
1
(
z
)
e
−
z
2
=
2
π
d
k
−
1
d
z
k
−
1
(
e
−
z
2
)
,
k
=
1
,
2
,
…
where
H
are the physicists' Hermite polynomials.
An expansion, which converges more rapidly for all real values of
x
than a Taylor expansion, is obtained by using Hans Heinrich Bürmann's theorem:
erf
(
x
)
=
2
π
sgn
(
x
)
1
−
e
−
x
2
(
1
−
1
12
(
1
−
e
−
x
2
)
−
7
480
(
1
−
e
−
x
2
)
2
−
5
896
(
1
−
e
−
x
2
)
3
−
787
276480
(
1
−
e
−
x
2
)
4
−
⋯
)
=
2
π
sgn
(
x
)
1
−
e
−
x
2
(
π
2
+
∑
k
=
1
∞
c
k
e
−
k
x
2
)
.
By keeping only the first two coefficients and choosing
c
1
=
31
200
and
c
2
=
−
341
8000
, the resulting approximation shows its largest relative error at
x
=
±
1.3796
, where it is less than
3.6127
⋅
10
−
3
:
erf
(
x
)
≈
2
π
sgn
(
x
)
1
−
e
−
x
2
(
π
2
+
31
200
e
−
x
2
−
341
8000
e
−
2
x
2
)
.
Given complex number z, there is not a unique complex number w satisfying
erf
(
w
)
=
z
, so a true inverse function would be multivalued. However, for −1 < x < 1, there is a unique real number denoted
erf
−
1
(
x
)
satisfying
erf
(
erf
−
1
(
x
)
)
=
x
.
The inverse error function is usually defined with domain (−1,1), and it is restricted to this domain in many computer algebra systems. However, it can be extended to the disk z < 1 of the complex plane, using the Maclaurin series
erf
−
1
(
z
)
=
∑
k
=
0
∞
c
k
2
k
+
1
(
π
2
z
)
2
k
+
1
,
where c_{0} = 1 and
c
k
=
∑
m
=
0
k
−
1
c
m
c
k
−
1
−
m
(
m
+
1
)
(
2
m
+
1
)
=
{
1
,
1
,
7
6
,
127
90
,
4369
2520
,
34807
16200
,
…
}
.
So we have the series expansion (note that common factors have been canceled from numerators and denominators):
erf
−
1
(
z
)
=
1
2
π
(
z
+
π
12
z
3
+
7
π
2
480
z
5
+
127
π
3
40320
z
7
+
4369
π
4
5806080
z
9
+
34807
π
5
182476800
z
11
+
⋯
)
.
(After cancellation the numerator/denominator fractions are entries A092676/ A132467 in the OEIS; without cancellation the numerator terms are given in entry A002067.) Note that the error function's value at ±∞ is equal to ±1.
For z < 1, we have
erf
(
erf
−
1
(
z
)
)
=
z
.
The inverse complementary error function is defined as
erfc
−
1
(
1
−
z
)
=
erf
−
1
(
z
)
.
For real x, there is a unique real number
erfi
−
1
(
x
)
satisfying
erfi
(
erfi
−
1
(
x
)
)
=
x
. The inverse imaginary error function is defined as
erfi
−
1
(
x
)
.
For any real x, Newton's method can be used to compute
erfi
−
1
(
x
)
, and for
−
1
≤
x
≤
1
, the following Maclaurin series converges:
erfi
−
1
(
z
)
=
∑
k
=
0
∞
(
−
1
)
k
c
k
2
k
+
1
(
π
2
z
)
2
k
+
1
,
where c_{k} is defined as above.
A useful asymptotic expansion of the complementary error function (and therefore also of the error function) for large real x is
erfc
(
x
)
=
e
−
x
2
x
π
[
1
+
∑
n
=
1
∞
(
−
1
)
n
1
⋅
3
⋅
5
⋯
(
2
n
−
1
)
(
2
x
2
)
n
]
=
e
−
x
2
x
π
∑
n
=
0
∞
(
−
1
)
n
(
2
n
−
1
)
!
!
(
2
x
2
)
n
,
where (2n – 1)!! is the double factorial: the product of all odd numbers up to (2n – 1). This series diverges for every finite x, and its meaning as asymptotic expansion is that, for any
N
∈
N
one has
erfc
(
x
)
=
e
−
x
2
x
π
∑
n
=
0
N
−
1
(
−
1
)
n
(
2
n
−
1
)
!
!
(
2
x
2
)
n
+
R
N
(
x
)
where the remainder, in Landau notation, is
R
N
(
x
)
=
O
(
x
1
−
2
N
e
−
x
2
)
as
x
→
∞
.
Indeed, the exact value of the remainder is
R
N
(
x
)
:=
(
−
1
)
N
π
2
1
−
2
N
(
2
N
)
!
N
!
∫
x
∞
t
−
2
N
e
−
t
2
d
t
,
which follows easily by induction, writing
e
−
t
2
=
−
(
2
t
)
−
1
(
e
−
t
2
)
′
and integrating by parts.
For large enough values of x, only the first few terms of this asymptotic expansion are needed to obtain a good approximation of erfc(x) (while for not too large values of x note that the above Taylor expansion at 0 provides a very fast convergence).
A continued fraction expansion of the complementary error function is:
erfc
(
z
)
=
z
π
e
−
z
2
1
z
2
+
a
1
1
+
a
2
z
2
+
a
3
1
+
⋯
a
m
=
m
2
.
erf
[
b
−
a
c
1
+
2
a
2
d
2
]
=
∫
−
∞
∞
d
x
erf
(
a
x
+
b
)
2
π
d
2
exp
[
−
(
x
+
c
)
2
2
d
2
]
,
a
,
b
,
c
,
d
∈
R
Abramowitz and Stegun give several approximations of varying accuracy (equations 7.1.25–28). This allows one to choose the fastest approximation suitable for a given application. In order of increasing accuracy, they are:
erf
(
x
)
≈
1
−
1
(
1
+
a
1
x
+
a
2
x
2
+
a
3
x
3
+
a
4
x
4
)
4
,
x
≥
0
(maximum error: 5×10
^{−4})
where a_{1} = 0.278393, a_{2} = 0.230389, a_{3} = 0.000972, a_{4} = 0.078108
erf
(
x
)
≈
1
−
(
a
1
t
+
a
2
t
2
+
a
3
t
3
)
e
−
x
2
,
t
=
1
1
+
p
x
,
x
≥
0
(maximum error: 2.5×10
^{−5})
where p = 0.47047, a_{1} = 0.3480242, a_{2} = −0.0958798, a_{3} = 0.7478556
erf
(
x
)
≈
1
−
1
(
1
+
a
1
x
+
a
2
x
2
+
⋯
+
a
6
x
6
)
16
,
x
≥
0
(maximum error: 3×10
^{−7})
where a_{1} = 0.0705230784, a_{2} = 0.0422820123, a_{3} = 0.0092705272, a_{4} = 0.0001520143, a_{5} = 0.0002765672, a_{6} = 0.0000430638
erf
(
x
)
≈
1
−
(
a
1
t
+
a
2
t
2
+
⋯
+
a
5
t
5
)
e
−
x
2
,
t
=
1
1
+
p
x
(maximum error: 1.5×10
^{−7})
where p = 0.3275911, a_{1} = 0.254829592, a_{2} = −0.284496736, a_{3} = 1.421413741, a_{4} = −1.453152027, a_{5} = 1.061405429
All of these approximations are valid for x ≥ 0. To use these approximations for negative x, use the fact that erf(x) is an odd function, so erf(x) = −erf(−x).
Another approximation is given by
erf
(
x
)
≈
sgn
(
x
)
1
−
exp
(
−
x
2
4
π
+
a
x
2
1
+
a
x
2
)
where
a
=
8
(
π
−
3
)
3
π
(
4
−
π
)
≈
0.140012.
This is designed to be very accurate in a neighborhood of 0 and a neighborhood of infinity, and the error is less than 0.00035 for all x. Using the alternate value a ≈ 0.147 reduces the maximum error to about 0.00012.
This approximation can also be inverted to calculate the inverse error function:
erf
−
1
(
x
)
≈
sgn
(
x
)
(
2
π
a
+
ln
(
1
−
x
2
)
2
)
2
−
ln
(
1
−
x
2
)
a
−
(
2
π
a
+
ln
(
1
−
x
2
)
2
)
.
Exponential bounds and a pure exponential approximation for the complementary error function are given by
erfc
(
x
)
≤
1
2
e
−
2
x
2
+
1
2
e
−
x
2
≤
e
−
x
2
,
x
>
0
erfc
(
x
)
≈
1
6
e
−
x
2
+
1
2
e
−
4
3
x
2
,
x
>
0
.
A singleterm lower bound is
erfc
(
x
)
≥
2
e
π
β
−
1
β
e
−
β
x
2
,
x
≥
0
,
β
>
1
,
where the parameter β can be picked to minimize error on the desired interval of approximation.
Over the complete range of values, there is an approximation with a maximal error of
1.2
×
10
−
7
, as follows:
erf
(
x
)
=
{
1
−
τ
for
x
≥
0
τ
−
1
for
x
<
0
with
τ
=
t
⋅
exp
(
−
x
2
−
1.26551223
+
1.00002368
t
+
0.37409196
t
2
+
0.09678418
t
3
−
0.18628806
t
4
+
0.27886807
t
5
−
1.13520398
t
6
+
1.48851587
t
7
−
0.82215223
t
8
+
0.17087277
t
9
)
and
t
=
1
1
+
0.5

x

.
Also, over the complete range of values, the following simple approximation holds for
x
erfc
(
x
)
, with a maximal error of
6.3
×
10
−
4
:
x
erfc
(
x
)
=
1.3693
x
exp
(
−
0.8072
(
x
+
0.6388
)
2
)
.
When the results of a series of measurements are described by a normal distribution with standard deviation
σ
and expected value 0, then
erf
(
a
σ
2
)
is the probability that the error of a single measurement lies between −a and +a, for positive a. This is useful, for example, in determining the bit error rate of a digital communication system.
The error and complementary error functions occur, for example, in solutions of the heat equation when boundary conditions are given by the Heaviside step function.
The error function and its approximations can be used to estimate results that hold with high probability. Given random variable
X
∼
Norm
[
μ
,
σ
]
and constant
L
<
μ
:
Pr
[
X
≤
L
]
=
1
2
+
1
2
erf
(
L
−
μ
2
σ
)
≈
A
exp
(
−
B
(
L
−
μ
σ
)
2
)
where A and B are certain numeric constants. If L is sufficiently far from the mean, i.e.
μ
−
L
≥
σ
ln
k
, then:
Pr
[
X
≤
L
]
≤
A
exp
(
−
B
ln
k
)
=
A
k
B
so the probability goes to 0 as
k
→
∞
.
The error function is essentially identical to the standard normal cumulative distribution function, denoted Φ, also named norm(x) by software languages, as they differ only by scaling and translation. Indeed,
Φ
(
x
)
=
1
2
π
∫
−
∞
x
e
−
t
2
2
d
t
=
1
2
[
1
+
erf
(
x
2
)
]
=
1
2
erfc
(
−
x
2
)
or rearranged for erf and erfc:
erf
(
x
)
=
2
Φ
(
x
2
)
−
1
erfc
(
x
)
=
2
Φ
(
−
x
2
)
=
2
(
1
−
Φ
(
x
2
)
)
.
Consequently, the error function is also closely related to the Qfunction, which is the tail probability of the standard normal distribution. The Qfunction can be expressed in terms of the error function as
Q
(
x
)
=
1
2
−
1
2
erf
(
x
2
)
=
1
2
erfc
(
x
2
)
.
The inverse of
Φ
is known as the normal quantile function, or probit function and may be expressed in terms of the inverse error function as
probit
(
p
)
=
Φ
−
1
(
p
)
=
2
erf
−
1
(
2
p
−
1
)
=
−
2
erfc
−
1
(
2
p
)
.
The standard normal cdf is used more often in probability and statistics, and the error function is used more often in other branches of mathematics.
The error function is a special case of the MittagLeffler function, and can also be expressed as a confluent hypergeometric function (Kummer's function):
erf
(
x
)
=
2
x
π
1
F
1
(
1
2
,
3
2
,
−
x
2
)
.
It has a simple expression in terms of the Fresnel integral.
In terms of the regularized Gamma function P and the incomplete gamma function,
erf
(
x
)
=
sgn
(
x
)
P
(
1
2
,
x
2
)
=
sgn
(
x
)
π
γ
(
1
2
,
x
2
)
.
sgn
(
x
)
is the sign function.
Some authors discuss the more general functions:
E
n
(
x
)
=
n
!
π
∫
0
x
e
−
t
n
d
t
=
n
!
π
∑
p
=
0
∞
(
−
1
)
p
x
n
p
+
1
(
n
p
+
1
)
p
!
.
Notable cases are:
E_{0}(x) is a straight line through the origin:
E
0
(
x
)
=
x
e
π
E_{2}(x) is the error function, erf(x).
After division by n!, all the E_{n} for odd n look similar (but not identical) to each other. Similarly, the E_{n} for even n look similar (but not identical) to each other after a simple division by n!. All generalised error functions for n > 0 look similar on the positive x side of the graph.
These generalised functions can equivalently be expressed for x > 0 using the Gamma function and incomplete Gamma function:
E
n
(
x
)
=
1
π
Γ
(
n
)
(
Γ
(
1
n
)
−
Γ
(
1
n
,
x
n
)
)
,
x
>
0.
Therefore, we can define the error function in terms of the incomplete Gamma function:
erf
(
x
)
=
1
−
1
π
Γ
(
1
2
,
x
2
)
.
The iterated integrals of the complementary error function are defined by
i
n
erfc
(
z
)
=
∫
z
∞
i
n
−
1
erfc
(
ζ
)
d
ζ
.
They have the power series
i
n
erfc
(
z
)
=
∑
j
=
0
∞
(
−
z
)
j
2
n
−
j
j
!
Γ
(
1
+
n
−
j
2
)
,
from which follow the symmetry properties
i
2
m
erfc
(
−
z
)
=
−
i
2
m
erfc
(
z
)
+
∑
q
=
0
m
z
2
q
2
2
(
m
−
q
)
−
1
(
2
q
)
!
(
m
−
q
)
!
and
i
2
m
+
1
erfc
(
−
z
)
=
i
2
m
+
1
erfc
(
z
)
+
∑
q
=
0
m
z
2
q
+
1
2
2
(
m
−
q
)
−
1
(
2
q
+
1
)
!
(
m
−
q
)
!
.
C: C99 provides the functions double erf(double x)
and double erfc(double x)
in the header math.h. The pairs of functions {erff()
,erfcf()
} and {erfl()
,erfcl()
} take and return values of type float
and long double
respectively. For complex double
arguments, the function names cerf
and cerfc
are "reserved for future use"; the missing implementation is provided by the opensource project libcerf, which is based on the Faddeeva package.
C++: C++11 provides erf()
and erfc()
in the header cmath
. Both functions are overloaded to accept arguments of type float
, double
, and long double
. For complex<double>
, the Faddeeva package provides a C++ complex<double>
implementation.
D: A D package exists providing efficient and accurate implementations of complex error functions, along with Dawson, Faddeeva, and Voigt functions.
Excel: Microsoft Excel provides the erf
, and the erfc
functions, nonetheless both inverse functions are not in the current library.
Fortran: The Fortran 2008 standard provides the ERF
, ERFC
and ERFC_SCALED
functions to calculate the error function and its complement for real arguments. Fortran 77 implementations are available in SLATEC.
Go: Provides math.Erf()
and math.Erfc()
for float64 arguments.
Google search: Google's search also acts as a calculator and will evaluate "erf(...)" and "erfc(...)" for real arguments.
Haskell: An erf package exists that provides a typeclass for the error function and implementations for the native (real) floating point types.
IDL: provides both erf and erfc for real and complex arguments.
Java: Apache commonsmath provides implementations of erf and erfc for real arguments.
Julia: Includes erf
and erfc
for real and complex arguments. Also has erfi
for calculating
i
erf
(
i
x
)
Maple: Maple implements both erf and erfc for real and complex arguments.
MathCAD provides both erf(x) and erfc(x) for real arguments.
Mathematica: erf is implemented as Erf and Erfc in Mathematica for real and complex arguments, which are also available in Wolfram Alpha.
Matlab provides both erf and erfc for real arguments, also via W. J. Cody's algorithm.
Maxima provides both erf and erfc for real and complex arguments.
PARI/GP: provides erfc for real and complex arguments, via tanhsinh quadrature plus special cases.
Perl: erf (for real arguments, using Cody's algorithm) is implemented in the Perl module Math::SpecFun
Python: Included since version 2.7 as math.erf()
and math.erfc()
for real arguments. For previous versions or for complex arguments, SciPy includes implementations of erf, erfc, erfi, and related functions for complex arguments in scipy.special
. A complexargument erf is also in the arbitraryprecision arithmetic mpmath library as mpmath.erf()
R: "The socalled 'error function'" is not provided directly, but is detailed as an example of the normal cumulative distribution function (?pnorm
), which is based on W. J. Cody's rational Chebyshev approximation algorithm.
Ruby: Provides Math.erf()
and Math.erfc()
for real arguments.