View source on GitHub |
Returns the error of the Stirling approximation to lgamma(x) for x >= 8.
tfp.substrates.jax.math.log_gamma_correction(
x, name=None
)
This is useful for accurately evaluating ratios between Gamma functions, as happens when trying to compute Beta functions.
Specifically,
lgamma(x) approx (x - 0.5) * log(x) - x + 0.5 log (2 pi)
+ log_gamma_correction(x)
for x >= 8.
This is the function called Delta in [1], eq (30). We implement it with the rational minimax approximation given in [1], eq (32).
References:
[1] DiDonato and Morris, "Significant Digit Computation of the Incomplete Beta Function Ratios", 1988. Technical report NSWC TR 88-365, Naval Surface Warfare Center (K33), Dahlgren, VA 22448-5000. Section IV, Auxiliary Functions. https://apps.dtic.mil/dtic/tr/fulltext/u2/a210118.pdf
Args | |
---|---|
x
|
Floating-point Tensor at which to evaluate the log gamma correction elementwise. The approximation is accurate when x >= 8. |
name
|
Optional Python str naming the operation.
|
Returns | |
---|---|
lgamma_corr
|
Tensor of elementwise log gamma corrections. |