https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109008
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #6) > Note, the ulps frange_arithmetic are ulps of the result, result is in this > case 0.0, > so 1ulp is the smallest subnormal number. > That is something completely different from what we need here though for the > reverse > operations. > [1.0, 1.0] + x == [1.0, 1.0] is true with round to nearest for x in > [-0x1.0p-54, 0x1.0p-53], so that is ulp of 1.0, not the result. > Now, is this problem just around the 0 result or other values too? > Say [1.0, 1.0] + x == [2.0, 2.0]? Consider [1.0, 1.0] + x == [1.00001, 1.00001] I think that we need to adjust x here as well, it's not just [0.00001, 0.00001] with an ulp of that result but it's a wider range adjusted by the "biggest" ulp of the input ranges?