From: John Maddock (john_at_[hidden])
Date: 2006-03-31 13:40:00
This is to announce a new library added to the file vault, it is a work in
progress and is intended to fulfil two needs:
1) To provide a small number of high quality special functions, initially
these will be concentrated on functions used in statistical applications
(with a strong nod towards Paul Bristow's existing work in this area).
The functions currently implemented are the gamma/beta/erf functions along
with the incomplete gamma and beta functions (four variants of each).
All the implementations are fully generic and support the use of arbitrary
"real-number" types, although they are optimised for use with types with
known-about mantissa sizes: typically float, double or long double.
Use of these functions with interval arithmetic (Boost.Interval) isn't quite
supported yet, but it's something I want to investigate soon.
2) To provide at least some of the tools required to implement mathematical
special functions, hopefully the presence of these will encourage other
authors to contribute more special function implementations in the future.
Currently implemented are helpers for the evaluation of infinite series,
continued fractions and rational approximations.
There are also classes for the manipulation of polynomials, for testing a
special function against tabulated test data, and for the rapid generation
of test data and/or data for output to an external graphing application.
I've been keeping deliberately quiet about this for a while (with apologies
to Paul Bristow), as I wanted to be certain that these special function
implementations would offer something over and above what is available
elsewhere. I still have some way to go here: erf and lgamma in particular
still need work, but the incomplete gamma and beta functions already
typically have 10 times lower error bounds than Cephes and GSL, and in one
spectacular case 10^11 times more accurate (which is to say there is a
domain of the incomplete gamma where Cephes and GSL have hardly any
significant digits correct).
Preliminary documentation is available here:
http://www.johnmaddock.co.uk/toolkit and includes quite a lot of information
already, including descriptions of implementation methodologies etc.
There's also a roadmap of future work, open issues, and what needs to be
done before a final release etc:
The actual source code, is available for download in the vault:
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk