The Faddeeva function or Kramp function is a scaled complex complementary error function,

$w(z):=e^{-z^{2}}\operatorname {erfc} (-iz)=\operatorname {erfcx} (-iz)=e^{-z^{2}}\left(1+{\frac {2i}{\sqrt {\pi }}}\int _{0}^{z}e^{t^{2}}{\text{d}}t\right).$ It is related to the Fresnel integral, to Dawson's integral, and to the Voigt function.

The function arises in various physical problems in describing electromagnetic response in complicated media.

• problems involving small-amplitude waves propagating through Maxwellian plasmas, and in particular appears in the plasma's permittivity from which dispersion relations are derived, hence it is sometimes referred to as the plasma dispersion function (although this name is sometimes used instead for the rescaled function $Z(z)=i{\sqrt {\pi }}w(z)$ defined by Fried and Conte).
• the infrared permittivity functions of amorphous oxides have resonances (due to phonons) that are sometimes too complicated to fit using simple harmonic oscillators. The Brendel–Borman oscillator form uses an infinite superposition of oscillators having slightly different frequencies, with a Gaussian distribution. The integrated response can be written in terms of the Faddeeva function.
• the Faddeeva function is also used in the analysis of electromagnetic waves of the type used in AM radio.[citation needed] Groundwaves are verticaly polarised waves propagating over a lossy ground with finite resistivity and permittivity.

Properties

Real and imaginary parts

The decomposition into real and imaginary parts is usually written

$w(x+iy)=V(x,y)+iL(x,y)$ ,

where V and L are called the real and imaginary Voigt functions, since V(x,y) is the Voigt profile (up to prefactors).

For sign-inverted arguments, the following both apply:

$w(-z)=2e^{-z^{2}}-w(z)$ and

$w(-z)=w(z^{*})^{*}$ where * denotes complex conjugate.

Integral representation

$w(z)={\frac {i}{\pi }}\int _{-\infty }^{\infty }{\frac {e^{-t^{2}}}{z-t}}dt={\frac {2iz}{\pi }}\int _{0}^{\infty }{\frac {e^{-t^{2}}}{z^{2}-t^{2}}}dt,\qquad \operatorname {Im} z>0$ meaning that it is a convolution of a Gaussian with a simple pole.

History

The function was tabulated by Faddeeva and Terent'ev in 1954. It appears as nameless function w(z) in Abramowitz and Stegun (1964), formula 7.1.3. The name Faddeeva function was apparently introduced by Poppe and Wijers in 1990; previously, it was known as Kramp's function (probably after Christian Kramp).

Early implementations used methods by Gautschi (1969/70; ACM Algorithm 363) or by Humlicek (1982). A more efficient algorithm was proposed by Poppe and Wijers (1990; ACM Algorithm 680). Weideman (1994) proposed a particularly short algorithm that takes no more than eight lines of Matlab code. Zaghloul and Ali pointed out deficiencies of previous algorithms and proposed a new one (2011; ACM Algorithm 916). Another algorithm has been proposed by Abrarov and Quine (2011/2012).

Implementations

Two software implementations, which are free for non-commercial use only, were published in ACM Transactions on Mathematical Software (TOMS) as Algorithm 680 (in Fortran, later translated into C) and Algorithm 916 by Zaghloul and Ali (in MATLAB).

A free and open source C or C++ implementation derived from a combination of Algorithm 680 and Algorithm 916 (using different algorithms for different z) is also available under the MIT License, , and is maintained as a library package libcerf. This implementation is also available as a plug-in for Matlab, GNU Octave, and in Python via Scipy as scipy.special.wofz (which was originally the TOMS 680 code, but was replaced due to copyright concerns).