[poincare/normal_distribution] Fix StandardNormalCumulDistFuncAtAbs

This commit is contained in:
Léa Saviot
2020-04-28 11:11:38 +02:00
committed by EmilieNumworks
parent 2768c143c8
commit 061fe05b40
2 changed files with 6 additions and 2 deletions

View File

@@ -88,8 +88,8 @@ T NormalDistribution::StandardNormalCumulativeDistributiveFunctionAtAbscissa(T a
if (std::isnan(abscissa)) {
return NAN;
}
if (std::isinf(abscissa) || abscissa > k_boundStandardNormalDistribution) {
return (T)1.0;
if (std::isinf(abscissa) || std::fabs(abscissa) > k_boundStandardNormalDistribution) {
return abscissa > (T)0.0 ? (T)1.0 : (T)0.0;
}
if (abscissa == (T)0.0) {
return (T)0.5;

View File

@@ -303,6 +303,10 @@ QUIZ_CASE(poincare_approximation_function) {
assert_expression_approximates_to<float>("normcdf(1.2, 3.4, 31.36)", "0.3472125");
assert_expression_approximates_to<double>("normcdf(1.2, 3.4, 31.36)", "3.4721249841587ᴇ-1");
assert_expression_approximates_to<float>("normcdf(-1ᴇ99,3.4,31.36)", "0");
assert_expression_approximates_to<float>("normcdf(1ᴇ99,3.4,31.36)", "1");
assert_expression_approximates_to<float>("normcdf(-6,0,1)", "0");
assert_expression_approximates_to<float>("normcdf(6,0,1)", "1");
assert_expression_approximates_to<float>("normcdf2(0.5, 3.6, 1.3, 11.56)", "0.3436388");
assert_expression_approximates_to<double>("normcdf2(0.5, 3.6, 1.3, 11.56)", "3.4363881299147ᴇ-1");