[apps/proba] Tests about binomial law

This commit is contained in:
Léa Saviot
2019-08-27 10:19:06 +02:00
parent 48971b6eb3
commit f4c9889b67
2 changed files with 19 additions and 3 deletions

View File

@@ -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 \

View File

@@ -3,6 +3,7 @@
#include <assert.h>
#include <float.h>
#include <cmath>
#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;