From 299ac65bf3fe68e88cd2229b0abb613fdbd28e04 Mon Sep 17 00:00:00 2001 From: "Paul A. Bristow" Date: Sat, 30 Jul 2011 11:29:52 +0000 Subject: [PATCH] Uncommented to correct #include pch.hpp mistake. [SVN r73439] --- test/test_triangular.cpp | 184 +++++++++++++++++++-------------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/test/test_triangular.cpp b/test/test_triangular.cpp index 9049c2383..835fc80ee 100644 --- a/test/test_triangular.cpp +++ b/test/test_triangular.cpp @@ -8,7 +8,7 @@ // test_triangular.cpp -// #include +#include #ifdef _MSC_VER # pragma warning(disable: 4127) // conditional expression is constant. @@ -74,7 +74,7 @@ void test_spots(RealType) // Basic sanity checks: // // Some test values were generated for the triangular distribution - // using the online calculator at + // using the online calculator at // http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm // // Tolerance is just over 5 epsilon expressed as a fraction: @@ -82,7 +82,7 @@ void test_spots(RealType) RealType tol5eps = boost::math::tools::epsilon() * 5; // 5 eps as a fraction. cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << "." << endl; - + using namespace std; // for ADL of std::exp; // Tests on construction @@ -126,91 +126,91 @@ void test_spots(RealType) // Tests for PDF // // triangular_distribution() default is (0, 0, 1), mode == lower. BOOST_CHECK_CLOSE_FRACTION( // x == lower == mode - pdf(triangular_distribution(0, 0, 1), static_cast(0)), - static_cast(2), + pdf(triangular_distribution(0, 0, 1), static_cast(0)), + static_cast(2), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x == upper - pdf(triangular_distribution(0, 0, 1), static_cast(1)), - static_cast(0), + pdf(triangular_distribution(0, 0, 1), static_cast(1)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x > upper - pdf(triangular_distribution(0, 0, 1), static_cast(-1)), - static_cast(0), - tolerance); + pdf(triangular_distribution(0, 0, 1), static_cast(-1)), + static_cast(0), + tolerance); BOOST_CHECK_CLOSE_FRACTION( // x < lower - pdf(triangular_distribution(0, 0, 1), static_cast(2)), - static_cast(0), + pdf(triangular_distribution(0, 0, 1), static_cast(2)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x < lower - pdf(triangular_distribution(0, 0, 1), static_cast(2)), - static_cast(0), + pdf(triangular_distribution(0, 0, 1), static_cast(2)), + static_cast(0), tolerance); // triangular_distribution() (0, 1, 1) mode == upper BOOST_CHECK_CLOSE_FRACTION( // x == lower - pdf(triangular_distribution(0, 1, 1), static_cast(0)), - static_cast(0), + pdf(triangular_distribution(0, 1, 1), static_cast(0)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x == upper - pdf(triangular_distribution(0, 1, 1), static_cast(1)), - static_cast(2), + pdf(triangular_distribution(0, 1, 1), static_cast(1)), + static_cast(2), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x > upper - pdf(triangular_distribution(0, 1, 1), static_cast(-1)), - static_cast(0), - tolerance); + pdf(triangular_distribution(0, 1, 1), static_cast(-1)), + static_cast(0), + tolerance); BOOST_CHECK_CLOSE_FRACTION( // x < lower - pdf(triangular_distribution(0, 1, 1), static_cast(2)), - static_cast(0), + pdf(triangular_distribution(0, 1, 1), static_cast(2)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x < middle so Wiki says special case pdf = 2 * x - pdf(triangular_distribution(0, 1, 1), static_cast(0.25)), - static_cast(0.5), + pdf(triangular_distribution(0, 1, 1), static_cast(0.25)), + static_cast(0.5), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x < middle so Wiki says special case cdf = x * x - cdf(triangular_distribution(0, 1, 1), static_cast(0.25)), - static_cast(0.25 * 0.25), + cdf(triangular_distribution(0, 1, 1), static_cast(0.25)), + static_cast(0.25 * 0.25), tolerance); // triangular_distribution() (0, 0.5, 1) mode == middle. BOOST_CHECK_CLOSE_FRACTION( // x == lower - pdf(triangular_distribution(0, 0.5, 1), static_cast(0)), - static_cast(0), + pdf(triangular_distribution(0, 0.5, 1), static_cast(0)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x == upper - pdf(triangular_distribution(0, 0.5, 1), static_cast(1)), - static_cast(0), + pdf(triangular_distribution(0, 0.5, 1), static_cast(1)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x > upper - pdf(triangular_distribution(0, 0.5, 1), static_cast(-1)), - static_cast(0), - tolerance); + pdf(triangular_distribution(0, 0.5, 1), static_cast(-1)), + static_cast(0), + tolerance); BOOST_CHECK_CLOSE_FRACTION( // x < lower - pdf(triangular_distribution(0, 0.5, 1), static_cast(2)), - static_cast(0), + pdf(triangular_distribution(0, 0.5, 1), static_cast(2)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x == mode - pdf(triangular_distribution(0, 0.5, 1), static_cast(0.5)), - static_cast(2), + pdf(triangular_distribution(0, 0.5, 1), static_cast(0.5)), + static_cast(2), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x == half mode - pdf(triangular_distribution(0, 0.5, 1), static_cast(0.25)), - static_cast(1), + pdf(triangular_distribution(0, 0.5, 1), static_cast(0.25)), + static_cast(1), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x == half mode - pdf(triangular_distribution(0, 0.5, 1), static_cast(0.75)), - static_cast(1), + pdf(triangular_distribution(0, 0.5, 1), static_cast(0.75)), + static_cast(1), tolerance); if(std::numeric_limits::has_infinity) @@ -223,112 +223,112 @@ void test_spots(RealType) // of error handling is tested below with BOOST_CHECK_THROW tests. BOOST_CHECK_THROW( // x == infinity NOT OK. - pdf(triangular_distribution(0, 0, 1), static_cast(std::numeric_limits::infinity())), + pdf(triangular_distribution(0, 0, 1), static_cast(std::numeric_limits::infinity())), std::domain_error); BOOST_CHECK_THROW( // x == minus infinity not OK too. - pdf(triangular_distribution(0, 0, 1), static_cast(-std::numeric_limits::infinity())), + pdf(triangular_distribution(0, 0, 1), static_cast(-std::numeric_limits::infinity())), std::domain_error); } if(std::numeric_limits::has_quiet_NaN) { // BOOST_CHECK tests for NaN using std::numeric_limits<>::has_quiet_NaN() - should throw. BOOST_CHECK_THROW( - pdf(triangular_distribution(0, 0, 1), static_cast(std::numeric_limits::quiet_NaN())), + pdf(triangular_distribution(0, 0, 1), static_cast(std::numeric_limits::quiet_NaN())), std::domain_error); BOOST_CHECK_THROW( - pdf(triangular_distribution(0, 0, 1), static_cast(-std::numeric_limits::quiet_NaN())), + pdf(triangular_distribution(0, 0, 1), static_cast(-std::numeric_limits::quiet_NaN())), std::domain_error); } // test for x = NaN using std::numeric_limits<>::quiet_NaN() // cdf BOOST_CHECK_EQUAL( // x < lower - cdf(triangular_distribution(0, 1, 1), static_cast(-1)), + cdf(triangular_distribution(0, 1, 1), static_cast(-1)), static_cast(0) ); BOOST_CHECK_CLOSE_FRACTION( // x == lower - cdf(triangular_distribution(0, 1, 1), static_cast(0)), - static_cast(0), + cdf(triangular_distribution(0, 1, 1), static_cast(0)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x == upper - cdf(triangular_distribution(0, 1, 1), static_cast(1)), - static_cast(1), + cdf(triangular_distribution(0, 1, 1), static_cast(1)), + static_cast(1), tolerance); BOOST_CHECK_EQUAL( // x > upper - cdf(triangular_distribution(0, 1, 1), static_cast(2)), + cdf(triangular_distribution(0, 1, 1), static_cast(2)), static_cast(1)); BOOST_CHECK_CLOSE_FRACTION( // x == mode - cdf(triangular_distribution(-1, 0, 1), static_cast(0)), - //static_cast((mode - lower) / (upper - lower)), + cdf(triangular_distribution(-1, 0, 1), static_cast(0)), + //static_cast((mode - lower) / (upper - lower)), static_cast(0.5), // (0 --1) / (1 -- 1) = 0.5 tolerance); BOOST_CHECK_CLOSE_FRACTION( - cdf(triangular_distribution(0, 1, 1), static_cast(0.9L)), - static_cast(0.81L), + cdf(triangular_distribution(0, 1, 1), static_cast(0.9L)), + static_cast(0.81L), tolerance); BOOST_CHECK_CLOSE_FRACTION( - cdf(triangular_distribution(-1, 0, 1), static_cast(-1)), - static_cast(0), + cdf(triangular_distribution(-1, 0, 1), static_cast(-1)), + static_cast(0), tolerance); BOOST_CHECK_CLOSE_FRACTION( - cdf(triangular_distribution(-1, 0, 1), static_cast(-0.5L)), - static_cast(0.125L), + cdf(triangular_distribution(-1, 0, 1), static_cast(-0.5L)), + static_cast(0.125L), tolerance); BOOST_CHECK_CLOSE_FRACTION( - cdf(triangular_distribution(-1, 0, 1), static_cast(0)), - static_cast(0.5), + cdf(triangular_distribution(-1, 0, 1), static_cast(0)), + static_cast(0.5), tolerance); BOOST_CHECK_CLOSE_FRACTION( - cdf(triangular_distribution(-1, 0, 1), static_cast(+0.5L)), - static_cast(0.875L), + cdf(triangular_distribution(-1, 0, 1), static_cast(+0.5L)), + static_cast(0.875L), tolerance); BOOST_CHECK_CLOSE_FRACTION( - cdf(triangular_distribution(-1, 0, 1), static_cast(1)), - static_cast(1), + cdf(triangular_distribution(-1, 0, 1), static_cast(1)), + static_cast(1), tolerance); // cdf complement BOOST_CHECK_EQUAL( // x < lower - cdf(complement(triangular_distribution(0, 0, 1), static_cast(-1))), + cdf(complement(triangular_distribution(0, 0, 1), static_cast(-1))), static_cast(1)); BOOST_CHECK_EQUAL( // x == lower - cdf(complement(triangular_distribution(0, 0, 1), static_cast(0))), + cdf(complement(triangular_distribution(0, 0, 1), static_cast(0))), static_cast(1)); BOOST_CHECK_EQUAL( // x == mode - cdf(complement(triangular_distribution(-1, 0, 1), static_cast(0))), + cdf(complement(triangular_distribution(-1, 0, 1), static_cast(0))), static_cast(0.5)); BOOST_CHECK_EQUAL( // x == mode - cdf(complement(triangular_distribution(0, 0, 1), static_cast(0))), + cdf(complement(triangular_distribution(0, 0, 1), static_cast(0))), static_cast(1)); BOOST_CHECK_EQUAL( // x == mode - cdf(complement(triangular_distribution(0, 1, 1), static_cast(1))), + cdf(complement(triangular_distribution(0, 1, 1), static_cast(1))), static_cast(0)); - BOOST_CHECK_EQUAL( // x > upper - cdf(complement(triangular_distribution(0, 0, 1), static_cast(2))), + BOOST_CHECK_EQUAL( // x > upper + cdf(complement(triangular_distribution(0, 0, 1), static_cast(2))), static_cast(0)); BOOST_CHECK_EQUAL( // x == upper - cdf(complement(triangular_distribution(0, 0, 1), static_cast(1))), + cdf(complement(triangular_distribution(0, 0, 1), static_cast(1))), static_cast(0)); BOOST_CHECK_CLOSE_FRACTION( // x = -0.5 - cdf(complement(triangular_distribution(-1, 0, 1), static_cast(-0.5))), - static_cast(0.875L), + cdf(complement(triangular_distribution(-1, 0, 1), static_cast(-0.5))), + static_cast(0.875L), tolerance); BOOST_CHECK_CLOSE_FRACTION( // x = +0.5 - cdf(complement(triangular_distribution(-1, 0, 1), static_cast(0.5))), - static_cast(0.125), + cdf(complement(triangular_distribution(-1, 0, 1), static_cast(0.5))), + static_cast(0.125), tolerance); - + triangular_distribution triang; // Using typedef == triangular_distribution tristd; triangular_distribution tristd(0, 0.5, 1); // 'Standard' triangular distribution. BOOST_CHECK_CLOSE_FRACTION( // median of Standard triangular is sqrt(mode/2) if c > 1/2 else 1 - sqrt((1-c)/2) - median(tristd), - static_cast(0.5), + median(tristd), + static_cast(0.5), tolerance); triangular_distribution tri011(0, 1, 1); // Using default RealType double. triangular_distribution tri0q1(0, 0.25, 1); // mode is near bottom. @@ -384,7 +384,7 @@ void test_spots(RealType) for (unsigned j = 0; j < sizeof(xs) /sizeof(RealType); j++) { RealType x = xs[j]; - BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], x), quantile(complement(*dist, 1 - x)), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], x), quantile(complement(*dist, 1 - x)), tol5eps); } // for j } // for i @@ -439,7 +439,7 @@ void test_spots(RealType) BOOST_CHECK_CLOSE_FRACTION( variance(tridef), static_cast(0.16666666666666666666666666666666666666666667L), tolerance); // was 0.0833333333333333333333333333333333333333333L - + // std deviation: BOOST_CHECK_CLOSE_FRACTION( standard_deviation(tridef), sqrt(variance(tridef)), tolerance); @@ -485,8 +485,8 @@ void test_spots(RealType) // Define a (bad?) policy to ignore domain errors ('bad' arguments): typedef policy > inf_policy; // domain error returns infinity. - triangular_distribution tridef_inf(-1, 0., 1); - // But can't use BOOST_CHECK_EQUAL(?, quiet_NaN) + triangular_distribution tridef_inf(-1, 0., 1); + // But can't use BOOST_CHECK_EQUAL(?, quiet_NaN) using boost::math::isnan; BOOST_CHECK((isnan)(pdf(tridef_inf, std::numeric_limits::infinity()))); } // test for infinity using std::numeric_limits<>::infinity() @@ -500,7 +500,7 @@ void test_spots(RealType) //BOOST_CHECK_THROW(pdf(tridef, std::numeric_limits::infinity()), std::domain_error); //BOOST_CHECK_THROW(pdf(tridef, std::numeric_limits::quiet_NaN()), std::domain_error); // BOOST_CHECK_THROW(pdf(tridef, boost::math::tools::max_value() * 2), std::domain_error); // Doesn't throw. - BOOST_CHECK_EQUAL(pdf(tridef, boost::math::tools::max_value()), 0); + BOOST_CHECK_EQUAL(pdf(tridef, boost::math::tools::max_value()), 0); } // Special cases: BOOST_CHECK(pdf(tridef, -1) == 0); @@ -544,7 +544,7 @@ int test_main(int, char* []) triangular tristd (0, 0.5, 1); // Using typedef - BOOST_CHECK_EQUAL(tristd.lower(), 0); + BOOST_CHECK_EQUAL(tristd.lower(), 0); BOOST_CHECK_EQUAL(tristd.mode(), 0.5); BOOST_CHECK_EQUAL(tristd.upper(), 1); @@ -642,22 +642,22 @@ int test_main(int, char* []) cout << showpos << setprecision(2) << endl; - //triangular_distribution& dist = trim12; + //triangular_distribution& dist = trim12; for (unsigned i = 0; i < sizeof(xs) /sizeof(double); i++) { double x = xs[i] * (trim12.upper() - trim12.lower()) + trim12.lower(); double dx = cdf(trim12, x); double cx = cdf(complement(trim12, x)); - //cout << fixed << showpos << setprecision(3) + //cout << fixed << showpos << setprecision(3) // << xs[i] << ", " << x << ", " << pdf(trim12, x) << ", " << dx << ", " << cx << ",, " ; BOOST_CHECK_CLOSE_FRACTION(cx, 1 - dx, tol500eps); // cx == 1 - dx // << setprecision(2) << scientific << cr - x << ", " // difference x - quan(cdf) // << setprecision(3) << fixed - // << quantile(trim12, dx) << ", " - // << quantile(complement(trim12, 1 - dx)) << ", " - // << quantile(complement(trim12, cx)) << ", " + // << quantile(trim12, dx) << ", " + // << quantile(complement(trim12, 1 - dx)) << ", " + // << quantile(complement(trim12, cx)) << ", " // << endl; BOOST_CHECK_CLOSE_FRACTION(quantile(trim12, dx), quantile(complement(trim12, 1 - dx)), tol500eps); }