[PATCH] Fix ldbl-128ibm fma (Inf, Inf, finite) (bug 23272)

Joseph Myers joseph@codesourcery.com
Wed Jun 13 23:07:00 GMT 2018


On Wed, 13 Jun 2018, Tulio Magno Quites Machado Filho wrote:

> This solution is mainly based on Joseph's fix at commit
> ca121b117f2c9c97a4c121334481a96c94fef3a0.
> 
> It has extra differences because:
>  - part of the non-finite arguments were already being treated;
>  - when x and y are +-Inf and z if finite, an overflow can be
>    generated.

I'm not clear what the observed issues you are fixing are.  Is this patch 
to avoid running into libgcc generating spurious overflows for the case 
you mention, or is it intended to fix wrong results?

> +    if (!isfinite (x) && !isfinite (y) && isfinite(z))
> +      /* Compute the result as x * y to avoid an overflow.  */
> +      return x * y;

Why wouldn't this be needed if just one of x and y is not finite?  If x * 
y + z generates a spurious overflow in some cases where x * y is infinite, 
I'd expect that to apply equally to the case where the infinity comes from 
(Inf * finite), not just from (Inf * Inf).

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Libc-alpha mailing list