Questions about powf inaccuracies on ARM Cortex-M7
Paul Zimmermann
Paul.Zimmermann@inria.fr
Thu Aug 21 09:52:07 GMT 2025
Hi Matthias,
I'm not sure if the code used on ARM is the same as the one used on x86_64.
Anyway you can try the following entries from [1] and [2]:
x1 = 0x1.d55902p-1
y1 = -0x1.fe037ep+9
powf(x1,y1) yields an error of 169 ulps in Newlib 4.4.0:
libm gives 0x1.fffa12p+127
mpfr gives 0x1.fff8cp+127
x2 = 0x1.d6411cp-102
y2 = 0x1.793482p+0
powf(x2,y2) yields an error of 1.0 ulp in Newlib 4.5.0,
this is the largest error I found with Newlib 4.5.0 on x86_64
with rounding to nearest (the entry "169" in Table 1 of [2]
should read 1.00, I forgot to update it, this will be fixed
in the next update).
If you find different values than on x86_64, you can try the "check_sample2.c"
code we provide to find large errors on ARM (cf [1] or [2]).
Best regards,
Paul
[1] https://members.loria.fr/PZimmermann/papers/glibc240.pdf
[2] https://members.loria.fr/PZimmermann/papers/accuracy.pdf
More information about the Newlib
mailing list