[SciPy-dev] Lambert W implementation

Pauli Virtanen pav+sp@iki...
Fri Oct 30 04:28:24 CDT 2009

Fri, 30 Oct 2009 10:54:40 +0200, Yosef Meller wrote:
> Ok, the mpmath implementation seems suitable, and they also have a
> reference and some test values. What I see as the way forward is to take
> all mpmath-related wrapping out and provide a simpler floating-point
> version. I think I'll do a Cython function for scalar argument, then
> count on the usual vectorization facilities in NumPy to handle the rest
> (np.vectorize).

It's faster to make it a Ufunc -- np.vectorize will likely sacrifice 
much of the speed gained from using Cython since it's going to box and unbox
numbers in Python floats. There's an example how to do Ufuncs in
Cython here:


If you get it done, please post the result (preferably, create
a ticket on http://projects.scipy.org/scipy/ and attach the file) and
we'll integrate it in scipy.special. If you also write tests, that'd
be great!

Note that newer Cythons also have support for native complex numbers, so
you can do

	cdef double complex a = ...

The same algorithm probably works both for real and complex parameters.

Pauli Virtanen

More information about the Scipy-dev mailing list