https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121404
--- Comment #1 from Cassio Neri <cassio.neri at gmail dot com> --- Actually, printf has the same issue. For instance, when x1 and x2 are defined as below. using u128 = unsigned __int128; long double const p61 = 1.0l / (u128(1) << 61); long double const x1 = 1.0l + (1.0l ) * p61; long double const x2 = 1.0l + (1.0l + __DBL_EPSILON__) * p61; Again, VERIFY (x1 != x2) passes but the output produced by printf for both numbers is 0x1.0000000000000008p+0.