[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