diff --git a/src/java/org/apache/commons/math/distribution/BinomialDistributionImpl.java b/src/java/org/apache/commons/math/distribution/BinomialDistributionImpl.java index 382eaf38b..a29a13a0c 100644 --- a/src/java/org/apache/commons/math/distribution/BinomialDistributionImpl.java +++ b/src/java/org/apache/commons/math/distribution/BinomialDistributionImpl.java @@ -24,7 +24,7 @@ import org.apache.commons.math.util.MathUtils; /** * The default implementation of {@link BinomialDistribution}. * - * @version $Revision: 1.17 $ $Date: 2004/07/23 05:22:36 $ + * @version $Revision: 1.18 $ $Date: 2004/07/25 16:29:24 $ */ public class BinomialDistributionImpl extends AbstractDiscreteDistribution @@ -162,6 +162,9 @@ public class BinomialDistributionImpl /** * For this distribution, X, this method returns the largest x, such * that P(X ≤ x) ≤ p. + *

+ * Returns -1 for p=0 and Integer.MAX_VALUE for + * p=1. * * @param p the desired probability * @return the largest x such that P(X ≤ x) <= p @@ -172,7 +175,7 @@ public class BinomialDistributionImpl public int inverseCumulativeProbability(final double p) throws MathException { // handle extreme values explicitly if (p == 0) { - return 0; + return -1; } if (p == 1) { return Integer.MAX_VALUE; diff --git a/src/java/org/apache/commons/math/distribution/DiscreteDistribution.java b/src/java/org/apache/commons/math/distribution/DiscreteDistribution.java index 8fb089390..c117a933d 100644 --- a/src/java/org/apache/commons/math/distribution/DiscreteDistribution.java +++ b/src/java/org/apache/commons/math/distribution/DiscreteDistribution.java @@ -20,7 +20,7 @@ import org.apache.commons.math.MathException; /** * Base interface for various discrete distributions. * - * @version $Revision: 1.15 $ $Date: 2004/06/23 16:26:15 $ + * @version $Revision: 1.16 $ $Date: 2004/07/25 16:29:24 $ */ public interface DiscreteDistribution { /** @@ -51,11 +51,26 @@ public interface DiscreteDistribution { double cumulativeProbability(int x0, int x1) throws MathException; /** - * For this distribution, X, this method returns the largest x such that P(X ≤ x) <= p. + * For this distribution, X, this method returns the largest x such that + * P(X ≤ x) <= p. + *

+ * Note that this definition implies:

+ * * @param p the cumulative probability. - * @return x. + * @return the largest x such that P(X ≤ x) <= p * @throws MathException if the inverse cumulative probability can not be * computed due to convergence or other numerical errors. + * @throws IllegalArgumentException if p is not between 0 and 1 (inclusive) */ int inverseCumulativeProbability(double p) throws MathException; } diff --git a/src/test/org/apache/commons/math/distribution/BinomialDistributionTest.java b/src/test/org/apache/commons/math/distribution/BinomialDistributionTest.java index 56b1650de..666796a41 100644 --- a/src/test/org/apache/commons/math/distribution/BinomialDistributionTest.java +++ b/src/test/org/apache/commons/math/distribution/BinomialDistributionTest.java @@ -20,7 +20,7 @@ package org.apache.commons.math.distribution; * Extends DiscreteDistributionAbstractTest. See class javadoc for * DiscreteDistributionAbstractTest for details. * - * @version $Revision: 1.14 $ $Date: 2004/07/23 05:22:36 $ + * @version $Revision: 1.15 $ $Date: 2004/07/25 16:29:25 $ */ public class BinomialDistributionTest extends DiscreteDistributionAbstractTest { @@ -69,7 +69,7 @@ public class BinomialDistributionTest extends DiscreteDistributionAbstractTest { /** Creates the default inverse cumulative probability density test expected values */ public int[] makeInverseCumulativeTestValues() { - return new int[] {0,1, 2, 3, 4, 4, 9, 9, 9, 8, 8, Integer.MAX_VALUE}; + return new int[] {-1, 1, 2, 3, 4, 4, 9, 9, 9, 8, 8, Integer.MAX_VALUE}; } //----------------- Additional test cases --------------------------------- diff --git a/src/test/org/apache/commons/math/distribution/HypergeometricDistributionTest.java b/src/test/org/apache/commons/math/distribution/HypergeometricDistributionTest.java index 8682435c9..19aaf676d 100644 --- a/src/test/org/apache/commons/math/distribution/HypergeometricDistributionTest.java +++ b/src/test/org/apache/commons/math/distribution/HypergeometricDistributionTest.java @@ -21,7 +21,7 @@ package org.apache.commons.math.distribution; * Extends DiscreteDistributionAbstractTest. See class javadoc for * DiscreteDistributionAbstractTest for details. * - * @version $Revision: 1.11 $ $Date: 2004/05/11 02:12:11 $ + * @version $Revision: 1.12 $ $Date: 2004/07/25 16:29:25 $ */ public class HypergeometricDistributionTest extends DiscreteDistributionAbstractTest { @@ -64,13 +64,13 @@ public class HypergeometricDistributionTest extends DiscreteDistributionAbstract /** Creates the default inverse cumulative probability test input values */ public double[] makeInverseCumulativeTestPoints() { - return new double[] {0.001d, 0.010d, 0.025d, 0.050d, 0.100d, 0.999d, - 0.990d, 0.975d, 0.950d, 0.900d}; + return new double[] {0d, 0.001d, 0.010d, 0.025d, 0.050d, 0.100d, 0.999d, + 0.990d, 0.975d, 0.950d, 0.900d, 1d}; } /** Creates the default inverse cumulative probability density test expected values */ public int[] makeInverseCumulativeTestValues() { - return new int[] {-1, 0, 0, 0, 0, 4, 3, 3, 3, 3}; + return new int[] {-1, -1, 0, 0, 0, 0, 4, 3, 3, 3, 3, 5}; } //-------------------- Additional test cases ------------------------------