Faddeeva function explained

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

-z2
w(z):=e

\operatorname{erfc}(-iz)=\operatorname{erfcx}(-iz)

-z2
=e\left(1+
2i
\sqrt{\pi
}\int_0^z e^\textt\right).It is related to the Fresnel integral, to Dawson's integral, and to the Voigt function.

The function arises in various physical problems, typically relating to electromagnetic responses in complicated media.

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).

Sign inversion

For sign-inverted arguments, the following both apply:

-z2
w(-z)=2e

-w(z)

and

w(-z)=w\left(z*\right)*

where * denotes complex conjugate.

Relation to the complementary error function

The Faddeeva function evaluated on imaginary arguments equals the scaled complementary error function (

erfcx

):
z2
w(iz)=erfcx(z)=e

erfc(z)

,where erfc is the complementary error function. For large real x:

erfcx(x)

1
\sqrt{\pi

x}

Derivative

In some applications, it is necessary to know not only the original values of the Faddeeva function, but also its derivative (e.g. in Non-linear least squares regression in spectroscopy). Its derivative is given by:[5] [6]

dw\left(z\right)
dz

=

2i
\sqrt{\pi
} - 2\cdot z\cdot w\left(z\right)This expression can also be broken down further in terms of changes in the real and imaginary part of the Faddeeva function

\Re\left(w\left(z\right)\right)=\Rew

and

\Im\left(w\left(z\right)\right)=\Imw

. Basically, this requires knowledge about the real and imaginary part of the product

zw\left(z\right)

. Making use of the above definition

z=x+iy

, the derivative can therefore be split into partial derivatives with respect to

x

and

y

as follows:
d\Rew
dx

=2 ⋅ \left(y\Imw-x\Rew\right)=

d\Imw
dy
and
d\Rew
dy

=-2 ⋅ \left(

1
\sqrt{\pi
} - x\cdot\Im_ - y\cdot\Re_\right) = -\frac
d\Imw
dx

=2 ⋅ \left(

1
\sqrt{\pi
} - x\cdot\Im_ - y\cdot\Re_\right) = -\fracand
d\Imw
dy

=2 ⋅ \left(y\Imw-x\Rew\right)=

d\Rew
dx
A practical example for the use of these partial derivatives can be found here.

Integral representation

The Faddeeva function occurs as

w(z)=i
\pi
infty
\int
-infty
-t2
e
z-t

dt=

2iz
\pi
infty
\int
0
-t2
e
z2-t2

dt,    \operatorname{Im}z>0

meaning that it is a convolution of a Gaussian with a simple pole.

History

The function was tabulated by Vera Faddeeva and N. N. Terentyev in 1954.[7] It appears as nameless function w(z) in Abramowitz and Stegun (1964), formula 7.1.3. The name Faddeeva function was apparently introduced by G. P. M. Poppe and C. M. J. Wijers in 1990;[8] previously, it was known as Kramp's function (probably after Christian Kramp).[9]

Early implementations used methods by Walter Gautschi (1969–70; ACM Algorithm 363)[10] or by J. Humlicek (1982).[11] A more efficient algorithm was proposed by Poppe and Wijers (1990; ACM Algorithm 680).[12] J.A.C. Weideman (1994) proposed a particularly short algorithm that takes no more than eight lines of MATLAB code.[13] Zaghloul and Ali pointed out deficiencies of previous algorithms and proposed a new one (2011; ACM Algorithm 916).[14] Another algorithm has been proposed by M. Abrarov and B.M. Quine (2011/2012).[15]

Implementations

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

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,[20] and is maintained as a library package libcerf.[21] This implementation is also available as a plug-in for Matlab,[20] GNU Octave,[20] and in Python via Scipy as scipy.special.wofz (which was originally the TOMS 680 code, but was replaced due to copyright concerns[22]).

For fast but still accurate calculation of plasma dispersion function

Z(z)

, the J-pole Pade approximation is found to be useful,[23] i.e.,
J
Z(z)=\sum
j=1
bj
z-cj

.

