https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124391
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jsm28 at gcc dot gnu.org
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
With excess precision to IEEE single for f16, e.g.
auto f16 = 512.749999999f16 - 512.5f16; should result in 0.25f16 and not zero,
because
both constants are evaluated to the excess precision and the subtraction is
also in the excess precision and only then there is rounding (which is on
explicit casts or stores).
CCing Joseph Myers who implemented this for C years ago.