From bd422328989aed45c7dc4d8397e036084c2575b5 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 22 Mar 2016 08:15:19 +0000 Subject: [PATCH] Add extra conversion function to mpfr_float_backend to prevent double-rounding in some corner cases. --- include/boost/multiprecision/mpfr.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/multiprecision/mpfr.hpp b/include/boost/multiprecision/mpfr.hpp index fde558be..299de4a5 100644 --- a/include/boost/multiprecision/mpfr.hpp +++ b/include/boost/multiprecision/mpfr.hpp @@ -1228,6 +1228,11 @@ inline void eval_convert_to(boost::long_long_type* result, const mpfr_float_back } #endif template +inline void eval_convert_to(float* result, const mpfr_float_backend& val) BOOST_NOEXCEPT +{ + *result = mpfr_get_flt(val.data(), GMP_RNDN); +} +template inline void eval_convert_to(double* result, const mpfr_float_backend& val) BOOST_NOEXCEPT { *result = mpfr_get_d(val.data(), GMP_RNDN);