Opened 5 years ago

Closed 5 years ago

#13160 closed Bugs (duplicate)

cpp_dec_float fails division with on MinGW7.1 with optimization -O2

Reported by: dwieselwind@… Owned by: John Maddock
Milestone: To Be Determined Component: multiprecision
Version: Boost 1.63.0 Severity: Optimization
Keywords: Cc:

Description

When compiling the following on MinGW 7.1 with option -O2, the assertion fires.

It succeeds (as expected) with: -O3 debug (no optimization) -m64 (in all configurations)

#include <cassert>
#include <boost/multiprecision/cpp_dec_float.hpp>

typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50> > flp_type;

int main()
{
    flp_type v1("1.33");
	flp_type v2(50);
	v1 /= v2;
	assert(v1 == flp_type("0.0266"));

    return 0;
}

Change History (1)

comment:1 by John Maddock, 5 years ago

Resolution: duplicate
Status: newclosed

Duplicates: #11178

I'm afraid division in cpp_dec_float is not exact - which is to say it doesn't round to the closest decimal, but stores guard digits instead.

Note: See TracTickets for help on using tickets.