math: Add inputs that yield larger errors for float type

Carlos O'Donell carlos@redhat.com
Wed Apr 1 01:47:00 GMT 2020


On 3/31/20 4:37 PM, Joseph Myers wrote:
> On Tue, 31 Mar 2020, Carlos O'Donell via Libc-alpha wrote:
> 
>> I'd like to see Joseph give this quick review also before committing.
> 
> This patch is OK.
>>
>> You don't say why you limit j*/y* functions to ULP <=9, but I expect the
> 
> The libm-test machinery refuses to accept a larger ULP value in a 
> libm-test-ulps file.  So any input that produces a larger ULP value 
> results in a test FAIL.  And we have Bugzilla to track known issues rather 
> than leaving FAILs in the testsuite.
> 

Paul,

The changes trigger higher ULPs on my test system and one failure for y1.

Things pass if I drop the y1 value e.g. 0x1.f7e5dcp+0.

I don't think we can reliably add y1.

I can push your patch without the y1 value, tell me if that works for you.

See the attached patch.

I'm using gcc version 9.2.1 20190827 (Red Hat 9.2.1-1) (GCC), and the y1
test seems sensitive to compilers.

testing double (without inline functions)
Failure: Test: y1_downward (0x1.f7e5dcp+0)
Result:
 is:         -1.2497917621721319e-01  -0x1.ffea2a288b10ep-4
 should be:  -1.2497917621721299e-01  -0x1.ffea2a288b0ffp-4
 difference:  2.0816681711721685e-16   0x1.e000000000000p-53
 ulp       :  15.0000
 max.ulp   :  3.0000
Failure: Test: y1_upward (0x1.f7e5dcp+0)
Result:
 is:         -1.2497917621721281e-01  -0x1.ffea2a288b0f3p-4
 should be:  -1.2497917621721296e-01  -0x1.ffea2a288b0fep-4
 difference:  1.5265566588595903e-16   0x1.6000000000000p-53
 ulp       :  11.0000
 max.ulp   :  7.0000

Test suite completed:
  172 test cases plus 168 tests for exception flags and
    168 tests for errno executed.
  2 errors occurred.

testing float (without inline functions)
Failure: Test: y1_downward (0x1.f7e5dcp+0)
Result:
 is:         -1.24979288e-01  -0x1.ffea48p-4
 should be:  -1.24979184e-01  -0x1.ffea2cp-4
 difference:  1.04308128e-07   0x1.c00000p-24
 ulp       :  14.0000
 max.ulp   :  2.0000

Test suite completed:
  144 test cases plus 140 tests for exception flags and
    140 tests for errno executed.
  1 errors occurred.

testing _Float32 (without inline functions)
Failure: Test: y1_downward (0x1.f7e5dcp+0)
Result:
 is:         -1.24979288e-01  -0x1.ffea48p-4
 should be:  -1.24979184e-01  -0x1.ffea2cp-4
 difference:  1.04308128e-07   0x1.c00000p-24
 ulp       :  14.0000
 max.ulp   :  2.0000

Test suite completed:
  144 test cases plus 140 tests for exception flags and
    140 tests for errno executed.
  1 errors occurred.

testing _Float32x (without inline functions)
Failure: Test: y1_downward (0x1.f7e5dcp+0)
Result:
 is:         -1.2497917621721319e-01  -0x1.ffea2a288b10ep-4
 should be:  -1.2497917621721299e-01  -0x1.ffea2a288b0ffp-4
 difference:  2.0816681711721685e-16   0x1.e000000000000p-53
 ulp       :  15.0000
 max.ulp   :  3.0000
Failure: Test: y1_upward (0x1.f7e5dcp+0)
Result:
 is:         -1.2497917621721281e-01  -0x1.ffea2a288b0f3p-4
 should be:  -1.2497917621721296e-01  -0x1.ffea2a288b0fep-4
 difference:  1.5265566588595903e-16   0x1.6000000000000p-53
 ulp       :  11.0000
 max.ulp   :  7.0000

Test suite completed:
  172 test cases plus 168 tests for exception flags and
    168 tests for errno executed.
  2 errors occurred.

testing _Float64 (without inline functions)
Failure: Test: y1_downward (0x1.f7e5dcp+0)
Result:
 is:         -1.2497917621721319e-01  -0x1.ffea2a288b10ep-4
 should be:  -1.2497917621721299e-01  -0x1.ffea2a288b0ffp-4
 difference:  2.0816681711721685e-16   0x1.e000000000000p-53
 ulp       :  15.0000
 max.ulp   :  3.0000
Failure: Test: y1_upward (0x1.f7e5dcp+0)
Result:
 is:         -1.2497917621721281e-01  -0x1.ffea2a288b0f3p-4
 should be:  -1.2497917621721296e-01  -0x1.ffea2a288b0fep-4
 difference:  1.5265566588595903e-16   0x1.6000000000000p-53
 ulp       :  11.0000
 max.ulp   :  7.0000

Test suite completed:
  172 test cases plus 168 tests for exception flags and
    168 tests for errno executed.
  2 errors occurred.

testing _Float64x (without inline functions)
Failure: Test: y1_downward (0x1.f7e5dcp+0)
Result:
 is:         -1.24979176217212976465e-01  -0xf.ff515144587f5550p-7
 should be:  -1.24979176217212976384e-01  -0xf.ff515144587f5490p-7
 difference:  8.13151629364128325505e-20   0xc.0000000000000000p-67
 ulp       :  12.0000
 max.ulp   :  7.0000

Test suite completed:
  196 test cases plus 192 tests for exception flags and
    192 tests for errno executed.
  1 errors occurred.

testing long double (without inline functions)
Failure: Test: y1_downward (0x1.f7e5dcp+0)
Result:
 is:         -1.24979176217212976465e-01  -0xf.ff515144587f5550p-7
 should be:  -1.24979176217212976384e-01  -0xf.ff515144587f5490p-7
 difference:  8.13151629364128325505e-20   0xc.0000000000000000p-67
 ulp       :  12.0000
 max.ulp   :  7.0000

Test suite completed:
  196 test cases plus 192 tests for exception flags and
    192 tests for errno executed.
  1 errors occurred.


-- 
Cheers,
Carlos.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-math-Add-inputs-that-yield-larger-errors-for-float-t.patch
Type: text/x-patch
Size: 40292 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20200331/452a5da8/attachment-0001.bin>


More information about the Libc-alpha mailing list