Subject: Re: [Boost-bugs] [Boost C++ Libraries] #13503: Boost.Multiprecision generates incorrect code
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2018-03-30 16:25:28
#13503: Boost.Multiprecision generates incorrect code
-----------------------------------------+----------------------------
Reporter: Sam Lunt <samuel.j.lunt@â¦> | Owner: John Maddock
Type: Bugs | Status: new
Milestone: To Be Determined | Component: multiprecision
Version: Boost 1.64.0 | Severity: Problem
Resolution: | Keywords:
-----------------------------------------+----------------------------
Comment (by John Maddock):
This was deliberate, but on reflection is a mistake.
The issue is in the narrowing conversion from 128 to 64 bit integer - you
are relying on this being truncation, but there's nothing in the standard
to specify or guarantee that - instead it's implementation defined
behaviour and is permitted to vary by compiler and/or platform.
Boost.Multiprecision's default interconversion functions convert a value
that would overflow the destination type to the maximum value that type
can hold. This part is the mistake for unsigned integers (and only for
unsigned integers) which should probably follow the common practice of
truncation.
-- Ticket URL: <https://svn.boost.org/trac10/ticket/13503#comment:1> 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 : 2018-03-30 16:31:51 UTC