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 2017/06/22 01:18:14 UTC

[2/3] [math] Avoid repeated computations.

Avoid repeated computations.


Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/b05bd69c
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/b05bd69c
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/b05bd69c

Branch: refs/heads/master
Commit: b05bd69cdd841c02a3b645568ee5478fdbfc07d1
Parents: 34adc60
Author: Gilles <er...@apache.org>
Authored: Thu Jun 22 03:14:35 2017 +0200
Committer: Gilles <er...@apache.org>
Committed: Thu Jun 22 03:14:35 2017 +0200

----------------------------------------------------------------------
 .../math4/stat/interval/WilsonScoreInterval.java      | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-math/blob/b05bd69c/src/main/java/org/apache/commons/math4/stat/interval/WilsonScoreInterval.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/stat/interval/WilsonScoreInterval.java b/src/main/java/org/apache/commons/math4/stat/interval/WilsonScoreInterval.java
index f36bd3b..f46ce4c 100644
--- a/src/main/java/org/apache/commons/math4/stat/interval/WilsonScoreInterval.java
+++ b/src/main/java/org/apache/commons/math4/stat/interval/WilsonScoreInterval.java
@@ -33,18 +33,18 @@ public class WilsonScoreInterval implements BinomialConfidenceInterval {
     @Override
     public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) {
         IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel);
-        final double alpha = (1.0 - confidenceLevel) / 2;
+        final double alpha = (1 - confidenceLevel) / 2;
         final NormalDistribution normalDistribution = new NormalDistribution();
         final double z = normalDistribution.inverseCumulativeProbability(1 - alpha);
         final double zSquared = z * z;
-        final double zSquaredOverNumTrials = zSquared / numberOfTrials;
-        final double mean = (double) numberOfSuccesses / (double) numberOfTrials;
+        final double oneOverNumTrials = 1d / numberOfTrials;
+        final double zSquaredOverNumTrials = zSquared * oneOverNumTrials;
+        final double mean = oneOverNumTrials * numberOfSuccesses;
 
-        final double factor = 1.0 / (1 + zSquaredOverNumTrials);
+        final double factor = 1 / (1 + zSquaredOverNumTrials);
         final double modifiedSuccessRatio = mean + zSquaredOverNumTrials / 2;
-        final double difference = z *
-                                  FastMath.sqrt(1.0 / numberOfTrials * mean * (1 - mean) +
-                                                (zSquaredOverNumTrials / (4 * numberOfTrials)));
+        final double difference = z * FastMath.sqrt(oneOverNumTrials * mean * (1 - mean) +
+                                                    (oneOverNumTrials * zSquaredOverNumTrials / 4));
 
         final double lowerBound = factor * (modifiedSuccessRatio - difference);
         final double upperBound = factor * (modifiedSuccessRatio + difference);