Opened 7 years ago
Closed 7 years ago
#12112 closed Bugs (fixed)
cpp_dec_float: assigning double(-infinity) drops the negative
| Reported by: | Owned by: | John Maddock | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | multiprecision |
| Version: | Boost 1.60.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
Initializing (or assigning) negative infinity to a cpp_dec_float assigns positive infinity instead of negative infinity.
The problem seems to be that cpp_dec_float.hpp, in operator=(long double a), does:
if((boost::math::isinf)(a))
return *this = inf();
but I think that should instead be (I have not tested this):
if((boost::math::isinf)(a)) {
*this = inf();
if (a < 0) negate();
return *this;
}
Note:
See TracTickets
for help on using tickets.

Thanks, that exposed a number of related issues, fixed in https://github.com/boostorg/multiprecision/commit/aeab24b4fbb5738740d40beb1c55aad039ca1ac1