mirror of
https://github.com/boostorg/math.git
synced 2026-01-19 04:22:09 +00:00
Fix for scipy issue 17146 (#847)
See: https://github.com/scipy/scipy/issues/17146
This commit is contained in:
@@ -483,11 +483,6 @@ namespace boost
|
||||
{
|
||||
return 1; // Probability = 1 = certainty.
|
||||
}
|
||||
if (k == 0)
|
||||
{ // binomial coeffic (n 0) = 1,
|
||||
// n ^ 0 = 1
|
||||
return pow(1 - dist.success_fraction(), n);
|
||||
}
|
||||
if (k == n)
|
||||
{ // binomial coeffic (n n) = 1,
|
||||
// n ^ 0 = 1
|
||||
|
||||
@@ -892,6 +892,7 @@ test-suite distribution_tests :
|
||||
[ compile test_dist_deduction_guides.cpp : [ requires cpp_deduction_guides cpp_variadic_templates ] ]
|
||||
[ run git_issue_800.cpp ../../test/build//boost_unit_test_framework ]
|
||||
[ run git_issue_845.cpp ../../test/build//boost_unit_test_framework ]
|
||||
[ run scipy_issue_17146.cpp ../../test/build//boost_unit_test_framework ]
|
||||
;
|
||||
|
||||
test-suite mp :
|
||||
|
||||
28
test/scipy_issue_17146.cpp
Normal file
28
test/scipy_issue_17146.cpp
Normal file
@@ -0,0 +1,28 @@
|
||||
// Copyright Matt Borland, 2022
|
||||
// Use, modification and distribution are subject to the
|
||||
// Boost Software License, Version 1.0. (See accompanying file
|
||||
// LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
#include <array>
|
||||
#include <numeric>
|
||||
#include <boost/math/distributions/binomial.hpp>
|
||||
#include "math_unit_test.hpp"
|
||||
|
||||
int main()
|
||||
{
|
||||
constexpr double n {1541096362225563.0};
|
||||
constexpr double p {1.0477878413173978e-18};
|
||||
const auto binom_dist = boost::math::binomial_distribution<double>(n, p);
|
||||
std::array<double, 3> vals {};
|
||||
|
||||
for (size_t i = 0; i < 2; ++i)
|
||||
{
|
||||
vals[i] = boost::math::pdf(binom_dist, i);
|
||||
}
|
||||
|
||||
CHECK_ULP_CLOSE(vals[0], 0.9983865609638467, 10);
|
||||
|
||||
CHECK_LE(std::accumulate(vals.begin(), vals.end(), 0.0), 1.0);
|
||||
|
||||
return boost::math::test::report_errors();
|
||||
}
|
||||
Reference in New Issue
Block a user