Corrected variance (Thanks Thomas) and added tests for inverseCumulativeProbability
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/0dec6e76 Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/0dec6e76 Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/0dec6e76 Branch: refs/heads/master Commit: 0dec6e76fb544fa3e8bf5fd17f16314735971dd7 Parents: 4cb944e Author: Ole <ole.er...@gmail.com> Authored: Fri Oct 10 17:24:57 2014 -0500 Committer: Ole <ole.er...@gmail.com> Committed: Fri Oct 10 17:24:57 2014 -0500 ---------------------------------------------------------------------- .../AbstractIntegerDistributionTest.java | 21 +++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-math/blob/0dec6e76/src/test/java/org/apache/commons/math3/distribution/AbstractIntegerDistributionTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/math3/distribution/AbstractIntegerDistributionTest.java b/src/test/java/org/apache/commons/math3/distribution/AbstractIntegerDistributionTest.java index 97ea5a0..d6f668b 100644 --- a/src/test/java/org/apache/commons/math3/distribution/AbstractIntegerDistributionTest.java +++ b/src/test/java/org/apache/commons/math3/distribution/AbstractIntegerDistributionTest.java @@ -28,6 +28,25 @@ public class AbstractIntegerDistributionTest { protected final double p = diceDistribution.probability(1); @Test + public void testInverseCumulativeProbabilityMethod() + { + double precision = 0.000000000000001; + Assert.assertEquals(1, diceDistribution.inverseCumulativeProbability(0)); + Assert.assertEquals(1, diceDistribution.inverseCumulativeProbability((1d-Double.MIN_VALUE)/6d)); + Assert.assertEquals(2, diceDistribution.inverseCumulativeProbability((1d+precision)/6d)); + Assert.assertEquals(2, diceDistribution.inverseCumulativeProbability((2d-Double.MIN_VALUE)/6d)); + Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability((2d+precision)/6d)); + Assert.assertEquals(3, diceDistribution.inverseCumulativeProbability((3d-Double.MIN_VALUE)/6d)); + Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability((3d+precision)/6d)); + Assert.assertEquals(4, diceDistribution.inverseCumulativeProbability((4d-Double.MIN_VALUE)/6d)); + Assert.assertEquals(5, diceDistribution.inverseCumulativeProbability((4d+precision)/6d)); + Assert.assertEquals(5, diceDistribution.inverseCumulativeProbability((5d-precision)/6d));//Can't use Double.MIN + Assert.assertEquals(6, diceDistribution.inverseCumulativeProbability((5d+precision)/6d)); + Assert.assertEquals(6, diceDistribution.inverseCumulativeProbability((6d-precision)/6d));//Can't use Double.MIN + Assert.assertEquals(6, diceDistribution.inverseCumulativeProbability((6d)/6d)); + } + + @Test public void testCumulativeProbabilitiesSingleArguments() { for (int i = 1; i < 7; i++) { Assert.assertEquals(p * i, @@ -90,7 +109,7 @@ public class AbstractIntegerDistributionTest { } public double getNumericalVariance() { - return 12.5 - 3.5 * 3.5; // E(X^2) - E(X)^2 + return 70/24; // E(X^2) - E(X)^2 } public int getSupportLowerBound() {