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: | 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;
}
      
  Note:
 See   TracTickets
 for help on using tickets.
    
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.