You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ps...@apache.org on 2009/10/11 23:45:55 UTC
svn commit: r824183 -
/commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/PoissonDistributionTest.java
Author: psteitz
Date: Sun Oct 11 21:45:55 2009
New Revision: 824183
URL: http://svn.apache.org/viewvc?rev=824183&view=rev
Log:
Added (disabled) test case demonstrating MATH-282 impact on poisson distribution for large means.
Modified:
commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/PoissonDistributionTest.java
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/PoissonDistributionTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/PoissonDistributionTest.java?rev=824183&r1=824182&r2=824183&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/PoissonDistributionTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/distribution/PoissonDistributionTest.java Sun Oct 11 21:45:55 2009
@@ -151,18 +151,51 @@
double x = mean * 2.0;
double dx = x / 10.0;
+ double p = Double.NaN;
+ double sigma = Math.sqrt(mean);
while (x >= 0) {
try {
- dist.cumulativeProbability(x);
+ p = dist.cumulativeProbability(x);
+ assertFalse("NaN cumulative probability returned for mean = " +
+ mean + " x = " + x,Double.isNaN(p));
+ if (x > mean - 2 * sigma) {
+ assertTrue("Zero cum probaility returned for mean = " +
+ mean + " x = " + x, p > 0);
+ }
} catch (MathException ex) {
fail("mean of " + mean + " and x of " + x + " caused " + ex.getMessage());
}
x -= dx;
}
-
+
mean *= 10.0;
}
}
+
+ /**
+ * JIRA: MATH-282
+ * TODO: activate this test when MATH-282 is resolved
+ */
+ public void testCumulativeProbabilitySpecial() throws Exception {
+ /*
+ PoissonDistribution dist = new PoissonDistributionImpl(1.0);
+ dist.setMean(9120);
+ checkProbability(dist, 9075);
+ checkProbability(dist, 9102);
+ dist.setMean(5058);
+ checkProbability(dist, 5044);
+ dist.setMean(6986);
+ checkProbability(dist, 6950);
+ */
+ }
+
+ private void checkProbability(PoissonDistribution dist, double x) throws Exception {
+ double p = dist.cumulativeProbability(x);
+ assertFalse("NaN cumulative probability returned for mean = " +
+ dist.getMean() + " x = " + x, Double.isNaN(p));
+ assertTrue("Zero cum probability returned for mean = " +
+ dist.getMean() + " x = " + x, p > 0);
+ }
public void testLargeMeanInverseCumulativeProbability() {
PoissonDistribution dist = new PoissonDistributionImpl(1.0);