This is an automated email from the ASF dual-hosted git repository. aherbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-statistics.git
commit c2c4cc356098aa168e9276ac56d8124a659364a1 Author: aherbert <aherb...@apache.org> AuthorDate: Fri Jul 30 17:06:13 2021 +0100 Remove use of explicit return value variable. Return the result directly and eliminate unnecessary nesting. This change is to match the style of the majority of the implementations in the library. --- .../distribution/BinomialDistribution.java | 38 ++++------- .../distribution/CauchyDistribution.java | 9 +-- .../distribution/ExponentialDistribution.java | 9 +-- .../distribution/HypergeometricDistribution.java | 46 ++++---------- .../distribution/PascalDistribution.java | 74 +++++++++------------- .../distribution/PoissonDistribution.java | 13 ++-- .../distribution/SaddlePointExpansionUtils.java | 61 +++++++----------- .../distribution/WeibullDistribution.java | 9 +-- .../distribution/GammaDistributionTest.java | 15 ++--- 9 files changed, 99 insertions(+), 175 deletions(-) diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java index 0e382ab..506a73a 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java @@ -80,47 +80,37 @@ public class BinomialDistribution extends AbstractDiscreteDistribution { public double logProbability(int x) { if (numberOfTrials == 0) { return (x == 0) ? 0. : Double.NEGATIVE_INFINITY; + } else if (x < 0 || x > numberOfTrials) { + return Double.NEGATIVE_INFINITY; } - double ret; - if (x < 0 || x > numberOfTrials) { - ret = Double.NEGATIVE_INFINITY; - } else { - ret = SaddlePointExpansionUtils.logBinomialProbability(x, - numberOfTrials, probabilityOfSuccess, - 1.0 - probabilityOfSuccess); - } - return ret; + return SaddlePointExpansionUtils.logBinomialProbability(x, + numberOfTrials, probabilityOfSuccess, + 1.0 - probabilityOfSuccess); } /** {@inheritDoc} */ @Override public double cumulativeProbability(int x) { - double ret; if (x < 0) { - ret = 0.0; + return 0.0; } else if (x >= numberOfTrials) { - ret = 1.0; - } else { - // Use a helper function to compute the complement of the survival probability - ret = RegularizedBetaUtils.complement(probabilityOfSuccess, - x + 1.0, (double) numberOfTrials - x); + return 1.0; } - return ret; + // Use a helper function to compute the complement of the survival probability + return RegularizedBetaUtils.complement(probabilityOfSuccess, + x + 1.0, (double) numberOfTrials - x); } /** {@inheritDoc} */ @Override public double survivalProbability(int x) { - double ret; if (x < 0) { - ret = 1.0; + return 1.0; } else if (x >= numberOfTrials) { - ret = 0.0; - } else { - ret = RegularizedBeta.value(probabilityOfSuccess, - x + 1.0, (double) numberOfTrials - x); + return 0.0; } - return ret; + return RegularizedBeta.value(probabilityOfSuccess, + x + 1.0, (double) numberOfTrials - x); } /** diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java index 771ea90..8c7cbd4 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/CauchyDistribution.java @@ -95,18 +95,15 @@ public class CauchyDistribution extends AbstractContinuousDistribution { */ @Override public double inverseCumulativeProbability(double p) { - double ret; if (p < 0 || p > 1) { throw new DistributionException(DistributionException.INVALID_PROBABILITY, p); } else if (p == 0) { - ret = Double.NEGATIVE_INFINITY; + return Double.NEGATIVE_INFINITY; } else if (p == 1) { - ret = Double.POSITIVE_INFINITY; - } else { - ret = median + scale * Math.tan(Math.PI * (p - .5)); + return Double.POSITIVE_INFINITY; } - return ret; + return median + scale * Math.tan(Math.PI * (p - .5)); } /** diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java index dac9bc6..7898aaf 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java @@ -101,18 +101,13 @@ public class ExponentialDistribution extends AbstractContinuousDistribution { */ @Override public double inverseCumulativeProbability(double p) { - double ret; - if (p < 0 || p > 1) { throw new DistributionException(DistributionException.INVALID_PROBABILITY, p); } else if (p == 1) { - ret = Double.POSITIVE_INFINITY; - } else { - ret = -mean * Math.log1p(-p); + return Double.POSITIVE_INFINITY; } - - return ret; + return -mean * Math.log1p(-p); } /** {@inheritDoc} */ diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java index 3373d73..3b08cff 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java @@ -136,17 +136,12 @@ public class HypergeometricDistribution extends AbstractDiscreteDistribution { /** {@inheritDoc} */ @Override public double logProbability(int x) { - double ret; - if (x < lowerBound || x > upperBound) { - ret = Double.NEGATIVE_INFINITY; - } else { - final double p = (double) sampleSize / (double) populationSize; - final double q = (double) (populationSize - sampleSize) / (double) populationSize; - ret = logProbability(x, p, q); + return Double.NEGATIVE_INFINITY; } - - return ret; + final double p = (double) sampleSize / (double) populationSize; + final double q = (double) (populationSize - sampleSize) / (double) populationSize; + return logProbability(x, p, q); } /** @@ -171,33 +166,23 @@ public class HypergeometricDistribution extends AbstractDiscreteDistribution { /** {@inheritDoc} */ @Override public double cumulativeProbability(int x) { - double ret; - if (x < lowerBound) { - ret = 0.0; + return 0.0; } else if (x >= upperBound) { - ret = 1.0; - } else { - ret = innerCumulativeProbability(lowerBound, x); + return 1.0; } - - return ret; + return innerCumulativeProbability(lowerBound, x); } /** {@inheritDoc} */ @Override public double survivalProbability(int x) { - double ret; - if (x < lowerBound) { - ret = 1.0; + return 1.0; } else if (x >= upperBound) { - ret = 0.0; - } else { - ret = innerCumulativeProbability(upperBound, x + 1); + return 0.0; } - - return ret; + return innerCumulativeProbability(upperBound, x + 1); } /** @@ -209,17 +194,12 @@ public class HypergeometricDistribution extends AbstractDiscreteDistribution { * @return the upper tail CDF for this distribution. */ public double upperCumulativeProbability(int x) { - double ret; - if (x <= lowerBound) { - ret = 1.0; + return 1.0; } else if (x > upperBound) { - ret = 0.0; - } else { - ret = innerCumulativeProbability(upperBound, x); + return 0.0; } - - return ret; + return innerCumulativeProbability(upperBound, x); } /** diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java index 55b27ab..f62e85d 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java @@ -105,77 +105,63 @@ public class PascalDistribution extends AbstractDiscreteDistribution { /** {@inheritDoc} */ @Override public double probability(int x) { - double ret; if (x < 0) { - ret = 0.0; + return 0.0; } else if (x == 0) { // Special case exploiting cancellation. - ret = Math.pow(probabilityOfSuccess, numberOfSuccesses); - } else { - final int n = x + numberOfSuccesses - 1; - if (n < 0) { - // overflow - // The binomial coefficient -> inf when n -> inf - ret = 0.0; - } else { - ret = BinomialCoefficientDouble.value(n, numberOfSuccesses - 1) * - Math.pow(probabilityOfSuccess, numberOfSuccesses) * - Math.pow(1.0 - probabilityOfSuccess, x); - } + return Math.pow(probabilityOfSuccess, numberOfSuccesses); } - return ret; + final int n = x + numberOfSuccesses - 1; + if (n < 0) { + // overflow + // The binomial coefficient -> inf when n -> inf + return 0.0; + } + return BinomialCoefficientDouble.value(n, numberOfSuccesses - 1) * + Math.pow(probabilityOfSuccess, numberOfSuccesses) * + Math.pow(1.0 - probabilityOfSuccess, x); } /** {@inheritDoc} */ @Override public double logProbability(int x) { - double ret; if (x < 0) { - ret = Double.NEGATIVE_INFINITY; + return Double.NEGATIVE_INFINITY; } else if (x == 0) { // Special case exploiting cancellation. - ret = logProbabilityOfSuccess * numberOfSuccesses; - } else { - final int n = x + numberOfSuccesses - 1; - if (n < 0) { - // overflow - // The binomial coefficient -> inf when n -> inf - ret = Double.NEGATIVE_INFINITY; - } else { - ret = LogBinomialCoefficient.value(x + - numberOfSuccesses - 1, numberOfSuccesses - 1) + - logProbabilityOfSuccess * numberOfSuccesses + - log1mProbabilityOfSuccess * x; - } + return logProbabilityOfSuccess * numberOfSuccesses; + } + final int n = x + numberOfSuccesses - 1; + if (n < 0) { + // overflow + // The binomial coefficient -> inf when n -> inf + return Double.NEGATIVE_INFINITY; } - return ret; + return LogBinomialCoefficient.value(x + + numberOfSuccesses - 1, numberOfSuccesses - 1) + + logProbabilityOfSuccess * numberOfSuccesses + + log1mProbabilityOfSuccess * x; } /** {@inheritDoc} */ @Override public double cumulativeProbability(int x) { - double ret; if (x < 0) { - ret = 0.0; - } else { - ret = RegularizedBeta.value(probabilityOfSuccess, - numberOfSuccesses, x + 1.0); + return 0.0; } - return ret; + return RegularizedBeta.value(probabilityOfSuccess, + numberOfSuccesses, x + 1.0); } /** {@inheritDoc} */ @Override public double survivalProbability(int x) { - double ret; if (x < 0) { - ret = 1.0; - } else { - // Use a helper function to compute the complement of the cumulative probability - ret = RegularizedBetaUtils.complement(probabilityOfSuccess, - numberOfSuccesses, x + 1.0); + return 1.0; } - return ret; + // Use a helper function to compute the complement of the cumulative probability + return RegularizedBetaUtils.complement(probabilityOfSuccess, + numberOfSuccesses, x + 1.0); } /** diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java index c2649fa..8444627 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PoissonDistribution.java @@ -82,17 +82,14 @@ public class PoissonDistribution extends AbstractDiscreteDistribution { /** {@inheritDoc} */ @Override public double logProbability(int x) { - double ret; if (x < 0 || x == Integer.MAX_VALUE) { - ret = Double.NEGATIVE_INFINITY; + return Double.NEGATIVE_INFINITY; } else if (x == 0) { - ret = -mean; - } else { - ret = -SaddlePointExpansionUtils.getStirlingError(x) - - SaddlePointExpansionUtils.getDeviancePart(x, mean) - - 0.5 * LOG_TWO_PI - 0.5 * Math.log(x); + return -mean; } - return ret; + return -SaddlePointExpansionUtils.getStirlingError(x) - + SaddlePointExpansionUtils.getDeviancePart(x, mean) - + 0.5 * LOG_TWO_PI - 0.5 * Math.log(x); } /** {@inheritDoc} */ diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/SaddlePointExpansionUtils.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/SaddlePointExpansionUtils.java index c623078..4ac10c0 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/SaddlePointExpansionUtils.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/SaddlePointExpansionUtils.java @@ -90,19 +90,16 @@ final class SaddlePointExpansionUtils { * @return the Striling's series error. */ static double getStirlingError(int z) { - double ret; if (z <= STIRLING_ERROR_THRESHOLD) { - ret = EXACT_STIRLING_ERRORS[2 * z]; - } else { - final double z2 = (double) z * z; - ret = (0.083333333333333333333 - - (0.00277777777777777777778 - - (0.00079365079365079365079365 - - (0.000595238095238095238095238 - - 0.0008417508417508417508417508 / - z2) / z2) / z2) / z2) / z; + return EXACT_STIRLING_ERRORS[2 * z]; } - return ret; + final double z2 = (double) z * z; + return (0.083333333333333333333 - + (0.00277777777777777777778 - + (0.00079365079365079365079365 - + (0.000595238095238095238095238 - + 0.0008417508417508417508417508 / + z2) / z2) / z2) / z2) / z; } /** @@ -124,7 +121,6 @@ final class SaddlePointExpansionUtils { * @return a part of the deviance. */ static double getDeviancePart(int x, double mu) { - double ret; if (Math.abs(x - mu) < 0.1 * (x + mu)) { final double d = x - mu; double v = d / (x + mu); @@ -139,14 +135,11 @@ final class SaddlePointExpansionUtils { s1 = s + ej / ((j * 2) + 1); ++j; } - ret = s1; - } else { - if (x == 0) { - return mu; - } - ret = x * Math.log(x / mu) + mu - x; + return s1; + } else if (x == 0) { + return mu; } - return ret; + return x * Math.log(x / mu) + mu - x; } /** @@ -160,30 +153,24 @@ final class SaddlePointExpansionUtils { * @return log(p(x)). */ static double logBinomialProbability(int x, int n, double p, double q) { - double ret; if (x == 0) { if (p < ONE_TENTH) { - ret = -getDeviancePart(n, n * q) - n * p; - } else { - if (n == 0) { - return 0; - } - ret = n * Math.log(q); + return -getDeviancePart(n, n * q) - n * p; + } else if (n == 0) { + return 0; } + return n * Math.log(q); } else if (x == n) { if (q < ONE_TENTH) { - ret = -getDeviancePart(n, n * p) - n * q; - } else { - ret = n * Math.log(p); + return -getDeviancePart(n, n * p) - n * q; } - } else { - final int nMx = n - x; - ret = getStirlingError(n) - getStirlingError(x) - - getStirlingError(nMx) - getDeviancePart(x, n * p) - - getDeviancePart(nMx, n * q); - final double f = (TWO_PI * x * nMx) / n; - ret = -0.5 * Math.log(f) + ret; + return n * Math.log(p); } - return ret; + final int nMx = n - x; + final double ret = getStirlingError(n) - getStirlingError(x) - + getStirlingError(nMx) - getDeviancePart(x, n * p) - + getDeviancePart(nMx, n * q); + final double f = (TWO_PI * x * nMx) / n; + return -0.5 * Math.log(f) + ret; } } diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java index 60505d9..1ba499c 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java @@ -147,18 +147,15 @@ public class WeibullDistribution extends AbstractContinuousDistribution { */ @Override public double inverseCumulativeProbability(double p) { - double ret; if (p < 0 || p > 1) { throw new DistributionException(DistributionException.INVALID_PROBABILITY, p); } else if (p == 0) { - ret = 0.0; + return 0.0; } else if (p == 1) { - ret = Double.POSITIVE_INFINITY; - } else { - ret = scale * Math.pow(-Math.log1p(-p), 1.0 / shape); + return Double.POSITIVE_INFINITY; } - return ret; + return scale * Math.pow(-Math.log1p(-p), 1.0 / shape); } /** diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java index 0fb2654..e463065 100644 --- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java +++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/GammaDistributionTest.java @@ -235,18 +235,13 @@ class GammaDistributionTest extends ContinuousDistributionAbstractTest { * double Gamma.logGamma(double) * prior to MATH-849 */ - double ret; - if (Double.isNaN(x) || (x <= 0.0)) { - ret = Double.NaN; - } else { - final double sum = LanczosApproximation.value(x); - final double tmp = x + LanczosApproximation.g() + .5; - ret = ((x + .5) * Math.log(tmp)) - tmp + - HALF_LOG_2_PI + Math.log(sum / x); + return Double.NaN; } - - return ret; + final double sum = LanczosApproximation.value(x); + final double tmp = x + LanczosApproximation.g() + .5; + return ((x + .5) * Math.log(tmp)) - tmp + + HALF_LOG_2_PI + Math.log(sum / x); } public static double density(final double x,