1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
== Revision history of libcerf, maintained by Joachim Wuttke ==
Homepage moved to https://jugit.fz-juelich.de/mlz/libcerf, 17mar19
libcerf-1.13, released 28feb19:
- Further adjustments for compilation under Windows
libcerf-1.12, released 7feb19:
- Require CMake 3.6, outcomment code that requires 3.13.
- Relative paths in CMake sources, for use as subproject.
- When compiling as CPP, then #include<complex>, not <complex.h>;
revise the entire C-vs-CPP machinery.
- Remove tests with different inf or nan results on different systems or under
different compilers.
libcerf-1.11, released 28dec18:
- Cover voigt by test_voigt.
- Implement new function voigt_hwhm.
- Restore libcerf.pc.
- Add INSTALL instructions, and other minor adjustments for use of libcerf in C++ projects.
- Support 'ctest', which runs the numeric accuracy tests from test1.c.
- Rename type cmplx into _cerf_cmplx to avoid name clash with Gnuplot pre 5.3.
libcerf-1.8 [2oct18], libcerf-1.9 [16oct18] and libcerf-1.10 [20dec18]
MUST NOT BE USED
- A bug introduced in v1.8 had broken the normalization of the Voigt function.
- The git history leading to v1.10 has been rewritten, starting anew from v1.7
libcerf-1.7, released 26sep18:
- Option -DCERF_CPP allows to choose C++ compilation, which is useful
because MS VisualStudio supports C++14, but not yet C99, and in
particular does not support complex.h under C.
libcerf-1.6, released 20sep18:
- Migrated from automake to CMake.
- Corrected typos in man pages.
libcerf-1.5, released 12oct16:
- Removed unused inline function (detected by clang-1.3., reported by Luke Benes)
libcerf-1.4, released 27aug14:
- HTML version of man pages no longer installs to man/html.
- More concise man pages.
- Delete a few unused include's.
- Autotools script corrected (suggestions by Christoph Junghans).
libcerf-1.3, released 17jul13:
- Now supporting pkg-config (suggested by Mojca Miklavec).
libcerf-1.2, released 16jul13:
- Test programs no longer install to $bindir (reported by Mojca Miklavec).
libcerf-1.1, released 12may13:
- Added Fortran binding by Antonio Cervellino.
libcerf-1.0, released 31jan13 by Joachim Wuttke:
- Based on http://ab-initio.mit.edu/Faddeeva as of 28jan13.
- Verified accuracy using double-exponential transform.
- Simplified function names;
use leading 'c' for complex functions (except in w_of_z).
- Added function voigt(x,sigma,gamma).
- Added configure.ac, Makefile.am &c to allow for autotools standard
installation (commands ./configure, make, sudo make install).
- Splitted source code into directories lib/ and test/.
- Eliminated unused alternate code (!USE_CONTINUED_FRACTION).
- Eliminated relerr arguments.
- Replaced "complex" by "_Complex" for C++ compatibility.
- Wrote man pages w_of_z(3), dawson(3), voigt(3), cerf(3), erfcx(3), erfi(3).
- Created project home page http://apps.jcns.fz-juelich.de/libcerf.
- Registered project "libcerf" at sourceforge.net.
== 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)
|