summaryrefslogtreecommitdiff
path: root/boost-1.81-random-Update-multiprecision_int_test.cpp-to-not-accidental.patch
diff options
context:
space:
mode:
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.patch34
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
+