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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
== Revision history of libcerf, maintained by Joachim Wuttke ==
libcerf-3.1, released 3aug25:
- Fix function value erfcx(12), bug reported by Thomas Höring
- Improved test coverage of erfcx and imwofx
libcerf-3.0, released 24apr25:
- Important changes to the application binary interfaces (ABIs):
- CMake builds both libcerf (C ABI) and libcerfcpp (C++ ABI), unless option
CERF_C=OFF or CERF_CPP=OFF.
- Linking the C ABI libcerf with C++ is no longer supported
- Minor cleanups overlooked in release 2.5
- Remove introspection variables, no longer needed as we now dispose of rigorous
error estimates
libcerf-2.5, released 16apr25:
- Piecewise polynomial approximation for functions im_w_of_c and erfcx rederived
for guaranteed accuracy. Methods explained in Joachim Wuttke and Alexander Kleinsorge:
"Code generation for piecewise Chebyshev approximation." Preprint available upon request.
- Required C standard is now C11 (we need the _Alignas specifier)
- Minor optimization of width.c (contributed by Alexander Kleinsorge)
- For arbitrary numeric constants, choose powers of 2 (suggested by Alexander Kleinsorge)
libcerf-2.4, released 2aug23:
- CMake: runtime destination corrected (bin, not lib)
- CMake: removed option PORTABLE and compiler flag -march (unavailable on some architectures)
libcerf-2.3, released 10jan23:
- Fix compiler flags; use -O3 for Release
- Introduce CERF_COMPILE_OPTIONS to let users overwrite the hard-coded compile options
- Under gcc, use -march=native
- PACKAGE MAINTAINERS: use -DPORTABLE=ON to override this !!
- Add test coverage for erfcx, dawson, im_w_of_x (against nearby complex and status quo)
- Avoid some divisions in function voigt (suggested by Alexander Kleinsorge)
- Accelerate lookup in erfcx, im_w_of_x (avoid long switch, contributed by Alexander Kleinsorge)
- Work around clang bug https://github.com/llvm/llvm-project/issues/59681 (0+I*Inf->NaN)
libcerf-2.2, released 7nov22:
- No longer raise underflow error in w_of_z for large real arg (contributed by Ethan Merritt)
- In test suite, confound zero with values close to underflow
- Remove some invisible files that had slipped in accidentally (noticed by Christoph Junghans)
- Windows binary now built with Visual Studio 17 2022
libcerf-2.1, released 8apr22:
- Provide cerfConfig.cmake (contributed by Lori A. Burns and Christoph Junghans)
- libcerf.pc: Remove hard-coded lib/
- Version number incremented to overcome upstream problems with withdrawn release 2.0
libcerf-1.17, released 29jun21:
- Correct pkgconfig installation directory (use GNU install dirs, install to LIBDIR/pkgconfig)
libcerf-1.16, released 23jun21:
- voigt_hwhm: replaced Newton's method (which failed for rare parameter combinations)
by Illinois regula falsi (contributed by Ethan A Merritt)
- Some internal cleanup, especially of include directives
libcerf-1.15, released 10jun21:
- Use assertion in voigt_hwhm to check for impossible situations
(to avoid fprintf and exit, as suggested by Ethan A Merritt)
- Added widthtest, which tests voigt_hwhm for numerous ratios gamma/sigma
- libcerf.pc.in: correct prefix (as suggested by Alexander Grund)
- CMake install
- make full use of CMAKE_INSTALL_<dir> variables
- DESTINATION now given by LIBDIR from GNUInstallDirs
- Support CPack for all platforms
libcerf-1.14, released 19oct20:
- Simplified test code
- 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)
|