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.

Reply via email to