scipy.special.loggamma¶
- scipy.special.loggamma(z, out=None) = <ufunc 'loggamma'>¶
Principal branch of the logarithm of the Gamma function.
Defined to be \(\log(\Gamma(x))\) for \(x > 0\) and extended to the complex plane by analytic continuation. The function has a single branch cut on the negative real axis.
New in version 0.18.0.
Parameters: z : array-like
Values in the complex plain at which to compute loggamma
out : ndarray, optional
Output array for computed values of loggamma
Returns: loggamma : ndarray
Values of loggamma at z.
See also
Notes
It is not generally true that \(\log\Gamma(z) = \log(\Gamma(z))\), though the real parts of the functions do agree. The benefit of not defining loggamma as \(\log(\Gamma(z))\) is that the latter function has a complicated branch cut structure whereas loggamma is analytic except for on the negative real axis.
The identities
\[\begin{split}\exp(\log\Gamma(z)) &= \Gamma(z) \\ \log\Gamma(z + 1) &= \log(z) + \log\Gamma(z)\end{split}\]make loggama useful for working in complex logspace. However, loggamma necessarily returns complex outputs for real inputs, so if you want to work only with real numbers use gammaln. On the real line the two functions are related by exp(loggamma(x)) = gammasgn(x)*exp(gammaln(x)), though in practice rounding errors will introduce small spurious imaginary components in exp(loggamma(x)).
The implementation here is based on [hare1997].
References
[hare1997] (1, 2) D.E.G. Hare, Computing the Principal Branch of log-Gamma, Journal of Algorithms, Volume 25, Issue 2, November 1997, pages 221-236.