Opened 7 years ago
Closed 7 years ago
#12075 closed Bugs (fixed)
denorm_min is zero for float128
Reported by: | Owned by: | John Maddock | |
---|---|---|---|
Milestone: | To Be Determined | Component: | multiprecision |
Version: | Boost 1.60.0 | Severity: | Problem |
Keywords: | Cc: |
Description
The following program demonstrates the bug:
#include <iostream> #include <limits> #include <boost/multiprecision/float128.hpp> boost::multiprecision::float128 typedef binary128; int main() { std::cout << "boost " BOOST_LIB_VERSION << "\n"; std::cout << "boost denorm_min: " << std::numeric_limits<binary128>::denorm_min() << "\n"; __float128 trueDenormMin=0; *reinterpret_cast<char*>(&trueDenormMin)=1; // craft the denormal manually std::cout << "true denorm_min: " << binary128(trueDenormMin) << "\n"; }
Its output is
boost 1_60 boost denorm_min: 0 true denorm_min: 6.47518e-4966
Note:
See TracTickets
for help on using tickets.
Fixed in https://github.com/boostorg/multiprecision/commit/eec1c310d569dcade360ca7834a71556cf6b6473.