You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2016/04/22 01:15:27 UTC
[41/53] [abbrv] [math] MATH-1343
MATH-1343
Unnecessary recomputation.
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/b5778053
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/b5778053
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/b5778053
Branch: refs/heads/develop
Commit: b577805347d56f1927615fad311868a3537a9cb6
Parents: ae2c81a
Author: Gilles <er...@apache.org>
Authored: Sat Mar 26 02:32:10 2016 +0100
Committer: Gilles <er...@apache.org>
Committed: Sat Mar 26 02:32:10 2016 +0100
----------------------------------------------------------------------
.../math4/distribution/BetaDistribution.java | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-math/blob/b5778053/src/main/java/org/apache/commons/math4/distribution/BetaDistribution.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/distribution/BetaDistribution.java b/src/main/java/org/apache/commons/math4/distribution/BetaDistribution.java
index 987e8eb..abccb93 100644
--- a/src/main/java/org/apache/commons/math4/distribution/BetaDistribution.java
+++ b/src/main/java/org/apache/commons/math4/distribution/BetaDistribution.java
@@ -42,10 +42,8 @@ public class BetaDistribution extends AbstractRealDistribution {
private final double alpha;
/** Second shape parameter. */
private final double beta;
- /** Normalizing factor used in density computations.
- * updated whenever alpha or beta are changed.
- */
- private double z;
+ /** Normalizing factor used in density computations.*/
+ private final double z;
/** Inverse cumulative probability accuracy. */
private final double solverAbsoluteAccuracy;
@@ -75,7 +73,7 @@ public class BetaDistribution extends AbstractRealDistribution {
double inverseCumAccuracy) {
this.alpha = alpha;
this.beta = beta;
- z = Double.NaN;
+ z = Gamma.logGamma(alpha) + Gamma.logGamma(beta) - Gamma.logGamma(alpha + beta);
solverAbsoluteAccuracy = inverseCumAccuracy;
}
@@ -97,13 +95,6 @@ public class BetaDistribution extends AbstractRealDistribution {
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} */
@Override
public double density(double x) {
@@ -114,7 +105,6 @@ public class BetaDistribution extends AbstractRealDistribution {
/** {@inheritDoc} **/
@Override
public double logDensity(double x) {
- recomputeZ();
if (x < 0 || x > 1) {
return Double.NEGATIVE_INFINITY;
} else if (x == 0) {