For J=8, one can useb1= -0.017340112270401 - 0.046306439626294i;b2= -0.739917811220052 + 0.839518284620274i;b3= 5.840632105105495 + 0.953602751322040i;b4= -5.583374181615043 -11.208550459628098i;c1= 2.237687725134293 - 1.625941024120362i;c2= 1.465234091939142 - 1.789620299603315i;c3= 0.839253966367922 - 1.891995211531426i;c4= 0.273936218055381 - 1.941787037576095i;b(5:8)=(b(1:4))*;c(5:8)=-(c(1:4))*,

where * denotes complex conjugate. The above approximation is valid for the upper plane. For

z

weakly close to the real axis, i.e.,

Im(z)

not far from the real axis of the lower plane, the above approximation is also valid. For accurate calculation of

Im(z)<0

, one can use

Z(z)=[Z(z*)]*+2i\sqrt{\pi}\exp[-z2].

A coding of the above J-pole approach and comparison with an accurate plasma dispersion function can be found. Comphensive coefficients to rapid computation of the plasma dispersion function with rational and multi-pole approximation are also available.[24]

Notes and References

  1. Web site: Error functions. Lehtinen. Nikolai G.. April 23, 2010. Lehtinen webpage - Stanford University. October 8, 2019.
  2. http://farside.ph.utexas.edu/ Richard Fitzpatrick
  3. Brendel. R.. Bormann. D.. An infrared dielectric function model for amorphous solids. Journal of Applied Physics. 71. 1. 1992. 1. 0021-8979. 10.1063/1.350737. 1992JAP....71....1B.
  4. Web site: OpenMC Windowed Multipole . 2020-06-01 . 2020-12-20.
  5. Slava . Avetisov . 1995 . A Least-Squares Fitting Technique for Spectral Analysis of Direct and Frequency-Modulation Lineshapes . Department of Physics, Lund University.
  6. Web site: Faddeeva (or Faddeyeva) function - 7.10 Derivatives . 2010 . Digital Library of Mathematical Functions . National Institute of Standards and Technology . June 23, 2022.
  7. [Vera Faddeeva|V. N. Faddeeva]
  8. Earliest search result in Google Scholar as of Oct 2012.
  9. For instance in Al'pert, Space Science Reviews 6, 781 (1967), formula (3.13), with reference to Faddeeva and Terent'ev.
  10. See references 3 and 4 in Poppe and Wijers (1990).
  11. J. Humlicek, J. Quant. Spectrosc. Radiat. Transfer 27, 437-444 (1982).
  12. G. P. M. Poppe and C. M. J. Wijers, ACM Transactions on Mathematical Software 16, 38-46 (1990).
  13. J. A. C. Weideman, SIAM J. Numer. Anal. 31, 1497-1518 (1994).
  14. M. R. Zaghloul and A. N. Ali, ACM Transactions on Mathematical Software 38(2)15 (2011)
  15. S. M. Abrarov and B. M. Quine, Appl. Math. Comp. 218, 1894-1902 (2011) and arXiv:1205.1768v1 (2012).
  16. Web site: Software Copyright Notice.
    hence they are not free in the sense of free and open-source software
  17. http://www.cs.kent.ac.uk/people/staff/trh/CALGO/680.gz
  18. Web site: Collision formulas. NASA. 10 April 2023.
  19. Mofreh R. Zaghloul and Ahmed N. Ali, "Algorithm 916: Computing the Faddeyeva and Voigt Functions," ACM Trans. Math. Soft. 38 (2), 15 (2011). Preprint available at arXiv:1106.0151.
  20. http://ab-initio.mit.edu/Faddeeva Faddeeva Package
  21. Web site: Libcerf [MLZ Scientific Computing Group].
  22. Web site: SciPy's complex erf code is not free/open-source? (Trac #1741) · Issue #2260 · scipy/scipy. GitHub.
  23. Xie . Hua-sheng . November 2019 . BO: A unified tool for plasma waves and instabilities analysis . Computer Physics Communications . 244 . 343–371 . 10.1016/j.cpc.2019.06.014 . 0010-4655. 1901.06902 .
  24. Xie . Huasheng . 2024-07-01 . Rapid computation of the plasma dispersion function: Rational and multi-pole approximation, and improved accuracy . AIP Advances . en . 14 . 7 . 10.1063/5.0216433 . 2158-3226. 2404.18719 .