|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math3.special.Gamma
public class Gamma
This is a utility class that provides computation methods related to the Γ (Gamma) family of functions.
Implementation of invGamma1pm1(double)
and
logGamma1p(double)
is based on the algorithms described in
Field Summary | |
---|---|
private static double |
C_LIMIT
C limit. |
private static double |
DEFAULT_EPSILON
Maximum allowed numerical error. |
static double |
GAMMA
Euler-Mascheroni constant |
private static double |
HALF_LOG_2_PI
Avoid repeated computation of log of 2 PI in logGamma |
private static double |
INV_GAMMA1P_M1_A0
The constant A0 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_A1
The constant A1 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B1
The constant B1 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B2
The constant B2 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B3
The constant B3 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B4
The constant B4 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B5
The constant B5 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B6
The constant B6 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B7
The constant B7 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_B8
The constant B8 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C
The constant C defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C0
The constant C0 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C1
The constant C1 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C10
The constant C10 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C11
The constant C11 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C12
The constant C12 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C13
The constant C13 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C2
The constant C2 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C3
The constant C3 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C4
The constant C4 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C5
The constant C5 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C6
The constant C6 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C7
The constant C7 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C8
The constant C8 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_C9
The constant C9 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_P0
The constant P0 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_P1
The constant P1 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_P2
The constant P2 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_P3
The constant P3 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_P4
The constant P4 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_P5
The constant P5 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_P6
The constant P6 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_Q1
The constant Q1 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_Q2
The constant Q2 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_Q3
The constant Q3 defined in DGAM1 . |
private static double |
INV_GAMMA1P_M1_Q4
The constant Q4 defined in DGAM1 . |
private static double[] |
LANCZOS
Lanczos coefficients |
static double |
LANCZOS_G
The value of the g constant in the Lanczos approximation, see
lanczos(double) . |
private static double |
S_LIMIT
S limit. |
private static double |
SQRT_TWO_PI
The constant value of √(2π). |
Constructor Summary | |
---|---|
private |
Gamma()
Default constructor. |
Method Summary | |
---|---|
static double |
digamma(double x)
Computes the digamma function of x. |
static double |
gamma(double x)
Returns the value of Γ(x). |
static double |
invGamma1pm1(double x)
Returns the value of 1 / Γ(1 + x) - 1 for -0.5 ≤ x ≤ 1.5. |
static double |
lanczos(double x)
Returns the Lanczos approximation used to compute the gamma function. |
static double |
logGamma(double x)
Returns the value of log Γ(x) for x > 0. |
static double |
logGamma1p(double x)
Returns the value of log Γ(1 + x) for -0.5 ≤ x ≤ 1.5. |
static double |
regularizedGammaP(double a,
double x)
Returns the regularized gamma function P(a, x). |
static double |
regularizedGammaP(double a,
double x,
double epsilon,
int maxIterations)
Returns the regularized gamma function P(a, x). |
static double |
regularizedGammaQ(double a,
double x)
Returns the regularized gamma function Q(a, x) = 1 - P(a, x). |
static double |
regularizedGammaQ(double a,
double x,
double epsilon,
int maxIterations)
Returns the regularized gamma function Q(a, x) = 1 - P(a, x). |
static double |
trigamma(double x)
Computes the trigamma function of x. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final double GAMMA
public static final double LANCZOS_G
g
constant in the Lanczos approximation, see
lanczos(double)
.
private static final double DEFAULT_EPSILON
private static final double[] LANCZOS
private static final double HALF_LOG_2_PI
private static final double SQRT_TWO_PI
private static final double C_LIMIT
private static final double S_LIMIT
private static final double INV_GAMMA1P_M1_A0
A0
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_A1
A1
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B1
B1
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B2
B2
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B3
B3
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B4
B4
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B5
B5
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B6
B6
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B7
B7
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_B8
B8
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_P0
P0
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_P1
P1
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_P2
P2
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_P3
P3
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_P4
P4
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_P5
P5
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_P6
P6
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_Q1
Q1
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_Q2
Q2
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_Q3
Q3
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_Q4
Q4
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C
C
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C0
C0
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C1
C1
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C2
C2
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C3
C3
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C4
C4
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C5
C5
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C6
C6
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C7
C7
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C8
C8
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C9
C9
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C10
C10
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C11
C11
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C12
C12
defined in DGAM1
.
private static final double INV_GAMMA1P_M1_C13
C13
defined in DGAM1
.
Constructor Detail |
---|
private Gamma()
Method Detail |
---|
public static double logGamma(double x)
Returns the value of log Γ(x) for x > 0.
For x ≤ 8, the implementation is based on the double precision
implementation in the NSWC Library of Mathematics Subroutines,
DGAMLN
. For x > 8, the implementation is based on
x
- Argument.
log(Gamma(x))
, Double.NaN
if
x <= 0.0
.public static double regularizedGammaP(double a, double x)
a
- Parameter.x
- Value.
MaxCountExceededException
- if the algorithm fails to converge.public static double regularizedGammaP(double a, double x, double epsilon, int maxIterations)
a
- the a parameter.x
- the value.epsilon
- When the absolute value of the nth item in the
series is less than epsilon the approximation ceases to calculate
further elements in the series.maxIterations
- Maximum number of "iterations" to complete.
MaxCountExceededException
- if the algorithm fails to converge.public static double regularizedGammaQ(double a, double x)
a
- the a parameter.x
- the value.
MaxCountExceededException
- if the algorithm fails to converge.public static double regularizedGammaQ(double a, double x, double epsilon, int maxIterations)
a
- the a parameter.x
- the value.epsilon
- When the absolute value of the nth item in the
series is less than epsilon the approximation ceases to calculate
further elements in the series.maxIterations
- Maximum number of "iterations" to complete.
MaxCountExceededException
- if the algorithm fails to converge.public static double digamma(double x)
Computes the digamma function of x.
This is an independently written implementation of the algorithm described in Jose Bernardo, Algorithm AS 103: Psi (Digamma) Function, Applied Statistics, 1976.
Some of the constants have been changed to increase accuracy at the moderate expense of run-time. The result should be accurate to within 10^-8 absolute tolerance for x >= 10^-5 and within 10^-8 relative tolerance for x > 0.
Performance for large negative values of x will be quite expensive (proportional to |x|). Accuracy for negative values of x should be about 10^-8 absolute for results less than 10^5 and 10^-8 relative for results larger than that.
x
- Argument.
public static double trigamma(double x)
x
- Argument.
digamma(double)
public static double lanczos(double x)
Returns the Lanczos approximation used to compute the gamma function. The Lanczos approximation is related to the Gamma function by the following equation
gamma(x) = sqrt(2 * pi) / x * (x + g + 0.5) ^ (x + 0.5)
* exp(-x - g - 0.5) * lanczos(x)
,
g
is the Lanczos constant.
x
- Argument.
public static double invGamma1pm1(double x)
DGAM1
.
x
- Argument.
1.0 / Gamma(1.0 + x) - 1.0
.
NumberIsTooSmallException
- if x < -0.5
NumberIsTooLargeException
- if x > 1.5
public static double logGamma1p(double x) throws NumberIsTooSmallException, NumberIsTooLargeException
DGMLN1
.
x
- Argument.
log(Gamma(1 + x))
.
NumberIsTooSmallException
- if x < -0.5
.
NumberIsTooLargeException
- if x > 1.5
.public static double gamma(double x)
DGAMMA
.
x
- Argument.
Gamma(x)
.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |