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

gammaln

logarithm of the absolute value of the gamma function

gammasgn

sign of the gamma function

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 loggamma useful for working in complex logspace.

On the real line loggamma is related to gammaln via exp(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 variable SCIPY_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.