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