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);