jax.scipy.special.gammaln

jax.scipy.special.gammaln(x)[source]

Logarithm of the absolute value of the Gamma function.

LAX-backend implementation of gammaln(). Original docstring below.

gammaln(x, /, out=None, *, where=True, casting=’same_kind’, order=’K’, dtype=None, subok=True[, signature, extobj])

gammaln(x, out=None)

Defined as

\[\ln(\lvert\Gamma(x)\rvert)\]

where \(\Gamma\) is the Gamma function. For more details on the Gamma function, see [dlmf].

Parameters

x (array_like) – Real argument

Returns

Values of the log of the absolute value of Gamma

Return type

scalar or ndarray

See also

gammasgn()

sign of the gamma function

loggamma()

principal branch of the logarithm of the gamma function

Notes

It is the same function as the Python standard library function math.lgamma().

When used in conjunction with gammasgn, this function is useful for working in logspace on the real axis without having to deal with complex numbers via the relation exp(gammaln(x)) = gammasgn(x) * gamma(x).

For complex-valued log-gamma, use loggamma instead of gammaln.

References

dlmf

NIST Digital Library of Mathematical Functions https://dlmf.nist.gov/5

Examples

>>> import scipy.special as sc

It has two positive zeros.

>>> sc.gammaln([1, 2])
array([0., 0.])

It has poles at nonpositive integers.

>>> sc.gammaln([0, -1, -2, -3, -4])
array([inf, inf, inf, inf, inf])

It asymptotically approaches x * log(x) (Stirling’s formula).

>>> x = np.array([1e10, 1e20, 1e40, 1e80])
>>> sc.gammaln(x)
array([2.20258509e+11, 4.50517019e+21, 9.11034037e+41, 1.83206807e+82])
>>> x * np.log(x)
array([2.30258509e+11, 4.60517019e+21, 9.21034037e+41, 1.84206807e+82])