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.