Fix ldbl-128 erfl spurious underflows (bug 16287).

This patch fixes bug 16287, spurious underflows from ldbl-128 erfl
arising from it calling erfcl for arguments with absolute value at
least 1.0, although for large positive arguments erfcl correctly
underflows but erfl shouldn't.  The fix is simply to avoid calling
erfcl, and just return 1, for arguments above a cut-off large enough
that erfl correctly rounds to-nearest as 1 but not so large that erfcl
underflows.

Tested mips64.  Also tested x86_64 and x86 to confirm the new tests
(taken from the tests of erfc) don't cause any problems there; no ulps
updates needed.

	[BZ #16287]
	* sysdeps/ieee754/ldbl-128/s_erfl.c (__erfl): Return 1 without
	calling __erfcl for arguments at least 16.
	* math/auto-libm-test-in: Add more tests of erf.
	* math/auto-libm-test-out: Regenerated.
This commit is contained in:
Joseph Myers 2014-06-24 20:56:56 +00:00
parent 0ea5d373c7
commit e7dd3c8c1d
5 changed files with 324 additions and 12 deletions

View File

@ -1,5 +1,11 @@
2014-06-24 Joseph Myers <joseph@codesourcery.com>
[BZ #16287]
* sysdeps/ieee754/ldbl-128/s_erfl.c (__erfl): Return 1 without
calling __erfcl for arguments at least 16.
* math/auto-libm-test-in: Add more tests of erf.
* math/auto-libm-test-out: Regenerated.
* sysdeps/unix/sysv/linux/configure.ac: Remove cases for
individual architectures.
* sysdeps/unix/sysv/linux/configure: Regenerated.

24
NEWS
View File

@ -10,18 +10,18 @@ Version 2.20
* The following bugs are resolved with this release:
6804, 9894, 12994, 13347, 13651, 14308, 14770, 15119, 15132, 15347, 15514,
15698, 15804, 15894, 15946, 16002, 16064, 16095, 16198, 16284, 16315,
16348, 16349, 16354, 16357, 16362, 16447, 16516, 16532, 16545, 16564,
16574, 16599, 16600, 16609, 16610, 16611, 16613, 16619, 16623, 16629,
16632, 16634, 16639, 16642, 16648, 16649, 16670, 16674, 16677, 16680,
16681, 16683, 16689, 16695, 16701, 16706, 16707, 16712, 16713, 16714,
16724, 16731, 16739, 16740, 16743, 16754, 16758, 16759, 16760, 16770,
16786, 16789, 16791, 16796, 16799, 16800, 16815, 16823, 16824, 16831,
16838, 16849, 16854, 16876, 16877, 16878, 16882, 16885, 16888, 16890,
16912, 16915, 16916, 16917, 16918, 16922, 16927, 16928, 16932, 16943,
16958, 16965, 16966, 16967, 16977, 16978, 16984, 16990, 16996, 17009,
17022, 17031, 17042, 17048, 17050, 17058, 17061, 17062, 17069, 17075,
17079, 17084.
15698, 15804, 15894, 15946, 16002, 16064, 16095, 16198, 16284, 16287,
16315, 16348, 16349, 16354, 16357, 16362, 16447, 16516, 16532, 16545,
16564, 16574, 16599, 16600, 16609, 16610, 16611, 16613, 16619, 16623,
16629, 16632, 16634, 16639, 16642, 16648, 16649, 16670, 16674, 16677,
16680, 16681, 16683, 16689, 16695, 16701, 16706, 16707, 16712, 16713,
16714, 16724, 16731, 16739, 16740, 16743, 16754, 16758, 16759, 16760,
16770, 16786, 16789, 16791, 16796, 16799, 16800, 16815, 16823, 16824,
16831, 16838, 16849, 16854, 16876, 16877, 16878, 16882, 16885, 16888,
16890, 16912, 16915, 16916, 16917, 16918, 16922, 16927, 16928, 16932,
16943, 16958, 16965, 16966, 16967, 16977, 16978, 16984, 16990, 16996,
17009, 17022, 17031, 17042, 17048, 17050, 17058, 17061, 17062, 17069,
17075, 17079, 17084.
* Optimized strchr implementation for AArch64. Contributed by ARM Ltd.

View File

@ -803,6 +803,16 @@ erf 0x1.c5bf94p-127
erf 0x3.8b7fa8p-128
erf -0x3.8b7f12369ded8p-1024
erf 0x3.8b7f12369ded5518p-16384
erf 26.0
erf 28.0
erf 100
erf 106
erf 106.5
erf 106.625
erf 107
erf 108
erf 1000
erf max
erfc 0.0
erfc -0

View File

@ -88101,6 +88101,300 @@ erf 0x3.8b7f12369ded5518p-16384
= erf tonearest ldbl-128 0x3.8b7f12369ded5518p-16384L : 0x4.0000000000000029274014aceae4p-16384L : inexact-ok
= erf towardzero ldbl-128 0x3.8b7f12369ded5518p-16384L : 0x4.0000000000000029274014aceae4p-16384L : inexact-ok
= erf upward ldbl-128 0x3.8b7f12369ded5518p-16384L : 0x4.0000000000000029274014aceae8p-16384L : inexact-ok
erf 26.0
= erf downward flt-32 0x1.ap+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x1.ap+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x1.ap+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x1.ap+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x1.ap+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x1.ap+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x1.ap+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x1.ap+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x1.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x1.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x1.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x1.ap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x1.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x1.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x1.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x1.ap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x1.ap+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x1.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x1.ap+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x1.ap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x1.ap+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x1.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x1.ap+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x1.ap+4L : 0x1p+0L : inexact-ok
erf 28.0
= erf downward flt-32 0x1.cp+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x1.cp+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x1.cp+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x1.cp+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x1.cp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x1.cp+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x1.cp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x1.cp+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x1.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x1.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x1.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x1.cp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x1.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x1.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x1.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x1.cp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x1.cp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x1.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x1.cp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x1.cp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x1.cp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x1.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x1.cp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x1.cp+4L : 0x1p+0L : inexact-ok
erf 100
= erf downward flt-32 0x6.4p+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x6.4p+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x6.4p+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x6.4p+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x6.4p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x6.4p+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x6.4p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x6.4p+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x6.4p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x6.4p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x6.4p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x6.4p+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x6.4p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x6.4p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x6.4p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x6.4p+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x6.4p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x6.4p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x6.4p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x6.4p+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x6.4p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x6.4p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x6.4p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x6.4p+4L : 0x1p+0L : inexact-ok
erf 106
= erf downward flt-32 0x6.ap+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x6.ap+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x6.ap+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x6.ap+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x6.ap+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x6.ap+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x6.ap+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x6.ap+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x6.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x6.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x6.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x6.ap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x6.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x6.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x6.ap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x6.ap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x6.ap+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x6.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x6.ap+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x6.ap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x6.ap+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x6.ap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x6.ap+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x6.ap+4L : 0x1p+0L : inexact-ok
erf 106.5
= erf downward flt-32 0x6.a8p+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x6.a8p+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x6.a8p+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x6.a8p+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x6.a8p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x6.a8p+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x6.a8p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x6.a8p+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x6.a8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x6.a8p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x6.a8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x6.a8p+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x6.a8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x6.a8p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x6.a8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x6.a8p+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x6.a8p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x6.a8p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x6.a8p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x6.a8p+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x6.a8p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x6.a8p+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x6.a8p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x6.a8p+4L : 0x1p+0L : inexact-ok
erf 106.625
= erf downward flt-32 0x6.aap+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x6.aap+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x6.aap+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x6.aap+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x6.aap+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x6.aap+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x6.aap+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x6.aap+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x6.aap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x6.aap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x6.aap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x6.aap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x6.aap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x6.aap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x6.aap+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x6.aap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x6.aap+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x6.aap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x6.aap+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x6.aap+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x6.aap+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x6.aap+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x6.aap+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x6.aap+4L : 0x1p+0L : inexact-ok
erf 107
= erf downward flt-32 0x6.bp+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x6.bp+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x6.bp+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x6.bp+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x6.bp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x6.bp+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x6.bp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x6.bp+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x6.bp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x6.bp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x6.bp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x6.bp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x6.bp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x6.bp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x6.bp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x6.bp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x6.bp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x6.bp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x6.bp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x6.bp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x6.bp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x6.bp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x6.bp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x6.bp+4L : 0x1p+0L : inexact-ok
erf 108
= erf downward flt-32 0x6.cp+4f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x6.cp+4f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x6.cp+4f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x6.cp+4f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x6.cp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x6.cp+4 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x6.cp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x6.cp+4 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x6.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x6.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x6.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x6.cp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x6.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x6.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x6.cp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x6.cp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x6.cp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x6.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x6.cp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x6.cp+4L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x6.cp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x6.cp+4L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x6.cp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x6.cp+4L : 0x1p+0L : inexact-ok
erf 1000
= erf downward flt-32 0x3.e8p+8f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0x3.e8p+8f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0x3.e8p+8f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0x3.e8p+8f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0x3.e8p+8 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0x3.e8p+8 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0x3.e8p+8 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0x3.e8p+8 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0x3.e8p+8L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0x3.e8p+8L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0x3.e8p+8L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0x3.e8p+8L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0x3.e8p+8L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0x3.e8p+8L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0x3.e8p+8L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0x3.e8p+8L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0x3.e8p+8L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0x3.e8p+8L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0x3.e8p+8L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0x3.e8p+8L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0x3.e8p+8L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0x3.e8p+8L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0x3.e8p+8L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0x3.e8p+8L : 0x1p+0L : inexact-ok
erf max
= erf downward flt-32 0xf.fffffp+124f : 0xf.fffffp-4f : inexact-ok
= erf tonearest flt-32 0xf.fffffp+124f : 0x1p+0f : inexact-ok
= erf towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp-4f : inexact-ok
= erf upward flt-32 0xf.fffffp+124f : 0x1p+0f : inexact-ok
= erf downward dbl-64 0xf.fffffp+124 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0xf.fffffp+124 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0xf.fffffp+124 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0xf.fffffp+124 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0xf.fffffp+124L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0xf.fffffp+124L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0xf.fffffp+124L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0xf.fffffp+124L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0xf.fffffp+124L : 0x1p+0L : inexact-ok
= erf downward dbl-64 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf tonearest dbl-64 0xf.ffffffffffff8p+1020 : 0x1p+0 : inexact-ok
= erf towardzero dbl-64 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p-4 : inexact-ok
= erf upward dbl-64 0xf.ffffffffffff8p+1020 : 0x1p+0 : inexact-ok
= erf downward ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-intel 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-intel 0xf.fffffffffffffffp+16380L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-intel 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-intel 0xf.fffffffffffffffp+16380L : 0x1p+0L : inexact-ok
= erf downward ldbl-96-m68k 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf tonearest ldbl-96-m68k 0xf.fffffffffffffffp+16380L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-96-m68k 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffp-4L : inexact-ok
= erf upward ldbl-96-m68k 0xf.fffffffffffffffp+16380L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0xf.fffffffffffffffp+16380L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0xf.fffffffffffffffp+16380L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0xf.fffffffffffffffp+16380L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0xf.fffffffffffffffffffffffffff8p+16380L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0xf.fffffffffffffffffffffffffff8p+16380L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0xf.fffffffffffffffffffffffffff8p+16380L : 0x1p+0L : inexact-ok
= erf downward ldbl-128 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf tonearest ldbl-128 0xf.ffffffffffffbffffffffffffcp+1020L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
= erf upward ldbl-128 0xf.ffffffffffffbffffffffffffcp+1020L : 0x1p+0L : inexact-ok
= erf downward ldbl-128ibm 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf tonearest ldbl-128ibm 0xf.ffffffffffffbffffffffffffcp+1020L : 0x1p+0L : inexact-ok
= erf towardzero ldbl-128ibm 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
= erf upward ldbl-128ibm 0xf.ffffffffffffbffffffffffffcp+1020L : 0x1p+0L : inexact-ok
erfc 0.0
= erfc downward flt-32 0x0p+0f : 0x1p+0f : inexact-ok
= erfc tonearest flt-32 0x0p+0f : 0x1p+0f : inexact-ok

View File

@ -769,6 +769,8 @@ __erfl (long double x)
if (ix >= 0x3fff0000) /* |x| >= 1.0 */
{
if (ix >= 0x40030000 && sign > 0)
return one; /* x >= 16, avoid spurious underflow from erfc. */
y = __erfcl (x);
return (one - y);
/* return (one - __erfcl (x)); */