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.
|
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)
|
if (k == n)
|
||||||
{ // binomial coeffic (n n) = 1,
|
{ // binomial coeffic (n n) = 1,
|
||||||
// n ^ 0 = 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 ] ]
|
[ 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_800.cpp ../../test/build//boost_unit_test_framework ]
|
||||||
[ run git_issue_845.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 :
|
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