largest known errors
Paul Zimmermann
Paul.Zimmermann@inria.fr
Wed Dec 13 08:49:34 GMT 2023
Hi,
on https://www.gnu.org/software/libc/manual/html_node/Errors-in-Math-Functions.html it is written:
"The table lists the maximum error for each function which is exposed by one of the existing tests in the test suite." [*]
Function i686 ix86 x86_64
j0f 9 9 9
j0 5 5 3
As a consequence, people conclude that the maximum error is 9 ulps for all
GNU libc functions, see https://dl.acm.org/doi/pdf/10.1145/3624062.3624166
end of page 893, right column.
But we know the largest error for j0 on x86_64 is at least 4.51e14 ulps [1].
See also https://sourceware.org/bugzilla/show_bug.cgi?id=27670.
Moreover the test suite contains many "xfail" entries, for example:
j0 0x1.31ec02p+1 xfail:binary64
If one adds j0 0x1.33d152e971b4p+1 in auto-libm-test-in and reruns make
regen-ulps, one gets as output:
Failure: Test: j0 (0x2.67a2a5d2e368p+0)
Result:
is: -5.7480381767140581e-17 -0x1.0914db68ef3e2p-54
should be: -6.1087652597367303e-17 -0x1.19b7921f03c8ep-54
difference: 3.6072708302267220e-18 0x1.0a2b6b6148ac0p-58
ulp : 292656578119852.0000
max.ulp : 3.0000
but the final result says:
Test suite completed:
0 test cases plus 0 tests for exception flags and
0 tests for errno executed.
All tests passed successfully.
I believe we should amend the sentence [*], and/or replace the bounds that we
know are wrong by some special value, say U for Unbounded.
Paul
[1] https://members.loria.fr/PZimmermann/papers/accuracy.pdf
More information about the Libc-alpha
mailing list