diff --git a/test/test_poisson.cpp b/test/test_poisson.cpp index e7df3c691..77f4fb67c 100644 --- a/test/test_poisson.cpp +++ b/test/test_poisson.cpp @@ -116,6 +116,69 @@ void test_spots(RealType) static_cast(2)), // two k events. static_cast(9.196986029286060E-1), // probability. tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(10)), // two k events. + static_cast(9.999999899522340E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(15)), // two k events. + static_cast(9.999999999999810E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(16)), // two k events. + static_cast(9.999999999999990E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(17)), // two k events. + static_cast(1.), // probability unity for double. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(33)), // k events at limit for float unchecked_factorial table. + static_cast(1.), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(100)), // mean unity. + static_cast(33)), // k events at limit for float unchecked_factorial table. + static_cast(6.328271240363390E-15), // probability is tiny. + tolerance*static_cast(2e11)); // 6.3495253382825722e-015 MathCAD + // Note that there two tiny probability are much more different. + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(100)), // mean unity. + static_cast(34)), // k events at limit for float unchecked_factorial table. + static_cast(1.898481372109020E-14), // probability is tiny. + tolerance*static_cast(2e11)); // 1.8984813721090199e-014 MathCAD + + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(33)), // mean = k + static_cast(33)), // k events above limit for float unchecked_factorial table. + static_cast(5.461191812386560E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(33)), // mean = k-1 + static_cast(34)), // k events above limit for float unchecked_factorial table. + static_cast(6.133535681502950E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(34)), // k events above limit for float unchecked_factorial table. + static_cast(1.), // probability. + tolerance); + BOOST_CHECK_CLOSE( cdf(poisson_distribution(static_cast(5.)), // mean static_cast(5)), // k events.