[SciPy-dev] Bessel functions from Boost
Pauli Virtanen
pav@iki...
Sun Feb 8 11:23:00 CST 2009
Some of the real-valued Bessel function implementations from the Cephes
library currently used in scipy.special have problems. (See #503, #851,
#853, #854.) Fixing some of these (eg. #503) would require implementing
robust computation algorithms from scratch. (The Specfun code is IMHO too
obscure and badly commented to be relied on as an alternative.)
However, the Boost library seems to have good implementations Bessel
(and some other) special functions:
http://svn.boost.org/svn/boost/trunk/boost/math/special_functions/detail/
http://www.boost.org/doc/libs/1_37_0/libs/math/doc/sf_and_dist/html/math_toolkit/special.html
Also the license seems Scipy-compatible:
http://www.boost.org/LICENSE_1_0.txt
So, I'd like to bring these over to Scipy, to replace some of the Cephes
routines.
The only problem is that being in Boost, they are written in C++, and I
guess we can't make Scipy to depend on it.
I see two options:
A) Bundle the relevant subset of Boost with Scipy. The problem here
is that the special functions seem to pull in a sizable subset
of the whole Boost library.
Also, I don't know how well compilers handle the template-happy
C++ in boost today on all platforms where Scipy must work on.
B) Convert the Boost code from C++ to C. This is in fact quite trivial
search-and-replace operation. One example here:
http://github.com/pv/scipy/blob/ticket-503-special-iv-fix/scipy/special/cephes/scipy_iv.c
I'd like to see (B) happen in scipy.special. Thoughts?
--
Pauli Virtanen
More information about the Scipy-dev
mailing list