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.
Added in version 0.18.0.
- Parameters:
- zarray_like
Values in the complex plane at which to compute
loggamma
- outndarray, optional
Output array for computed values of
loggamma
- Returns:
- loggammascalar or 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 whereasloggamma
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
loggamma
useful for working in complex logspace.On the real line
loggamma
is related togammaln
viaexp(loggamma(x + 0j)) = gammasgn(x)*exp(gammaln(x))
, up to rounding error.The implementation here is based on [hare1997].
loggamma
has experimental support for Python Array API Standard compatible backends in addition to NumPy. Please consider testing these features by setting an environment variableSCIPY_ARRAY_API=1
and providing CuPy, PyTorch, JAX, or Dask arrays as array arguments. The following combinations of backend and device (or other capability) are supported.Library
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
✅
PyTorch
✅
⛔
JAX
⚠️ no JIT
⛔
Dask
✅
n/a
See Support for the array API standard for more information.
References
[hare1997]D.E.G. Hare, Computing the Principal Branch of log-Gamma, Journal of Algorithms, Volume 25, Issue 2, November 1997, pages 221-236.