Subject: Re: [Boost-bugs] [Boost C++ Libraries] #12039: cpp_bin_float convert_to<double>() rounding mistake
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2016-03-22 08:22:40
#12039: cpp_bin_float convert_to<double>() rounding mistake
--------------------------------------+----------------------------
Reporter: Michael Shatz <shatz@â¦> | Owner: johnmaddock
Type: Bugs | Status: closed
Milestone: To Be Determined | Component: multiprecision
Version: Boost 1.61.0 | Severity: Problem
Resolution: fixed | Keywords:
--------------------------------------+----------------------------
Comment (by anonymous):
OK good, I just pushed a few additional commits, adds an exhaustive
convert-to-float test program (takes about half a day to run, so not part
of the regular tests). This uncovered a fencepost error in the
subtraction code, plus a double-rounding error in mpfr_float_backend (both
also fixed).
The main advantage of the new code is that it uses cpp_bin_float's
existing rounding code to ensure a correct result, and is completely
agnostic as to the widest integer size, or the size of the float being
converted to. In trivial cases it basically degenerates to the same
principle as yours - the temporary cpp_bin_float becomes a trivial wrapper
around a single unsigned integer, and the bit-extraction loop executes
just the once.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/12039#comment:7> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:19 UTC