MATH-1343

Unnecessary recomputation.
This commit is contained in:
Gilles 2016-03-26 02:32:10 +01:00
parent ae2c81ad18
commit b577805347

View File

@ -42,10 +42,8 @@ public class BetaDistribution extends AbstractRealDistribution {
private final double alpha; private final double alpha;
/** Second shape parameter. */ /** Second shape parameter. */
private final double beta; private final double beta;
/** Normalizing factor used in density computations. /** Normalizing factor used in density computations.*/
* updated whenever alpha or beta are changed. private final double z;
*/
private double z;
/** Inverse cumulative probability accuracy. */ /** Inverse cumulative probability accuracy. */
private final double solverAbsoluteAccuracy; private final double solverAbsoluteAccuracy;
@ -75,7 +73,7 @@ public class BetaDistribution extends AbstractRealDistribution {
double inverseCumAccuracy) { double inverseCumAccuracy) {
this.alpha = alpha; this.alpha = alpha;
this.beta = beta; this.beta = beta;
z = Double.NaN; z = Gamma.logGamma(alpha) + Gamma.logGamma(beta) - Gamma.logGamma(alpha + beta);
solverAbsoluteAccuracy = inverseCumAccuracy; solverAbsoluteAccuracy = inverseCumAccuracy;
} }
@ -97,13 +95,6 @@ public class BetaDistribution extends AbstractRealDistribution {
return beta; return beta;
} }
/** Recompute the normalization factor. */
private void recomputeZ() {
if (Double.isNaN(z)) {
z = Gamma.logGamma(alpha) + Gamma.logGamma(beta) - Gamma.logGamma(alpha + beta);
}
}
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public double density(double x) { public double density(double x) {
@ -114,7 +105,6 @@ public class BetaDistribution extends AbstractRealDistribution {
/** {@inheritDoc} **/ /** {@inheritDoc} **/
@Override @Override
public double logDensity(double x) { public double logDensity(double x) {
recomputeZ();
if (x < 0 || x > 1) { if (x < 0 || x > 1) {
return Double.NEGATIVE_INFINITY; return Double.NEGATIVE_INFINITY;
} else if (x == 0) { } else if (x == 0) {