This is the home page of libcerf, a self-contained numeric library that provides an efficient and accurate implementation of complex error functions, along with Dawson, Faddeeva, and Voigt functions.
On current GNU/Linux systems, the man page complex(7) has a “see also” section that lists complex mathematical functions like cabs(3), cacos(3), and so on. Among them, there is a complex error function. However, its manual page cerf(3) describes the functions cerf and cerfc as “unimplemented” and “reserved for future use”. The present library libcerf provides the missing implementation, along with a related functions. It comes with a set of man pages, including a page cerf(3) that overwrites the standard one.
In the following, “complex” stands for the C99 data type “double _Complex”:
Most function evaluations in this library rely on Faddeeva's function w(z).
This function has been reimplemented from scratch by Steven G. Johnson; project web site http://ab-initio.mit.edu/Faddeeva. The implementation partly relies on algorithms from the following publications:
By construction, it is expected that the relative accuracy is generally better than 1E-13. This has been confirmed by comparison with high-precision Maple computations and with a long double computation using Fourier transform representation and double-exponential transform.
Authors: Steven G. Johnson, Joachim Wuttke
Maintainer: Joachim Wuttke, Jülich Centre for Neutron Science, Scientific Computing Group at FRM II.
Copyright: Massachusetts Institute of Technology, 2012; Forschungszentrum Jülich, 2013.
License: MIT License
The C library libcerf can be wrapped for use with other programming languages. Such language bindings are added to the libcerf package as contributed by their authors.
The following bindings are available:
Further contributions will be highly welcome.
When using libcerf in scientific work, please cite as follows: