libcerf-1.0, released ??:
- Based on http://ab-initio.mit.edu/Faddeeva as of 28jan13. - Add function voigt(..) - Add configure.ac, Makefile.am &c to allow for autotools standard installation (commands ./configure, make, sudo make install) - Split source code into directories lib/ and test/ - Eliminate unused alternate code (!USE_CONTINUED_FRACTION) - Eliminate relerr arguments - Replace "complex" by "_Complex" for C++ compatibility - Write man pages w_of_z(3), dawson(3), voigt(3), cerf(3), erfcx(3), ... == Revision history of Faddeeva.cc by Steven G. Johnson == Project at http://ab-initio.mit.edu/Faddeeva 4 October 2012: Initial public release (SGJ) 5 October 2012: Revised (SGJ) to fix spelling error, start summation for large x at round(x/a) (> 1) rather than ceil(x/a) as in the original paper, which should slightly improve performance (and, apparently, slightly improves accuracy) 19 October 2012: Revised (SGJ) to fix bugs for large x, large -y, and 15<x<26. Performance improvements. Prototype now supplies default value for relerr. 24 October 2012: Switch to continued-fraction expansion for sufficiently large z, for performance reasons. Also, avoid spurious overflow for |z| > 1e154. Set relerr argument to min(relerr,0.1). 27 October 2012: Enhance accuracy in Re[w(z)] taken by itself, by switching to Alg. 916 in a region near the real-z axis where continued fractions have poor relative accuracy in Re[w(z)]. Thanks to M. Zaghloul for the tip. 29 October 2012: Replace SLATEC-derived erfcx routine with completely rewritten code by me, using a very different algorithm which is much faster. 30 October 2012: Implemented special-case code for real z (where real part is exp(-x^2) and imag part is Dawson integral), using algorithm similar to erfx. Export ImFaddeeva_w function to make Dawson's integral directly accessible. 3 November 2012: Provide implementations of erf, erfc, erfcx, and Dawson functions in Faddeeva:: namespace, in addition to Faddeeva::w. Provide header file Faddeeva.hh. 4 November 2012: Slightly faster erf for real arguments. Updated MATLAB and Octave plugins. 27 November 2012: Support compilation with either C++ or plain C (using C99 complex numbers). For real x, use standard-library erf(x) and erfc(x) if available (for C99 or C++11). #include "config.h" if HAVE_CONFIG_H is #defined. 15 December 2012: Portability fixes (copysign, Inf/NaN creation), use CMPLX/__builtin_complex if available in C, slight accuracy improvements to erf and dawson functions near the origin. Use gnulib functions if GNULIB_NAMESPACE is defined. 18 December 2012: Slight tweaks (remove recomputation of x*x in Dawson) |