about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--NEWS24
-rw-r--r--math/auto-libm-test-in10
-rw-r--r--math/auto-libm-test-out294
-rw-r--r--sysdeps/ieee754/ldbl-128/s_erfl.c2
5 files changed, 324 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 04d7f76ad6..8ddb74fff6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/NEWS b/NEWS
index abec2196e8..e365acd915 100644
--- a/NEWS
+++ b/NEWS
@@ -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.
 
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 4eaa0135a4..79d276ce99 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -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
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index e47c3ab622..d1ec2be279 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -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
diff --git a/sysdeps/ieee754/ldbl-128/s_erfl.c b/sysdeps/ieee754/ldbl-128/s_erfl.c
index 35ca8c1360..9bfc9c580b 100644
--- a/sysdeps/ieee754/ldbl-128/s_erfl.c
+++ b/sysdeps/ieee754/ldbl-128/s_erfl.c
@@ -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)); */