aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-11-29 16:31:16 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-11-29 16:31:16 +0000
commitea3bc4e821e20e70b093c9a33e54f99c79e0d847 (patch)
tree822fa8b196e69580a4f4c9fb4eb63bd0ddbe6147
parent0712c9d861f4e861313a7f9fad06609bd1afb263 (diff)
downloadglibc-ea3bc4e821e20e70b093c9a33e54f99c79e0d847.tar.xz
glibc-ea3bc4e821e20e70b093c9a33e54f99c79e0d847.zip
Fix x86 sqrt rounding (bug 14032).
-rw-r--r--ChangeLog7
-rw-r--r--NEWS20
-rw-r--r--math/auto-libm-test-in57
-rw-r--r--math/auto-libm-test-out3669
-rw-r--r--sysdeps/i386/fpu/e_sqrt.S10
-rw-r--r--sysdeps/i386/fpu/w_sqrt.c8
6 files changed, 3761 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index faf1c8df28..25e7725bf2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2013-11-29 Joseph Myers <joseph@codesourcery.com>
+ [BZ #14032]
+ * sysdeps/i386/fpu/e_sqrt.S (__ieee754_sqrt): Do fsqrt with
+ precision control set to double precision.
+ * sysdeps/i386/fpu/w_sqrt.c: New file.
+ * math/auto-libm-test-in: Add more tests.
+ * math/auto-libm-test-out: Update.
+
* math/libm-test.inc (sqrt_tonearest_test_data): New variable.
(sqrt_test_tonearest): New function.
(sqrt_towardzero_test_data): New variable.
diff --git a/NEWS b/NEWS
index 3a43cb992d..0115c8fec1 100644
--- a/NEWS
+++ b/NEWS
@@ -10,16 +10,16 @@ Version 2.19
* The following bugs are resolved with this release:
156, 387, 431, 832, 2801, 7003, 9954, 10253, 10278, 11087, 11157, 11214,
- 13028, 13982, 13985, 14029, 14143, 14155, 14547, 14699, 14752, 14876,
- 14910, 15004, 15048, 15218, 15277, 15308, 15362, 15374, 15400, 15427,
- 15483, 15522, 15531, 15532, 15601, 15608, 15609, 15610, 15632, 15640,
- 15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749,
- 15754, 15760, 15763, 15764, 15797, 15799, 15825, 15844, 15847, 15849,
- 15855, 15856, 15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893,
- 15895, 15897, 15905, 15909, 15917, 15919, 15921, 15923, 15939, 15948,
- 15963, 15966, 15985, 15988, 15997, 16032, 16034, 16036, 16037, 16041,
- 16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143, 16144,
- 16146, 16150, 16151, 16153, 16167, 16172, 16214, 16245, 16271.
+ 13028, 13982, 13985, 14029, 14032, 14143, 14155, 14547, 14699, 14752,
+ 14876, 14910, 15004, 15048, 15218, 15277, 15308, 15362, 15374, 15400,
+ 15427, 15483, 15522, 15531, 15532, 15601, 15608, 15609, 15610, 15632,
+ 15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748,
+ 15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825, 15844, 15847,
+ 15849, 15855, 15856, 15857, 15859, 15867, 15886, 15887, 15890, 15892,
+ 15893, 15895, 15897, 15905, 15909, 15917, 15919, 15921, 15923, 15939,
+ 15948, 15963, 15966, 15985, 15988, 15997, 16032, 16034, 16036, 16037,
+ 16041, 16055, 16071, 16072, 16074, 16077, 16078, 16103, 16112, 16143,
+ 16144, 16146, 16150, 16151, 16153, 16167, 16172, 16214, 16245, 16271.
* The public headers no longer use __unused nor __block. This change is to
support compiling programs that are derived from BSD sources and use
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 5dc790c692..12cb27de44 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -25,3 +25,60 @@ sqrt 0.25
sqrt 6642.25
sqrt 15190.5625
sqrt 0.75
+sqrt 0x1.fffffffffffffp+1023
+sqrt 0x1.ffffffffffffbp+1023
+sqrt 0x1.ffffffffffff7p+1023
+sqrt 0x1.ffffffffffff3p+1023
+sqrt 0x1.fffffffffffefp+1023
+sqrt 0x1.fffffffffffebp+1023
+sqrt 0x1.fffffffffffe7p+1023
+sqrt 0x1.fffffffffffe3p+1023
+sqrt 0x1.fffffffffffdfp+1023
+sqrt 0x1.fffffffffffdbp+1023
+sqrt 0x1.fffffffffffd7p+1023
+sqrt 0x1.0000000000003p-1022
+sqrt 0x1.0000000000007p-1022
+sqrt 0x1.000000000000bp-1022
+sqrt 0x1.000000000000fp-1022
+sqrt 0x1.0000000000013p-1022
+sqrt 0x1.0000000000017p-1022
+sqrt 0x1.000000000001bp-1022
+sqrt 0x1.000000000001fp-1022
+sqrt 0x1.0000000000023p-1022
+sqrt 0x1.0000000000027p-1022
+sqrt 0x1.000000000002bp-1022
+sqrt 0x1.000000000002fp-1022
+sqrt 0x1.0000000000033p-1022
+sqrt 0x1.0000000000037p-1022
+sqrt 0x1.7167bc36eaa3bp+6
+sqrt 0x1.7570994273ad7p+6
+sqrt 0x1.7dae969442fe6p+6
+sqrt 0x1.7f8444fcf67e5p+6
+sqrt 0x1.8364650e63a54p+6
+sqrt 0x1.85bedd274edd8p+6
+sqrt 0x1.8609cf496ab77p+6
+sqrt 0x1.873849c70a375p+6
+sqrt 0x1.8919c962cbaaep+6
+sqrt 0x1.8de4493e22dc6p+6
+sqrt 0x1.924829a17a288p+6
+sqrt 0x1.92702cd992f12p+6
+sqrt 0x1.92b763a8311fdp+6
+sqrt 0x1.947da013c7293p+6
+sqrt 0x1.9536091c494d2p+6
+sqrt 0x1.61b04c6p-1019
+sqrt 0x1.93789f1p-1018
+sqrt 0x1.a1989b4p-1018
+sqrt 0x1.f93bc9p-1018
+sqrt 0x1.2f675e3p-1017
+sqrt 0x1.a158508p-1017
+sqrt 0x1.cd31f078p-1017
+sqrt 0x1.33b43b08p-1016
+sqrt 0x1.6e66a858p-1016
+sqrt 0x1.8661cbf8p-1016
+sqrt 0x1.bbb221b4p-1016
+sqrt 0x1.c4942f3cp-1016
+sqrt 0x1.dbb258c8p-1016
+sqrt 0x1.57103ea4p-1015
+sqrt 0x1.9b294f88p-1015
+sqrt 0x1.0000000000001p+0
+sqrt 0x1.fffffffffffffp-1
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index bdb6bdc8b8..95bdec62eb 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -223,3 +223,3672 @@ sqrt 0.75
= sqrt tonearest ldbl-128ibm 0xcp-4L : 0xd.db3d742c265539d92ba16b83c4p-4L : inexact
= sqrt towardzero ldbl-128ibm 0xcp-4L : 0xd.db3d742c265539d92ba16b83c4p-4L : inexact
= sqrt upward ldbl-128ibm 0xcp-4L : 0xd.db3d742c265539d92ba16b83c8p-4L : inexact
+sqrt 0x1.fffffffffffffp+1023
+= sqrt downward flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt tonearest flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt upward flt-32 0xf.fffffp+124f : 0x1p+64f : inexact
+= sqrt downward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt tonearest dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt towardzero dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt upward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt upward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward dbl-64 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+508 : inexact
+= sqrt tonearest dbl-64 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+508 : inexact
+= sqrt towardzero dbl-64 0xf.ffffffffffff8p+1020 : 0xf.ffffffffffff8p+508 : inexact
+= sqrt upward dbl-64 0xf.ffffffffffff8p+1020 : 0x1p+512 : inexact
+= sqrt downward ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbffp+508L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffcp+508L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbffp+508L : inexact
+= sqrt upward ldbl-96-intel 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffcp+508L : inexact
+= sqrt downward ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbffp+508L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffcp+508L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbffp+508L : inexact
+= sqrt upward ldbl-96-m68k 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffcp+508L : inexact
+= sqrt downward ldbl-128 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbfffffffffffff78p+508L : inexact
+= sqrt tonearest ldbl-128 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbfffffffffffff8p+508L : inexact
+= sqrt towardzero ldbl-128 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbfffffffffffff78p+508L : inexact
+= sqrt upward ldbl-128 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbfffffffffffff8p+508L : inexact
+= sqrt downward ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbffffffffffffcp+508L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffcp+508L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffbffffffffffffcp+508L : inexact
+= sqrt upward ldbl-128ibm 0xf.ffffffffffff8p+1020L : 0xf.ffffffffffffcp+508L : inexact
+sqrt 0x1.ffffffffffffbp+1023
+= sqrt downward flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt tonearest flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt upward flt-32 0xf.fffffp+124f : 0x1p+64f : inexact
+= sqrt downward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt tonearest dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt towardzero dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt upward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt upward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward dbl-64 0xf.fffffffffffd8p+1020 : 0xf.fffffffffffe8p+508 : inexact
+= sqrt tonearest dbl-64 0xf.fffffffffffd8p+1020 : 0xf.fffffffffffe8p+508 : inexact
+= sqrt towardzero dbl-64 0xf.fffffffffffd8p+1020 : 0xf.fffffffffffe8p+508 : inexact
+= sqrt upward dbl-64 0xf.fffffffffffd8p+1020 : 0xf.ffffffffffffp+508 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffp+508L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffecp+508L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffp+508L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffecp+508L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffp+508L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffecp+508L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffp+508L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffecp+508L : inexact
+= sqrt downward ldbl-128 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffff378p+508L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffff38p+508L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffff378p+508L : inexact
+= sqrt upward ldbl-128 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffff38p+508L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffffp+508L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffff4p+508L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffffp+508L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffffffffd8p+1020L : 0xf.fffffffffffebffffffffffff4p+508L : inexact
+sqrt 0x1.ffffffffffff7p+1023
+= sqrt downward flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt tonearest flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt upward flt-32 0xf.fffffp+124f : 0x1p+64f : inexact
+= sqrt downward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt tonearest dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt towardzero dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt upward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt upward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward dbl-64 0xf.fffffffffffb8p+1020 : 0xf.fffffffffffd8p+508 : inexact
+= sqrt tonearest dbl-64 0xf.fffffffffffb8p+1020 : 0xf.fffffffffffd8p+508 : inexact
+= sqrt towardzero dbl-64 0xf.fffffffffffb8p+1020 : 0xf.fffffffffffd8p+508 : inexact
+= sqrt upward dbl-64 0xf.fffffffffffb8p+1020 : 0xf.fffffffffffep+508 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbffp+508L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdcp+508L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbffp+508L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdcp+508L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbffp+508L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdcp+508L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbffp+508L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdcp+508L : inexact
+= sqrt downward ldbl-128 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd778p+508L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd78p+508L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd778p+508L : inexact
+= sqrt upward ldbl-128 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd78p+508L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd4p+508L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd8p+508L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd4p+508L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffffffffb8p+1020L : 0xf.fffffffffffdbfffffffffffd8p+508L : inexact
+sqrt 0x1.ffffffffffff3p+1023
+= sqrt downward flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt tonearest flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt upward flt-32 0xf.fffffp+124f : 0x1p+64f : inexact
+= sqrt downward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt tonearest dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt towardzero dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt upward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt upward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward dbl-64 0xf.fffffffffff98p+1020 : 0xf.fffffffffffc8p+508 : inexact
+= sqrt tonearest dbl-64 0xf.fffffffffff98p+1020 : 0xf.fffffffffffc8p+508 : inexact
+= sqrt towardzero dbl-64 0xf.fffffffffff98p+1020 : 0xf.fffffffffffc8p+508 : inexact
+= sqrt upward dbl-64 0xf.fffffffffff98p+1020 : 0xf.fffffffffffdp+508 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbffp+508L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffffffff98p+1020L : 0xf.fffffffffffccp+508L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbffp+508L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffffffff98p+1020L : 0xf.fffffffffffccp+508L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbffp+508L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffffffff98p+1020L : 0xf.fffffffffffccp+508L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbffp+508L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffffffff98p+1020L : 0xf.fffffffffffccp+508L : inexact
+= sqrt downward ldbl-128 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffab78p+508L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffab8p+508L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffab78p+508L : inexact
+= sqrt upward ldbl-128 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffab8p+508L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffa8p+508L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffacp+508L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffa8p+508L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffffffff98p+1020L : 0xf.fffffffffffcbfffffffffffacp+508L : inexact
+sqrt 0x1.fffffffffffefp+1023
+= sqrt downward flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt tonearest flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt upward flt-32 0xf.fffffp+124f : 0x1p+64f : inexact
+= sqrt downward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt tonearest dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt towardzero dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt upward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt upward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward dbl-64 0xf.fffffffffff78p+1020 : 0xf.fffffffffffb8p+508 : inexact
+= sqrt tonearest dbl-64 0xf.fffffffffff78p+1020 : 0xf.fffffffffffb8p+508 : inexact
+= sqrt towardzero dbl-64 0xf.fffffffffff78p+1020 : 0xf.fffffffffffb8p+508 : inexact
+= sqrt upward dbl-64 0xf.fffffffffff78p+1020 : 0xf.fffffffffffcp+508 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbffp+508L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbcp+508L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbffp+508L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbcp+508L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbffp+508L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbcp+508L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbffp+508L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbcp+508L : inexact
+= sqrt downward ldbl-128 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff6f78p+508L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff6f8p+508L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff6f78p+508L : inexact
+= sqrt upward ldbl-128 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff6f8p+508L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff6cp+508L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff7p+508L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff6cp+508L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffffffff78p+1020L : 0xf.fffffffffffbbfffffffffff7p+508L : inexact
+sqrt 0x1.fffffffffffebp+1023
+= sqrt downward flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt tonearest flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt upward flt-32 0xf.fffffp+124f : 0x1p+64f : inexact
+= sqrt downward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt tonearest dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt towardzero dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt upward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffdfffp+60L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffp+124L : 0xf.fffff7fffffep+60L : inexact
+= sqrt downward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5ff8p+60L : inexact
+= sqrt upward ldbl-128 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff5cp+60L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffp+124L : 0xf.fffff7fffffdfffffeffffff6p+60L : inexact
+= sqrt downward dbl-64 0xf.fffffffffff58p+1020 : 0xf.fffffffffffa8p+508 : inexact
+= sqrt tonearest dbl-64 0xf.fffffffffff58p+1020 : 0xf.fffffffffffa8p+508 : inexact
+= sqrt towardzero dbl-64 0xf.fffffffffff58p+1020 : 0xf.fffffffffffa8p+508 : inexact
+= sqrt upward dbl-64 0xf.fffffffffff58p+1020 : 0xf.fffffffffffbp+508 : inexact
+= sqrt downward ldbl-96-intel 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabffp+508L : inexact
+= sqrt tonearest ldbl-96-intel 0xf.fffffffffff58p+1020L : 0xf.fffffffffffacp+508L : inexact
+= sqrt towardzero ldbl-96-intel 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabffp+508L : inexact
+= sqrt upward ldbl-96-intel 0xf.fffffffffff58p+1020L : 0xf.fffffffffffacp+508L : inexact
+= sqrt downward ldbl-96-m68k 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabffp+508L : inexact
+= sqrt tonearest ldbl-96-m68k 0xf.fffffffffff58p+1020L : 0xf.fffffffffffacp+508L : inexact
+= sqrt towardzero ldbl-96-m68k 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabffp+508L : inexact
+= sqrt upward ldbl-96-m68k 0xf.fffffffffff58p+1020L : 0xf.fffffffffffacp+508L : inexact
+= sqrt downward ldbl-128 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff2378p+508L : inexact
+= sqrt tonearest ldbl-128 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff238p+508L : inexact
+= sqrt towardzero ldbl-128 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff2378p+508L : inexact
+= sqrt upward ldbl-128 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff238p+508L : inexact
+= sqrt downward ldbl-128ibm 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff2p+508L : inexact
+= sqrt tonearest ldbl-128ibm 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff24p+508L : inexact
+= sqrt towardzero ldbl-128ibm 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff2p+508L : inexact
+= sqrt upward ldbl-128ibm 0xf.fffffffffff58p+1020L : 0xf.fffffffffffabfffffffffff24p+508L : inexact
+sqrt 0x1.fffffffffffe7p+1023
+= sqrt downward flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt tonearest flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt towardzero flt-32 0xf.fffffp+124f : 0xf.fffffp+60f : inexact
+= sqrt upward flt-32 0xf.fffffp+124f : 0x1p+64f : inexact
+= sqrt downward dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffd8p+60 : inexact
+= sqrt tonearest dbl-64 0xf.fffffp+124 : 0xf.fffff7fffffep+60 : inexact
+= sqrt towardzero dbl-64 0xf.fffffp+124