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