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