https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70117

--- Comment #5 from joseph at codesourcery dot com <joseph at codesourcery dot 
com> ---
The issue is that GCC internally handles IBM long double as having a 
106-bit mantissa.  There is one value that is larger than can be 
represented with a 106-bit mantissa, while still being finite and 
satisfying the rule that the two halves, added in round-to-nearest, 
produce the top half.

In my view, isinf, isnan and isfinite for IBM long double should all be 
special-cased in GCC to call the corresponding operation on the top half 
of the number (for both hard and soft float).  This is correct in all 
cases and more efficient than anything that needs to look at both halves.  
It should also be a lot easier than fixing LDBL_MAX by allowing numbers 
with mantissas wider than 106 bits.

Reply via email to