From: Adhemerval Zanella Date: Fri, 10 Oct 2025 17:49:20 +0000 (-0300) Subject: math: Optimize fma call on acospif X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c075ff00a63bc1f0428cbf6c53e930fbbc6ef5c2;p=thirdparty%2Fglibc.git math: Optimize fma call on acospif 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 --- diff --git a/sysdeps/ieee754/flt-32/s_acospif.c b/sysdeps/ieee754/flt-32/s_acospif.c index caf65d42f3..63230bd3b3 100644 --- a/sysdeps/ieee754/flt-32/s_acospif.c +++ b/sysdeps/ieee754/flt-32/s_acospif.c @@ -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