[PATCH 1/8] math: Remove acoshf fma usage

Paul Zimmermann Paul.Zimmermann@inria.fr
Mon Oct 13 08:25:11 GMT 2025


I agree (tested by exhaustive test for all rounding modes within the CORE-MATH
infrastruture).

LGTM.

Reviewed-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>

Paul

> From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
> Cc: Wilco Dijkstra <Wilco.Dijkstra@arm.com>,
> 	Paul Zimmermann <Paul.Zimmermann@inria.fr>,
> 	DJ Delorie <dj@redhat.com>
> Date: Fri, 10 Oct 2025 14:49:19 -0300
> 
> The fma is not strickly required to provide correctly rounded and
> it helps on !__FP_FAST_FMA ABIs.
> 
> Checked on x86_64-linux-gnu and i686-linux-gnu.
> ---
>  sysdeps/ieee754/flt-32/e_acoshf.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/sysdeps/ieee754/flt-32/e_acoshf.c b/sysdeps/ieee754/flt-32/e_acoshf.c
> index b2a9c6b2f00..6cbc4f584b2 100644
> --- a/sysdeps/ieee754/flt-32/e_acoshf.c
> +++ b/sysdeps/ieee754/flt-32/e_acoshf.c
> @@ -93,10 +93,10 @@ __ieee754_acoshf (float x)
>  	  const double ln2h = 0x1.62e4p-1;
>  	  double Lh = ln2h * e;
>  	  double Ll = ln2l * e;
> -	  r = fma (z, c0, Ll + LIX[j]) + Lh;
> +	  r = (z * c0 + (Ll + LIX[j])) + Lh;
>  	  if (__glibc_unlikely ((asuint64 (r) & UINT64_C(0xfffffff)) == 0))
>  	    {
> -	      double h = fma (z, c0, Ll + LIX[j]) + (Lh - r);
> +	      double h = (z * c0 + (Ll + LIX[j])) + (Lh - r);
>  	      r = r + 64.0 * h;
>  	    }
>  	}
> -- 
> 2.43.0
> 
> 


More information about the Libc-alpha mailing list