[SciPy-dev] Definition of gammaln(x) for negative x

G-J van Rooyen gvrooyen at gmail.com
Sat Nov 1 12:54:23 EDT 2008


Hey everyone

Ticket #737 refers:

-----

Gamma in negative for negative x whose floor value is odd. As such,
gammaln does not make sense for those values (while staying in the
real domain, at least). scipy.special.gammaln returns bogus values:

import numpy as np
from scipy.special import gamma, gammaln
print np.log(gamma(-0.5))
print gammaln(-0.5)

Returns nan in the first case (expected) and 1.26551212348 in the
second (totally meaningless value).

-----

The info line for gammaln reads:
*  gammaln      -- Log of the absolute value of the gamma function.

With this definition of gammaln, the function actually works fine,
since np.log(abs(gamma(-0.5))) is in fact 1.2655. However, this seems
to be an unusual definition for gammaln. What is the best way to fix
it? Options:

1) Keep it as it is, with gammaln(x) = ln|gamma(x)|
2) Change it so that it returns NaN for negative values of gamma(x)
(i.e. negative x whose floor value is odd)
3) Change it to always give NaN for negative values of x (Matlab's approach)
4) Have it return complex values for negative logarithms

Which is best?

G-J



More information about the SciPy-Dev mailing list