On GCC 11 (x86-64), the previous code produced test failures like
this one:
Failure: Test: exp10m1_towardzero (-0x1.1p+4)
Result:
is: -1.
00000000e+00 -0x1.000000p+0
should be: -9.
99999940e-01 -0x1.fffffep-1
difference: 5.
96046447e-08 0x1.000000p-24
ulp : 1.0000
max.ulp : 0.0000
Apply a similar fix to exp2m1f.
Co-authored-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
{ /* x < -7.52575 */
if (ax > (0xffu << 23))
return x + x; /* nan */
- return (ux == 0xff800000) ? -0x1p+0 : -0x1p+0 + 0x1p-26f;
+ return (ux == 0xff800000) ? -0x1p+0f : -0x1p+0f + 0x1p-26f;
}
else if (__glibc_unlikely (ax > 0x421a209au))
{ /* x > 38.5318 */
{ /* x <= -25 */
if (ax > (0xffu << 23))
return x + x; /* nan */
- return (ux == 0xff800000) ? -0x1p+0 : -0x1p+0 + 0x1p-26f;
+ return (ux == 0xff800000) ? -0x1p+0f : -0x1p+0f + 0x1p-26f;
}
else if (__glibc_unlikely (ax >= 0x43000000u))
{ /* x >= 128 */