]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Remove libm-test.inc special-casing of errors up to 0.5 ulp.
authorJoseph Myers <joseph@codesourcery.com>
Fri, 23 Oct 2015 22:54:36 +0000 (22:54 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 23 Oct 2015 22:54:36 +0000 (22:54 +0000)
libm-test.inc has special-case code treating errors of up to 0.5 ulp
as allowed (for functions that aren't exactly determined) even if no
such errors appeared in libm-test-ulps.  This only applies to avoid
errors for individual function calls, not for the overall check of
ulps at the end of testing a function, resulting in confusing output
of the form:

testing double (without inline functions)
Maximal error of `log_upward'
 is      : 1 ulp
 accepted: 0 ulp

with no report of what testcase produced that error.  This patch
removes the special case, so that instead you get:

testing double (without inline functions)
Failure: Test: log_upward (0x1.0000000000001p+0)
Result:
 is:          2.2204460492503129e-16   0x1.fffffffffffffp-53
 should be:   2.2204460492503131e-16   0x1.0000000000000p-52
 difference:  2.4651903288156619e-32   0x1.0000000000000p-105
 ulp       :  0.5000
 max.ulp   :  0.0000
Maximal error of `log_upward'
 is      : 1 ulp
 accepted: 0 ulp

(for formats other than ldbl-128ibm, 0.5 ulp errors only occur in
unusual cases such as this where the correctly rounded result is a
power of 2 and the computed result is just below it).  This should not
affect which cases result in the test failing, just ensure that if it
fails then some failure for an individual function call was reported.

Tested for x86_64 and x86.

* math/libm-test.inc (check_float_internal): Do not special-case
errors up to 0.5 ulp.

ChangeLog
math/libm-test.inc

index 8a51ab12b356e9e909cdf6db645b8add2c8073c5..041a6eb4f069fbc55c18d289ebcd6f8d29a38309 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2015-10-23  Joseph Myers  <joseph@codesourcery.com>
 
+       * math/libm-test.inc (check_float_internal): Do not special-case
+       errors up to 0.5 ulp.
+
        * math/auto-libm-test-in: Add more tests of log, log10, log1p and
        log2.
        * math/auto-libm-test-out: Regenerated.
index 989d6aea6d37e60e21aeccfe0b13040c34a223fa..239587dc6a0c7f94686c477f4104e02a5f406e29 100644 (file)
@@ -834,8 +834,7 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
          && computed == 0.0 && expected == 0.0
          && signbit(computed) != signbit (expected))
        ok = 0;
-      else if ((ulps <= 0.5 && ulps <= max_valid_error)
-              || (ulps <= max_ulp && !ignore_max_ulp))
+      else if (ulps <= max_ulp && !ignore_max_ulp)
        ok = 1;
       else
        ok = 0;