https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120993
--- Comment #6 from Joseph S. Myers <jsm28 at gcc dot gnu.org> --- e_max is 1023, not 1024, because that's the largest exponent for which all choices of the 106 significand bits are valid. But LDBL_MAX_EXP is 1024, not 1023, because 2**1023 is representable. Note the "if that representable finite floating-point number is normalized" in the specification for LDBL_MAX_EXP; 2**1023 isn't normalized, because not all choices of the subsequent 105 significand bits are valid. In particular, 2**1024 - 2**918 cannot be represented in this format (recall that the high double must equal the sum of the two parts rounded to nearest). I don't see any bug here at all.