diff options
Diffstat (limited to 'boost-1.81-random-Update-multiprecision_int_test.cpp-to-not-accidental.patch')
-rw-r--r-- | boost-1.81-random-Update-multiprecision_int_test.cpp-to-not-accidental.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/boost-1.81-random-Update-multiprecision_int_test.cpp-to-not-accidental.patch b/boost-1.81-random-Update-multiprecision_int_test.cpp-to-not-accidental.patch new file mode 100644 index 0000000..d42af6c --- /dev/null +++ b/boost-1.81-random-Update-multiprecision_int_test.cpp-to-not-accidental.patch @@ -0,0 +1,34 @@ +From 7561690135c67ecf88c2133bad7680ebd2665c36 Mon Sep 17 00:00:00 2001 +From: jzmaddock <john@johnmaddock.co.uk> +Date: Wed, 1 Jun 2022 19:32:55 +0100 +Subject: [PATCH] Update multiprecision_int_test.cpp to not accidentality + overflow type double. Multiprecision now performs correct rounding when + converting to double - previously the max value for uint1024_t would just fit + in a double if it was truncated. But now that it's correctly rounded it + overflows and breaks the calculation. + +--- + libs/random/test/multiprecision_int_test.cpp | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/libs/random/test/multiprecision_int_test.cpp b/libs/random/test/multiprecision_int_test.cpp +index 41ec229..a861cca 100644 +--- a/libs/random/test/multiprecision_int_test.cpp ++++ b/libs/random/test/multiprecision_int_test.cpp +@@ -215,8 +215,11 @@ BOOST_AUTO_TEST_CASE_TEMPLATE(discrete_distributions, distribution_type, other_d + distribution_type d2; + ss >> d2; + BOOST_CHECK(d == d2); +- +- boost::random::independent_bits_engine<boost::random::mt19937, std::numeric_limits<boost::multiprecision::uint1024_t>::digits, boost::multiprecision::uint1024_t > big_random; ++ // ++ // The number of digits in the independent_bits_engine must be low enough that we don't overflow ++ // when converting to a double (see other_distributions declared above). ++ // ++ boost::random::independent_bits_engine<boost::random::mt19937, std::numeric_limits<boost::multiprecision::uint1024_t>::digits - 2, boost::multiprecision::uint1024_t > big_random; + for(unsigned i = 0; i < 200; ++i) + { + result_type r = d(big_random); +-- +2.33.0 + |