]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
math: Optimize fma call on acospif
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Fri, 10 Oct 2025 17:49:20 +0000 (14:49 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 14 Oct 2025 11:46:06 +0000 (08:46 -0300)
The fma is required only for inputs less than 0x1.0fd288p-127.  Also
only add the extra check for !__FP_FAST_FMA targets.

Checked on x86_64-linux-gnu and aarch64-linux-gnu.
Reviewed-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
sysdeps/ieee754/flt-32/s_acospif.c

index caf65d42f3d8f687ea4caa81ef596904176c59c4..63230bd3b37dd135ef959be8d9ea1599d64acc0e 100644 (file)
@@ -67,7 +67,12 @@ __acospif (float x)
       /* For |x| <= 0x1.0fd288p-127, c0 += c4*(z4*z4) would raise a spurious
         underflow exception, we use an FMA instead, where c4 * z4 does not
         underflow. */
-      c0 = fma (c4 * z4, z4, c0);
+#ifndef __FP_FAST_FMA
+      if (__glibc_likely (ax > 0x1.0fd288p-127))
+       c0 = (c4 * z4) * z4 + c0;
+      else
+#endif
+       c0 = fma (c4 * z4, z4, c0);
       return 0.5 - z * c0;
     }
   else