From f4c9889b67fdaf3e7e77ceaeb2dde4a93445820a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 27 Aug 2019 10:19:06 +0200 Subject: [PATCH] [apps/proba] Tests about binomial law --- apps/probability/Makefile | 4 ++-- apps/probability/test/distributions.cpp | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/apps/probability/Makefile b/apps/probability/Makefile index 860892894..57f946a83 100644 --- a/apps/probability/Makefile +++ b/apps/probability/Makefile @@ -2,6 +2,7 @@ apps += Probability::App app_headers += apps/probability/app.h app_probability_test_src = $(addprefix apps/probability/,\ + distribution/binomial_distribution.cpp \ distribution/chi_squared_distribution.cpp \ distribution/geometric_distribution.cpp \ distribution/helper.cpp \ @@ -9,6 +10,7 @@ app_probability_test_src = $(addprefix apps/probability/,\ distribution/distribution.cpp \ distribution/regularized_gamma.cpp \ distribution/student_distribution.cpp \ + distribution/two_parameter_distribution.cpp \ ) app_probability_src = $(addprefix apps/probability/,\ @@ -23,12 +25,10 @@ app_probability_src = $(addprefix apps/probability/,\ calculation_type_controller.cpp \ cell.cpp \ image_cell.cpp \ - distribution/binomial_distribution.cpp \ distribution/exponential_distribution.cpp \ distribution/normal_distribution.cpp \ distribution/poisson_distribution.cpp \ distribution/regularized_gamma.cpp \ - distribution/two_parameter_distribution.cpp \ distribution/uniform_distribution.cpp \ distribution_controller.cpp \ distribution_curve_view.cpp \ diff --git a/apps/probability/test/distributions.cpp b/apps/probability/test/distributions.cpp index deab8b832..a1a46b13c 100644 --- a/apps/probability/test/distributions.cpp +++ b/apps/probability/test/distributions.cpp @@ -3,6 +3,7 @@ #include #include #include +#include "../distribution/binomial_distribution.h" #include "../distribution/chi_squared_distribution.h" #include "../distribution/geometric_distribution.h" #include "../distribution/student_distribution.h" @@ -11,7 +12,7 @@ void assert_cumulative_distributive_function_direct_and_inverse_is(Probability:: double r = distribution->cumulativeDistributiveFunctionAtAbscissa(x); quiz_assert(!std::isnan(r)); quiz_assert(!std::isinf(r)); - quiz_assert(std::abs(r-result)/result < FLT_EPSILON); + quiz_assert(std::abs(r-result) < FLT_EPSILON || std::abs(r-result)/result < FLT_EPSILON); r = distribution->cumulativeDistributiveInverseForProbability(&result); quiz_assert(!std::isnan(r)); @@ -22,6 +23,21 @@ void assert_cumulative_distributive_function_direct_and_inverse_is(Probability:: //TODO other distributions +QUIZ_CASE(binomial_distribution) { + // B(32, 0.6) + Probability::BinomialDistribution distribution; + distribution.setParameterAtIndex(32.0, 0); + distribution.setParameterAtIndex(0.6, 1); + assert_cumulative_distributive_function_direct_and_inverse_is(&distribution, 19.0, 0.53819340022502382137048471122398041188716888427734375); + assert_cumulative_distributive_function_direct_and_inverse_is(&distribution, 10.0, 0.00094770581410635293569122428181117356871254742145538330078125); + + // B(17, 0.1) + distribution.setParameterAtIndex(17.0, 0); + distribution.setParameterAtIndex(0.1, 1); + assert_cumulative_distributive_function_direct_and_inverse_is(&distribution, 0.0, 0.166771816996665822596668249389040283858776092529296875); + assert_cumulative_distributive_function_direct_and_inverse_is(&distribution, 1.0, 0.4817852491014791294077213024138472974300384521484375); +} + QUIZ_CASE(chi_squared_distribution) { // Chi Squared distribution with 1 degree of freedom Probability::ChiSquaredDistribution distribution;