https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120937
--- Comment #2 from Marc Adams <madams846 at hotmail dot com> --- The floating-point multiply is exact, no rounding, for type float and longer. Please check that the operations with these values have no rounding for yourself. Even if the multiply had rounding IEEE rules say the result should be positive zero. If the system invokes fma then the fma result is wrong. This bug might not be a new arithmetic bug, it might be a new 'fma' bug. My program computes a*b+c and compares it to the fma result. When the floating-point result is zero with no rounding my program defaults to the floating-point environment a*b+c . Testing does not catch the error if a*b+c agrees with fma(a,b,c). Testing catches a disagreement now for type float and fmaf because float is +0 and fmaf is -0.