Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1commit 6daa77104520ca992a9369bd01cccd4d98c82984 2Author: Andreas K. Hüttel <dilfridge@gentoo.org> 3Date: Sun Jul 21 19:02:10 2024 +0200 4 5 Replace advisories directory 6 7 Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org> 8 9diff --git a/advisories/GLIBC-SA-2023-0001 b/advisories/GLIBC-SA-2023-0001 10deleted file mode 100644 11index 3d19c91b6a..0000000000 12--- a/advisories/GLIBC-SA-2023-0001 13+++ /dev/null 14@@ -1,14 +0,0 @@ 15-printf: incorrect output for integers with thousands separator and width field 16- 17-When the printf family of functions is called with a format specifier 18-that uses an <apostrophe> (enable grouping) and a minimum width 19-specifier, the resulting output could be larger than reasonably expected 20-by a caller that computed a tight bound on the buffer size. The 21-resulting larger than expected output could result in a buffer overflow 22-in the printf family of functions. 23- 24-CVE-Id: CVE-2023-25139 25-Public-Date: 2023-02-02 26-Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37) 27-Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38) 28-Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4) 29diff --git a/advisories/GLIBC-SA-2023-0002 b/advisories/GLIBC-SA-2023-0002 30deleted file mode 100644 31index 5122669a64..0000000000 32--- a/advisories/GLIBC-SA-2023-0002 33+++ /dev/null 34@@ -1,15 +0,0 @@ 35-getaddrinfo: Stack read overflow in no-aaaa mode 36- 37-If the system is configured in no-aaaa mode via /etc/resolv.conf, 38-getaddrinfo is called for the AF_UNSPEC address family, and a DNS 39-response is received over TCP that is larger than 2048 bytes, 40-getaddrinfo may potentially disclose stack contents via the returned 41-address data, or crash. 42- 43-CVE-Id: CVE-2023-4527 44-Public-Date: 2023-09-12 45-Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36) 46-Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39) 47-Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113) 48-Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38) 49-Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19) 50diff --git a/advisories/GLIBC-SA-2023-0003 b/advisories/GLIBC-SA-2023-0003 51deleted file mode 100644 52index d3aef80348..0000000000 53--- a/advisories/GLIBC-SA-2023-0003 54+++ /dev/null 55@@ -1,15 +0,0 @@ 56-getaddrinfo: Potential use-after-free 57- 58-When an NSS plugin only implements the _gethostbyname2_r and 59-_getcanonname_r callbacks, getaddrinfo could use memory that was freed 60-during buffer resizing, potentially causing a crash or read or write to 61-arbitrary memory. 62- 63-CVE-Id: CVE-2023-4806 64-Public-Date: 2023-09-12 65-Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39) 66-Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) 67-Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) 68-Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) 69-Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) 70-Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) 71diff --git a/advisories/GLIBC-SA-2023-0004 b/advisories/GLIBC-SA-2023-0004 72deleted file mode 100644 73index 5286a7aa54..0000000000 74--- a/advisories/GLIBC-SA-2023-0004 75+++ /dev/null 76@@ -1,16 +0,0 @@ 77-tunables: local privilege escalation through buffer overflow 78- 79-If a tunable of the form NAME=NAME=VAL is passed in the environment of a 80-setuid program and NAME is valid, it may result in a buffer overflow, 81-which could be exploited to achieve escalated privileges. This flaw was 82-introduced in glibc 2.34. 83- 84-CVE-Id: CVE-2023-4911 85-Public-Date: 2023-10-03 86-Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34) 87-Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39) 88-Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423) 89-Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274) 90-Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118) 91-Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45) 92-Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27) 93diff --git a/advisories/GLIBC-SA-2023-0005 b/advisories/GLIBC-SA-2023-0005 94deleted file mode 100644 95index cc4eb90b82..0000000000 96--- a/advisories/GLIBC-SA-2023-0005 97+++ /dev/null 98@@ -1,18 +0,0 @@ 99-getaddrinfo: DoS due to memory leak 100- 101-The fix for CVE-2023-4806 introduced a memory leak when an application 102-calls getaddrinfo for AF_INET6 with AI_CANONNAME, AI_ALL and AI_V4MAPPED 103-flags set. 104- 105-CVE-Id: CVE-2023-5156 106-Public-Date: 2023-09-25 107-Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420) 108-Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270) 109-Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115) 110-Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39) 111-Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20) 112-Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421) 113-Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272) 114-Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116) 115-Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42) 116-Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24) 117diff --git a/advisories/GLIBC-SA-2024-0001 b/advisories/GLIBC-SA-2024-0001 118deleted file mode 100644 119index 28931c75ae..0000000000 120--- a/advisories/GLIBC-SA-2024-0001 121+++ /dev/null 122@@ -1,15 +0,0 @@ 123-syslog: Heap buffer overflow in __vsyslog_internal 124- 125-__vsyslog_internal did not handle a case where printing a SYSLOG_HEADER 126-containing a long program name failed to update the required buffer 127-size, leading to the allocation and overflow of a too-small buffer on 128-the heap. 129- 130-CVE-Id: CVE-2023-6246 131-Public-Date: 2024-01-30 132-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) 133-Fix-Commit: 6bd0e4efcc78f3c0115e5ea9739a1642807450da (2.39) 134-Fix-Commit: 23514c72b780f3da097ecf33a793b7ba9c2070d2 (2.38-42) 135-Fix-Commit: 97a4292aa4a2642e251472b878d0ec4c46a0e59a (2.37-57) 136-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) 137-Fix-Commit: d1a83b6767f68b3cb5b4b4ea2617254acd040c82 (2.36-126) 138diff --git a/advisories/GLIBC-SA-2024-0002 b/advisories/GLIBC-SA-2024-0002 139deleted file mode 100644 140index 940bfcf2fc..0000000000 141--- a/advisories/GLIBC-SA-2024-0002 142+++ /dev/null 143@@ -1,15 +0,0 @@ 144-syslog: Heap buffer overflow in __vsyslog_internal 145- 146-__vsyslog_internal used the return value of snprintf/vsnprintf to 147-calculate buffer sizes for memory allocation. If these functions (for 148-any reason) failed and returned -1, the resulting buffer would be too 149-small to hold output. 150- 151-CVE-Id: CVE-2023-6779 152-Public-Date: 2024-01-30 153-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) 154-Fix-Commit: 7e5a0c286da33159d47d0122007aac016f3e02cd (2.39) 155-Fix-Commit: d0338312aace5bbfef85e03055e1212dd0e49578 (2.38-43) 156-Fix-Commit: 67062eccd9a65d7fda9976a56aeaaf6c25a80214 (2.37-58) 157-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) 158-Fix-Commit: 2bc9d7c002bdac38b5c2a3f11b78e309d7765b83 (2.36-127) 159diff --git a/advisories/GLIBC-SA-2024-0003 b/advisories/GLIBC-SA-2024-0003 160deleted file mode 100644 161index b43a5150ab..0000000000 162--- a/advisories/GLIBC-SA-2024-0003 163+++ /dev/null 164@@ -1,13 +0,0 @@ 165-syslog: Integer overflow in __vsyslog_internal 166- 167-__vsyslog_internal calculated a buffer size by adding two integers, but 168-did not first check if the addition would overflow. 169- 170-CVE-Id: CVE-2023-6780 171-Public-Date: 2024-01-30 172-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37) 173-Fix-Commit: ddf542da94caf97ff43cc2875c88749880b7259b (2.39) 174-Fix-Commit: d37c2b20a4787463d192b32041c3406c2bd91de0 (2.38-44) 175-Fix-Commit: 2b58cba076e912961ceaa5fa58588e4b10f791c0 (2.37-59) 176-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16) 177-Fix-Commit: b9b7d6a27aa0632f334352fa400771115b3c69b7 (2.36-128) 178diff --git a/advisories/GLIBC-SA-2024-0004 b/advisories/GLIBC-SA-2024-0004 179deleted file mode 100644 180index 08df2b3118..0000000000 181--- a/advisories/GLIBC-SA-2024-0004 182+++ /dev/null 183@@ -1,28 +0,0 @@ 184-ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence 185- 186-The iconv() function in the GNU C Library versions 2.39 and older may 187-overflow the output buffer passed to it by up to 4 bytes when converting 188-strings to the ISO-2022-CN-EXT character set, which may be used to 189-crash an application or overwrite a neighbouring variable. 190- 191-ISO-2022-CN-EXT uses escape sequences to indicate character set changes 192-(as specified by RFC 1922). While the SOdesignation has the expected 193-bounds checks, neither SS2designation nor SS3designation have its; 194-allowing a write overflow of 1, 2, or 3 bytes with fixed values: 195-'$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'. 196- 197-CVE-Id: CVE-2024-2961 198-Public-Date: 2024-04-17 199-Vulnerable-Commit: 755104edc75c53f4a0e7440334e944ad3c6b32fc (2.1.93-169) 200-Fix-Commit: f9dc609e06b1136bb0408be9605ce7973a767ada (2.40) 201-Fix-Commit: 31da30f23cddd36db29d5b6a1c7619361b271fb4 (2.39-31) 202-Fix-Commit: e1135387deded5d73924f6ca20c72a35dc8e1bda (2.38-66) 203-Fix-Commit: 89ce64b269a897a7780e4c73a7412016381c6ecf (2.37-89) 204-Fix-Commit: 4ed98540a7fd19f458287e783ae59c41e64df7b5 (2.36-164) 205-Fix-Commit: 36280d1ce5e245aabefb877fe4d3c6cff95dabfa (2.35-315) 206-Fix-Commit: a8b0561db4b9847ebfbfec20075697d5492a363c (2.34-459) 207-Fix-Commit: ed4f16ff6bed3037266f1fa682ebd32a18fce29c (2.33-263) 208-Fix-Commit: 682ad4c8623e611a971839990ceef00346289cc9 (2.32-140) 209-Fix-Commit: 3703c32a8d304c1ee12126134ce69be965f38000 (2.31-154) 210- 211-Reported-By: Charles Fol 212diff --git a/advisories/GLIBC-SA-2024-0005 b/advisories/GLIBC-SA-2024-0005 213deleted file mode 100644 214index a59596610a..0000000000 215--- a/advisories/GLIBC-SA-2024-0005 216+++ /dev/null 217@@ -1,22 +0,0 @@ 218-nscd: Stack-based buffer overflow in netgroup cache 219- 220-If the Name Service Cache Daemon's (nscd) fixed size cache is exhausted 221-by client requests then a subsequent client request for netgroup data 222-may result in a stack-based buffer overflow. This flaw was introduced 223-in glibc 2.15 when the cache was added to nscd. 224- 225-This vulnerability is only present in the nscd binary. 226- 227-CVE-Id: CVE-2024-33599 228-Public-Date: 2024-04-23 229-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) 230-Fix-Commit: 69c58d5ef9f584ea198bd00f7964d364d0e6b921 (2.31-155) 231-Fix-Commit: a77064893bfe8a701770e2f53a4d33805bc47a5a (2.32-141) 232-Fix-Commit: 5c75001a96abcd50cbdb74df24c3f013188d076e (2.33-264) 233-Fix-Commit: 52f73e5c4e29b14e79167272297977f360ae1e97 (2.34-460) 234-Fix-Commit: 7a95873543ce225376faf13bb71c43dea6d24f86 (2.35-316) 235-Fix-Commit: caa3151ca460bdd9330adeedd68c3112d97bffe4 (2.36-165) 236-Fix-Commit: f75c298e747b2b8b41b1c2f551c011a52c41bfd1 (2.37-91) 237-Fix-Commit: 5968aebb86164034b8f8421b4abab2f837a5bdaf (2.38-72) 238-Fix-Commit: 1263d583d2e28afb8be53f8d6922f0842036f35d (2.39-35) 239-Fix-Commit: 87801a8fd06db1d654eea3e4f7626ff476a9bdaa (2.40) 240diff --git a/advisories/GLIBC-SA-2024-0006 b/advisories/GLIBC-SA-2024-0006 241deleted file mode 100644 242index d44148d3d9..0000000000 243--- a/advisories/GLIBC-SA-2024-0006 244+++ /dev/null 245@@ -1,32 +0,0 @@ 246-nscd: Null pointer crash after notfound response 247- 248-If the Name Service Cache Daemon's (nscd) cache fails to add a not-found 249-netgroup response to the cache, the client request can result in a null 250-pointer dereference. This flaw was introduced in glibc 2.15 when the 251-cache was added to nscd. 252- 253-This vulnerability is only present in the nscd binary. 254- 255-CVE-Id: CVE-2024-33600 256-Public-Date: 2024-04-24 257-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) 258-Fix-Commit: b048a482f088e53144d26a61c390bed0210f49f2 (2.40) 259-Fix-Commit: 7835b00dbce53c3c87bbbb1754a95fb5e58187aa (2.40) 260-Fix-Commit: c99f886de54446cd4447db6b44be93dabbdc2f8b (2.39-37) 261-Fix-Commit: 5a508e0b508c8ad53bd0d2fb48fd71b242626341 (2.39-36) 262-Fix-Commit: 2ae9446c1b7a3064743b4a51c0bbae668ee43e4c (2.38-74) 263-Fix-Commit: 541ea5172aa658c4bd5c6c6d6fd13903c3d5bb0a (2.38-73) 264-Fix-Commit: a8070b31043c7585c36ba68a74298c4f7af075c3 (2.37-93) 265-Fix-Commit: 5eea50c4402e39588de98aa1d4469a79774703d4 (2.37-92) 266-Fix-Commit: f205b3af56740e3b014915b1bd3b162afe3407ef (2.36-167) 267-Fix-Commit: c34f470a615b136170abd16142da5dd0c024f7d1 (2.36-166) 268-Fix-Commit: bafadc589fbe21ae330e8c2af74db9da44a17660 (2.35-318) 269-Fix-Commit: 4370bef52b0f3f3652c6aa13d7a9bb3ac079746d (2.35-317) 270-Fix-Commit: 1f94122289a9bf7dba573f5d60327aaa2b85cf2e (2.34-462) 271-Fix-Commit: 966d6ac9e40222b84bb21674cc4f83c8d72a5a26 (2.34-461) 272-Fix-Commit: e3eef1b8fbdd3a7917af466ca9c4b7477251ca79 (2.33-266) 273-Fix-Commit: f20a8d696b13c6261b52a6434899121f8b19d5a7 (2.33-265) 274-Fix-Commit: be602180146de37582a3da3a0caa4b719645de9c (2.32-143) 275-Fix-Commit: 394eae338199078b7961b051c191539870742d7b (2.32-142) 276-Fix-Commit: 8d7949183760170c61e55def723c1d8050187874 (2.31-157) 277-Fix-Commit: 304ce5fe466c4762b21b36c26926a4657b59b53e (2.31-156) 278diff --git a/advisories/GLIBC-SA-2024-0007 b/advisories/GLIBC-SA-2024-0007 279deleted file mode 100644 280index b6928fa27a..0000000000 281--- a/advisories/GLIBC-SA-2024-0007 282+++ /dev/null 283@@ -1,28 +0,0 @@ 284-nscd: netgroup cache may terminate daemon on memory allocation failure 285- 286-The Name Service Cache Daemon's (nscd) netgroup cache uses xmalloc or 287-xrealloc and these functions may terminate the process due to a memory 288-allocation failure resulting in a denial of service to the clients. The 289-flaw was introduced in glibc 2.15 when the cache was added to nscd. 290- 291-This vulnerability is only present in the nscd binary. 292- 293-Subsequent refactoring of the netgroup cache only added more uses of 294-xmalloc and xrealloc. Uses of xmalloc and xrealloc in other parts of 295-nscd only occur during startup of the daemon and so are not affected by 296-client requests that could trigger an out of memory followed by 297-termination. 298- 299-CVE-Id: CVE-2024-33601 300-Public-Date: 2024-04-24 301-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) 302-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) 303-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) 304-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) 305-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) 306-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) 307-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) 308-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) 309-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) 310-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) 311-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) 312diff --git a/advisories/GLIBC-SA-2024-0008 b/advisories/GLIBC-SA-2024-0008 313deleted file mode 100644 314index d93e2a6f0b..0000000000 315--- a/advisories/GLIBC-SA-2024-0008 316+++ /dev/null 317@@ -1,26 +0,0 @@ 318-nscd: netgroup cache assumes NSS callback uses in-buffer strings 319- 320-The Name Service Cache Daemon's (nscd) netgroup cache can corrupt memory 321-when the NSS callback does not store all strings in the provided buffer. 322-The flaw was introduced in glibc 2.15 when the cache was added to nscd. 323- 324-This vulnerability is only present in the nscd binary. 325- 326-There is no guarantee from the NSS callback API that the returned 327-strings are all within the buffer. However, the netgroup cache code 328-assumes that the NSS callback uses in-buffer strings and if it doesn't 329-the buffer resizing logic could lead to potential memory corruption. 330- 331-CVE-Id: CVE-2024-33602 332-Public-Date: 2024-04-24 333-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15) 334-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40) 335-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38) 336-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75) 337-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94) 338-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168) 339-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319) 340-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463) 341-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267) 342-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144) 343-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158) 344diff --git a/advisories/README b/advisories/README 345deleted file mode 100644 346index b8f8a829ca..0000000000 347--- a/advisories/README 348+++ /dev/null 349@@ -1,77 +0,0 @@ 350-GNU C Library Security Advisory Format 351-====================================== 352- 353-Security advisories in this directory follow a simple git commit log 354-format, with a heading and free-format description augmented with tags 355-to allow parsing key information. References to code changes are 356-specific to the glibc repository and follow a specific format: 357- 358- Tag-name: <commit-ref> (release-version) 359- 360-The <commit-ref> indicates a specific commit in the repository. The 361-release-version indicates the publicly consumable release in which this 362-commit is known to exist. The release-version is derived from the 363-git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and 364-is of the form 2.34-NNN. If the -NNN suffix is absent, it means that 365-the change is in that release tarball, otherwise the change is on the 366-release/2.YY/master branch and not in any released tarball. 367- 368-The following tags are currently being used: 369- 370-CVE-Id: 371-This is the CVE-Id assigned under the CVE Program 372-(https://www.cve.org/). 373- 374-Public-Date: 375-The date this issue became publicly known. 376- 377-Vulnerable-Commit: 378-The commit that introduced this vulnerability. There could be multiple 379-entries, one for each release branch in the glibc repository; the 380-release-version portion of this tag should tell you which branch this is 381-on. 382- 383-Fix-Commit: 384-The commit that fixed this vulnerability. There could be multiple 385-entries for each release branch in the glibc repository, indicating that 386-all of those commits contributed to fixing that issue in each of those 387-branches. 388- 389-Reported-By: 390-The entity that reported this issue. There could be multiple entries, one for 391-each reporter. 392- 393-Adding an Advisory 394------------------- 395- 396-An advisory for a CVE needs to be added on the master branch in two steps: 397- 398-1. Add the text of the advisory without any Fix-Commit tags along with 399- the fix for the CVE. Add the Vulnerable-Commit tag, if applicable. 400- The advisories directory does not exist in release branches, so keep 401- the advisory text commit distinct from the code changes, to ease 402- backports. Ask for the GLIBC-SA advisory number from the security 403- team. 404- 405-2. Finish all backports on release branches and then back on the msater 406- branch, add all commit refs to the advisory using the Fix-Commit 407- tags. Don't bother adding the release-version subscript since the 408- next step will overwrite it. 409- 410-3. Run the process-advisories.sh script in the scripts directory on the 411- advisory: 412- 413- scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN 414- 415- (replace YYYY-NNNN with the actual advisory number). 416- 417-4. Verify the updated advisory and push the result. 418- 419-Getting a NEWS snippet from advisories 420--------------------------------------- 421- 422-Run: 423- 424- scripts/process-advisories.sh news 425- 426-and copy the content into the NEWS file. 427 428commit 8bbb8d7b16cae777eed06bc9d2e059fc00be24e9 429Author: Florian Weimer <fweimer@redhat.com> 430Date: Wed Jul 24 12:06:47 2024 +0200 431 432 resolv: Allow short error responses to match any query (bug 31890) 433 434 Reviewed-by: DJ Delorie <dj@redhat.com> 435 (cherry picked from commit 691a3b2e9bfaba842e46a5ccb7f5e6ea144c3ade) 436 437diff --git a/NEWS b/NEWS 438index 31281ac408..66b755ed34 100644 439--- a/NEWS 440+++ b/NEWS 441@@ -5,6 +5,12 @@ See the end for copying conditions. 442 Please send GNU C library bug reports via <https://sourceware.org/bugzilla/> 443 using `glibc' in the "product" field. 444 445+Version 2.41 446+ 447+The following bugs are resolved with this release: 448+ 449+ [31890] resolv: Allow short error responses to match any DNS query 450+ 451 Version 2.40 452 453 Major new features: 454diff --git a/resolv/Makefile b/resolv/Makefile 455index 5f44f5896b..d927e337d9 100644 456--- a/resolv/Makefile 457+++ b/resolv/Makefile 458@@ -106,6 +106,7 @@ tests += \ 459 tst-resolv-nondecimal \ 460 tst-resolv-res_init-multi \ 461 tst-resolv-search \ 462+ tst-resolv-short-response \ 463 tst-resolv-trailing \ 464 465 # This test calls __res_context_send directly, which is not exported 466@@ -299,6 +300,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library) 467 $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library) 468 $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library) 469 $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library) 470+$(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \ 471+ $(shared-thread-library) 472 $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library) 473 $(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library) 474 $(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \ 475diff --git a/resolv/res_send.c b/resolv/res_send.c 476index ea7cf192b2..572e72c32f 100644 477--- a/resolv/res_send.c 478+++ b/resolv/res_send.c 479@@ -1199,19 +1199,30 @@ send_dg(res_state statp, 480 } 481 482 /* Check for the correct header layout and a matching 483- question. */ 484+ question. Some recursive resolvers send REFUSED 485+ without copying back the question section 486+ (producing a response that is only HFIXEDSZ bytes 487+ long). Skip query matching in this case. */ 488+ bool thisansp_error = (anhp->rcode == SERVFAIL || 489+ anhp->rcode == NOTIMP || 490+ anhp->rcode == REFUSED); 491+ bool skip_query_match = (*thisresplenp == HFIXEDSZ 492+ && ntohs (anhp->qdcount) == 0 493+ && thisansp_error); 494 int matching_query = 0; /* Default to no matching query. */ 495 if (!recvresp1 496 && anhp->id == hp->id 497- && __libc_res_queriesmatch (buf, buf + buflen, 498- *thisansp, 499- *thisansp + *thisanssizp)) 500+ && (skip_query_match 501+ || __libc_res_queriesmatch (buf, buf + buflen, 502+ *thisansp, 503+ *thisansp + *thisanssizp))) 504 matching_query = 1; 505 if (!recvresp2 506 && anhp->id == hp2->id 507- && __libc_res_queriesmatch (buf2, buf2 + buflen2, 508- *thisansp, 509- *thisansp + *thisanssizp)) 510+ && (skip_query_match 511+ || __libc_res_queriesmatch (buf2, buf2 + buflen2, 512+ *thisansp, 513+ *thisansp + *thisanssizp))) 514 matching_query = 2; 515 if (matching_query == 0) 516 /* Spurious UDP packet. Drop it and continue 517@@ -1221,9 +1232,7 @@ send_dg(res_state statp, 518 goto wait; 519 } 520 521- if (anhp->rcode == SERVFAIL || 522- anhp->rcode == NOTIMP || 523- anhp->rcode == REFUSED) { 524+ if (thisansp_error) { 525 next_ns: 526 if (recvresp1 || (buf2 != NULL && recvresp2)) { 527 *resplen2 = 0; 528diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c 529new file mode 100644 530index 0000000000..cf1e39876f 531--- /dev/null 532+++ b/resolv/tst-resolv-short-response.c 533@@ -0,0 +1,112 @@ 534+/* Test for spurious timeouts with short 12-byte responses (bug 31890). 535+ Copyright (C) 2024 Free Software Foundation, Inc. 536+ This file is part of the GNU C Library. 537+ 538+ The GNU C Library is free software; you can redistribute it and/or 539+ modify it under the terms of the GNU Lesser General Public 540+ License as published by the Free Software Foundation; either 541+ version 2.1 of the License, or (at your option) any later version. 542+ 543+ The GNU C Library is distributed in the hope that it will be useful, 544+ but WITHOUT ANY WARRANTY; without even the implied warranty of 545+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 546+ Lesser General Public License for more details. 547+ 548+ You should have received a copy of the GNU Lesser General Public 549+ License along with the GNU C Library; if not, see 550+ <https://www.gnu.org/licenses/>. */ 551+ 552+#include <resolv.h> 553+#include <support/check.h> 554+#include <support/resolv_test.h> 555+#include <support/check_nss.h> 556+ 557+/* The rcode in the initial response. */ 558+static volatile int rcode; 559+ 560+static void 561+response (const struct resolv_response_context *ctx, 562+ struct resolv_response_builder *b, 563+ const char *qname, uint16_t qclass, uint16_t qtype) 564+{ 565+ switch (ctx->server_index) 566+ { 567+ case 0: 568+ /* First server times out. */ 569+ struct resolv_response_flags flags = {.rcode = rcode}; 570+ resolv_response_init (b, flags); 571+ break; 572+ case 1: 573+ /* Second server sends reply. */ 574+ resolv_response_init (b, (struct resolv_response_flags) {}); 575+ resolv_response_add_question (b, qname, qclass, qtype); 576+ resolv_response_section (b, ns_s_an); 577+ resolv_response_open_record (b, qname, qclass, qtype, 0); 578+ switch (qtype) 579+ { 580+ case T_A: 581+ { 582+ char ipv4[4] = {192, 0, 2, 17}; 583+ resolv_response_add_data (b, &ipv4, sizeof (ipv4)); 584+ } 585+ break; 586+ case T_AAAA: 587+ { 588+ char ipv6[16] 589+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; 590+ resolv_response_add_data (b, &ipv6, sizeof (ipv6)); 591+ } 592+ break; 593+ default: 594+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype); 595+ } 596+ resolv_response_close_record (b); 597+ break; 598+ default: 599+ FAIL_EXIT1 ("unexpected query to server %d", ctx->server_index); 600+ } 601+} 602+ 603+static void 604+check_one (void) 605+{ 606+ 607+ /* The buggy 1-second query timeout results in 30 seconds of delay, 608+ which triggers a test timeout failure. */ 609+ for (int i = 0; i < 10; ++i) 610+ { 611+ check_hostent ("www.example", gethostbyname ("www.example"), 612+ "name: www.example\n" 613+ "address: 192.0.2.17\n"); 614+ check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6), 615+ "name: www.example\n" 616+ "address: 2001:db8::1\n"); 617+ } 618+} 619+ 620+static int 621+do_test (void) 622+{ 623+ struct resolv_test *aux = resolv_test_start 624+ ((struct resolv_redirect_config) 625+ { 626+ .response_callback = response, 627+ }); 628+ 629+ _res.options |= RES_SNGLKUP; 630+ 631+ rcode = 2; /* SERVFAIL. */ 632+ check_one (); 633+ 634+ rcode = 4; /* NOTIMP. */ 635+ check_one (); 636+ 637+ rcode = 5; /* REFUSED. */ 638+ check_one (); 639+ 640+ resolv_test_end (aux); 641+ 642+ return 0; 643+} 644+ 645+#include <support/test-driver.c> 646 647commit ef141426630da0946f0af8732eddce9b9a52b2d3 648Author: Florian Weimer <fweimer@redhat.com> 649Date: Wed Jul 24 12:06:47 2024 +0200 650 651 resolv: Do not wait for non-existing second DNS response after error (bug 30081) 652 653 In single-request mode, there is no second response after an error 654 because the second query has not been sent yet. Waiting for it 655 introduces an unnecessary timeout. 656 657 Reviewed-by: DJ Delorie <dj@redhat.com> 658 (cherry picked from commit af625987d619388a100b153520d3ee308bda9889) 659 660diff --git a/NEWS b/NEWS 661index 66b755ed34..4d7100b21c 100644 662--- a/NEWS 663+++ b/NEWS 664@@ -9,6 +9,7 @@ Version 2.41 665 666 The following bugs are resolved with this release: 667 668+ [30081] resolv: Do not wait for non-existing second DNS response after error 669 [31890] resolv: Allow short error responses to match any DNS query 670 671 Version 2.40 672diff --git a/resolv/Makefile b/resolv/Makefile 673index d927e337d9..abff7fc007 100644 674--- a/resolv/Makefile 675+++ b/resolv/Makefile 676@@ -106,6 +106,7 @@ tests += \ 677 tst-resolv-nondecimal \ 678 tst-resolv-res_init-multi \ 679 tst-resolv-search \ 680+ tst-resolv-semi-failure \ 681 tst-resolv-short-response \ 682 tst-resolv-trailing \ 683 684@@ -300,6 +301,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library) 685 $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library) 686 $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library) 687 $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library) 688+$(objpfx)tst-resolv-semi-failure: $(objpfx)libresolv.so \ 689+ $(shared-thread-library) 690 $(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \ 691 $(shared-thread-library) 692 $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library) 693diff --git a/resolv/res_send.c b/resolv/res_send.c 694index 572e72c32f..9c77613f37 100644 695--- a/resolv/res_send.c 696+++ b/resolv/res_send.c 697@@ -1238,7 +1238,7 @@ send_dg(res_state statp, 698 *resplen2 = 0; 699 return resplen; 700 } 701- if (buf2 != NULL) 702+ if (buf2 != NULL && !single_request) 703 { 704 /* No data from the first reply. */ 705 resplen = 0; 706diff --git a/resolv/tst-resolv-semi-failure.c b/resolv/tst-resolv-semi-failure.c 707new file mode 100644 708index 0000000000..aa9798b5a7 709--- /dev/null 710+++ b/resolv/tst-resolv-semi-failure.c 711@@ -0,0 +1,133 @@ 712+/* Test parallel failure/success responses (bug 30081). 713+ Copyright (C) 2024 Free Software Foundation, Inc. 714+ This file is part of the GNU C Library. 715+ 716+ The GNU C Library is free software; you can redistribute it and/or 717+ modify it under the terms of the GNU Lesser General Public 718+ License as published by the Free Software Foundation; either 719+ version 2.1 of the License, or (at your option) any later version. 720+ 721+ The GNU C Library is distributed in the hope that it will be useful, 722+ but WITHOUT ANY WARRANTY; without even the implied warranty of 723+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 724+ Lesser General Public License for more details. 725+ 726+ You should have received a copy of the GNU Lesser General Public 727+ License along with the GNU C Library; if not, see 728+ <https://www.gnu.org/licenses/>. */ 729+ 730+#include <resolv.h> 731+#include <support/check.h> 732+#include <support/resolv_test.h> 733+#include <support/check_nss.h> 734+ 735+/* The rcode in the initial response. */ 736+static volatile int rcode; 737+ 738+/* Whether to fail the initial A query (!fail_aaaa) or the initial 739+ AAAA query (fail_aaaa). */ 740+static volatile bool fail_aaaa; 741+ 742+static void 743+response (const struct resolv_response_context *ctx, 744+ struct resolv_response_builder *b, 745+ const char *qname, uint16_t qclass, uint16_t qtype) 746+{ 747+ /* Handle the failing query. */ 748+ if ((fail_aaaa && qtype == T_AAAA) && ctx->server_index == 0) 749+ { 750+ struct resolv_response_flags flags = {.rcode = rcode}; 751+ resolv_response_init (b, flags); 752+ return; 753+ } 754+ 755+ /* Otherwise produce a response. */ 756+ resolv_response_init (b, (struct resolv_response_flags) {}); 757+ resolv_response_add_question (b, qname, qclass, qtype); 758+ resolv_response_section (b, ns_s_an); 759+ resolv_response_open_record (b, qname, qclass, qtype, 0); 760+ switch (qtype) 761+ { 762+ case T_A: 763+ { 764+ char ipv4[4] = {192, 0, 2, 17}; 765+ resolv_response_add_data (b, &ipv4, sizeof (ipv4)); 766+ } 767+ break; 768+ case T_AAAA: 769+ { 770+ char ipv6[16] 771+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; 772+ resolv_response_add_data (b, &ipv6, sizeof (ipv6)); 773+ } 774+ break; 775+ default: 776+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype); 777+ } 778+ resolv_response_close_record (b); 779+} 780+ 781+static void 782+check_one (void) 783+{ 784+ 785+ /* The buggy 1-second query timeout results in 30 seconds of delay, 786+ which triggers are test timeout failure. */ 787+ for (int i = 0; i < 30; ++i) 788+ { 789+ static const struct addrinfo hints = 790+ { 791+ .ai_family = AF_UNSPEC, 792+ .ai_socktype = SOCK_STREAM, 793+ }; 794+ struct addrinfo *ai; 795+ int ret = getaddrinfo ("www.example", "80", &hints, &ai); 796+ const char *expected; 797+ if (ret == 0 && ai->ai_next != NULL) 798+ expected = ("address: STREAM/TCP 192.0.2.17 80\n" 799+ "address: STREAM/TCP 2001:db8::1 80\n"); 800+ else 801+ /* Only one response because the AAAA lookup failure is 802+ treated as an ignoreable error. */ 803+ expected = "address: STREAM/TCP 192.0.2.17 80\n"; 804+ check_addrinfo ("www.example", ai, ret, expected); 805+ if (ret == 0) 806+ freeaddrinfo (ai); 807+ } 808+} 809+ 810+static int 811+do_test (void) 812+{ 813+ for (int do_single_lookup = 0; do_single_lookup < 2; ++do_single_lookup) 814+ { 815+ struct resolv_test *aux = resolv_test_start 816+ ((struct resolv_redirect_config) 817+ { 818+ .response_callback = response, 819+ }); 820+ 821+ if (do_single_lookup) 822+ _res.options |= RES_SNGLKUP; 823+ 824+ for (int do_fail_aaaa = 0; do_fail_aaaa < 2; ++do_fail_aaaa) 825+ { 826+ fail_aaaa = do_fail_aaaa; 827+ 828+ rcode = 2; /* SERVFAIL. */ 829+ check_one (); 830+ 831+ rcode = 4; /* NOTIMP. */ 832+ check_one (); 833+ 834+ rcode = 5; /* REFUSED. */ 835+ check_one (); 836+ } 837+ 838+ resolv_test_end (aux); 839+ } 840+ 841+ return 0; 842+} 843+ 844+#include <support/test-driver.c> 845diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c 846index cf1e39876f..be354ae1c7 100644 847--- a/resolv/tst-resolv-short-response.c 848+++ b/resolv/tst-resolv-short-response.c 849@@ -81,6 +81,18 @@ check_one (void) 850 check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6), 851 "name: www.example\n" 852 "address: 2001:db8::1\n"); 853+ static const struct addrinfo hints = 854+ { 855+ .ai_family = AF_UNSPEC, 856+ .ai_socktype = SOCK_STREAM, 857+ }; 858+ struct addrinfo *ai; 859+ int ret = getaddrinfo ("www.example", "80", &hints, &ai); 860+ check_addrinfo ("www.example", ai, ret, 861+ "address: STREAM/TCP 192.0.2.17 80\n" 862+ "address: STREAM/TCP 2001:db8::1 80\n"); 863+ if (ret == 0) 864+ freeaddrinfo (ai); 865 } 866 } 867 868 869commit b6aeba2de157ba0cdc8fb0aed67b632b3490f383 870Author: Florian Weimer <fweimer@redhat.com> 871Date: Wed Jul 24 12:50:17 2024 +0200 872 873 manual: Do not mention STATIC_TLS in dynamic linker hardening recommendations 874 875 The current toolchain does not consistently generate it, and 876 glibc does not use it. 877 878 Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com> 879 (cherry picked from commit 90842d3980064ef410b998b22170ad409b76b9fd) 880 881diff --git a/manual/dynlink.texi b/manual/dynlink.texi 882index 03565d4fb0..1500a53de6 100644 883--- a/manual/dynlink.texi 884+++ b/manual/dynlink.texi 885@@ -993,21 +993,21 @@ The dynamic segment should also mention @code{BIND_NOW} on the 886 enough). 887 888 @item 889-For shared objects (not main programs), if the program header has a 890-@code{PT_TLS} segment, the dynamic segment (as shown by @samp{readelf 891--dW}) should contain the @code{STATIC_TLS} flag on the @code{FLAGS} 892-line. 893- 894-If @code{STATIC_TLS} is missing in shared objects, ensure that the 895-appropriate relocations for GNU2 TLS descriptors are used (for example, 896+Ensure that only static TLS relocations (thread-pointer relative offset 897+locations) are used, for example @code{R_AARCH64_TLS_TPREL} and 898+@code{X86_64_TPOFF64}. As the second-best option, and only if 899+compatibility with non-hardened applications using @code{dlopen} is 900+needed, GNU2 TLS descriptor relocations can be used (for example, 901 @code{R_AARCH64_TLSDESC} or @code{R_X86_64_TLSDESC}). 902 903 @item 904-There should not be a reference to the symbols @code{__tls_get_addr}, 905-@code{__tls_get_offset}, @code{__tls_get_addr_opt} in the dynamic symbol 906-table (in the @samp{readelf -sDW} output). Thread-local storage must be 907-accessed using the initial-exec (static) model, or using GNU2 TLS 908-descriptors. 909+There should not be references to the traditional TLS function symbols 910+@code{__tls_get_addr}, @code{__tls_get_offset}, 911+@code{__tls_get_addr_opt} in the dynamic symbol table (in the 912+@samp{readelf -sDW} output). Supporting global dynamic TLS relocations 913+(such as @code{R_AARCH64_TLS_DTPMOD}, @code{R_AARCH64_TLS_DTPREL}, 914+@code{R_X86_64_DTPMOD64}, @code{R_X86_64_DTPOFF64}) should not be used, 915+either. 916 917 @item 918 Likewise, the functions @code{dlopen}, @code{dlmopen}, @code{dlclose} 919 920commit 145b5886379c8de4f0a1bca3556a4c3d7b6c24b2 921Author: Florian Weimer <fweimer@redhat.com> 922Date: Wed Jul 24 13:42:16 2024 +0200 923 924 Fix version number in NEWS file 925 926diff --git a/NEWS b/NEWS 927index 4d7100b21c..6b62f55658 100644 928--- a/NEWS 929+++ b/NEWS 930@@ -5,7 +5,7 @@ See the end for copying conditions. 931 Please send GNU C library bug reports via <https://sourceware.org/bugzilla/> 932 using `glibc' in the "product" field. 933 934-Version 2.41 935+Version 2.40.1 936 937 The following bugs are resolved with this release: 938 939 940commit 2aebac5e158277d852b87b0cbd4af2b2d10ac387 941Author: Miguel Martín <mmartinv@redhat.com> 942Date: Tue Jul 16 17:14:56 2024 +0200 943 944 malloc: avoid global locks in tst-aligned_alloc-lib.c 945 946 Make sure the DSO used by aligned_alloc/calloc/malloc tests does not get 947 a global lock on multithreaded tests. 948 Reviewed-by: Arjun Shankar <arjun@redhat.com> 949 950 (cherry picked from commit 9a27b566b2048f599048f2f4afe1cce06c4ef43d) 951 952diff --git a/malloc/tst-aligned_alloc-lib.c b/malloc/tst-aligned_alloc-lib.c 953index 0205df5acf..9ef1f839c1 100644 954--- a/malloc/tst-aligned_alloc-lib.c 955+++ b/malloc/tst-aligned_alloc-lib.c 956@@ -17,37 +17,38 @@ 957 License along with the GNU C Library; see the file COPYING.LIB. If 958 not, see <https://www.gnu.org/licenses/>. */ 959 960-#include <array_length.h> 961 #include <libc-symbols.h> 962 #include <stdlib.h> 963+#include <time.h> 964 965 extern void *__libc_malloc (size_t size); 966 extern void *__libc_calloc (size_t n, size_t size); 967 968+__thread unsigned int seed = 0; 969+ 970 int aligned_alloc_count = 0; 971 int libc_malloc_count = 0; 972 int libc_calloc_count = 0; 973 974-/* Get a random alignment value. Biased towards the smaller values. Must be 975- a power of 2. */ 976-static size_t get_random_alignment (void) 977-{ 978- size_t aligns[] = { 979- 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 980- }; 981- 982- return aligns[random () % array_length (aligns)]; 983-} 984- 985-static void *get_random_alloc (size_t size) 986+static void * 987+get_random_alloc (size_t size) 988 { 989 void *retval; 990 size_t align; 991+ struct timespec tp; 992+ 993+ if (seed == 0) 994+ { 995+ clock_gettime (CLOCK_REALTIME, &tp); 996+ seed = tp.tv_nsec; 997+ } 998 999- switch (random() % 3) 1000- { 1001+ switch (rand_r (&seed) % 3) 1002+ { 1003 case 1: 1004- align = get_random_alignment (); 1005+ /* Get a random alignment value. Biased towards the smaller 1006+ * values up to 16384. Must be a power of 2. */ 1007+ align = 1 << rand_r (&seed) % 15; 1008 retval = aligned_alloc (align, size); 1009 aligned_alloc_count++; 1010 break; 1011@@ -59,13 +60,13 @@ static void *get_random_alloc (size_t size) 1012 retval = __libc_malloc (size); 1013 libc_malloc_count++; 1014 break; 1015- } 1016+ } 1017 1018 return retval; 1019 } 1020 1021- 1022-void * __random_malloc (size_t size) 1023+void * 1024+__random_malloc (size_t size) 1025 { 1026 return get_random_alloc (size); 1027 } 1028 1029commit 5d2a931a8167a288374c3a38dc10fe0492ab5ffe 1030Author: Miguel Martín <mmartinv@redhat.com> 1031Date: Tue Jul 16 17:14:57 2024 +0200 1032 1033 malloc: add multi-threaded tests for aligned_alloc/calloc/malloc 1034 1035 Improve aligned_alloc/calloc/malloc test coverage by adding 1036 multi-threaded tests with random memory allocations and with/without 1037 cross-thread memory deallocations. 1038 1039 Perform a number of memory allocation calls with random sizes limited 1040 to 0xffff. 1041 1042 Use the existing DSO ('malloc/tst-aligned_alloc-lib.c') to randomize 1043 allocator selection. 1044 1045 The multi-threaded allocation/deallocation is staged as described below: 1046 1047 - Stage 1: Half of the threads will be allocating memory and the 1048 other half will be waiting for them to finish the allocation. 1049 - Stage 2: Half of the threads will be allocating memory and the 1050 other half will be deallocating memory. 1051 - Stage 3: Half of the threads will be deallocating memory and the 1052 second half waiting on them to finish. 1053 1054 Add 'malloc/tst-aligned-alloc-random-thread.c' where each thread will 1055 deallocate only the memory that was previously allocated by itself. 1056 1057 Add 'malloc/tst-aligned-alloc-random-thread-cross.c' where each thread 1058 will deallocate memory that was previously allocated by another thread. 1059 1060 The intention is to be able to utilize existing malloc testing to ensure 1061 that similar allocation APIs are also exposed to the same rigors. 1062 Reviewed-by: Arjun Shankar <arjun@redhat.com> 1063 1064 (cherry picked from commit b0fbcb7d0051a68baf26b2aed51a8a31c34d68e5) 1065 1066diff --git a/malloc/Makefile b/malloc/Makefile 1067index 02aff1bd1d..98d507a6eb 100644 1068--- a/malloc/Makefile 1069+++ b/malloc/Makefile 1070@@ -28,6 +28,8 @@ tests := \ 1071 mallocbug \ 1072 tst-aligned-alloc \ 1073 tst-aligned-alloc-random \ 1074+ tst-aligned-alloc-random-thread \ 1075+ tst-aligned-alloc-random-thread-cross \ 1076 tst-alloc_buffer \ 1077 tst-calloc \ 1078 tst-free-errno \ 1079@@ -151,6 +153,8 @@ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes) 1080 # the tests expect specific internal behavior that is changed due to linking to 1081 # libmcheck.a. 1082 tests-exclude-mcheck = \ 1083+ tst-aligned-alloc-random-thread \ 1084+ tst-aligned-alloc-random-thread-cross \ 1085 tst-compathooks-off \ 1086 tst-compathooks-on \ 1087 tst-malloc-backtrace \ 1088@@ -415,7 +419,11 @@ $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so 1089 $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so 1090 1091 $(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so 1092+$(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so 1093+$(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so 1094 $(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so 1095 1096 tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so 1097+tst-aligned-alloc-random-thread-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so 1098+tst-aligned-alloc-random-thread-cross-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so 1099 tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so 1100diff --git a/malloc/tst-aligned-alloc-random-thread-cross.c b/malloc/tst-aligned-alloc-random-thread-cross.c 1101new file mode 100644 1102index 0000000000..360ecc56ee 1103--- /dev/null 1104+++ b/malloc/tst-aligned-alloc-random-thread-cross.c 1105@@ -0,0 +1,19 @@ 1106+/* multi-threaded memory allocation and cross-thread deallocation test. 1107+ Copyright (C) 2024 Free Software Foundation, Inc. 1108+ This file is part of the GNU C Library. 1109+ 1110+ The GNU C Library is free software; you can redistribute it and/or 1111+ modify it under the terms of the GNU Lesser General Public License as 1112+ published by the Free Software Foundation; either version 2.1 of the 1113+ License, or (at your option) any later version. 1114+ 1115+ The GNU C Library is distributed in the hope that it will be useful, 1116+ but WITHOUT ANY WARRANTY; without even the implied warranty of 1117+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1118+ Lesser General Public License for more details. 1119+ 1120+ You should have received a copy of the GNU Lesser General Public 1121+ License along with the GNU C Library; see the file COPYING.LIB. If 1122+ not, see <https://www.gnu.org/licenses/>. */ 1123+#define CROSS_THREAD_DEALLOC 1124+#include "tst-aligned-alloc-random-thread.c" 1125diff --git a/malloc/tst-aligned-alloc-random-thread.c b/malloc/tst-aligned-alloc-random-thread.c 1126new file mode 100644 1127index 0000000000..e95f79250a 1128--- /dev/null 1129+++ b/malloc/tst-aligned-alloc-random-thread.c 1130@@ -0,0 +1,145 @@ 1131+/* multi-threaded memory allocation/deallocation test. 1132+ Copyright (C) 2024 Free Software Foundation, Inc. 1133+ This file is part of the GNU C Library. 1134+ 1135+ The GNU C Library is free software; you can redistribute it and/or 1136+ modify it under the terms of the GNU Lesser General Public License as 1137+ published by the Free Software Foundation; either version 2.1 of the 1138+ License, or (at your option) any later version. 1139+ 1140+ The GNU C Library is distributed in the hope that it will be useful, 1141+ but WITHOUT ANY WARRANTY; without even the implied warranty of 1142+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1143+ Lesser General Public License for more details. 1144+ 1145+ You should have received a copy of the GNU Lesser General Public 1146+ License along with the GNU C Library; see the file COPYING.LIB. If 1147+ not, see <https://www.gnu.org/licenses/>. */ 1148+ 1149+#include <stdio.h> 1150+#include <stdlib.h> 1151+#include <string.h> 1152+#include <support/check.h> 1153+#include <support/support.h> 1154+#include <support/xthread.h> 1155+#include <support/test-driver.h> 1156+#include <sys/sysinfo.h> 1157+#include <unistd.h> 1158+ 1159+#ifndef ITERATIONS 1160+# define ITERATIONS 16 1161+#endif 1162+ 1163+#ifndef NUM_THREADS 1164+# define NUM_THREADS 8 1165+#endif 1166+ 1167+#ifndef NUM_ALLOCATIONS 1168+# define NUM_ALLOCATIONS 2048 1169+#endif 1170+ 1171+static pthread_barrier_t barrier; 1172+ 1173+__thread unsigned int seed; 1174+ 1175+typedef struct 1176+{ 1177+ int id; 1178+ pthread_t thread; 1179+} thread; 1180+ 1181+thread threads[NUM_THREADS]; 1182+ 1183+void *allocations[NUM_THREADS][NUM_ALLOCATIONS]; 1184+ 1185+void 1186+run_thread_dealloc (int id) 1187+{ 1188+ for (int i = 0; i < NUM_ALLOCATIONS; i++) 1189+ { 1190+ free (allocations[id][i]); 1191+ allocations[id][i] = NULL; 1192+ } 1193+} 1194+ 1195+void 1196+run_thread_alloc (int id) 1197+{ 1198+ size_t msb, size; 1199+ for (int i = 0; i < NUM_ALLOCATIONS; i++) 1200+ { 1201+ msb = 1 << rand_r (&seed) % 16; 1202+ size = msb + rand_r (&seed) % msb; 1203+ allocations[id][i] = malloc (size); 1204+ TEST_VERIFY_EXIT (allocations[id][i] != NULL); 1205+ } 1206+} 1207+ 1208+void * 1209+run_allocations (void *arg) 1210+{ 1211+ int id = *((int *) arg); 1212+ seed = time (NULL) + id; 1213+ 1214+ /* Stage 1: First half o the threads allocating memory and the second 1215+ * half waiting for them to finish 1216+ */ 1217+ if (id < NUM_THREADS / 2) 1218+ run_thread_alloc (id); 1219+ 1220+ xpthread_barrier_wait (&barrier); 1221+ 1222+ /* Stage 2: Half of the threads allocationg memory and the other 1223+ * half deallocating: 1224+ * - In the non cross-thread dealloc scenario the first half will be 1225+ * deallocating the memory allocated by themselves in stage 1 and the 1226+ * second half will be allocating memory. 1227+ * - In the cross-thread dealloc scenario the first half will continue 1228+ * to allocate memory and the second half will deallocate the memory 1229+ * allocated by the first half in stage 1. 1230+ */ 1231+ if (id < NUM_THREADS / 2) 1232+#ifndef CROSS_THREAD_DEALLOC 1233+ run_thread_dealloc (id); 1234+#else 1235+ run_thread_alloc (id + NUM_THREADS / 2); 1236+#endif 1237+ else 1238+#ifndef CROSS_THREAD_DEALLOC 1239+ run_thread_alloc (id); 1240+#else 1241+ run_thread_dealloc (id - NUM_THREADS / 2); 1242+#endif 1243+ 1244+ xpthread_barrier_wait (&barrier); 1245+ 1246+ // Stage 3: Second half of the threads deallocating and the first half 1247+ // waiting for them to finish. 1248+ if (id >= NUM_THREADS / 2) 1249+ run_thread_dealloc (id); 1250+ 1251+ return NULL; 1252+} 1253+ 1254+static int 1255+do_test (void) 1256+{ 1257+ xpthread_barrier_init (&barrier, NULL, NUM_THREADS); 1258+ 1259+ for (int i = 0; i < ITERATIONS; i++) 1260+ { 1261+ for (int t = 0; t < NUM_THREADS; t++) 1262+ { 1263+ threads[t].id = t; 1264+ threads[t].thread 1265+ = xpthread_create (NULL, run_allocations, &threads[t].id); 1266+ } 1267+ 1268+ for (int t = 0; t < NUM_THREADS; t++) 1269+ xpthread_join (threads[t].thread); 1270+ } 1271+ 1272+ return 0; 1273+} 1274+ 1275+#include <support/test-driver.c> 1276 1277commit 65fbcfe58991194301a7e4fb9c53ab936573e711 1278Author: Arjun Shankar <arjun@redhat.com> 1279Date: Mon Jul 29 14:30:59 2024 +0200 1280 1281 manual/stdio: Clarify putc and putwc 1282 1283 The manual entry for `putc' described what "most systems" do instead of 1284 describing the glibc implementation and its guarantees. This commit 1285 fixes that by warning that putc may be implemented as a macro that 1286 double-evaluates `stream', and removing the performance claim. 1287 1288 Even though the current `putc' implementation does not double-evaluate 1289 `stream', offering this obscure guarantee as an extension to what 1290 POSIX allows does not seem very useful. 1291 1292 The entry for `putwc' is also edited to bring it in line with `putc'. 1293 Reviewed-by: Florian Weimer <fweimer@redhat.com> 1294 1295 (cherry picked from commit 10de4a47ef3f481592e3c62eb07bcda23e9fde4d) 1296 1297diff --git a/manual/stdio.texi b/manual/stdio.texi 1298index f5e289d58a..f9529a098d 100644 1299--- a/manual/stdio.texi 1300+++ b/manual/stdio.texi 1301@@ -903,21 +903,21 @@ This function is a GNU extension. 1302 @deftypefun int putc (int @var{c}, FILE *@var{stream}) 1303 @standards{ISO, stdio.h} 1304 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} 1305-This is just like @code{fputc}, except that most systems implement it as 1306+This is just like @code{fputc}, except that it may be implemented as 1307 a macro, making it faster. One consequence is that it may evaluate the 1308 @var{stream} argument more than once, which is an exception to the 1309-general rule for macros. @code{putc} is usually the best function to 1310-use for writing a single character. 1311+general rule for macros. Therefore, @var{stream} should never be an 1312+expression with side-effects. 1313 @end deftypefun 1314 1315 @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream}) 1316 @standards{ISO, wchar.h} 1317 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} 1318-This is just like @code{fputwc}, except that it can be implement as 1319+This is just like @code{fputwc}, except that it may be implemented as 1320 a macro, making it faster. One consequence is that it may evaluate the 1321 @var{stream} argument more than once, which is an exception to the 1322-general rule for macros. @code{putwc} is usually the best function to 1323-use for writing a single wide character. 1324+general rule for macros. Therefore, @var{stream} should never be an 1325+expression with side-effects. 1326 @end deftypefun 1327 1328 @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream}) 1329 1330commit 132a72f93cb4ad9f16b8469dc061de5f75f6a44e 1331Author: Lukas Bulwahn <lukas.bulwahn@redhat.com> 1332Date: Mon Jul 29 11:08:17 2024 +0200 1333 1334 manual: make setrlimit() description less ambiguous 1335 1336 The existing description for setrlimit() has some ambiguity. It could be 1337 understood to have the semantics of getrlimit(), i.e., the limits from the 1338 process are stored in the provided rlp pointer. 1339 1340 Make the description more explicit that rlp are the input values, and that 1341 the limits of the process is changed with this function. 1342 1343 Reviewed-by: Florian Weimer <fweimer@redhat.com> 1344 (cherry picked from commit aedbf08891069fc029ed021e4dba933eb877b394) 1345 1346diff --git a/manual/resource.texi b/manual/resource.texi 1347index c9b21dedeb..25966bcb64 100644 1348--- a/manual/resource.texi 1349+++ b/manual/resource.texi 1350@@ -192,8 +192,8 @@ If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a 1351 @standards{BSD, sys/resource.h} 1352 @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} 1353 @c Direct syscall on most systems; lock-taking critical section on HURD. 1354-Store the current and maximum limits for the resource @var{resource} 1355-in @code{*@var{rlp}}. 1356+Change the current and maximum limits of the process for the resource 1357+@var{resource} to the values provided in @code{*@var{rlp}}. 1358 1359 The return value is @code{0} on success and @code{-1} on failure. The 1360 following @code{errno} error condition is possible: 1361 1362commit 509166c9a53ad81217a28cc67ba2a688f02fc477 1363Author: Florian Weimer <fweimer@redhat.com> 1364Date: Wed Jun 26 11:27:54 2024 +0200 1365 1366 Enhance test coverage for strnlen, wcsnlen 1367 1368 This commit adds string/test-strnlen-nonarray and 1369 wcsmbs/test-wcsnlen-nonarray. 1370 1371 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com> 1372 (cherry picked from commit 783d4c0b81889c39a9ddf13b60d0fde4040fb1c0) 1373 1374diff --git a/string/Makefile b/string/Makefile 1375index 8f31fa49e6..2e20fc00fd 100644 1376--- a/string/Makefile 1377+++ b/string/Makefile 1378@@ -184,6 +184,7 @@ tests := \ 1379 test-strncpy \ 1380 test-strndup \ 1381 test-strnlen \ 1382+ test-strnlen-nonarray \ 1383 test-strpbrk \ 1384 test-strrchr \ 1385 test-strspn \ 1386diff --git a/string/test-Xnlen-nonarray.c b/string/test-Xnlen-nonarray.c 1387new file mode 100644 1388index 0000000000..499bef2041 1389--- /dev/null 1390+++ b/string/test-Xnlen-nonarray.c 1391@@ -0,0 +1,133 @@ 1392+/* Test non-array inputs to string length functions. 1393+ Copyright (C) 2024 Free Software Foundation, Inc. 1394+ This file is part of the GNU C Library. 1395+ 1396+ The GNU C Library is free software; you can redistribute it and/or 1397+ modify it under the terms of the GNU Lesser General Public 1398+ License as published by the Free Software Foundation; either 1399+ version 2.1 of the License, or (at your option) any later version. 1400+ 1401+ The GNU C Library is distributed in the hope that it will be useful, 1402+ but WITHOUT ANY WARRANTY; without even the implied warranty of 1403+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1404+ Lesser General Public License for more details. 1405+ 1406+ You should have received a copy of the GNU Lesser General Public 1407+ License along with the GNU C Library; if not, see 1408+ <https://www.gnu.org/licenses/>. */ 1409+ 1410+/* This skeleton file is included from string/test-strnlen-nonarray.c 1411+ and wcsmbs/test-wcsnlen-nonarray.c to test that reading of the array 1412+ stops at the first null character. 1413+ 1414+ TEST_IDENTIFIER must be the test function identifier. TEST_NAME is 1415+ the same as a string. 1416+ 1417+ CHAR must be defined as the character type. */ 1418+ 1419+#include <array_length.h> 1420+#include <string.h> 1421+#include <support/check.h> 1422+#include <support/next_to_fault.h> 1423+#include <support/test-driver.h> 1424+#include <sys/param.h> 1425+#include <unistd.h> 1426+ 1427+typedef __typeof (TEST_IDENTIFIER) *proto_t; 1428+ 1429+#define TEST_MAIN 1430+#include "test-string.h" 1431+ 1432+IMPL (TEST_IDENTIFIER, 1) 1433+ 1434+static int 1435+test_main (void) 1436+{ 1437+ enum { buffer_length = 256 }; 1438+ TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length); 1439+ 1440+ test_init (); 1441+ 1442+ /* Buffer layout: There are a_count 'A' character followed by 1443+ zero_count null character, for a total of buffer_length 1444+ character: 1445+ 1446+ AAAAA...AAAAA 00000 ... 00000 (unmapped page follows) 1447+ \ / \ / 1448+ (a_count) (zero_count) 1449+ \___ (buffer_length) ___/ 1450+ ^ 1451+ | 1452+ start_offset 1453+ 1454+ The buffer length does not change, but a_count (and thus _zero) 1455+ and start_offset vary. 1456+ 1457+ If start_offset == buffer_length, only 0 is a valid length 1458+ argument. The result is 0. 1459+ 1460+ Otherwwise, if zero_count > 0 (if there a null characters in the 1461+ buffer), then any length argument is valid. If start_offset < 1462+ a_count (i.e., there is a non-null character at start_offset), the 1463+ result is the minimum of a_count - start_offset and the length 1464+ argument. Otherwise the result is 0. 1465+ 1466+ Otherwise, there are no null characters before the unmapped page. 1467+ The length argument must not be greater than buffer_length - 1468+ start_offset, and the result is the length argument. */ 1469+ 1470+ struct support_next_to_fault ntf 1471+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); 1472+ CHAR *buffer = (CHAR *) ntf.buffer; 1473+ 1474+ FOR_EACH_IMPL (impl, 0) 1475+ { 1476+ printf ("info: testing %s\n", impl->name); 1477+ for (size_t i = 0; i < buffer_length; ++i) 1478+ buffer[i] = 'A'; 1479+ 1480+ for (int zero_count = 0; zero_count <= buffer_length; ++zero_count) 1481+ { 1482+ if (zero_count > 0) 1483+ buffer[buffer_length - zero_count] = 0; 1484+ int a_count = buffer_length - zero_count; 1485+ for (int start_offset = 0; start_offset <= buffer_length; 1486+ ++start_offset) 1487+ { 1488+ CHAR *start_pointer = buffer + start_offset; 1489+ if (start_offset == buffer_length) 1490+ TEST_COMPARE (CALL (impl, buffer + start_offset, 0), 0); 1491+ else if (zero_count > 0) 1492+ for (int length_argument = 0; 1493+ length_argument <= 2 * buffer_length; 1494+ ++length_argument) 1495+ { 1496+ if (test_verbose) 1497+ printf ("zero_count=%d a_count=%d start_offset=%d" 1498+ " length_argument=%d\n", 1499+ zero_count, a_count, start_offset, 1500+ length_argument); 1501+ if (start_offset < a_count) 1502+ TEST_COMPARE (CALL (impl, start_pointer, length_argument), 1503+ MIN (a_count - start_offset, 1504+ length_argument)); 1505+ else 1506+ TEST_COMPARE (CALL (impl, start_pointer, length_argument), 1507+ 0); 1508+ } 1509+ else 1510+ for (int length_argument = 0; 1511+ length_argument <= buffer_length - start_offset; 1512+ ++length_argument) 1513+ TEST_COMPARE (CALL (impl, start_pointer, length_argument), 1514+ length_argument); 1515+ } 1516+ } 1517+ } 1518+ 1519+ support_next_to_fault_free (&ntf); 1520+ 1521+ return 0; 1522+} 1523+ 1524+#include <support/test-driver.c> 1525diff --git a/string/test-strnlen-nonarray.c b/string/test-strnlen-nonarray.c 1526new file mode 100644 1527index 0000000000..0ad05756d9 1528--- /dev/null 1529+++ b/string/test-strnlen-nonarray.c 1530@@ -0,0 +1,4 @@ 1531+#define TEST_IDENTIFIER strnlen 1532+#define TEST_NAME "strnlen" 1533+typedef char CHAR; 1534+#include "test-Xnlen-nonarray.c" 1535diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile 1536index 1cddd8cc6d..c51c9b4f1f 100644 1537--- a/wcsmbs/Makefile 1538+++ b/wcsmbs/Makefile 1539@@ -160,6 +160,7 @@ tests := \ 1540 test-wcsncmp \ 1541 test-wcsncpy \ 1542 test-wcsnlen \ 1543+ test-wcsnlen-nonarray \ 1544 test-wcspbrk \ 1545 test-wcsrchr \ 1546 test-wcsspn \ 1547diff --git a/wcsmbs/test-wcsnlen-nonarray.c b/wcsmbs/test-wcsnlen-nonarray.c 1548new file mode 100644 1549index 0000000000..a4b21fecd3 1550--- /dev/null 1551+++ b/wcsmbs/test-wcsnlen-nonarray.c 1552@@ -0,0 +1,5 @@ 1553+#include <wchar.h> 1554+#define TEST_IDENTIFIER wcsnlen 1555+#define TEST_NAME "wcsnlen" 1556+typedef wchar_t CHAR; 1557+#include "../string/test-Xnlen-nonarray.c" 1558 1559commit 46f19b234244f4654b9e3898ac1c27de86068222 1560Author: Florian Weimer <fweimer@redhat.com> 1561Date: Thu Jun 27 16:26:56 2024 +0200 1562 1563 Enhanced test coverage for strncmp, wcsncmp 1564 1565 Add string/test-strncmp-nonarray and 1566 wcsmbs/test-wcsncmp-nonarray. 1567 1568 This is the test that uncovered bug 31934. Test run time 1569 is more than one minute on a fairly current system, so turn 1570 these into xtests that do not run automatically. 1571 1572 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com> 1573 (cherry picked from commit 54252394c25ddf0062e288d4a6ab7a885f8ae009) 1574 1575diff --git a/string/Makefile b/string/Makefile 1576index 2e20fc00fd..1dff405c27 100644 1577--- a/string/Makefile 1578+++ b/string/Makefile 1579@@ -236,7 +236,10 @@ tests-unsupported += $(tests-translation) 1580 endif 1581 1582 # This test allocates a lot of memory and can run for a long time. 1583-xtests = tst-strcoll-overflow 1584+xtests += tst-strcoll-overflow 1585+ 1586+# This test runs for a long time. 1587+xtests += test-strncmp-nonarray 1588 1589 # This test needs libdl. 1590 ifeq (yes,$(build-shared)) 1591diff --git a/string/test-Xncmp-nonarray.c b/string/test-Xncmp-nonarray.c 1592new file mode 100644 1593index 0000000000..9f3a3ca75d 1594--- /dev/null 1595+++ b/string/test-Xncmp-nonarray.c 1596@@ -0,0 +1,183 @@ 1597+/* Test non-array inputs to string comparison functions. 1598+ Copyright (C) 2024 Free Software Foundation, Inc. 1599+ This file is part of the GNU C Library. 1600+ 1601+ The GNU C Library is free software; you can redistribute it and/or 1602+ modify it under the terms of the GNU Lesser General Public 1603+ License as published by the Free Software Foundation; either 1604+ version 2.1 of the License, or (at your option) any later version. 1605+ 1606+ The GNU C Library is distributed in the hope that it will be useful, 1607+ but WITHOUT ANY WARRANTY; without even the implied warranty of 1608+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1609+ Lesser General Public License for more details. 1610+ 1611+ You should have received a copy of the GNU Lesser General Public 1612+ License along with the GNU C Library; if not, see 1613+ <https://www.gnu.org/licenses/>. */ 1614+ 1615+/* This skeleton file is included from string/test-strncmp-nonarray.c and 1616+ wcsmbs/test-wcsncmp-nonarray.c to test that reading of the arrays stops 1617+ at the first null character. 1618+ 1619+ TEST_IDENTIFIER must be the test function identifier. TEST_NAME is 1620+ the same as a string. 1621+ 1622+ CHAR must be defined as the character type. */ 1623+ 1624+#include <array_length.h> 1625+#include <string.h> 1626+#include <support/check.h> 1627+#include <support/next_to_fault.h> 1628+#include <support/test-driver.h> 1629+#include <sys/param.h> 1630+#include <unistd.h> 1631+ 1632+/* Much shorter than test-Xnlen-nonarray.c because of deeply nested loops. */ 1633+enum { buffer_length = 80 }; 1634+ 1635+/* The test buffer layout follows what is described test-Xnlen-nonarray.c, 1636+ except that there two buffers, left and right. The variables 1637+ a_count, zero_count, start_offset are all duplicated. */ 1638+ 1639+/* Return the maximum string length for a string that starts at 1640+ start_offset. */ 1641+static int 1642+string_length (int a_count, int start_offset) 1643+{ 1644+ if (start_offset == buffer_length || start_offset >= a_count) 1645+ return 0; 1646+ else 1647+ return a_count - start_offset; 1648+} 1649+ 1650+/* This is the valid maximum length argument computation for 1651+ strnlen/wcsnlen. See text-Xnlen-nonarray.c. */ 1652+static int 1653+maximum_length (int start_offset, int zero_count) 1654+{ 1655+ if (start_offset == buffer_length) 1656+ return 0; 1657+ else if (zero_count > 0) 1658+ /* Effectively unbounded, but we need to stop fairly low, 1659+ otherwise testing takes too long. */ 1660+ return buffer_length + 32; 1661+ else 1662+ return buffer_length - start_offset; 1663+} 1664+ 1665+typedef __typeof (TEST_IDENTIFIER) *proto_t; 1666+ 1667+#define TEST_MAIN 1668+#include "test-string.h" 1669+ 1670+IMPL (TEST_IDENTIFIER, 1) 1671+ 1672+static int 1673+test_main (void) 1674+{ 1675+ TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length); 1676+ test_init (); 1677+ 1678+ struct support_next_to_fault left_ntf 1679+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); 1680+ CHAR *left_buffer = (CHAR *) left_ntf.buffer; 1681+ struct support_next_to_fault right_ntf 1682+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); 1683+ CHAR *right_buffer = (CHAR *) right_ntf.buffer; 1684+ 1685+ FOR_EACH_IMPL (impl, 0) 1686+ { 1687+ printf ("info: testing %s\n", impl->name); 1688+ for (size_t i = 0; i < buffer_length; ++i) 1689+ left_buffer[i] = 'A'; 1690+ 1691+ for (int left_zero_count = 0; left_zero_count <= buffer_length; 1692+ ++left_zero_count) 1693+ { 1694+ if (left_zero_count > 0) 1695+ left_buffer[buffer_length - left_zero_count] = 0; 1696+ int left_a_count = buffer_length - left_zero_count; 1697+ for (size_t i = 0; i < buffer_length; ++i) 1698+ right_buffer[i] = 'A'; 1699+ for (int right_zero_count = 0; right_zero_count <= buffer_length; 1700+ ++right_zero_count) 1701+ { 1702+ if (right_zero_count > 0) 1703+ right_buffer[buffer_length - right_zero_count] = 0; 1704+ int right_a_count = buffer_length - right_zero_count; 1705+ for (int left_start_offset = 0; 1706+ left_start_offset <= buffer_length; 1707+ ++left_start_offset) 1708+ { 1709+ CHAR *left_start_pointer = left_buffer + left_start_offset; 1710+ int left_maxlen 1711+ = maximum_length (left_start_offset, left_zero_count); 1712+ int left_length 1713+ = string_length (left_a_count, left_start_offset); 1714+ for (int right_start_offset = 0; 1715+ right_start_offset <= buffer_length; 1716+ ++right_start_offset) 1717+ { 1718+ CHAR *right_start_pointer 1719+ = right_buffer + right_start_offset; 1720+ int right_maxlen 1721+ = maximum_length (right_start_offset, right_zero_count); 1722+ int right_length 1723+ = string_length (right_a_count, right_start_offset); 1724+ 1725+ /* Maximum length is modelled after strnlen/wcsnlen, 1726+ and must be valid for both pointer arguments at 1727+ the same time. */ 1728+ int maxlen = MIN (left_maxlen, right_maxlen); 1729+ 1730+ for (int length_argument = 0; length_argument <= maxlen; 1731+ ++length_argument) 1732+ { 1733+ if (test_verbose) 1734+ { 1735+ printf ("left: zero_count=%d" 1736+ " a_count=%d start_offset=%d\n", 1737+ left_zero_count, left_a_count, 1738+ left_start_offset); 1739+ printf ("right: zero_count=%d" 1740+ " a_count=%d start_offset=%d\n", 1741+ right_zero_count, right_a_count, 1742+ right_start_offset); 1743+ printf ("length argument: %d\n", 1744+ length_argument); 1745+ } 1746+ 1747+ /* Effective lengths bounded by length argument. 1748+ The effective length determines the 1749+ outcome of the comparison. */ 1750+ int left_effective 1751+ = MIN (left_length, length_argument); 1752+ int right_effective 1753+ = MIN (right_length, length_argument); 1754+ if (left_effective == right_effective) 1755+ TEST_COMPARE (CALL (impl, 1756+ left_start_pointer, 1757+ right_start_pointer, 1758+ length_argument), 0); 1759+ else if (left_effective < right_effective) 1760+ TEST_COMPARE (CALL (impl, 1761+ left_start_pointer, 1762+ right_start_pointer, 1763+ length_argument) < 0, 1); 1764+ else 1765+ TEST_COMPARE (CALL (impl, 1766+ left_start_pointer, 1767+ right_start_pointer, 1768+ length_argument) > 0, 1); 1769+ } 1770+ } 1771+ } 1772+ } 1773+ } 1774+ } 1775+ 1776+ return 0; 1777+} 1778+ 1779+#include <support/test-driver.c> 1780diff --git a/string/test-strncmp-nonarray.c b/string/test-strncmp-nonarray.c 1781new file mode 100644 1782index 0000000000..581e52d01b 1783--- /dev/null 1784+++ b/string/test-strncmp-nonarray.c 1785@@ -0,0 +1,4 @@ 1786+#define TEST_IDENTIFIER strncmp 1787+#define TEST_NAME "strncmp" 1788+typedef char CHAR; 1789+#include "test-Xncmp-nonarray.c" 1790diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile 1791index c51c9b4f1f..63adf0e8ef 100644 1792--- a/wcsmbs/Makefile 1793+++ b/wcsmbs/Makefile 1794@@ -206,6 +206,10 @@ tests := \ 1795 wcsmbs-tst1 \ 1796 # tests 1797 1798+# This test runs for a long time. 1799+xtests += test-wcsncmp-nonarray 1800+ 1801+ 1802 include ../Rules 1803 1804 ifeq ($(run-built-tests),yes) 1805diff --git a/wcsmbs/test-wcsncmp-nonarray.c b/wcsmbs/test-wcsncmp-nonarray.c 1806new file mode 100644 1807index 0000000000..1ad9ebd8fd 1808--- /dev/null 1809+++ b/wcsmbs/test-wcsncmp-nonarray.c 1810@@ -0,0 +1,5 @@ 1811+#include <wchar.h> 1812+#define TEST_IDENTIFIER wcsncmp 1813+#define TEST_NAME "wcsncmp" 1814+typedef wchar_t CHAR; 1815+#include "../string/test-Xncmp-nonarray.c" 1816 1817commit 3433a358428bcec2d203fa408b85f442c9a465ca 1818Author: H.J. Lu <hjl.tools@gmail.com> 1819Date: Wed Jul 24 14:05:13 2024 -0700 1820 1821 linux: Update the mremap C implementation [BZ #31968] 1822 1823 Update the mremap C implementation to support the optional argument for 1824 MREMAP_DONTUNMAP added in Linux 5.7 since it may not always be correct 1825 to implement a variadic function as a non-variadic function on all Linux 1826 targets. Return MAP_FAILED and set errno to EINVAL for unknown flag bits. 1827 This fixes BZ #31968. 1828 1829 Note: A test must be added when a new flag bit is introduced. 1830 1831 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> 1832 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 1833 (cherry picked from commit 6c40cb0e9f893d49dc7caee580a055de53562206) 1834 1835diff --git a/NEWS b/NEWS 1836index 6b62f55658..5948704ef9 100644 1837--- a/NEWS 1838+++ b/NEWS 1839@@ -11,6 +11,7 @@ The following bugs are resolved with this release: 1840 1841 [30081] resolv: Do not wait for non-existing second DNS response after error 1842 [31890] resolv: Allow short error responses to match any DNS query 1843+ [31968] mremap implementation in C does not handle arguments correctly 1844 1845 Version 2.40 1846 1847diff --git a/sysdeps/unix/sysv/linux/mremap.c b/sysdeps/unix/sysv/linux/mremap.c 1848index 4f770799c4..1ada5c1f40 100644 1849--- a/sysdeps/unix/sysv/linux/mremap.c 1850+++ b/sysdeps/unix/sysv/linux/mremap.c 1851@@ -20,6 +20,12 @@ 1852 #include <sysdep.h> 1853 #include <stdarg.h> 1854 #include <stddef.h> 1855+#include <errno.h> 1856+ 1857+#define MREMAP_KNOWN_BITS \ 1858+ (MREMAP_MAYMOVE \ 1859+ | MREMAP_FIXED \ 1860+ | MREMAP_DONTUNMAP) 1861 1862 void * 1863 __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...) 1864@@ -27,7 +33,13 @@ __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...) 1865 va_list va; 1866 void *new_addr = NULL; 1867 1868- if (flags & MREMAP_FIXED) 1869+ if (flags & ~(MREMAP_KNOWN_BITS)) 1870+ { 1871+ __set_errno (EINVAL); 1872+ return MAP_FAILED; 1873+ } 1874+ 1875+ if (flags & (MREMAP_FIXED | MREMAP_DONTUNMAP)) 1876 { 1877 va_start (va, flags); 1878 new_addr = va_arg (va, void *); 1879 1880commit 2eb2d78ca75d7432bd1d11d227f4c899554ea02e 1881Author: H.J. Lu <hjl.tools@gmail.com> 1882Date: Wed Jul 24 14:05:14 2024 -0700 1883 1884 mremap: Update manual entry 1885 1886 Update mremap manual entry: 1887 1888 1. Change mremap to variadic. 1889 2. Document MREMAP_FIXED and MREMAP_DONTUNMAP. 1890 1891 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> 1892 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 1893 (cherry picked from commit cb2dee4eccf46642eef588bee64f9c875c408f1c) 1894 1895diff --git a/NEWS b/NEWS 1896index 5948704ef9..8da0408ad9 100644 1897--- a/NEWS 1898+++ b/NEWS 1899@@ -10,6 +10,7 @@ Version 2.40.1 1900 The following bugs are resolved with this release: 1901 1902 [30081] resolv: Do not wait for non-existing second DNS response after error 1903+ [31968] mremap implementation in C does not handle arguments correctly 1904 [31890] resolv: Allow short error responses to match any DNS query 1905 [31968] mremap implementation in C does not handle arguments correctly 1906 1907diff --git a/manual/llio.texi b/manual/llio.texi 1908index 6f0a48609b..ea84196abd 100644 1909--- a/manual/llio.texi 1910+++ b/manual/llio.texi 1911@@ -1892,7 +1892,7 @@ There is no existing mapping in at least part of the given region. 1912 1913 @end deftypefun 1914 1915-@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}) 1916+@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}, ... /* void *@var{new_address} */) 1917 @standards{GNU, sys/mman.h} 1918 @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} 1919 1920@@ -1901,12 +1901,40 @@ area. @var{address} and @var{length} must cover a region entirely mapped 1921 in the same @code{mmap} statement. A new mapping with the same 1922 characteristics will be returned with the length @var{new_length}. 1923 1924-One option is possible, @code{MREMAP_MAYMOVE}. If it is given in 1925-@var{flags}, the system may remove the existing mapping and create a new 1926-one of the desired length in another location. 1927+Possible flags are 1928 1929-The address of the resulting mapping is returned, or @math{-1}. Possible 1930-error codes include: 1931+@table @code 1932+ 1933+@item MREMAP_MAYMOVE 1934+If it is given in @var{flags}, the system may remove the existing mapping 1935+and create a new one of the desired length in another location. 1936+ 1937+@item MREMAP_FIXED 1938+If it is given in @var{flags}, @code{mremap} accepts a fifth argument, 1939+@code{void *new_address}, which specifies a page-aligned address to 1940+which the mapping must be moved. Any previous mapping at the address 1941+range specified by @var{new_address} and @var{new_size} is unmapped. 1942+ 1943+@code{MREMAP_FIXED} must be used together with @code{MREMAP_MAYMOVE}. 1944+ 1945+@item MREMAP_DONTUNMAP 1946+If it is given in @var{flags}, @code{mremap} accepts a fifth argument, 1947+@code{void *new_address}, which specifies a page-aligned address. Any 1948+previous mapping at the address range specified by @var{new_address} and 1949+@var{new_size} is unmapped. If @var{new_address} is @code{NULL}, the 1950+kernel chooses the page-aligned address at which to create the mapping. 1951+Otherwise, the kernel takes it as a hint about where to place the mapping. 1952+The mapping at the address range specified by @var{old_address} and 1953+@var{old_size} isn't unmapped. 1954+ 1955+@code{MREMAP_DONTUNMAP} must be used together with @code{MREMAP_MAYMOVE}. 1956+@var{old_size} must be the same as @var{new_size}. This flag bit is 1957+Linux-specific. 1958+ 1959+@end table 1960+ 1961+The address of the resulting mapping is returned, or @code{MAP_FAILED}. 1962+Possible error codes include: 1963 1964 @table @code 1965 1966@@ -1915,7 +1943,7 @@ There is no existing mapping in at least part of the original region, or 1967 the region covers two or more distinct mappings. 1968 1969 @item EINVAL 1970-The address given is misaligned or inappropriate. 1971+Any arguments are inappropriate, including unknown @var{flags} values. 1972 1973 @item EAGAIN 1974 The region has pages locked, and if extended it would exceed the 1975 1976commit ca53bc68ab92ab413a7d53e951227d380a85ebd8 1977Author: H.J. Lu <hjl.tools@gmail.com> 1978Date: Wed Jul 24 14:05:15 2024 -0700 1979 1980 Add mremap tests 1981 1982 Add tests for MREMAP_MAYMOVE and MREMAP_FIXED. On Linux, also test 1983 MREMAP_DONTUNMAP. 1984 1985 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> 1986 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 1987 (cherry picked from commit ff0320bec2810192d453c579623482fab87bfa01) 1988 1989diff --git a/misc/Makefile b/misc/Makefile 1990index 5d17c562fe..7b7f8351bf 100644 1991--- a/misc/Makefile 1992+++ b/misc/Makefile 1993@@ -257,6 +257,8 @@ tests := \ 1994 tst-mntent-blank-passno \ 1995 tst-mntent-escape \ 1996 tst-mntent2 \ 1997+ tst-mremap1 \ 1998+ tst-mremap2 \ 1999 tst-preadvwritev \ 2000 tst-preadvwritev2 \ 2001 tst-preadvwritev64 \ 2002diff --git a/misc/tst-mremap1.c b/misc/tst-mremap1.c 2003new file mode 100644 2004index 0000000000..0469991a6c 2005--- /dev/null 2006+++ b/misc/tst-mremap1.c 2007@@ -0,0 +1,46 @@ 2008+/* Test mremap with MREMAP_MAYMOVE. 2009+ Copyright (C) 2024 Free Software Foundation, Inc. 2010+ This file is part of the GNU C Library. 2011+ 2012+ The GNU C Library is free software; you can redistribute it and/or 2013+ modify it under the terms of the GNU Lesser General Public 2014+ License as published by the Free Software Foundation; either 2015+ version 2.1 of the License, or (at your option) any later version. 2016+ 2017+ The GNU C Library is distributed in the hope that it will be useful, 2018+ but WITHOUT ANY WARRANTY; without even the implied warranty of 2019+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2020+ Lesser General Public License for more details. 2021+ 2022+ You should have received a copy of the GNU Lesser General Public 2023+ License along with the GNU C Library; if not, see 2024+ <https://www.gnu.org/licenses/>. */ 2025+ 2026+#include <errno.h> 2027+#include <sys/mman.h> 2028+#include <support/xstdlib.h> 2029+#include <support/xunistd.h> 2030+#include <support/check.h> 2031+#include <support/test-driver.h> 2032+ 2033+static int 2034+do_test (void) 2035+{ 2036+ size_t old_size = getpagesize (); 2037+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, 2038+ MAP_PRIVATE | MAP_ANONYMOUS, -1); 2039+ old_addr[0] = 1; 2040+ old_addr[old_size - 1] = 2; 2041+ 2042+ /* Test MREMAP_MAYMOVE. */ 2043+ size_t new_size = old_size + old_size; 2044+ char *new_addr = mremap (old_addr, old_size, new_size, MREMAP_MAYMOVE); 2045+ TEST_VERIFY_EXIT (new_addr != MAP_FAILED); 2046+ new_addr[0] = 1; 2047+ new_addr[new_size - 1] = 2; 2048+ xmunmap (new_addr, new_size); 2049+ 2050+ return 0; 2051+} 2052+ 2053+#include <support/test-driver.c> 2054diff --git a/misc/tst-mremap2.c b/misc/tst-mremap2.c 2055new file mode 100644 2056index 0000000000..45be7f0369 2057--- /dev/null 2058+++ b/misc/tst-mremap2.c 2059@@ -0,0 +1,54 @@ 2060+/* Test mremap with MREMAP_FIXED. 2061+ Copyright (C) 2024 Free Software Foundation, Inc. 2062+ This file is part of the GNU C Library. 2063+ 2064+ The GNU C Library is free software; you can redistribute it and/or 2065+ modify it under the terms of the GNU Lesser General Public 2066+ License as published by the Free Software Foundation; either 2067+ version 2.1 of the License, or (at your option) any later version. 2068+ 2069+ The GNU C Library is distributed in the hope that it will be useful, 2070+ but WITHOUT ANY WARRANTY; without even the implied warranty of 2071+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2072+ Lesser General Public License for more details. 2073+ 2074+ You should have received a copy of the GNU Lesser General Public 2075+ License along with the GNU C Library; if not, see 2076+ <https://www.gnu.org/licenses/>. */ 2077+ 2078+#include <errno.h> 2079+#include <sys/mman.h> 2080+#include <support/xstdlib.h> 2081+#include <support/xunistd.h> 2082+#include <support/test-driver.h> 2083+#include <mremap-failure.h> 2084+ 2085+static int 2086+do_test (void) 2087+{ 2088+ size_t old_size = getpagesize (); 2089+ size_t new_size = old_size + old_size; 2090+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, 2091+ MAP_PRIVATE | MAP_ANONYMOUS, -1); 2092+ old_addr[0] = 1; 2093+ old_addr[old_size - 1] = 2; 2094+ 2095+ char *fixed_addr = xmmap (NULL, new_size, PROT_READ | PROT_WRITE, 2096+ MAP_PRIVATE | MAP_ANONYMOUS, -1); 2097+ fixed_addr[0] = 1; 2098+ fixed_addr[new_size - 1] = 2; 2099+ 2100+ /* Test MREMAP_FIXED. */ 2101+ char *new_addr = mremap (old_addr, old_size, new_size, 2102+ MREMAP_FIXED | MREMAP_MAYMOVE, 2103+ fixed_addr); 2104+ if (new_addr == MAP_FAILED) 2105+ return mremap_failure_exit (errno); 2106+ new_addr[0] = 1; 2107+ new_addr[new_size - 1] = 2; 2108+ xmunmap (new_addr, new_size); 2109+ 2110+ return 0; 2111+} 2112+ 2113+#include <support/test-driver.c> 2114diff --git a/sysdeps/generic/mremap-failure.h b/sysdeps/generic/mremap-failure.h 2115new file mode 100644 2116index 0000000000..bc0d476368 2117--- /dev/null 2118+++ b/sysdeps/generic/mremap-failure.h 2119@@ -0,0 +1,25 @@ 2120+/* mremap failure handling. Generic version. 2121+ Copyright (C) 2024 Free Software Foundation, Inc. 2122+ This file is part of the GNU C Library. 2123+ 2124+ The GNU C Library is free software; you can redistribute it and/or 2125+ modify it under the terms of the GNU Lesser General Public 2126+ License as published by the Free Software Foundation; either 2127+ version 2.1 of the License, or (at your option) any later version. 2128+ 2129+ The GNU C Library is distributed in the hope that it will be useful, 2130+ but WITHOUT ANY WARRANTY; without even the implied warranty of 2131+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2132+ Lesser General Public License for more details. 2133+ 2134+ You should have received a copy of the GNU Lesser General Public 2135+ License along with the GNU C Library; if not, see 2136+ <https://www.gnu.org/licenses/>. */ 2137+ 2138+/* Return exit value on mremap failure with errno ERR. */ 2139+ 2140+static int 2141+mremap_failure_exit (int err) 2142+{ 2143+ return EXIT_FAILURE; 2144+} 2145diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile 2146index 097b5a26fc..59998c7af4 100644 2147--- a/sysdeps/unix/sysv/linux/Makefile 2148+++ b/sysdeps/unix/sysv/linux/Makefile 2149@@ -206,6 +206,7 @@ tests += \ 2150 tst-getauxval \ 2151 tst-gettid \ 2152 tst-gettid-kill \ 2153+ tst-linux-mremap1 \ 2154 tst-memfd_create \ 2155 tst-misalign-clone \ 2156 tst-mlock2 \ 2157diff --git a/sysdeps/unix/sysv/linux/mremap-failure.h b/sysdeps/unix/sysv/linux/mremap-failure.h 2158new file mode 100644 2159index 0000000000..c99ab30ca9 2160--- /dev/null 2161+++ b/sysdeps/unix/sysv/linux/mremap-failure.h 2162@@ -0,0 +1,30 @@ 2163+/* mremap failure handling. Linux version. 2164+ Copyright (C) 2024 Free Software Foundation, Inc. 2165+ This file is part of the GNU C Library. 2166+ 2167+ The GNU C Library is free software; you can redistribute it and/or 2168+ modify it under the terms of the GNU Lesser General Public 2169+ License as published by the Free Software Foundation; either 2170+ version 2.1 of the License, or (at your option) any later version. 2171+ 2172+ The GNU C Library is distributed in the hope that it will be useful, 2173+ but WITHOUT ANY WARRANTY; without even the implied warranty of 2174+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2175+ Lesser General Public License for more details. 2176+ 2177+ You should have received a copy of the GNU Lesser General Public 2178+ License along with the GNU C Library; if not, see 2179+ <https://www.gnu.org/licenses/>. */ 2180+ 2181+#include <support/check.h> 2182+ 2183+/* Return exit value on mremap failure with errno ERR. */ 2184+ 2185+static int 2186+mremap_failure_exit (int err) 2187+{ 2188+ if (err != EINVAL) 2189+ return EXIT_FAILURE; 2190+ 2191+ return EXIT_UNSUPPORTED; 2192+} 2193diff --git a/sysdeps/unix/sysv/linux/tst-linux-mremap1.c b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c 2194new file mode 100644 2195index 0000000000..408e8af2ab 2196--- /dev/null 2197+++ b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c 2198@@ -0,0 +1,63 @@ 2199+/* Test mremap with MREMAP_DONTUNMAP. 2200+ Copyright (C) 2024 Free Software Foundation, Inc. 2201+ This file is part of the GNU C Library. 2202+ 2203+ The GNU C Library is free software; you can redistribute it and/or 2204+ modify it under the terms of the GNU Lesser General Public 2205+ License as published by the Free Software Foundation; either 2206+ version 2.1 of the License, or (at your option) any later version. 2207+ 2208+ The GNU C Library is distributed in the hope that it will be useful, 2209+ but WITHOUT ANY WARRANTY; without even the implied warranty of 2210+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2211+ Lesser General Public License for more details. 2212+ 2213+ You should have received a copy of the GNU Lesser General Public 2214+ License along with the GNU C Library; if not, see 2215+ <https://www.gnu.org/licenses/>. */ 2216+ 2217+#include <errno.h> 2218+#include <sys/mman.h> 2219+#include <support/xstdlib.h> 2220+#include <support/xunistd.h> 2221+#include <support/check.h> 2222+#include <support/test-driver.h> 2223+#include <mremap-failure.h> 2224+ 2225+static int 2226+do_test (void) 2227+{ 2228+ size_t old_size = getpagesize (); 2229+ size_t new_size = old_size; 2230+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, 2231+ MAP_PRIVATE | MAP_ANONYMOUS, -1); 2232+ old_addr[0] = 1; 2233+ old_addr[old_size - 1] = 2; 2234+ 2235+ /* Create an available 64-page mmap region. */ 2236+ size_t fixed_size = old_size * 64; 2237+ char *fixed_addr = xmmap (NULL, fixed_size, PROT_READ | PROT_WRITE, 2238+ MAP_PRIVATE | MAP_ANONYMOUS, -1); 2239+ xmunmap (fixed_addr, fixed_size); 2240+ 2241+ /* Add 3 * pagesize. */ 2242+ fixed_size += 3 * old_size; 2243+ 2244+ /* Test MREMAP_DONTUNMAP. It should return FIXED_ADDR created above. */ 2245+ char *new_addr = mremap (old_addr, old_size, new_size, 2246+ MREMAP_DONTUNMAP | MREMAP_MAYMOVE, 2247+ fixed_addr); 2248+ if (new_addr == MAP_FAILED) 2249+ return mremap_failure_exit (errno); 2250+ TEST_VERIFY_EXIT (fixed_addr == new_addr); 2251+ old_addr[0] = 3; 2252+ old_addr[old_size - 1] = 4; 2253+ new_addr[0] = 1; 2254+ new_addr[new_size - 1] = 2; 2255+ xmunmap (new_addr, new_size); 2256+ xmunmap (old_addr, old_size); 2257+ 2258+ return 0; 2259+} 2260+ 2261+#include <support/test-driver.c> 2262 2263commit 928769737c8f0cbb51dfa2a02de0594c2395d802 2264Author: Florian Weimer <fweimer@redhat.com> 2265Date: Thu Aug 1 10:46:10 2024 +0200 2266 2267 resolv: Fix tst-resolv-short-response for older GCC (bug 32042) 2268 2269 Previous GCC versions do not support the C23 change that 2270 allows labels on declarations. 2271 2272 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 2273 (cherry picked from commit ec119972cb2598c04ec7d4219e20506006836f64) 2274 2275diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c 2276index be354ae1c7..9b06b0c176 100644 2277--- a/resolv/tst-resolv-short-response.c 2278+++ b/resolv/tst-resolv-short-response.c 2279@@ -33,8 +33,10 @@ response (const struct resolv_response_context *ctx, 2280 { 2281 case 0: 2282 /* First server times out. */ 2283- struct resolv_response_flags flags = {.rcode = rcode}; 2284- resolv_response_init (b, flags); 2285+ { 2286+ struct resolv_response_flags flags = {.rcode = rcode}; 2287+ resolv_response_init (b, flags); 2288+ } 2289 break; 2290 case 1: 2291 /* Second server sends reply. */ 2292 2293commit aa533d58ff12e27771d9c960a727d74992a3f2a3 2294Author: Florian Weimer <fweimer@redhat.com> 2295Date: Fri Aug 2 15:22:14 2024 +0200 2296 2297 x86: Tunables may incorrectly set Prefer_PMINUB_for_stringop (bug 32047) 2298 2299 Fixes commit 5bcf6265f215326d14dfacdce8532792c2c7f8f8 ("x86: 2300 Disable non-temporal memset on Skylake Server"). 2301 2302 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com> 2303 (cherry picked from commit 7a630f7d3392ca391a399486ce2846f9e4b4ee63) 2304 2305diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c 2306index ae9dcd6180..ccc6b64dc2 100644 2307--- a/sysdeps/x86/cpu-tunables.c 2308+++ b/sysdeps/x86/cpu-tunables.c 2309@@ -248,6 +248,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) 2310 CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features, 2311 Avoid_Non_Temporal_Memset, 25); 2312 } 2313+ break; 2314 case 26: 2315 { 2316 CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH 2317 2318commit 6a97e2ba144a554809161d488f25e4bae07c9405 2319Author: Andreas Schwab <schwab@suse.de> 2320Date: Mon Aug 5 10:55:51 2024 +0200 2321 2322 Fix name space violation in fortify wrappers (bug 32052) 2323 2324 Rename the identifier sz to __sz everywhere. 2325 2326 Fixes: a643f60c53 ("Make sure that the fortified function conditionals are constant") 2327 (cherry picked from commit 39ca997ab378990d5ac1aadbaa52aaf1db6d526f) 2328 2329diff --git a/NEWS b/NEWS 2330index 8da0408ad9..b9eb4a558b 100644 2331--- a/NEWS 2332+++ b/NEWS 2333@@ -13,6 +13,7 @@ The following bugs are resolved with this release: 2334 [31968] mremap implementation in C does not handle arguments correctly 2335 [31890] resolv: Allow short error responses to match any DNS query 2336 [31968] mremap implementation in C does not handle arguments correctly 2337+ [32052] Name space violation in fortify wrappers 2338 2339 Version 2.40 2340 2341diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h 2342index 91a80dd7c6..4b8bc35bdf 100644 2343--- a/libio/bits/stdio2.h 2344+++ b/libio/bits/stdio2.h 2345@@ -308,14 +308,14 @@ fgets (__fortify_clang_overload_arg (char *, __restrict, __s), int __n, 2346 "fgets called with bigger size than length of " 2347 "destination buffer") 2348 { 2349- size_t sz = __glibc_objsize (__s); 2350- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) 2351+ size_t __sz = __glibc_objsize (__s); 2352+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) 2353 return __fgets_alias (__s, __n, __stream); 2354 #if !__fortify_use_clang 2355- if (__glibc_unsafe_len (__n, sizeof (char), sz)) 2356- return __fgets_chk_warn (__s, sz, __n, __stream); 2357+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) 2358+ return __fgets_chk_warn (__s, __sz, __n, __stream); 2359 #endif 2360- return __fgets_chk (__s, sz, __n, __stream); 2361+ return __fgets_chk (__s, __sz, __n, __stream); 2362 } 2363 2364 __fortify_function __wur __nonnull ((4)) __attribute_overloadable__ size_t 2365@@ -326,14 +326,14 @@ fread (__fortify_clang_overload_arg (void *, __restrict, __ptr), 2366 "fread called with bigger size * n than length " 2367 "of destination buffer") 2368 { 2369- size_t sz = __glibc_objsize0 (__ptr); 2370- if (__glibc_safe_or_unknown_len (__n, __size, sz)) 2371+ size_t __sz = __glibc_objsize0 (__ptr); 2372+ if (__glibc_safe_or_unknown_len (__n, __size, __sz)) 2373 return __fread_alias (__ptr, __size, __n, __stream); 2374 #if !__fortify_use_clang 2375- if (__glibc_unsafe_len (__n, __size, sz)) 2376- return __fread_chk_warn (__ptr, sz, __size, __n, __stream); 2377+ if (__glibc_unsafe_len (__n, __size, __sz)) 2378+ return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); 2379 #endif 2380- return __fread_chk (__ptr, sz, __size, __n, __stream); 2381+ return __fread_chk (__ptr, __sz, __size, __n, __stream); 2382 } 2383 2384 #ifdef __USE_GNU 2385@@ -345,14 +345,14 @@ fgets_unlocked (__fortify_clang_overload_arg (char *, __restrict, __s), 2386 "fgets called with bigger size than length of " 2387 "destination buffer") 2388 { 2389- size_t sz = __glibc_objsize (__s); 2390- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) 2391+ size_t __sz = __glibc_objsize (__s); 2392+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) 2393 return __fgets_unlocked_alias (__s, __n, __stream); 2394 #if !__fortify_use_clang 2395- if (__glibc_unsafe_len (__n, sizeof (char), sz)) 2396- return __fgets_unlocked_chk_warn (__s, sz, __n, __stream); 2397+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) 2398+ return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); 2399 #endif 2400- return __fgets_unlocked_chk (__s, sz, __n, __stream); 2401+ return __fgets_unlocked_chk (__s, __sz, __n, __stream); 2402 } 2403 #endif 2404 2405@@ -366,8 +366,8 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr), 2406 "fread_unlocked called with bigger size * n than " 2407 "length of destination buffer") 2408 { 2409- size_t sz = __glibc_objsize0 (__ptr); 2410- if (__glibc_safe_or_unknown_len (__n, __size, sz)) 2411+ size_t __sz = __glibc_objsize0 (__ptr); 2412+ if (__glibc_safe_or_unknown_len (__n, __size, __sz)) 2413 { 2414 # ifdef __USE_EXTERN_INLINES 2415 if (__builtin_constant_p (__size) 2416@@ -393,10 +393,10 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr), 2417 return __fread_unlocked_alias (__ptr, __size, __n, __stream); 2418 } 2419 # if !__fortify_use_clang 2420- if (__glibc_unsafe_len (__n, __size, sz)) 2421- return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream); 2422+ if (__glibc_unsafe_len (__n, __size, __sz)) 2423+ return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); 2424 # endif 2425- return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream); 2426+ return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); 2427 2428 } 2429 #endif 2430diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h 2431index 04780f320e..bd91647f37 100644 2432--- a/socket/bits/socket2.h 2433+++ b/socket/bits/socket2.h 2434@@ -37,14 +37,14 @@ recv (int __fd, __fortify_clang_overload_arg0 (void *, ,__buf), size_t __n, 2435 "recv called with bigger length than " 2436 "size of destination buffer") 2437 { 2438- size_t sz = __glibc_objsize0 (__buf); 2439- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) 2440+ size_t __sz = __glibc_objsize0 (__buf); 2441+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) 2442 return __recv_alias (__fd, __buf, __n, __flags); 2443 #if !__fortify_use_clang 2444- if (__glibc_unsafe_len (__n, sizeof (char), sz)) 2445- return __recv_chk_warn (__fd, __buf, __n, sz, __flags); 2446+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) 2447+ return __recv_chk_warn (__fd, __buf, __n, __sz, __flags); 2448 #endif 2449- return __recv_chk (__fd, __buf, __n, sz, __flags); 2450+ return __recv_chk (__fd, __buf, __n, __sz, __flags); 2451 } 2452 2453 extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, 2454@@ -71,13 +71,13 @@ recvfrom (int __fd, __fortify_clang_overload_arg0 (void *, __restrict, __buf), 2455 "recvfrom called with bigger length " 2456 "than size of destination buffer") 2457 { 2458- size_t sz = __glibc_objsize0 (__buf); 2459- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) 2460+ size_t __sz = __glibc_objsize0 (__buf); 2461+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) 2462 return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); 2463 #if !__fortify_use_clang 2464- if (__glibc_unsafe_len (__n, sizeof (char), sz)) 2465- return __recvfrom_chk_warn (__fd, __buf, __n, sz, __flags, __addr, 2466+ if (__glibc_unsafe_len (__n, sizeof (char), __sz)) 2467+ return __recvfrom_chk_warn (__fd, __buf, __n, __sz, __flags, __addr, 2468 __addr_len); 2469 #endif 2470- return __recvfrom_chk (__fd, __buf, __n, sz, __flags, __addr, __addr_len); 2471+ return __recvfrom_chk (__fd, __buf, __n, __sz, __flags, __addr, __addr_len); 2472 } 2473diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h 2474index 1557b862b1..9c78ecf458 100644 2475--- a/stdlib/bits/stdlib.h 2476+++ b/stdlib/bits/stdlib.h 2477@@ -43,16 +43,16 @@ __NTH (realpath (const char *__restrict __name, 2478 "bytes long buffer") 2479 #endif 2480 { 2481- size_t sz = __glibc_objsize (__resolved); 2482+ size_t __sz = __glibc_objsize (__resolved); 2483 2484- if (sz == (size_t) -1) 2485+ if (__sz == (size_t) -1) 2486 return __realpath_alias (__name, __resolved); 2487 2488 #if !__fortify_use_clang && defined _LIBC_LIMITS_H_ && defined PATH_MAX 2489- if (__glibc_unsafe_len (PATH_MAX, sizeof (char), sz)) 2490- return __realpath_chk_warn (__name, __resolved, sz); 2491+ if (__glibc_unsafe_len (PATH_MAX, sizeof (char), __sz)) 2492+ return __realpath_chk_warn (__name, __resolved, __sz); 2493 #endif 2494- return __realpath_chk (__name, __resolved, sz); 2495+ return __realpath_chk (__name, __resolved, __sz); 2496 } 2497 2498 2499diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h 2500index 9fdff47ee2..43c6b63027 100644 2501--- a/wcsmbs/bits/wchar2.h 2502+++ b/wcsmbs/bits/wchar2.h 2503@@ -74,9 +74,9 @@ __fortify_function __attribute_overloadable__ wchar_t * 2504 __NTH (wcscpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), 2505 const wchar_t *__restrict __src)) 2506 { 2507- size_t sz = __glibc_objsize (__dest); 2508- if (sz != (size_t) -1) 2509- return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t)); 2510+ size_t __sz = __glibc_objsize (__dest); 2511+ if (__sz != (size_t) -1) 2512+ return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 2513 return __wcscpy_alias (__dest, __src); 2514 } 2515 2516@@ -84,9 +84,9 @@ __fortify_function __attribute_overloadable__ wchar_t * 2517 __NTH (wcpcpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), 2518 const wchar_t *__restrict __src)) 2519 { 2520- size_t sz = __glibc_objsize (__dest); 2521- if (sz != (size_t) -1) 2522- return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t)); 2523+ size_t __sz = __glibc_objsize (__dest); 2524+ if (__sz != (size_t) -1) 2525+ return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); 2526 return __wcpcpy_alias (__dest, __src); 2527 } 2528 2529@@ -118,9 +118,9 @@ __fortify_function __attribute_overloadable__ wchar_t * 2530 __NTH (wcscat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), 2531 const wchar_t *__restrict __src)) 2532 { 2533- size_t sz = __glibc_objsize (__dest); 2534- if (sz != (size_t) -1) 2535- return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t)); 2536+ size_t __sz = __glibc_objsize (__dest); 2537+ if (__sz != (size_t) -1) 2538+ return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); 2539 return __wcscat_alias (__dest, __src); 2540 } 2541 2542@@ -128,9 +128,9 @@ __fortify_function __attribute_overloadable__ wchar_t * 2543 __NTH (wcsncat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), 2544 const wchar_t *__restrict __src, size_t __n)) 2545 { 2546- size_t sz = __glibc_objsize (__dest); 2547- if (sz != (size_t) -1) 2548- return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t)); 2549+ size_t __sz = __glibc_objsize (__dest); 2550+ if (__sz != (size_t) -1) 2551+ return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); 2552 return __wcsncat_alias (__dest, __src, __n); 2553 } 2554 2555@@ -170,10 +170,10 @@ __fortify_function int 2556 __NTH (swprintf (wchar_t *__restrict __s, size_t __n, 2557 const wchar_t *__restrict __fmt, ...)) 2558 { 2559- size_t sz = __glibc_objsize (__s); 2560- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) 2561+ size_t __sz = __glibc_objsize (__s); 2562+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) 2563 return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 2564- sz / sizeof (wchar_t), __fmt, __va_arg_pack ()); 2565+ __sz / sizeof (wchar_t), __fmt, __va_arg_pack ()); 2566 return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ()); 2567 } 2568 #elif __fortify_use_clang 2569@@ -206,10 +206,10 @@ __fortify_function int 2570 __NTH (vswprintf (wchar_t *__restrict __s, size_t __n, 2571 const wchar_t *__restrict __fmt, __gnuc_va_list __ap)) 2572 { 2573- size_t sz = __glibc_objsize (__s); 2574- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) 2575+ size_t __sz = __glibc_objsize (__s); 2576+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) 2577 return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, 2578- sz / sizeof (wchar_t), __fmt, __ap); 2579+ __sz / sizeof (wchar_t), __fmt, __ap); 2580 return __vswprintf_alias (__s, __n, __fmt, __ap); 2581 } 2582 2583@@ -257,14 +257,14 @@ fgetws (__fortify_clang_overload_arg (wchar_t *, __restrict, __s), int __n, 2584 "fgetws called with length bigger " 2585 "than size of destination buffer") 2586 { 2587- size_t sz = __glibc_objsize (__s); 2588- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz)) 2589+ size_t __sz = __glibc_objsize (__s); 2590+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz)) 2591 return __fgetws_alias (__s, __n, __stream); 2592 #if !__fortify_use_clang 2593- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz)) 2594- return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream); 2595+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz)) 2596+ return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); 2597 #endif 2598- return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream); 2599+ return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 2600 } 2601 2602 #ifdef __USE_GNU 2603@@ -275,15 +275,15 @@ fgetws_unlocked (__fortify_clang_overload_arg (wchar_t *, __restrict, __s), 2604 "fgetws_unlocked called with length bigger " 2605 "than size of destination buffer") 2606 { 2607- size_t sz = __glibc_objsize (__s); 2608- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz)) 2609+ size_t __sz = __glibc_objsize (__s); 2610+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz)) 2611 return __fgetws_unlocked_alias (__s, __n, __stream); 2612 # if !__fortify_use_clang 2613- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz)) 2614- return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n, 2615+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz)) 2616+ return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, 2617 __stream); 2618 # endif 2619- return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream); 2620+ return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); 2621 } 2622 #endif 2623 2624 2625commit 5641780762723156b0d20a0b9f7df1d76831bab0 2626Author: Arjun Shankar <arjun@redhat.com> 2627Date: Tue Jul 30 11:37:57 2024 +0200 2628 2629 manual/stdio: Further clarify putc, putwc, getc, and getwc 2630 2631 This is a follow-up to 10de4a47ef3f481592e3c62eb07bcda23e9fde4d that 2632 reworded the manual entries for putc and putwc and removed any 2633 performance claims. 2634 2635 This commit further clarifies these entries and brings getc and getwc in 2636 line with the descriptions of putc and putwc, removing any performance 2637 claims from them as well. 2638 Reviewed-by: Florian Weimer <fweimer@redhat.com> 2639 2640 (cherry picked from commit 942670c81dc8071dd75d6213e771daa5d2084cb6) 2641 2642diff --git a/manual/stdio.texi b/manual/stdio.texi 2643index f9529a098d..8517653507 100644 2644--- a/manual/stdio.texi 2645+++ b/manual/stdio.texi 2646@@ -904,20 +904,16 @@ This function is a GNU extension. 2647 @standards{ISO, stdio.h} 2648 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} 2649 This is just like @code{fputc}, except that it may be implemented as 2650-a macro, making it faster. One consequence is that it may evaluate the 2651-@var{stream} argument more than once, which is an exception to the 2652-general rule for macros. Therefore, @var{stream} should never be an 2653-expression with side-effects. 2654+a macro and may evaluate the @var{stream} argument more than once. 2655+Therefore, @var{stream} should never be an expression with side-effects. 2656 @end deftypefun 2657 2658 @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream}) 2659 @standards{ISO, wchar.h} 2660 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} 2661 This is just like @code{fputwc}, except that it may be implemented as 2662-a macro, making it faster. One consequence is that it may evaluate the 2663-@var{stream} argument more than once, which is an exception to the 2664-general rule for macros. Therefore, @var{stream} should never be an 2665-expression with side-effects. 2666+a macro and may evaluate the @var{stream} argument more than once. 2667+Therefore, @var{stream} should never be an expression with side-effects. 2668 @end deftypefun 2669 2670 @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream}) 2671@@ -1110,20 +1106,17 @@ This function is a GNU extension. 2672 @deftypefun int getc (FILE *@var{stream}) 2673 @standards{ISO, stdio.h} 2674 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}} 2675-This is just like @code{fgetc}, except that it is permissible (and 2676-typical) for it to be implemented as a macro that evaluates the 2677-@var{stream} argument more than once. @code{getc} is often highly 2678-optimized, so it is usually the best function to use to read a single 2679-character. 2680+This is just like @code{fgetc}, except that it may be implemented as 2681+a macro and may evaluate the @var{stream} argument more than once. 2682+Therefore, @var{stream} should never be an expression with side-effects. 2683 @end deftypefun 2684 2685 @deftypefun wint_t getwc (FILE *@var{stream}) 2686 @standards{ISO, wchar.h} 2687 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}} 2688-This is just like @code{fgetwc}, except that it is permissible for it to 2689-be implemented as a macro that evaluates the @var{stream} argument more 2690-than once. @code{getwc} can be highly optimized, so it is usually the 2691-best function to use to read a single wide character. 2692+This is just like @code{fgetwc}, except that it may be implemented as 2693+a macro and may evaluate the @var{stream} argument more than once. 2694+Therefore, @var{stream} should never be an expression with side-effects. 2695 @end deftypefun 2696 2697 @deftypefun int getc_unlocked (FILE *@var{stream}) 2698 2699commit 39ee60a719eb6ffde76ccc232d79273c473d7a93 2700Author: Florian Weimer <fweimer@redhat.com> 2701Date: Fri Aug 9 17:01:17 2024 +0200 2702 2703 support: Add options list terminator to the test driver 2704 2705 This avoids crashes if a test is passed unknown options. 2706 2707 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 2708 (cherry picked from commit c2a474f4617ede7a8bf56b7257acb37dc757b2d1) 2709 2710diff --git a/support/test-driver.c b/support/test-driver.c 2711index f4c3e4d666..04ceebc08f 100644 2712--- a/support/test-driver.c 2713+++ b/support/test-driver.c 2714@@ -155,6 +155,7 @@ main (int argc, char **argv) 2715 { 2716 CMDLINE_OPTIONS 2717 TEST_DEFAULT_OPTIONS 2718+ { 0, } 2719 }; 2720 test_config.options = &options; 2721 #endif 2722 2723commit e3556937c2402b8acf2e586bf53168e9f482ba91 2724Author: H.J. Lu <hjl.tools@gmail.com> 2725Date: Mon Jul 22 17:47:21 2024 -0700 2726 2727 x86-64: Remove sysdeps/x86_64/x32/dl-machine.h 2728 2729 Remove sysdeps/x86_64/x32/dl-machine.h by folding x32 ARCH_LA_PLTENTER, 2730 ARCH_LA_PLTEXIT and RTLD_START into sysdeps/x86_64/dl-machine.h. There 2731 are no regressions on x86-64 nor x32. There are no changes in x86-64 2732 _dl_start_user. On x32, _dl_start_user changes are 2733 2734 <_dl_start_user>: 2735 mov %eax,%r12d 2736 + mov %esp,%r13d 2737 mov (%rsp),%edx 2738 mov %edx,%esi 2739 - mov %esp,%r13d 2740 and $0xfffffff0,%esp 2741 mov 0x0(%rip),%edi # <_dl_start_user+0x14> 2742 lea 0x8(%r13,%rdx,4),%ecx 2743 2744 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> 2745 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com> 2746 (cherry picked from commit 652c6cf26927352fc0e37e4e60c6fc98ddf6d3b4) 2747 2748diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h 2749index a6de3793e4..4f12955875 100644 2750--- a/sysdeps/x86_64/dl-machine.h 2751+++ b/sysdeps/x86_64/dl-machine.h 2752@@ -139,37 +139,37 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[], 2753 .globl _start\n\ 2754 .globl _dl_start_user\n\ 2755 _start:\n\ 2756- movq %rsp, %rdi\n\ 2757+ mov %" RSP_LP ", %" RDI_LP "\n\ 2758 call _dl_start\n\ 2759 _dl_start_user:\n\ 2760 # Save the user entry point address in %r12.\n\ 2761- movq %rax, %r12\n\ 2762+ mov %" RAX_LP ", %" R12_LP "\n\ 2763 # Save %rsp value in %r13.\n\ 2764- movq %rsp, %r13\n\ 2765+ mov %" RSP_LP ", % " R13_LP "\n\ 2766 "\ 2767 RTLD_START_ENABLE_X86_FEATURES \ 2768 "\ 2769 # Read the original argument count.\n\ 2770- movq (%rsp), %rdx\n\ 2771+ mov (%rsp), %" RDX_LP "\n\ 2772 # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ 2773 # argc -> rsi\n\ 2774- movq %rdx, %rsi\n\ 2775+ mov %" RDX_LP ", %" RSI_LP "\n\ 2776 # And align stack for the _dl_init call. \n\ 2777- andq $-16, %rsp\n\ 2778+ and $-16, %" RSP_LP "\n\ 2779 # _dl_loaded -> rdi\n\ 2780- movq _rtld_local(%rip), %rdi\n\ 2781+ mov _rtld_local(%rip), %" RDI_LP "\n\ 2782 # env -> rcx\n\ 2783- leaq 16(%r13,%rdx,8), %rcx\n\ 2784+ lea 2*" LP_SIZE "(%r13,%rdx," LP_SIZE "), %" RCX_LP "\n\ 2785 # argv -> rdx\n\ 2786- leaq 8(%r13), %rdx\n\ 2787+ lea " LP_SIZE "(%r13), %" RDX_LP "\n\ 2788 # Clear %rbp to mark outermost frame obviously even for constructors.\n\ 2789 xorl %ebp, %ebp\n\ 2790 # Call the function to run the initializers.\n\ 2791 call _dl_init\n\ 2792 # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\ 2793- leaq _dl_fini(%rip), %rdx\n\ 2794+ lea _dl_fini(%rip), %" RDX_LP "\n\ 2795 # And make sure %rsp points to argc stored on the stack.\n\ 2796- movq %r13, %rsp\n\ 2797+ mov %" R13_LP ", %" RSP_LP "\n\ 2798 # Jump to the user's entry point.\n\ 2799 jmp *%r12\n\ 2800 .previous\n\ 2801@@ -234,8 +234,13 @@ elf_machine_plt_value (struct link_map *map, const ElfW(Rela) *reloc, 2802 2803 2804 /* Names of the architecture-specific auditing callback functions. */ 2805+#ifdef __LP64__ 2806 #define ARCH_LA_PLTENTER x86_64_gnu_pltenter 2807 #define ARCH_LA_PLTEXIT x86_64_gnu_pltexit 2808+#else 2809+#define ARCH_LA_PLTENTER x32_gnu_pltenter 2810+#define ARCH_LA_PLTEXIT x32_gnu_pltexit 2811+#endif 2812 2813 #endif /* !dl_machine_h */ 2814 2815diff --git a/sysdeps/x86_64/x32/dl-machine.h b/sysdeps/x86_64/x32/dl-machine.h 2816deleted file mode 100644 2817index c35cee9261..0000000000 2818--- a/sysdeps/x86_64/x32/dl-machine.h 2819+++ /dev/null 2820@@ -1,76 +0,0 @@ 2821-/* Machine-dependent ELF dynamic relocation inline functions. x32 version. 2822- Copyright (C) 2012-2024 Free Software Foundation, Inc. 2823- This file is part of the GNU C Library. 2824- 2825- The GNU C Library is free software; you can redistribute it and/or 2826- modify it under the terms of the GNU Lesser General Public 2827- License as published by the Free Software Foundation; either 2828- version 2.1 of the License, or (at your option) any later version. 2829- 2830- The GNU C Library is distributed in the hope that it will be useful, 2831- but WITHOUT ANY WARRANTY; without even the implied warranty of 2832- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2833- Lesser General Public License for more details. 2834- 2835- You should have received a copy of the GNU Lesser General Public 2836- License along with the GNU C Library; if not, see 2837- <https://www.gnu.org/licenses/>. */ 2838- 2839-/* Must allow <sysdeps/x86_64/dl-machine.h> to be included more than once. 2840- See #ifdef RESOLVE_MAP in sysdeps/x86_64/dl-machine.h. */ 2841-#include <sysdeps/x86_64/dl-machine.h> 2842- 2843-#ifndef _X32_DL_MACHINE_H 2844-#define _X32_DL_MACHINE_H 2845- 2846-#undef ARCH_LA_PLTENTER 2847-#undef ARCH_LA_PLTEXIT 2848-#undef RTLD_START 2849- 2850-/* Names of the architecture-specific auditing callback functions. */ 2851-#define ARCH_LA_PLTENTER x32_gnu_pltenter 2852-#define ARCH_LA_PLTEXIT x32_gnu_pltexit 2853- 2854-/* Initial entry point code for the dynamic linker. 2855- The C function `_dl_start' is the real entry point; 2856- its return value is the user program's entry point. */ 2857-#define RTLD_START asm ("\n\ 2858-.text\n\ 2859- .p2align 4\n\ 2860-.globl _start\n\ 2861-.globl _dl_start_user\n\ 2862-_start:\n\ 2863- movl %esp, %edi\n\ 2864- call _dl_start\n\ 2865-_dl_start_user:\n\ 2866- # Save the user entry point address in %r12.\n\ 2867- movl %eax, %r12d\n\ 2868- # Read the original argument count.\n\ 2869- movl (%rsp), %edx\n\ 2870- # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ 2871- # argc -> rsi\n\ 2872- movl %edx, %esi\n\ 2873- # Save %rsp value in %r13.\n\ 2874- movl %esp, %r13d\n\ 2875- # And align stack for the _dl_init call.\n\ 2876- and $-16, %esp\n\ 2877- # _dl_loaded -> rdi\n\ 2878- movl _rtld_local(%rip), %edi\n\ 2879- # env -> rcx\n\ 2880- lea 8(%r13,%rdx,4), %ecx\n\ 2881- # argv -> rdx\n\ 2882- lea 4(%r13), %edx\n\ 2883- # Clear %rbp to mark outermost frame obviously even for constructors.\n\ 2884- xorl %ebp, %ebp\n\ 2885- # Call the function to run the initializers.\n\ 2886- call _dl_init\n\ 2887- # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\ 2888- lea _dl_fini(%rip), %edx\n\ 2889- # And make sure %rsp points to argc stored on the stack.\n\ 2890- movl %r13d, %esp\n\ 2891- # Jump to the user's entry point.\n\ 2892- jmp *%r12\n\ 2893-.previous\n\ 2894-"); 2895- 2896-#endif /* !_X32_DL_MACHINE_H */ 2897 2898commit 898f25e0b1026be5701d05715600be646e9d0714 2899Author: H.J. Lu <hjl.tools@gmail.com> 2900Date: Mon Jul 22 17:47:22 2024 -0700 2901 2902 x32/cet: Support shadow stack during startup for Linux 6.10 2903 2904 Use RXX_LP in RTLD_START_ENABLE_X86_FEATURES. Support shadow stack during 2905 startup for Linux 6.10: 2906 2907 commit 2883f01ec37dd8668e7222dfdb5980c86fdfe277 2908 Author: H.J. Lu <hjl.tools@gmail.com> 2909 Date: Fri Mar 15 07:04:33 2024 -0700 2910 2911 x86/shstk: Enable shadow stacks for x32 2912 2913 1. Add shadow stack support to x32 signal. 2914 2. Use the 64-bit map_shadow_stack syscall for x32. 2915 3. Set up shadow stack for x32. 2916 2917 Add the map_shadow_stack system call to <fixup-asm-unistd.h> and regenerate 2918 arch-syscall.h. Tested on Intel Tiger Lake with CET enabled x32. There 2919 are no regressions with CET enabled x86-64. There are no changes in CET 2920 enabled x86-64 _dl_start_user. 2921 2922 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> 2923 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com> 2924 (cherry picked from commit 8344c1f5514b1b5b1c8c6e48f4b802653bd23b71) 2925 2926diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h 2927index 1fe3133406..b4f7e6c9cd 100644 2928--- a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h 2929+++ b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h 2930@@ -92,9 +92,9 @@ dl_cet_ibt_enabled (void) 2931 # Pass GL(dl_x86_feature_1) to _dl_cet_setup_features.\n\ 2932 movl %edx, %edi\n\ 2933 # Align stack for the _dl_cet_setup_features call.\n\ 2934- andq $-16, %rsp\n\ 2935+ and $-16, %" RSP_LP "\n\ 2936 call _dl_cet_setup_features\n\ 2937 # Restore %rax and %rsp from %r12 and %r13.\n\ 2938- movq %r12, %rax\n\ 2939- movq %r13, %rsp\n\ 2940+ mov %" R12_LP ", %" RAX_LP "\n\ 2941+ mov %" R13_LP ", %" RSP_LP "\n\ 2942 " 2943diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h 2944index 3040a47d72..df3e22236d 100644 2945--- a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h 2946+++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h 2947@@ -155,6 +155,7 @@ 2948 #define __NR_lsm_set_self_attr 1073742284 2949 #define __NR_lstat 1073741830 2950 #define __NR_madvise 1073741852 2951+#define __NR_map_shadow_stack 1073742277 2952 #define __NR_mbind 1073742061 2953 #define __NR_membarrier 1073742148 2954 #define __NR_memfd_create 1073742143 2955diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h 2956index 98124169e6..47fa8af4ce 100644 2957--- a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h 2958+++ b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h 2959@@ -15,6 +15,10 @@ 2960 License along with the GNU C Library; if not, see 2961 <http://www.gnu.org/licenses/>. */ 2962 2963+#ifndef __NR_map_shadow_stack 2964+# define __NR_map_shadow_stack 1073742277 2965+#endif 2966+ 2967 /* X32 uses the same 64-bit syscall interface for set_thread_area. */ 2968 #ifndef __NR_set_thread_area 2969 # define __NR_set_thread_area 1073742029 2970 2971commit c0af0c2ba016030c778bc22c55f5f9498f96b8b9 2972Author: Noah Goldstein <goldstein.w.n@gmail.com> 2973Date: Tue Aug 13 23:29:14 2024 +0800 2974 2975 x86: Fix bug in strchrnul-evex512 [BZ #32078] 2976 2977 Issue was we were expecting not matches with CHAR before the start of 2978 the string in the page cross case. 2979 2980 The check code in the page cross case: 2981 ``` 2982 and $0xffffffffffffffc0,%rax 2983 vmovdqa64 (%rax),%zmm17 2984 vpcmpneqb %zmm17,%zmm16,%k1 2985 vptestmb %zmm17,%zmm17,%k0{%k1} 2986 kmovq %k0,%rax 2987 inc %rax 2988 shr %cl,%rax 2989 je L(continue) 2990 ``` 2991 2992 expects that all characters that neither match null nor CHAR will be 2993 1s in `rax` prior to the `inc`. Then the `inc` will overflow all of 2994 the 1s where no relevant match was found. 2995 2996 This is incorrect in the page-cross case, as the 2997 `vmovdqa64 (%rax),%zmm17` loads from before the start of the input 2998 string. 2999 3000 If there are matches with CHAR before the start of the string, `rax` 3001 won't properly overflow. 3002 3003 The fix is quite simple. Just replace: 3004 3005 ``` 3006 inc %rax 3007 shr %cl,%rax 3008 ``` 3009 With: 3010 ``` 3011 sar %cl,%rax 3012 inc %rax 3013 ``` 3014 3015 The arithmetic shift will clear any matches prior to the start of the 3016 string while maintaining the signbit so the 1s can properly overflow 3017 to zero in the case of no matches. 3018 Reviewed-by: H.J. Lu <hjl.tools@gmail.com> 3019 3020 (cherry picked from commit 7da08862471dfec6fdae731c2a5f351ad485c71f) 3021 3022diff --git a/string/test-strchr.c b/string/test-strchr.c 3023index c795eac6fa..72b17af687 100644 3024--- a/string/test-strchr.c 3025+++ b/string/test-strchr.c 3026@@ -255,6 +255,69 @@ check1 (void) 3027 check_result (impl, s, c, exp_result); 3028 } 3029 3030+static void 3031+check2 (void) 3032+{ 3033+ CHAR *s = (CHAR *) (buf1 + getpagesize () - 4 * sizeof (CHAR)); 3034+ CHAR *s_begin = (CHAR *) (buf1 + getpagesize () - 64); 3035+#ifndef USE_FOR_STRCHRNUL 3036+ CHAR *exp_result = NULL; 3037+#else 3038+ CHAR *exp_result = s + 1; 3039+#endif 3040+ CHAR val = 0x12; 3041+ for (; s_begin != s; ++s_begin) 3042+ *s_begin = val; 3043+ 3044+ s[0] = val + 1; 3045+ s[1] = 0; 3046+ s[2] = val + 1; 3047+ s[3] = val + 1; 3048+ 3049+ { 3050+ FOR_EACH_IMPL (impl, 0) 3051+ check_result (impl, s, val, exp_result); 3052+ } 3053+ s[3] = val; 3054+ { 3055+ FOR_EACH_IMPL (impl, 0) 3056+ check_result (impl, s, val, exp_result); 3057+ } 3058+ exp_result = s; 3059+ s[0] = val; 3060+ { 3061+ FOR_EACH_IMPL (impl, 0) 3062+ check_result (impl, s, val, exp_result); 3063+ } 3064+ 3065+ s[3] = val + 1; 3066+ { 3067+ FOR_EACH_IMPL (impl, 0) 3068+ check_result (impl, s, val, exp_result); 3069+ } 3070+ 3071+ s[0] = val + 1; 3072+ s[1] = val + 1; 3073+ s[2] = val + 1; 3074+ s[3] = val + 1; 3075+ s[4] = val; 3076+ exp_result = s + 4; 3077+ { 3078+ FOR_EACH_IMPL (impl, 0) 3079+ check_result (impl, s, val, exp_result); 3080+ } 3081+ s[4] = 0; 3082+#ifndef USE_FOR_STRCHRNUL 3083+ exp_result = NULL; 3084+#else 3085+ exp_result = s + 4; 3086+#endif 3087+ { 3088+ FOR_EACH_IMPL (impl, 0) 3089+ check_result (impl, s, val, exp_result); 3090+ } 3091+} 3092+ 3093 int 3094 test_main (void) 3095 { 3096@@ -263,7 +326,7 @@ test_main (void) 3097 test_init (); 3098 3099 check1 (); 3100- 3101+ check2 (); 3102 printf ("%20s", ""); 3103 FOR_EACH_IMPL (impl, 0) 3104 printf ("\t%s", impl->name); 3105diff --git a/sysdeps/x86_64/multiarch/strchr-evex-base.S b/sysdeps/x86_64/multiarch/strchr-evex-base.S 3106index 04e2c0e79e..3a0b7c9d64 100644 3107--- a/sysdeps/x86_64/multiarch/strchr-evex-base.S 3108+++ b/sysdeps/x86_64/multiarch/strchr-evex-base.S 3109@@ -124,13 +124,13 @@ L(page_cross): 3110 VPCMPNE %VMM(1), %VMM(0), %k1 3111 VPTEST %VMM(1), %VMM(1), %k0{%k1} 3112 KMOV %k0, %VRAX 3113-# ifdef USE_AS_WCSCHR 3114+ sar %cl, %VRAX 3115+#ifdef USE_AS_WCSCHR 3116 sub $VEC_MATCH_MASK, %VRAX 3117-# else 3118+#else 3119 inc %VRAX 3120-# endif 3121+#endif 3122 /* Ignore number of character for alignment adjustment. */ 3123- shr %cl, %VRAX 3124 jz L(align_more) 3125 3126 bsf %VRAX, %VRAX 3127 3128commit 586e4cd8c67df95ebb0bfecea3d007bff618d6d9 3129Author: Florian Weimer <fweimer@redhat.com> 3130Date: Fri Aug 9 16:17:14 2024 +0200 3131 3132 Define __libc_initial for the static libc 3133 3134 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 3135 (cherry picked from commit eb0e50e9a1cf80a2ba6f33f990a08ef37a3267fb) 3136 3137diff --git a/include/libc-internal.h b/include/libc-internal.h 3138index 87ac591835..1ef43ffe67 100644 3139--- a/include/libc-internal.h 3140+++ b/include/libc-internal.h 3141@@ -53,6 +53,9 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden; 3142 is not for an audit module, not loaded via dlmopen, and not loaded 3143 via static dlopen either). */ 3144 extern _Bool __libc_initial attribute_hidden; 3145+#else 3146+/* The static libc is always the initial namespace. */ 3147+# define __libc_initial ((_Bool) 1) 3148 #endif 3149 3150 #endif /* _LIBC_INTERNAL */ 3151 3152commit 709319f9de6f976f9feceb623cb2c96769e9d78b 3153Author: Florian Weimer <fweimer@redhat.com> 3154Date: Mon Aug 19 15:48:03 2024 +0200 3155 3156 string: strerror, strsignal cannot use buffer after dlmopen (bug 32026) 3157 3158 Secondary namespaces have a different malloc. Allocating the 3159 buffer in one namespace and freeing it another results in 3160 heap corruption. Fix this by using a static string (potentially 3161 translated) in secondary namespaces. It would also be possible 3162 to use the malloc from the initial namespace to manage the 3163 buffer, but these functions would still not be safe to use in 3164 auditors etc. because a call to strerror could still free a 3165 buffer while it is used by the application. Another approach 3166 could use proper initial-exec TLS, duplicated in secondary 3167 namespaces, but that would need a callback interface for freeing 3168 libc resources in namespaces on thread exit, which does not exist 3169 today. 3170 3171 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 3172 (cherry picked from commit 25a5eb4010df94b412c67db9e346029de316d06b) 3173 3174diff --git a/NEWS b/NEWS 3175index b9eb4a558b..10a125bc66 100644 3176--- a/NEWS 3177+++ b/NEWS 3178@@ -13,6 +13,7 @@ The following bugs are resolved with this release: 3179 [31968] mremap implementation in C does not handle arguments correctly 3180 [31890] resolv: Allow short error responses to match any DNS query 3181 [31968] mremap implementation in C does not handle arguments correctly 3182+ [32026] strerror/strsignal TLS not handled correctly for secondary namespaces 3183 [32052] Name space violation in fortify wrappers 3184 3185 Version 2.40 3186diff --git a/string/strerror_l.c b/string/strerror_l.c 3187index 15cce261e6..70456e5bb4 100644 3188--- a/string/strerror_l.c 3189+++ b/string/strerror_l.c 3190@@ -20,7 +20,7 @@ 3191 #include <stdio.h> 3192 #include <string.h> 3193 #include <tls-internal.h> 3194- 3195+#include <libc-internal.h> 3196 3197 static const char * 3198 translate (const char *str, locale_t loc) 3199@@ -31,6 +31,12 @@ translate (const char *str, locale_t loc) 3200 return res; 3201 } 3202 3203+static char * 3204+unknown_error (locale_t loc) 3205+{ 3206+ return (char *) translate ("Unknown error", loc); 3207+} 3208+ 3209 3210 /* Return a string describing the errno code in ERRNUM. */ 3211 char * 3212@@ -40,18 +46,25 @@ __strerror_l (int errnum, locale_t loc) 3213 char *err = (char *) __get_errlist (errnum); 3214 if (__glibc_unlikely (err == NULL)) 3215 { 3216- struct tls_internal_t *tls_internal = __glibc_tls_internal (); 3217- free (tls_internal->strerror_l_buf); 3218- if (__asprintf (&tls_internal->strerror_l_buf, "%s%d", 3219- translate ("Unknown error ", loc), errnum) > 0) 3220- err = tls_internal->strerror_l_buf; 3221- else 3222+ if (__libc_initial) 3223 { 3224- /* The memory was freed above. */ 3225- tls_internal->strerror_l_buf = NULL; 3226- /* Provide a fallback translation. */ 3227- err = (char *) translate ("Unknown error", loc); 3228+ struct tls_internal_t *tls_internal = __glibc_tls_internal (); 3229+ free (tls_internal->strerror_l_buf); 3230+ if (__asprintf (&tls_internal->strerror_l_buf, "%s%d", 3231+ translate ("Unknown error ", loc), errnum) > 0) 3232+ err = tls_internal->strerror_l_buf; 3233+ else 3234+ { 3235+ /* The memory was freed above. */ 3236+ tls_internal->strerror_l_buf = NULL; 3237+ /* Provide a fallback translation. */ 3238+ err = unknown_error (loc); 3239+ } 3240 } 3241+ else 3242+ /* Secondary namespaces use a different malloc, so cannot 3243+ participate in the buffer management. */ 3244+ err = unknown_error (loc); 3245 } 3246 else 3247 err = (char *) translate (err, loc); 3248diff --git a/string/strsignal.c b/string/strsignal.c 3249index 3114601564..d9b0365468 100644 3250--- a/string/strsignal.c 3251+++ b/string/strsignal.c 3252@@ -21,6 +21,7 @@ 3253 #include <string.h> 3254 #include <libintl.h> 3255 #include <tls-internal.h> 3256+#include <libc-internal.h> 3257 3258 /* Return a string describing the meaning of the signal number SIGNUM. */ 3259 char * 3260@@ -30,21 +31,28 @@ strsignal (int signum) 3261 if (desc != NULL) 3262 return _(desc); 3263 3264- struct tls_internal_t *tls_internal = __glibc_tls_internal (); 3265- free (tls_internal->strsignal_buf); 3266+ if (__libc_initial) 3267+ { 3268+ struct tls_internal_t *tls_internal = __glibc_tls_internal (); 3269+ free (tls_internal->strsignal_buf); 3270 3271- int r; 3272+ int r; 3273 #ifdef SIGRTMIN 3274- if (signum >= SIGRTMIN && signum <= SIGRTMAX) 3275- r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"), 3276- signum - SIGRTMIN); 3277- else 3278+ if (signum >= SIGRTMIN && signum <= SIGRTMAX) 3279+ r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"), 3280+ signum - SIGRTMIN); 3281+ else 3282 #endif 3283- r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"), 3284- signum); 3285- 3286- if (r == -1) 3287- tls_internal->strsignal_buf = NULL; 3288- 3289- return tls_internal->strsignal_buf; 3290+ r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"), 3291+ signum); 3292+ 3293+ if (r >= 0) 3294+ return tls_internal->strsignal_buf; 3295+ else 3296+ tls_internal->strsignal_buf = NULL; 3297+ } 3298+ /* Fall through on asprintf error, and for !__libc_initial: 3299+ secondary namespaces use a different malloc and cannot 3300+ participate in the buffer management. */ 3301+ return _("Unknown signal"); 3302 } 3303 3304commit bc240ba7c86a74bc64d4234feadb49bb8e36e1c9 3305Author: Maciej W. Rozycki <macro@redhat.com> 3306Date: Fri Jul 26 13:21:34 2024 +0100 3307 3308 support: Add FAIL test failure helper 3309 3310 Add a FAIL test failure helper analogous to FAIL_RET, that does not 3311 cause the current function to return, providing a standardized way to 3312 report a test failure with a message supplied while permitting the 3313 caller to continue executing, for further reporting, cleaning up, etc. 3314 3315 Update existing test cases that provide a conflicting definition of FAIL 3316 by removing the local FAIL definition and then as follows: 3317 3318 - tst-fortify-syslog: provide a meaningful message in addition to the 3319 file name already added by <support/check.h>; 'support_record_failure' 3320 is already called by 'support_print_failure_impl' invoked by the new 3321 FAIL test failure helper. 3322 3323 - tst-ctype: no update to FAIL calls required, with the name of the file 3324 and the line number within of the failure site additionally included 3325 by the new FAIL test failure helper, and error counting plus count 3326 reporting upon test program termination also already provided by 3327 'support_record_failure' and 'support_report_failure' respectively, 3328 called by 'support_print_failure_impl' and 'adjust_exit_status' also 3329 respectively. However in a number of places 'printf' is called and 3330 the error count adjusted by hand, so update these places to make use 3331 of FAIL instead. And last but not least adjust the final summary just 3332 to report completion, with any error count following as reported by 3333 the test driver. 3334 3335 - test-tgmath2: no update to FAIL calls required, with the name of the 3336 file of the failure site additionally included by the new FAIL test 3337 failure helper. Also there is no need to track the return status by 3338 hand as any call to FAIL will eventually cause the test case to return 3339 an unsuccesful exit status regardless of the return status from the 3340 test function, via a call to 'adjust_exit_status' made by the test 3341 driver. 3342 3343 Reviewed-by: DJ Delorie <dj@redhat.com> 3344 (cherry picked from commit 1b97a9f23bf605ca608162089c94187573fb2a9e) 3345 3346diff --git a/debug/tst-fortify-syslog.c b/debug/tst-fortify-syslog.c 3347index a7ddbf7c6b..2712acf689 100644 3348--- a/debug/tst-fortify-syslog.c 3349+++ b/debug/tst-fortify-syslog.c 3350@@ -22,7 +22,6 @@ 3351 #include <syslog.h> 3352 #include <string.h> 3353 #include <unistd.h> 3354-#include <stdio.h> 3355 3356 #include <support/check.h> 3357 #include <support/support.h> 3358@@ -46,18 +45,13 @@ handler (int sig) 3359 _exit (127); 3360 } 3361 3362-#define FAIL() \ 3363- do { \ 3364- printf ("Failure on line %d\n", __LINE__); \ 3365- support_record_failure (); \ 3366- } while (0) 3367 #define CHK_FAIL_START \ 3368 chk_fail_ok = 1; \ 3369 if (! setjmp (chk_fail_buf)) \ 3370 { 3371 #define CHK_FAIL_END \ 3372 chk_fail_ok = 0; \ 3373- FAIL (); \ 3374+ FAIL ("not supposed to reach here"); \ 3375 } 3376 3377 static void 3378diff --git a/localedata/tst-ctype.c b/localedata/tst-ctype.c 3379index 9de979a2d7..a23689719c 100644 3380--- a/localedata/tst-ctype.c 3381+++ b/localedata/tst-ctype.c 3382@@ -21,6 +21,8 @@ 3383 #include <stdio.h> 3384 #include <string.h> 3385 3386+#include <support/check.h> 3387+ 3388 3389 static const char lower[] = "abcdefghijklmnopqrstuvwxyz"; 3390 static const char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 3391@@ -53,19 +55,11 @@ static struct classes 3392 #define nclasses (sizeof (classes) / sizeof (classes[0])) 3393 3394 3395-#define FAIL(str, args...) \ 3396- { \ 3397- printf (" " str "\n", ##args); \ 3398- ++errors; \ 3399- } 3400- 3401- 3402 static int 3403 do_test (void) 3404 { 3405 const char *cp; 3406 const char *cp2; 3407- int errors = 0; 3408 char *inpline = NULL; 3409 size_t inplinelen = 0; 3410 char *resline = NULL; 3411@@ -394,11 +388,8 @@ punct = %04x alnum = %04x\n", 3412 { 3413 if (((__ctype_b[(unsigned int) *inp] & classes[n].mask) != 0) 3414 != (*resp != '0')) 3415- { 3416- printf (" is%s('%c' = '\\x%02x') %s true\n", inpline, 3417- *inp, *inp, *resp == '1' ? "not" : "is"); 3418- ++errors; 3419- } 3420+ FAIL (" is%s('%c' = '\\x%02x') %s true\n", inpline, 3421+ *inp, *inp, *resp == '1' ? "not" : "is"); 3422 ++inp; 3423 ++resp; 3424 } 3425@@ -408,11 +399,8 @@ punct = %04x alnum = %04x\n", 3426 while (*inp != '\0') 3427 { 3428 if (tolower (*inp) != *resp) 3429- { 3430- printf (" tolower('%c' = '\\x%02x') != '%c'\n", 3431- *inp, *inp, *resp); 3432- ++errors; 3433- } 3434+ FAIL (" tolower('%c' = '\\x%02x') != '%c'\n", 3435+ *inp, *inp, *resp); 3436 ++inp; 3437 ++resp; 3438 } 3439@@ -422,11 +410,8 @@ punct = %04x alnum = %04x\n", 3440 while (*inp != '\0') 3441 { 3442 if (toupper (*inp) != *resp) 3443- { 3444- printf (" toupper('%c' = '\\x%02x') != '%c'\n", 3445- *inp, *inp, *resp); 3446- ++errors; 3447- } 3448+ FAIL (" toupper('%c' = '\\x%02x') != '%c'\n", 3449+ *inp, *inp, *resp); 3450 ++inp; 3451 ++resp; 3452 } 3453@@ -436,14 +421,7 @@ punct = %04x alnum = %04x\n", 3454 } 3455 3456 3457- if (errors != 0) 3458- { 3459- printf (" %d error%s for `%s' locale\n\n\n", errors, 3460- errors == 1 ? "" : "s", setlocale (LC_ALL, NULL)); 3461- return 1; 3462- } 3463- 3464- printf (" No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL)); 3465+ printf ("Completed testing for `%s' locale\n\n\n", setlocale (LC_ALL, NULL)); 3466 return 0; 3467 } 3468 3469diff --git a/math/test-tgmath2.c b/math/test-tgmath2.c 3470index 37afa8a08a..4aeb877b8e 100644 3471--- a/math/test-tgmath2.c 3472+++ b/math/test-tgmath2.c 3473@@ -24,6 +24,8 @@ 3474 #include <string.h> 3475 #include <tgmath.h> 3476 3477+#include <support/check.h> 3478+ 3479 //#define DEBUG 3480 3481 typedef complex float cfloat; 3482@@ -87,13 +89,6 @@ enum 3483 int count; 3484 int counts[Tlast][C_last]; 3485 3486-#define FAIL(str) \ 3487- do \ 3488- { \ 3489- printf ("%s failure on line %d\n", (str), __LINE__); \ 3490- result = 1; \ 3491- } \ 3492- while (0) 3493 #define TEST_TYPE_ONLY(expr, rettype) \ 3494 do \ 3495 { \ 3496@@ -133,8 +128,6 @@ int counts[Tlast][C_last]; 3497 int 3498 test_cos (const int Vint4, const long long int Vllong4) 3499 { 3500- int result = 0; 3501- 3502 TEST (cos (vfloat1), float, cos); 3503 TEST (cos (vdouble1), double, cos); 3504 TEST (cos (vldouble1), ldouble, cos); 3505@@ -152,7 +145,7 @@ test_cos (const int Vint4, const long long int Vllong4) 3506 TEST (cos (Vcdouble1), cdouble, cos); 3507 TEST (cos (Vcldouble1), cldouble, cos); 3508 3509- return result; 3510+ return 0; 3511 } 3512 3513 int 3514diff --git a/support/check.h b/support/check.h 3515index 711f34b83b..7ea22c7a2c 100644 3516--- a/support/check.h 3517+++ b/support/check.h 3518@@ -24,6 +24,11 @@ 3519 3520 __BEGIN_DECLS 3521 3522+/* Record a test failure, print the failure message to standard output 3523+ and pass the result of 1 through. */ 3524+#define FAIL(...) \ 3525+ support_print_failure_impl (__FILE__, __LINE__, __VA_ARGS__) 3526+ 3527 /* Record a test failure, print the failure message to standard output 3528 and return 1. */ 3529 #define FAIL_RET(...) \ 3530 3531commit 27fb563bfee521239316142fa4968282bffa86a6 3532Author: Maciej W. Rozycki <macro@redhat.com> 3533Date: Fri Jul 26 13:21:34 2024 +0100 3534 3535 stdio-common: Add test for vfscanf with matches longer than INT_MAX [BZ #27650] 3536 3537 Complement commit b03e4d7bd25b ("stdio: fix vfscanf with matches longer 3538 than INT_MAX (bug 27650)") and add a test case for the issue, inspired 3539 by the reproducer provided with the bug report. 3540 3541 This has been verified to succeed as from the commit referred and fail 3542 beforehand. 3543 3544 As the test requires 2GiB of data to be passed around its performance 3545 has been evaluated using a choice of systems and the execution time 3546 determined to be respectively in the range of 9s for POWER9@2.166GHz, 3547 24s for FU740@1.2GHz, and 40s for 74Kf@950MHz. As this is on the verge 3548 of and beyond the default timeout it has been increased by the factor of 3549 8. Regardless, following recent practice the test has been added to the 3550 standard rather than extended set. 3551 3552 Reviewed-by: DJ Delorie <dj@redhat.com> 3553 (cherry picked from commit 89cddc8a7096f3d9225868304d2bc0a1aaf07d63) 3554 3555diff --git a/stdio-common/Makefile b/stdio-common/Makefile 3556index a63c05a120..e4f0146d2c 100644 3557--- a/stdio-common/Makefile 3558+++ b/stdio-common/Makefile 3559@@ -240,6 +240,7 @@ tests := \ 3560 tst-scanf-binary-c23 \ 3561 tst-scanf-binary-gnu11 \ 3562 tst-scanf-binary-gnu89 \ 3563+ tst-scanf-bz27650 \ 3564 tst-scanf-intn \ 3565 tst-scanf-round \ 3566 tst-scanf-to_inpunct \ 3567@@ -328,6 +329,7 @@ generated += \ 3568 tst-printf-fp-free.mtrace \ 3569 tst-printf-fp-leak-mem.out \ 3570 tst-printf-fp-leak.mtrace \ 3571+ tst-scanf-bz27650.mtrace \ 3572 tst-vfprintf-width-prec-mem.out \ 3573 tst-vfprintf-width-prec.mtrace \ 3574 # generated 3575@@ -419,6 +421,9 @@ tst-printf-fp-free-ENV = \ 3576 tst-printf-fp-leak-ENV = \ 3577 MALLOC_TRACE=$(objpfx)tst-printf-fp-leak.mtrace \ 3578 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so 3579+tst-scanf-bz27650-ENV = \ 3580+ MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \ 3581+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so 3582 3583 $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc 3584 $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ 3585diff --git a/stdio-common/tst-scanf-bz27650.c b/stdio-common/tst-scanf-bz27650.c 3586new file mode 100644 3587index 0000000000..3a742bc865 3588--- /dev/null 3589+++ b/stdio-common/tst-scanf-bz27650.c 3590@@ -0,0 +1,108 @@ 3591+/* Test for BZ #27650, formatted input matching beyond INT_MAX. 3592+ Copyright (C) 2024 Free Software Foundation, Inc. 3593+ This file is part of the GNU C Library. 3594+ 3595+ The GNU C Library is free software; you can redistribute it and/or 3596+ modify it under the terms of the GNU Lesser General Public 3597+ License as published by the Free Software Foundation; either 3598+ version 2.1 of the License, or (at your option) any later version. 3599+ 3600+ The GNU C Library is distributed in the hope that it will be useful, 3601+ but WITHOUT ANY WARRANTY; without even the implied warranty of 3602+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3603+ Lesser General Public License for more details. 3604+ 3605+ You should have received a copy of the GNU Lesser General Public 3606+ License along with the GNU C Library; if not, see 3607+ <https://www.gnu.org/licenses/>. */ 3608+ 3609+#include <error.h> 3610+#include <errno.h> 3611+#include <limits.h> 3612+#include <mcheck.h> 3613+#include <stddef.h> 3614+#include <stdio.h> 3615+#include <stdlib.h> 3616+#include <string.h> 3617+ 3618+#include <sys/types.h> 3619+ 3620+#include <support/check.h> 3621+#include <support/test-driver.h> 3622+ 3623+/* Produce a stream of more than INT_MAX characters via buffer BUF of 3624+ size SIZE according to bookkeeping in COOKIE and then return EOF. */ 3625+ 3626+static ssize_t 3627+io_read (void *cookie, char *buf, size_t size) 3628+{ 3629+ unsigned int *written = cookie; 3630+ unsigned int w = *written; 3631+ 3632+ if (w > INT_MAX) 3633+ return 0; 3634+ 3635+ memset (buf, 'a', size); 3636+ *written = w + size; 3637+ return size; 3638+} 3639+ 3640+/* Consume a stream of more than INT_MAX characters from an artificial 3641+ input stream of which none is the new line character. The call to 3642+ fscanf is supposed to complete upon the EOF condition of input, 3643+ however in the presence of BZ #27650 it will terminate prematurely 3644+ with characters still outstanding in input. Diagnose the condition 3645+ and return status accordingly. */ 3646+ 3647+int 3648+do_test (void) 3649+{ 3650+ static cookie_io_functions_t io_funcs = { .read = io_read }; 3651+ unsigned int written = 0; 3652+ FILE *in; 3653+ int v; 3654+ 3655+ mtrace (); 3656+ 3657+ in = fopencookie (&written, "r", io_funcs); 3658+ if (in == NULL) 3659+ { 3660+ FAIL ("fopencookie: %m"); 3661+ goto out; 3662+ } 3663+ 3664+ v = fscanf (in, "%*[^\n]"); 3665+ if (ferror (in)) 3666+ { 3667+ FAIL ("fscanf: input failure, at %u: %m", written); 3668+ goto out_close; 3669+ } 3670+ else if (v == EOF) 3671+ { 3672+ FAIL ("fscanf: unexpected end of file, at %u", written); 3673+ goto out_close; 3674+ } 3675+ 3676+ if (!feof (in)) 3677+ { 3678+ v = fgetc (in); 3679+ if (ferror (in)) 3680+ FAIL ("fgetc: input failure: %m"); 3681+ else if (v == EOF) 3682+ FAIL ("fgetc: unexpected end of file after missing end of file"); 3683+ else if (v == '\n') 3684+ FAIL ("unexpected new line character received"); 3685+ else 3686+ FAIL ("character received after end of file expected: \\x%02x", v); 3687+ } 3688+ 3689+out_close: 3690+ if (fclose (in) != 0) 3691+ FAIL ("fclose: %m"); 3692+ 3693+out: 3694+ return EXIT_SUCCESS; 3695+} 3696+ 3697+#define TIMEOUT (DEFAULT_TIMEOUT * 8) 3698+#include <support/test-driver.c> 3699 3700commit 2f749d2b15cbc82268d7f8735f21ae1e3b68754f 3701Author: Siddhesh Poyarekar <siddhesh@sourceware.org> 3702Date: Wed Aug 14 19:20:04 2024 -0400 3703 3704 Make tst-ungetc use libsupport 3705 3706 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> 3707 Reviewed-by: Carlos O'Donell <carlos@redhat.com> 3708 (cherry picked from commit 3f7df7e757f4efec38e45d4068e5492efcac4856) 3709 3710diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c 3711index 1344b2b591..5c808f0734 100644 3712--- a/stdio-common/tst-ungetc.c 3713+++ b/stdio-common/tst-ungetc.c 3714@@ -1,70 +1,72 @@ 3715-/* Test for ungetc bugs. */ 3716+/* Test for ungetc bugs. 3717+ Copyright (C) 1996-2024 Free Software Foundation, Inc. 3718+ Copyright The GNU Toolchain Authors. 3719+ This file is part of the GNU C Library. 3720+ 3721+ The GNU C Library is free software; you can redistribute it and/or 3722+ modify it under the terms of the GNU Lesser General Public 3723+ License as published by the Free Software Foundation; either 3724+ version 2.1 of the License, or (at your option) any later version. 3725+ 3726+ The GNU C Library is distributed in the hope that it will be useful, 3727+ but WITHOUT ANY WARRANTY; without even the implied warranty of 3728+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3729+ Lesser General Public License for more details. 3730+ 3731+ You should have received a copy of the GNU Lesser General Public 3732+ License along with the GNU C Library; if not, see 3733+ <https://www.gnu.org/licenses/>. */ 3734 3735 #include <stdio.h> 3736 #include <stdlib.h> 3737-#include <unistd.h> 3738- 3739-#undef assert 3740-#define assert(x) \ 3741- if (!(x)) \ 3742- { \ 3743- fputs ("test failed: " #x "\n", stderr); \ 3744- retval = 1; \ 3745- goto the_end; \ 3746- } 3747+#include <support/check.h> 3748+#include <support/support.h> 3749+#include <support/temp_file.h> 3750+#include <support/xstdio.h> 3751+#include <support/xunistd.h> 3752 3753-int 3754-main (int argc, char *argv[]) 3755+static int 3756+do_test (void) 3757 { 3758- char name[] = "/tmp/tst-ungetc.XXXXXX"; 3759+ char *name = NULL; 3760 FILE *fp = NULL; 3761- int retval = 0; 3762 int c; 3763 char buffer[64]; 3764 3765- int fd = mkstemp (name); 3766+ int fd = create_temp_file ("tst-ungetc.", &name); 3767 if (fd == -1) 3768- { 3769- printf ("mkstemp failed: %m\n"); 3770- return 1; 3771- } 3772- close (fd); 3773- fp = fopen (name, "w"); 3774- assert (fp != NULL) 3775- fputs ("bla", fp); 3776- fclose (fp); 3777- fp = NULL; 3778+ FAIL_EXIT1 ("cannot create temporary file: %m"); 3779+ xclose (fd); 3780 3781- fp = fopen (name, "r"); 3782- assert (fp != NULL); 3783- assert (ungetc ('z', fp) == 'z'); 3784- assert (getc (fp) == 'z'); 3785- assert (getc (fp) == 'b'); 3786- assert (getc (fp) == 'l'); 3787- assert (ungetc ('m', fp) == 'm'); 3788- assert (getc (fp) == 'm'); 3789- assert ((c = getc (fp)) == 'a'); 3790- assert (getc (fp) == EOF); 3791- assert (ungetc (c, fp) == c); 3792- assert (feof (fp) == 0); 3793- assert (getc (fp) == c); 3794- assert (getc (fp) == EOF); 3795- fclose (fp); 3796- fp = NULL; 3797+ fp = xfopen (name, "w"); 3798+ fputs ("bla", fp); 3799+ xfclose (fp); 3800 3801- fp = fopen (name, "r"); 3802- assert (fp != NULL); 3803- assert (getc (fp) == 'b'); 3804- assert (getc (fp) == 'l'); 3805- assert (ungetc ('b', fp) == 'b'); 3806- assert (fread (buffer, 1, 64, fp) == 2); 3807- assert (buffer[0] == 'b'); 3808- assert (buffer[1] == 'a'); 3809+ fp = xfopen (name, "r"); 3810+ TEST_VERIFY_EXIT (ungetc ('z', fp) == 'z'); 3811+ TEST_VERIFY_EXIT (getc (fp) == 'z'); 3812+ TEST_VERIFY_EXIT (getc (fp) == 'b'); 3813+ TEST_VERIFY_EXIT (getc (fp) == 'l'); 3814+ TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm'); 3815+ TEST_VERIFY_EXIT (getc (fp) == 'm'); 3816+ TEST_VERIFY_EXIT ((c = getc (fp)) == 'a'); 3817+ TEST_VERIFY_EXIT (getc (fp) == EOF); 3818+ TEST_VERIFY_EXIT (ungetc (c, fp) == c); 3819+ TEST_VERIFY_EXIT (feof (fp) == 0); 3820+ TEST_VERIFY_EXIT (getc (fp) == c); 3821+ TEST_VERIFY_EXIT (getc (fp) == EOF); 3822+ xfclose (fp); 3823 3824-the_end: 3825- if (fp != NULL) 3826- fclose (fp); 3827- unlink (name); 3828+ fp = xfopen (name, "r"); 3829+ TEST_VERIFY_EXIT (getc (fp) == 'b'); 3830+ TEST_VERIFY_EXIT (getc (fp) == 'l'); 3831+ TEST_VERIFY_EXIT (ungetc ('b', fp) == 'b'); 3832+ TEST_VERIFY_EXIT (fread (buffer, 1, 64, fp) == 2); 3833+ TEST_VERIFY_EXIT (buffer[0] == 'b'); 3834+ TEST_VERIFY_EXIT (buffer[1] == 'a'); 3835+ xfclose (fp); 3836 3837- return retval; 3838+ return 0; 3839 } 3840+ 3841+#include <support/test-driver.c> 3842 3843commit dac7a0694b5e853f08be518cd5a133ac5804666d 3844Author: Siddhesh Poyarekar <siddhesh@sourceware.org> 3845Date: Tue Aug 13 21:00:06 2024 -0400 3846 3847 ungetc: Fix uninitialized read when putting into unused streams [BZ #27821] 3848 3849 When ungetc is called on an unused stream, the backup buffer is 3850 allocated without the main get area being present. This results in 3851 every subsequent ungetc (as the stream remains in the backup area) 3852 checking uninitialized memory in the backup buffer when trying to put a 3853 character back into the stream. 3854 3855 Avoid comparing the input character with buffer contents when in backup 3856 to avoid this uninitialized read. The uninitialized read is harmless in 3857 this context since the location is promptly overwritten with the input 3858 character, thus fulfilling ungetc functionality. 3859 3860 Also adjust wording in the manual to drop the paragraph that says glibc 3861 cannot do multiple ungetc back to back since with this change, ungetc 3862 can actually do this. 3863 3864 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> 3865 Reviewed-by: Carlos O'Donell <carlos@redhat.com> 3866 (cherry picked from commit cdf0f88f97b0aaceb894cc02b21159d148d7065c) 3867 3868diff --git a/libio/genops.c b/libio/genops.c 3869index 99f5e80f20..b012fa33d2 100644 3870--- a/libio/genops.c 3871+++ b/libio/genops.c 3872@@ -662,7 +662,7 @@ _IO_sputbackc (FILE *fp, int c) 3873 { 3874 int result; 3875 3876- if (fp->_IO_read_ptr > fp->_IO_read_base 3877+ if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp) 3878 && (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c) 3879 { 3880 fp->_IO_read_ptr--; 3881diff --git a/manual/stdio.texi b/manual/stdio.texi 3882index 8517653507..92614775fa 100644 3883--- a/manual/stdio.texi 3884+++ b/manual/stdio.texi 3885@@ -1467,11 +1467,9 @@ program; usually @code{ungetc} is used only to unread a character that 3886 was just read from the same stream. @Theglibc{} supports this 3887 even on files opened in binary mode, but other systems might not. 3888 3889-@Theglibc{} only supports one character of pushback---in other 3890-words, it does not work to call @code{ungetc} twice without doing input 3891-in between. Other systems might let you push back multiple characters; 3892-then reading from the stream retrieves the characters in the reverse 3893-order that they were pushed. 3894+@Theglibc{} supports pushing back multiple characters; subsequently 3895+reading from the stream retrieves the characters in the reverse order 3896+that they were pushed. 3897 3898 Pushing back characters doesn't alter the file; only the internal 3899 buffering for the stream is affected. If a file positioning function 3900diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c 3901index 5c808f0734..388b202493 100644 3902--- a/stdio-common/tst-ungetc.c 3903+++ b/stdio-common/tst-ungetc.c 3904@@ -48,6 +48,8 @@ do_test (void) 3905 TEST_VERIFY_EXIT (getc (fp) == 'b'); 3906 TEST_VERIFY_EXIT (getc (fp) == 'l'); 3907 TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm'); 3908+ TEST_VERIFY_EXIT (ungetc ('n', fp) == 'n'); 3909+ TEST_VERIFY_EXIT (getc (fp) == 'n'); 3910 TEST_VERIFY_EXIT (getc (fp) == 'm'); 3911 TEST_VERIFY_EXIT ((c = getc (fp)) == 'a'); 3912 TEST_VERIFY_EXIT (getc (fp) == EOF); 3913 3914commit e24902f409994f226dbc6fde2476009df452a18f 3915Author: Siddhesh Poyarekar <siddhesh@sourceware.org> 3916Date: Tue Aug 13 21:08:49 2024 -0400 3917 3918 ungetc: Fix backup buffer leak on program exit [BZ #27821] 3919 3920 If a file descriptor is left unclosed and is cleaned up by _IO_cleanup 3921 on exit, its backup buffer remains unfreed, registering as a leak in 3922 valgrind. This is not strictly an issue since (1) the program should 3923 ideally be closing the stream once it's not in use and (2) the program 3924 is about to exit anyway, so keeping the backup buffer around a wee bit 3925 longer isn't a real problem. Free it anyway to keep valgrind happy 3926 when the streams in question are the standard ones, i.e. stdout, stdin 3927 or stderr. 3928 3929 Also, the _IO_have_backup macro checks for _IO_save_base, 3930 which is a roundabout way to check for a backup buffer instead of 3931 directly looking for _IO_backup_base. The roundabout check breaks when 3932 the main get area has not been used and user pushes a char into the 3933 backup buffer with ungetc. Fix this to use the _IO_backup_base 3934 directly. 3935 3936 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> 3937 Reviewed-by: Carlos O'Donell <carlos@redhat.com> 3938 (cherry picked from commit 3e1d8d1d1dca24ae90df2ea826a8916896fc7e77) 3939 3940diff --git a/libio/genops.c b/libio/genops.c 3941index b012fa33d2..35d8b30710 100644 3942--- a/libio/genops.c 3943+++ b/libio/genops.c 3944@@ -816,6 +816,12 @@ _IO_unbuffer_all (void) 3945 legacy = 1; 3946 #endif 3947 3948+ /* Free up the backup area if it was ever allocated. */ 3949+ if (_IO_have_backup (fp)) 3950+ _IO_free_backup_area (fp); 3951+ if (fp->_mode > 0 && _IO_have_wbackup (fp)) 3952+ _IO_free_wbackup_area (fp); 3953+ 3954 if (! (fp->_flags & _IO_UNBUFFERED) 3955 /* Iff stream is un-orientated, it wasn't used. */ 3956 && (legacy || fp->_mode != 0)) 3957diff --git a/libio/libioP.h b/libio/libioP.h 3958index 1af287b19f..616253fcd0 100644 3959--- a/libio/libioP.h 3960+++ b/libio/libioP.h 3961@@ -577,8 +577,8 @@ extern void _IO_old_init (FILE *fp, int flags) __THROW; 3962 ((__fp)->_wide_data->_IO_write_base \ 3963 = (__fp)->_wide_data->_IO_write_ptr = __p, \ 3964 (__fp)->_wide_data->_IO_write_end = (__ep)) 3965-#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL) 3966-#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL) 3967+#define _IO_have_backup(fp) ((fp)->_IO_backup_base != NULL) 3968+#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_backup_base != NULL) 3969 #define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP) 3970 #define _IO_have_markers(fp) ((fp)->_markers != NULL) 3971 #define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base) 3972diff --git a/stdio-common/Makefile b/stdio-common/Makefile 3973index e4f0146d2c..a91754f52d 100644 3974--- a/stdio-common/Makefile 3975+++ b/stdio-common/Makefile 3976@@ -254,6 +254,7 @@ tests := \ 3977 tst-swscanf \ 3978 tst-tmpnam \ 3979 tst-ungetc \ 3980+ tst-ungetc-leak \ 3981 tst-unlockedio \ 3982 tst-vfprintf-mbs-prec \ 3983 tst-vfprintf-user-type \ 3984@@ -316,6 +317,7 @@ tests-special += \ 3985 $(objpfx)tst-printf-bz25691-mem.out \ 3986 $(objpfx)tst-printf-fp-free-mem.out \ 3987 $(objpfx)tst-printf-fp-leak-mem.out \ 3988+ $(objpfx)tst-ungetc-leak-mem.out \ 3989 $(objpfx)tst-vfprintf-width-prec-mem.out \ 3990 # tests-special 3991 3992@@ -330,6 +332,8 @@ generated += \ 3993 tst-printf-fp-leak-mem.out \ 3994 tst-printf-fp-leak.mtrace \ 3995 tst-scanf-bz27650.mtrace \ 3996+ tst-ungetc-leak-mem.out \ 3997+ tst-ungetc-leak.mtrace \ 3998 tst-vfprintf-width-prec-mem.out \ 3999 tst-vfprintf-width-prec.mtrace \ 4000 # generated 4001@@ -424,6 +428,9 @@ tst-printf-fp-leak-ENV = \ 4002 tst-scanf-bz27650-ENV = \ 4003 MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \ 4004 LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so 4005+tst-ungetc-leak-ENV = \ 4006+ MALLOC_TRACE=$(objpfx)tst-ungetc-leak.mtrace \ 4007+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so 4008 4009 $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc 4010 $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ 4011diff --git a/stdio-common/tst-ungetc-leak.c b/stdio-common/tst-ungetc-leak.c 4012new file mode 100644 4013index 0000000000..6c5152b43f 4014--- /dev/null 4015+++ b/stdio-common/tst-ungetc-leak.c 4016@@ -0,0 +1,32 @@ 4017+/* Test for memory leak with ungetc when stream is unused. 4018+ Copyright The GNU Toolchain Authors. 4019+ This file is part of the GNU C Library. 4020+ 4021+ The GNU C Library is free software; you can redistribute it and/or 4022+ modify it under the terms of the GNU Lesser General Public 4023+ License as published by the Free Software Foundation; either 4024+ version 2.1 of the License, or (at your option) any later version. 4025+ 4026+ The GNU C Library is distributed in the hope that it will be useful, 4027+ but WITHOUT ANY WARRANTY; without even the implied warranty of 4028+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4029+ Lesser General Public License for more details. 4030+ 4031+ You should have received a copy of the GNU Lesser General Public 4032+ License along with the GNU C Library; if not, see 4033+ <https://www.gnu.org/licenses/>. */ 4034+ 4035+#include <stdio.h> 4036+#include <mcheck.h> 4037+#include <support/check.h> 4038+#include <support/support.h> 4039+ 4040+static int 4041+do_test (void) 4042+{ 4043+ mtrace (); 4044+ TEST_COMPARE (ungetc('y', stdin), 'y'); 4045+ return 0; 4046+} 4047+ 4048+#include <support/test-driver.c> 4049 4050commit 3b3350d7baa8de70b71c02e964d5b8343749ebf8 4051Author: Maciej W. Rozycki <macro@redhat.com> 4052Date: Fri Jul 26 13:21:34 2024 +0100 4053 4054 posix: Use <support/check.h> facilities in tst-truncate and tst-truncate64 4055 4056 Remove local FAIL macro in favor to FAIL_RET from <support/check.h>, 4057 which provides equivalent reporting, with the name of the file of the 4058 failure site additionally included, for the tst-truncate-common core 4059 shared between the tst-truncate and tst-truncate64 tests. 4060 4061 Reviewed-by: DJ Delorie <dj@redhat.com> 4062 (cherry picked from commit fe47595504a55e7bb992f8928533df154b510383) 4063 4064diff --git a/posix/tst-truncate-common.c b/posix/tst-truncate-common.c 4065index b774fa46b8..b8c561ffdb 100644 4066--- a/posix/tst-truncate-common.c 4067+++ b/posix/tst-truncate-common.c 4068@@ -21,6 +21,8 @@ 4069 #include <sys/stat.h> 4070 #include <unistd.h> 4071 4072+#include <support/check.h> 4073+ 4074 static void do_prepare (void); 4075 #define PREPARE(argc, argv) do_prepare () 4076 static int do_test (void); 4077@@ -42,9 +44,6 @@ do_prepare (void) 4078 } 4079 } 4080 4081-#define FAIL(str) \ 4082- do { printf ("error: %s (line %d)\n", str, __LINE__); return 1; } while (0) 4083- 4084 static int 4085 do_test_with_offset (off_t offset) 4086 { 4087@@ -54,35 +53,35 @@ do_test_with_offset (off_t offset) 4088 memset (buf, 0xcf, sizeof (buf)); 4089 4090 if (pwrite (temp_fd, buf, sizeof (buf), offset) != sizeof (buf)) 4091- FAIL ("write failed"); 4092+ FAIL_RET ("write failed"); 4093 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + sizeof (buf))) 4094- FAIL ("initial size wrong"); 4095+ FAIL_RET ("initial size wrong"); 4096 4097 if (ftruncate (temp_fd, offset + 800) < 0) 4098- FAIL ("size reduction with ftruncate failed"); 4099+ FAIL_RET ("size reduction with ftruncate failed"); 4100 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) 4101- FAIL ("size after reduction with ftruncate is incorrect"); 4102+ FAIL_RET ("size after reduction with ftruncate is incorrect"); 4103 4104 /* The following test covers more than POSIX. POSIX does not require 4105 that ftruncate() can increase the file size. But we are testing 4106 Unix systems. */ 4107 if (ftruncate (temp_fd, offset + 1200) < 0) 4108- FAIL ("size increate with ftruncate failed"); 4109+ FAIL_RET ("size increate with ftruncate failed"); 4110 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) 4111- FAIL ("size after increase is incorrect"); 4112+ FAIL_RET ("size after increase is incorrect"); 4113 4114 if (truncate (temp_filename, offset + 800) < 0) 4115- FAIL ("size reduction with truncate failed"); 4116+ FAIL_RET ("size reduction with truncate failed"); 4117 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) 4118- FAIL ("size after reduction with truncate incorrect"); 4119+ FAIL_RET ("size after reduction with truncate incorrect"); 4120 4121 /* The following test covers more than POSIX. POSIX does not require 4122 that truncate() can increase the file size. But we are testing 4123 Unix systems. */ 4124 if (truncate (temp_filename, (offset + 1200)) < 0) 4125- FAIL ("size increase with truncate failed"); 4126+ FAIL_RET ("size increase with truncate failed"); 4127 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) 4128- FAIL ("size increase with truncate is incorrect"); 4129+ FAIL_RET ("size increase with truncate is incorrect"); 4130 4131 return 0; 4132 } 4133 4134commit 3414b17e9db16c3bc0de5b49555c4f94f155ffc8 4135Author: Maciej W. Rozycki <macro@redhat.com> 4136Date: Fri Jul 26 13:21:34 2024 +0100 4137 4138 nptl: Use <support/check.h> facilities in tst-setuid3 4139 4140 Remove local FAIL macro in favor to FAIL_EXIT1 from <support/check.h>, 4141 which provides equivalent reporting, with the name of the file and the 4142 line number within of the failure site additionally included. Remove 4143 FAIL_ERR altogether and include ": %m" explicitly with the format string 4144 supplied to FAIL_EXIT1 as there seems little value to have a separate 4145 macro just for this. 4146 4147 Reviewed-by: DJ Delorie <dj@redhat.com> 4148 (cherry picked from commit 8c98195af6e6f1ce21743fc26c723e0f7e45bcf2) 4149 4150diff --git a/sysdeps/pthread/tst-setuid3.c b/sysdeps/pthread/tst-setuid3.c 4151index 83f42a0ae5..3845ab03d3 100644 4152--- a/sysdeps/pthread/tst-setuid3.c 4153+++ b/sysdeps/pthread/tst-setuid3.c 4154@@ -15,24 +15,19 @@ 4155 License along with the GNU C Library; if not, see 4156 <https://www.gnu.org/licenses/>. */ 4157 4158-#include <stdio.h> 4159 #include <errno.h> 4160 #include <pthread.h> 4161 #include <stdbool.h> 4162 #include <unistd.h> 4163 4164+#include <support/check.h> 4165+ 4166 /* The test must run under a non-privileged user ID. */ 4167 static const uid_t test_uid = 1; 4168 4169 static pthread_barrier_t barrier1; 4170 static pthread_barrier_t barrier2; 4171 4172-#define FAIL(fmt, ...) \ 4173- do { printf ("FAIL: " fmt "\n", __VA_ARGS__); _exit (1); } while (0) 4174- 4175-#define FAIL_ERR(fmt, ...) \ 4176- do { printf ("FAIL: " fmt ": %m\n", __VA_ARGS__); _exit (1); } while (0) 4177- 4178 /* True if x is not a successful return code from pthread_barrier_wait. */ 4179 static inline bool 4180 is_invalid_barrier_ret (int x) 4181@@ -45,10 +40,10 @@ thread_func (void *ctx __attribute__ ((unused))) 4182 { 4183 int ret = pthread_barrier_wait (&barrier1); 4184 if (is_invalid_barrier_ret (ret)) 4185- FAIL ("pthread_barrier_wait (barrier1) (on thread): %d", ret); 4186+ FAIL_EXIT1 ("pthread_barrier_wait (barrier1) (on thread): %d", ret); 4187 ret = pthread_barrier_wait (&barrier2); 4188 if (is_invalid_barrier_ret (ret)) 4189- FAIL ("pthread_barrier_wait (barrier2) (on thread): %d", ret); 4190+ FAIL_EXIT1 ("pthread_barrier_wait (barrier2) (on thread): %d", ret); 4191 return NULL; 4192 } 4193 4194@@ -59,13 +54,13 @@ setuid_failure (int phase) 4195 switch (ret) 4196 { 4197 case 0: 4198- FAIL ("setuid succeeded unexpectedly in phase %d", phase); 4199+ FAIL_EXIT1 ("setuid succeeded unexpectedly in phase %d", phase); 4200 case -1: 4201 if (errno != EPERM) 4202- FAIL_ERR ("setuid phase %d", phase); 4203+ FAIL_EXIT1 ("setuid phase %d: %m", phase); 4204 break; 4205 default: 4206- FAIL ("invalid setuid return value in phase %d: %d", phase, ret); 4207+ FAIL_EXIT1 ("invalid setuid return value in phase %d: %d", phase, ret); 4208 } 4209 } 4210 4211@@ -74,42 +69,42 @@ do_test (void) 4212 { 4213 if (getuid () == 0) 4214 if (setuid (test_uid) != 0) 4215- FAIL_ERR ("setuid (%u)", (unsigned) test_uid); 4216+ FAIL_EXIT1 ("setuid (%u): %m", (unsigned) test_uid); 4217 if (setuid (getuid ())) 4218- FAIL_ERR ("setuid (%s)", "getuid ()"); 4219+ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()"); 4220 setuid_failure (1); 4221 4222 int ret = pthread_barrier_init (&barrier1, NULL, 2); 4223 if (ret != 0) 4224- FAIL ("pthread_barrier_init (barrier1): %d", ret); 4225+ FAIL_EXIT1 ("pthread_barrier_init (barrier1): %d", ret); 4226 ret = pthread_barrier_init (&barrier2, NULL, 2); 4227 if (ret != 0) 4228- FAIL ("pthread_barrier_init (barrier2): %d", ret); 4229+ FAIL_EXIT1 ("pthread_barrier_init (barrier2): %d", ret); 4230 4231 pthread_t thread; 4232 ret = pthread_create (&thread, NULL, thread_func, NULL); 4233 if (ret != 0) 4234- FAIL ("pthread_create: %d", ret); 4235+ FAIL_EXIT1 ("pthread_create: %d", ret); 4236 4237 /* Ensure that the thread is running properly. */ 4238 ret = pthread_barrier_wait (&barrier1); 4239 if (is_invalid_barrier_ret (ret)) 4240- FAIL ("pthread_barrier_wait (barrier1): %d", ret); 4241+ FAIL_EXIT1 ("pthread_barrier_wait (barrier1): %d", ret); 4242 4243 setuid_failure (2); 4244 4245 /* Check success case. */ 4246 if (setuid (getuid ()) != 0) 4247- FAIL_ERR ("setuid (%s)", "getuid ()"); 4248+ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()"); 4249 4250 /* Shutdown. */ 4251 ret = pthread_barrier_wait (&barrier2); 4252 if (is_invalid_barrier_ret (ret)) 4253- FAIL ("pthread_barrier_wait (barrier2): %d", ret); 4254+ FAIL_EXIT1 ("pthread_barrier_wait (barrier2): %d", ret); 4255 4256 ret = pthread_join (thread, NULL); 4257 if (ret != 0) 4258- FAIL ("pthread_join: %d", ret); 4259+ FAIL_EXIT1 ("pthread_join: %d", ret); 4260 4261 return 0; 4262 } 4263 4264commit b7edcfa0f41ccfaeb665a661d3a6a594c8d95848 4265Author: Florian Weimer <fweimer@redhat.com> 4266Date: Thu Aug 1 23:31:23 2024 +0200 4267 4268 elf: Clarify and invert second argument of _dl_allocate_tls_init 4269 4270 Also remove an outdated comment: _dl_allocate_tls_init is 4271 called as part of pthread_create. 4272 4273 Reviewed-by: Carlos O'Donell <carlos@redhat.com> 4274 (cherry picked from commit fe06fb313bddf7e4530056897d4a706606e49377) 4275 4276diff --git a/elf/dl-tls.c b/elf/dl-tls.c 4277index 3d221273f1..ecb966d282 100644 4278--- a/elf/dl-tls.c 4279+++ b/elf/dl-tls.c 4280@@ -552,9 +552,14 @@ _dl_resize_dtv (dtv_t *dtv, size_t max_modid) 4281 /* Allocate initial TLS. RESULT should be a non-NULL pointer to storage 4282 for the TLS space. The DTV may be resized, and so this function may 4283 call malloc to allocate that space. The loader's GL(dl_load_tls_lock) 4284- is taken when manipulating global TLS-related data in the loader. */ 4285+ is taken when manipulating global TLS-related data in the loader. 4286+ 4287+ If MAIN_THREAD, this is the first call during process 4288+ initialization. In this case, TLS initialization for secondary 4289+ (audit) namespaces is skipped because that has already been handled 4290+ by dlopen. */ 4291 void * 4292-_dl_allocate_tls_init (void *result, bool init_tls) 4293+_dl_allocate_tls_init (void *result, bool main_thread) 4294 { 4295 if (result == NULL) 4296 /* The memory allocation failed. */ 4297@@ -633,7 +638,7 @@ _dl_allocate_tls_init (void *result, bool init_tls) 4298 because it would already be set by the audit setup. However, 4299 subsequent thread creation would need to follow the default 4300 behaviour. */ 4301- if (map->l_ns != LM_ID_BASE && !init_tls) 4302+ if (map->l_ns != LM_ID_BASE && main_thread) 4303 continue; 4304 memset (__mempcpy (dest, map->l_tls_initimage, 4305 map->l_tls_initimage_size), '\0', 4306@@ -661,7 +666,7 @@ _dl_allocate_tls (void *mem) 4307 { 4308 return _dl_allocate_tls_init (mem == NULL 4309 ? _dl_allocate_tls_storage () 4310- : allocate_dtv (mem), true); 4311+ : allocate_dtv (mem), false); 4312 } 4313 rtld_hidden_def (_dl_allocate_tls) 4314 4315diff --git a/elf/rtld.c b/elf/rtld.c 4316index bfdf632e77..09b9c9993b 100644 4317--- a/elf/rtld.c 4318+++ b/elf/rtld.c 4319@@ -2338,7 +2338,7 @@ dl_main (const ElfW(Phdr) *phdr, 4320 into the main thread's TLS area, which we allocated above. 4321 Note: thread-local variables must only be accessed after completing 4322 the next step. */ 4323- _dl_allocate_tls_init (tcbp, false); 4324+ _dl_allocate_tls_init (tcbp, true); 4325 4326 /* And finally install it for the main thread. */ 4327 if (! __rtld_tls_init_tp_called) 4328diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c 4329index f35a8369bd..2cb562f8ea 100644 4330--- a/nptl/allocatestack.c 4331+++ b/nptl/allocatestack.c 4332@@ -139,7 +139,7 @@ get_cached_stack (size_t *sizep, void **memp) 4333 memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t)); 4334 4335 /* Re-initialize the TLS. */ 4336- _dl_allocate_tls_init (TLS_TPADJ (result), true); 4337+ _dl_allocate_tls_init (TLS_TPADJ (result), false); 4338 4339 return result; 4340 } 4341diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h 4342index 656e8a3fa0..154efb0e19 100644 4343--- a/sysdeps/generic/ldsodefs.h 4344+++ b/sysdeps/generic/ldsodefs.h 4345@@ -1200,10 +1200,8 @@ extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp); 4346 4347 extern void _dl_allocate_static_tls (struct link_map *map) attribute_hidden; 4348 4349-/* These are internal entry points to the two halves of _dl_allocate_tls, 4350- only used within rtld.c itself at startup time. */ 4351 extern void *_dl_allocate_tls_storage (void) attribute_hidden; 4352-extern void *_dl_allocate_tls_init (void *, bool); 4353+extern void *_dl_allocate_tls_init (void *result, bool main_thread); 4354 rtld_hidden_proto (_dl_allocate_tls_init) 4355 4356 /* True if the TCB has been set up. */ 4357 4358commit f496b750f135e57da921e975835c44bd199246dd 4359Author: Florian Weimer <fweimer@redhat.com> 4360Date: Thu Aug 1 23:31:30 2024 +0200 4361 4362 elf: Avoid re-initializing already allocated TLS in dlopen (bug 31717) 4363 4364 The old code used l_init_called as an indicator for whether TLS 4365 initialization was complete. However, it is possible that 4366 TLS for an object is initialized, written to, and then dlopen 4367 for this object is called again, and l_init_called is not true at 4368 this point. Previously, this resulted in TLS being initialized 4369 twice, discarding any interim writes (technically introducing a 4370 use-after-free bug even). 4371 4372 This commit introduces an explicit per-object flag, l_tls_in_slotinfo. 4373 It indicates whether _dl_add_to_slotinfo has been called for this 4374 object. This flag is used to avoid double-initialization of TLS. 4375 In update_tls_slotinfo, the first_static_tls micro-optimization 4376 is removed because preserving the initalization flag for subsequent 4377 use by the second loop for static TLS is a bit complicated, and 4378 another per-object flag does not seem to be worth it. Furthermore, 4379 the l_init_called flag is dropped from the second loop (for static 4380 TLS initialization) because l_need_tls_init on its own prevents 4381 double-initialization. 4382 4383 The remaining l_init_called usage in resize_scopes and update_scopes 4384 is just an optimization due to the use of scope_has_map, so it is 4385 not changed in this commit. 4386 4387 The isupper check ensures that libc.so.6 is TLS is not reverted. 4388 Such a revert happens if l_need_tls_init is not cleared in 4389 _dl_allocate_tls_init for the main_thread case, now that 4390 l_init_called is not checked anymore in update_tls_slotinfo 4391 in elf/dl-open.c. 4392 4393 Reported-by: Jonathon Anderson <janderson@rice.edu> 4394 Reviewed-by: Carlos O'Donell <carlos@redhat.com> 4395 (cherry picked from commit 5097cd344fd243fb8deb6dec96e8073753f962f9) 4396 4397diff --git a/NEWS b/NEWS 4398index 10a125bc66..5b20efbf6c 100644 4399--- a/NEWS 4400+++ b/NEWS 4401@@ -10,7 +10,7 @@ Version 2.40.1 4402 The following bugs are resolved with this release: 4403 4404 [30081] resolv: Do not wait for non-existing second DNS response after error 4405- [31968] mremap implementation in C does not handle arguments correctly 4406+ [31717] elf: Avoid re-initializing already allocated TLS in dlopen 4407 [31890] resolv: Allow short error responses to match any DNS query 4408 [31968] mremap implementation in C does not handle arguments correctly 4409 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces 4410diff --git a/elf/Makefile b/elf/Makefile 4411index a3475f3fb5..a03c6520d8 100644 4412--- a/elf/Makefile 4413+++ b/elf/Makefile 4414@@ -416,6 +416,10 @@ tests += \ 4415 tst-dlmopen4 \ 4416 tst-dlopen-self \ 4417 tst-dlopen-tlsmodid \ 4418+ tst-dlopen-tlsreinit1 \ 4419+ tst-dlopen-tlsreinit2 \ 4420+ tst-dlopen-tlsreinit3 \ 4421+ tst-dlopen-tlsreinit4 \ 4422 tst-dlopenfail \ 4423 tst-dlopenfail-2 \ 4424 tst-dlopenrpath \ 4425@@ -853,6 +857,9 @@ modules-names += \ 4426 tst-dlmopen-twice-mod1 \ 4427 tst-dlmopen-twice-mod2 \ 4428 tst-dlmopen1mod \ 4429+ tst-dlopen-tlsreinitmod1 \ 4430+ tst-dlopen-tlsreinitmod2 \ 4431+ tst-dlopen-tlsreinitmod3 \ 4432 tst-dlopenfaillinkmod \ 4433 tst-dlopenfailmod1 \ 4434 tst-dlopenfailmod2 \ 4435@@ -3118,3 +3125,26 @@ $(objpfx)tst-recursive-tls.out: \ 4436 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 4437 $(objpfx)tst-recursive-tlsmod%.os: tst-recursive-tlsmodN.c 4438 $(compile-command.c) -DVAR=thread_$* -DFUNC=get_threadvar_$* 4439+ 4440+# Order matters here. The test needs the constructor for 4441+# tst-dlopen-tlsreinitmod2.so to be called first. 4442+LDFLAGS-tst-dlopen-tlsreinitmod1.so = -Wl,--no-as-needed 4443+$(objpfx)tst-dlopen-tlsreinitmod1.so: \ 4444+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so 4445+LDFLAGS-tst-dlopen-tlsreinit2 = -Wl,--no-as-needed 4446+$(objpfx)tst-dlopen-tlsreinit2: \ 4447+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so 4448+LDFLAGS-tst-dlopen-tlsreinit4 = -Wl,--no-as-needed 4449+$(objpfx)tst-dlopen-tlsreinit4: \ 4450+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so 4451+# tst-dlopen-tlsreinitmod2.so is underlinked and refers to 4452+# tst-dlopen-tlsreinitmod3.so. The dependency is provided via 4453+# $(objpfx)tst-dlopen-tlsreinitmod1.so. 4454+tst-dlopen-tlsreinitmod2.so-no-z-defs = yes 4455+$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \ 4456+ $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so 4457+# Reuse an audit module which provides ample debug logging. 4458+$(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so 4459+tst-dlopen-tlsreinit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so 4460+$(objpfx)tst-dlopen-tlsreinit4.out: $(objpfx)tst-auditmod1.so 4461+tst-dlopen-tlsreinit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so 4462diff --git a/elf/dl-open.c b/elf/dl-open.c 4463index c378da16c0..8556e7bd2f 100644 4464--- a/elf/dl-open.c 4465+++ b/elf/dl-open.c 4466@@ -363,17 +363,8 @@ resize_tls_slotinfo (struct link_map *new) 4467 { 4468 bool any_tls = false; 4469 for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) 4470- { 4471- struct link_map *imap = new->l_searchlist.r_list[i]; 4472- 4473- /* Only add TLS memory if this object is loaded now and 4474- therefore is not yet initialized. */ 4475- if (! imap->l_init_called && imap->l_tls_blocksize > 0) 4476- { 4477- _dl_add_to_slotinfo (imap, false); 4478- any_tls = true; 4479- } 4480- } 4481+ if (_dl_add_to_slotinfo (new->l_searchlist.r_list[i], false)) 4482+ any_tls = true; 4483 return any_tls; 4484 } 4485 4486@@ -383,22 +374,8 @@ resize_tls_slotinfo (struct link_map *new) 4487 static void 4488 update_tls_slotinfo (struct link_map *new) 4489 { 4490- unsigned int first_static_tls = new->l_searchlist.r_nlist; 4491 for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) 4492- { 4493- struct link_map *imap = new->l_searchlist.r_list[i]; 4494- 4495- /* Only add TLS memory if this object is loaded now and 4496- therefore is not yet initialized. */ 4497- if (! imap->l_init_called && imap->l_tls_blocksize > 0) 4498- { 4499- _dl_add_to_slotinfo (imap, true); 4500- 4501- if (imap->l_need_tls_init 4502- && first_static_tls == new->l_searchlist.r_nlist) 4503- first_static_tls = i; 4504- } 4505- } 4506+ _dl_add_to_slotinfo (new->l_searchlist.r_list[i], true); 4507 4508 size_t newgen = GL(dl_tls_generation) + 1; 4509 if (__glibc_unlikely (newgen == 0)) 4510@@ -410,13 +387,11 @@ TLS generation counter wrapped! Please report this.")); 4511 /* We need a second pass for static tls data, because 4512 _dl_update_slotinfo must not be run while calls to 4513 _dl_add_to_slotinfo are still pending. */ 4514- for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i) 4515+ for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) 4516 { 4517 struct link_map *imap = new->l_searchlist.r_list[i]; 4518 4519- if (imap->l_need_tls_init 4520- && ! imap->l_init_called 4521- && imap->l_tls_blocksize > 0) 4522+ if (imap->l_need_tls_init && imap->l_tls_blocksize > 0) 4523 { 4524 /* For static TLS we have to allocate the memory here and 4525 now, but we can delay updating the DTV. */ 4526diff --git a/elf/dl-tls.c b/elf/dl-tls.c 4527index ecb966d282..3d529b722c 100644 4528--- a/elf/dl-tls.c 4529+++ b/elf/dl-tls.c 4530@@ -632,17 +632,21 @@ _dl_allocate_tls_init (void *result, bool main_thread) 4531 some platforms use in static programs requires it. */ 4532 dtv[map->l_tls_modid].pointer.val = dest; 4533 4534- /* Copy the initialization image and clear the BSS part. For 4535- audit modules or dependencies with initial-exec TLS, we can not 4536- set the initial TLS image on default loader initialization 4537- because it would already be set by the audit setup. However, 4538- subsequent thread creation would need to follow the default 4539- behaviour. */ 4540+ /* Copy the initialization image and clear the BSS part. 4541+ For audit modules or dependencies with initial-exec TLS, 4542+ we can not set the initial TLS image on default loader 4543+ initialization because it would already be set by the 4544+ audit setup, which uses the dlopen code and already 4545+ clears l_need_tls_init. Calls with !main_thread from 4546+ pthread_create need to initialze TLS for the current 4547+ thread regardless of namespace. */ 4548 if (map->l_ns != LM_ID_BASE && main_thread) 4549 continue; 4550 memset (__mempcpy (dest, map->l_tls_initimage, 4551 map->l_tls_initimage_size), '\0', 4552 map->l_tls_blocksize - map->l_tls_initimage_size); 4553+ if (main_thread) 4554+ map->l_need_tls_init = 0; 4555 } 4556 4557 total += cnt; 4558@@ -1099,9 +1103,32 @@ _dl_tls_initial_modid_limit_setup (void) 4559 } 4560 4561 4562-void 4563+/* Add module to slot information data. If DO_ADD is false, only the 4564+ required memory is allocated. Must be called with 4565+ GL (dl_load_tls_lock) acquired. If the function has already been 4566+ called for the link map L with !DO_ADD, then this function will not 4567+ raise an exception, otherwise it is possible that it encounters a 4568+ memory allocation failure. 4569+ 4570+ Return false if L has already been added to the slotinfo data, or 4571+ if L has no TLS data. If the returned value is true, L has been 4572+ added with this call (DO_ADD), or has been added in a previous call 4573+ (!DO_ADD). 4574+ 4575+ The expected usage is as follows: Call _dl_add_to_slotinfo for 4576+ several link maps with DO_ADD set to false, and record if any calls 4577+ result in a true result. If there was a true result, call 4578+ _dl_add_to_slotinfo again, this time with DO_ADD set to true. (For 4579+ simplicity, it's possible to call the function for link maps where 4580+ the previous result was false.) The return value from the second 4581+ round of calls can be ignored. If there was true result initially, 4582+ call _dl_update_slotinfo to update the TLS generation counter. */ 4583+bool 4584 _dl_add_to_slotinfo (struct link_map *l, bool do_add) 4585 { 4586+ if (l->l_tls_blocksize == 0 || l->l_tls_in_slotinfo) 4587+ return false; 4588+ 4589 /* Now that we know the object is loaded successfully add 4590 modules containing TLS data to the dtv info table. We 4591 might have to increase its size. */ 4592@@ -1157,7 +1184,10 @@ cannot create TLS data structures")); 4593 atomic_store_relaxed (&listp->slotinfo[idx].map, l); 4594 atomic_store_relaxed (&listp->slotinfo[idx].gen, 4595 GL(dl_tls_generation) + 1); 4596+ l->l_tls_in_slotinfo = true; 4597 } 4598+ 4599+ return true; 4600 } 4601 4602 #if PTHREAD_IN_LIBC 4603diff --git a/elf/tst-dlopen-tlsreinit1.c b/elf/tst-dlopen-tlsreinit1.c 4604new file mode 100644 4605index 0000000000..2016b9b0c6 4606--- /dev/null 4607+++ b/elf/tst-dlopen-tlsreinit1.c 4608@@ -0,0 +1,40 @@ 4609+/* Test that dlopen preserves already accessed TLS (bug 31717). 4610+ Copyright (C) 2024 Free Software Foundation, Inc. 4611+ This file is part of the GNU C Library. 4612+ 4613+ The GNU C Library is free software; you can redistribute it and/or 4614+ modify it under the terms of the GNU Lesser General Public 4615+ License as published by the Free Software Foundation; either 4616+ version 2.1 of the License, or (at your option) any later version. 4617+ 4618+ The GNU C Library is distributed in the hope that it will be useful, 4619+ but WITHOUT ANY WARRANTY; without even the implied warranty of 4620+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4621+ Lesser General Public License for more details. 4622+ 4623+ You should have received a copy of the GNU Lesser General Public 4624+ License along with the GNU C Library; if not, see 4625+ <https://www.gnu.org/licenses/>. */ 4626+ 4627+#include <stdbool.h> 4628+#include <support/check.h> 4629+#include <support/xdlfcn.h> 4630+#include <ctype.h> 4631+ 4632+static int 4633+do_test (void) 4634+{ 4635+ void *handle = xdlopen ("tst-dlopen-tlsreinitmod1.so", RTLD_NOW); 4636+ 4637+ bool *tlsreinitmod3_tested = xdlsym (handle, "tlsreinitmod3_tested"); 4638+ TEST_VERIFY (*tlsreinitmod3_tested); 4639+ 4640+ xdlclose (handle); 4641+ 4642+ /* This crashes if the libc.so.6 TLS image has been reverted. */ 4643+ TEST_VERIFY (!isupper ('@')); 4644+ 4645+ return 0; 4646+} 4647+ 4648+#include <support/test-driver.c> 4649diff --git a/elf/tst-dlopen-tlsreinit2.c b/elf/tst-dlopen-tlsreinit2.c 4650new file mode 100644 4651index 0000000000..90ad2c7713 4652--- /dev/null 4653+++ b/elf/tst-dlopen-tlsreinit2.c 4654@@ -0,0 +1,39 @@ 4655+/* Test that dlopen preserves already accessed TLS (bug 31717). 4656+ Variant with initially-linked modules. 4657+ Copyright (C) 2024 Free Software Foundation, Inc. 4658+ This file is part of the GNU C Library. 4659+ 4660+ The GNU C Library is free software; you can redistribute it and/or 4661+ modify it under the terms of the GNU Lesser General Public 4662+ License as published by the Free Software Foundation; either 4663+ version 2.1 of the License, or (at your option) any later version. 4664+ 4665+ The GNU C Library is distributed in the hope that it will be useful, 4666+ but WITHOUT ANY WARRANTY; without even the implied warranty of 4667+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4668+ Lesser General Public License for more details. 4669+ 4670+ You should have received a copy of the GNU Lesser General Public 4671+ License along with the GNU C Library; if not, see 4672+ <https://www.gnu.org/licenses/>. */ 4673+ 4674+#include <ctype.h> 4675+#include <stdbool.h> 4676+#include <support/check.h> 4677+#include <support/xdlfcn.h> 4678+ 4679+ 4680+static int 4681+do_test (void) 4682+{ 4683+ /* Defined in tst-dlopen-tlsreinitmod3.so. */ 4684+ extern bool tlsreinitmod3_tested; 4685+ TEST_VERIFY (tlsreinitmod3_tested); 4686+ 4687+ /* This crashes if the libc.so.6 TLS image has been reverted. */ 4688+ TEST_VERIFY (!isupper ('@')); 4689+ 4690+ return 0; 4691+} 4692+ 4693+#include <support/test-driver.c> 4694diff --git a/elf/tst-dlopen-tlsreinit3.c b/elf/tst-dlopen-tlsreinit3.c 4695new file mode 100644 4696index 0000000000..79bd585aff 4697--- /dev/null 4698+++ b/elf/tst-dlopen-tlsreinit3.c 4699@@ -0,0 +1,2 @@ 4700+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */ 4701+#include "tst-dlopen-tlsreinit1.c" 4702diff --git a/elf/tst-dlopen-tlsreinit4.c b/elf/tst-dlopen-tlsreinit4.c 4703new file mode 100644 4704index 0000000000..344c9211ab 4705--- /dev/null 4706+++ b/elf/tst-dlopen-tlsreinit4.c 4707@@ -0,0 +1,2 @@ 4708+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */ 4709+#include "tst-dlopen-tlsreinit2.c" 4710diff --git a/elf/tst-dlopen-tlsreinitmod1.c b/elf/tst-dlopen-tlsreinitmod1.c 4711new file mode 100644 4712index 0000000000..354cc3de51 4713--- /dev/null 4714+++ b/elf/tst-dlopen-tlsreinitmod1.c 4715@@ -0,0 +1,20 @@ 4716+/* Test that dlopen preserves already accessed TLS (bug 31717), module 1. 4717+ Copyright (C) 2024 Free Software Foundation, Inc. 4718+ This file is part of the GNU C Library. 4719+ 4720+ The GNU C Library is free software; you can redistribute it and/or 4721+ modify it under the terms of the GNU Lesser General Public 4722+ License as published by the Free Software Foundation; either 4723+ version 2.1 of the License, or (at your option) any later version. 4724+ 4725+ The GNU C Library is distributed in the hope that it will be useful, 4726+ but WITHOUT ANY WARRANTY; without even the implied warranty of 4727+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4728+ Lesser General Public License for more details. 4729+ 4730+ You should have received a copy of the GNU Lesser General Public 4731+ License along with the GNU C Library; if not, see 4732+ <https://www.gnu.org/licenses/>. */ 4733+ 4734+/* This module triggers loading of tst-dlopen-tlsreinitmod2.so and 4735+ tst-dlopen-tlsreinitmod3.so. */ 4736diff --git a/elf/tst-dlopen-tlsreinitmod2.c b/elf/tst-dlopen-tlsreinitmod2.c 4737new file mode 100644 4738index 0000000000..677e69bd35 4739--- /dev/null 4740+++ b/elf/tst-dlopen-tlsreinitmod2.c 4741@@ -0,0 +1,30 @@ 4742+/* Test that dlopen preserves already accessed TLS (bug 31717), module 2. 4743+ Copyright (C) 2024 Free Software Foundation, Inc. 4744+ This file is part of the GNU C Library. 4745+ 4746+ The GNU C Library is free software; you can redistribute it and/or 4747+ modify it under the terms of the GNU Lesser General Public 4748+ License as published by the Free Software Foundation; either 4749+ version 2.1 of the License, or (at your option) any later version. 4750+ 4751+ The GNU C Library is distributed in the hope that it will be useful, 4752+ but WITHOUT ANY WARRANTY; without even the implied warranty of 4753+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4754+ Lesser General Public License for more details. 4755+ 4756+ You should have received a copy of the GNU Lesser General Public 4757+ License along with the GNU C Library; if not, see 4758+ <https://www.gnu.org/licenses/>. */ 4759+ 4760+#include <stdio.h> 4761+ 4762+/* Defined in tst-dlopen-tlsreinitmod3.so. This an underlinked symbol 4763+ dependency. */ 4764+extern void call_tlsreinitmod3 (void); 4765+ 4766+static void __attribute__ ((constructor)) 4767+tlsreinitmod2_init (void) 4768+{ 4769+ puts ("info: constructor of tst-dlopen-tlsreinitmod2.so invoked"); 4770+ call_tlsreinitmod3 (); 4771+} 4772diff --git a/elf/tst-dlopen-tlsreinitmod3.c b/elf/tst-dlopen-tlsreinitmod3.c 4773new file mode 100644 4774index 0000000000..ef769c5131 4775--- /dev/null 4776+++ b/elf/tst-dlopen-tlsreinitmod3.c 4777@@ -0,0 +1,102 @@ 4778+/* Test that dlopen preserves already accessed TLS (bug 31717), module 3. 4779+ Copyright (C) 2024 Free Software Foundation, Inc. 4780+ This file is part of the GNU C Library. 4781+ 4782+ The GNU C Library is free software; you can redistribute it and/or 4783+ modify it under the terms of the GNU Lesser General Public 4784+ License as published by the Free Software Foundation; either 4785+ version 2.1 of the License, or (at your option) any later version. 4786+ 4787+ The GNU C Library is distributed in the hope that it will be useful, 4788+ but WITHOUT ANY WARRANTY; without even the implied warranty of 4789+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4790+ Lesser General Public License for more details. 4791+ 4792+ You should have received a copy of the GNU Lesser General Public 4793+ License along with the GNU C Library; if not, see 4794+ <https://www.gnu.org/licenses/>. */ 4795+ 4796+#include <dlfcn.h> 4797+#include <stdbool.h> 4798+#include <stdio.h> 4799+#include <unistd.h> 4800+ 4801+/* Used to verify from the main program that the test ran. */ 4802+bool tlsreinitmod3_tested; 4803+ 4804+/* This TLS variable must not revert back to the initial state after 4805+ dlopen. */ 4806+static __thread int tlsreinitmod3_state = 1; 4807+ 4808+/* Set from the ELF constructor during dlopen. */ 4809+static bool tlsreinitmod3_constructed; 4810+ 4811+/* Second half of test, behind a compiler barrier. The compiler 4812+ barrier is necessary to prevent carrying over TLS address 4813+ information from call_tlsreinitmod3 to call_tlsreinitmod3_tail. */ 4814+void call_tlsreinitmod3_tail (void *self) __attribute__ ((weak)); 4815+ 4816+/* Called from tst-dlopen-tlsreinitmod2.so. */ 4817+void 4818+call_tlsreinitmod3 (void) 4819+{ 4820+ printf ("info: call_tlsreinitmod3 invoked (state=%d)\n", 4821+ tlsreinitmod3_state); 4822+ 4823+ if (tlsreinitmod3_constructed) 4824+ { 4825+ puts ("error: call_tlsreinitmod3 called after ELF constructor"); 4826+ fflush (stdout); 4827+ /* Cannot rely on test harness due to dynamic linking. */ 4828+ _exit (1); 4829+ } 4830+ 4831+ tlsreinitmod3_state = 2; 4832+ 4833+ /* Self-dlopen. This will run the ELF constructor. */ 4834+ void *self = dlopen ("tst-dlopen-tlsreinitmod3.so", RTLD_NOW); 4835+ if (self == NULL) 4836+ { 4837+ printf ("error: dlopen: %s\n", dlerror ()); 4838+ fflush (stdout); 4839+ /* Cannot rely on test harness due to dynamic linking. */ 4840+ _exit (1); 4841+ } 4842+ 4843+ call_tlsreinitmod3_tail (self); 4844+} 4845+ 4846+void 4847+call_tlsreinitmod3_tail (void *self) 4848+{ 4849+ printf ("info: dlopen returned in tlsreinitmod3 (state=%d)\n", 4850+ tlsreinitmod3_state); 4851+ 4852+ if (!tlsreinitmod3_constructed) 4853+ { 4854+ puts ("error: dlopen did not call tlsreinitmod3 ELF constructor"); 4855+ fflush (stdout); 4856+ /* Cannot rely on test harness due to dynamic linking. */ 4857+ _exit (1); 4858+ } 4859+ 4860+ if (tlsreinitmod3_state != 2) 4861+ { 4862+ puts ("error: TLS state reverted in tlsreinitmod3"); 4863+ fflush (stdout); 4864+ /* Cannot rely on test harness due to dynamic linking. */ 4865+ _exit (1); 4866+ } 4867+ 4868+ dlclose (self); 4869+ 4870+ /* Signal test completion to the main program. */ 4871+ tlsreinitmod3_tested = true; 4872+} 4873+ 4874+static void __attribute__ ((constructor)) 4875+tlsreinitmod3_init (void) 4876+{ 4877+ puts ("info: constructor of tst-dlopen-tlsreinitmod3.so invoked"); 4878+ tlsreinitmod3_constructed = true; 4879+} 4880diff --git a/include/link.h b/include/link.h 4881index cb0d7d8e2f..5ed445d5a6 100644 4882--- a/include/link.h 4883+++ b/include/link.h 4884@@ -212,6 +212,7 @@ struct link_map 4885 unsigned int l_find_object_processed:1; /* Zero if _dl_find_object_update 4886 needs to process this 4887 lt_library map. */ 4888+ unsigned int l_tls_in_slotinfo:1; /* TLS slotinfo updated in dlopen. */ 4889 4890 /* NODELETE status of the map. Only valid for maps of type 4891 lt_loaded. Lazy binding sets l_nodelete_active directly, 4892diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h 4893index 154efb0e19..259ce2e7d6 100644 4894--- a/sysdeps/generic/ldsodefs.h 4895+++ b/sysdeps/generic/ldsodefs.h 4896@@ -1239,13 +1239,7 @@ extern void *_dl_open (const char *name, int mode, const void *caller, 4897 extern int _dl_scope_free (void *) attribute_hidden; 4898 4899 4900-/* Add module to slot information data. If DO_ADD is false, only the 4901- required memory is allocated. Must be called with GL 4902- (dl_load_tls_lock) acquired. If the function has already been called 4903- for the link map L with !do_add, then this function will not raise 4904- an exception, otherwise it is possible that it encounters a memory 4905- allocation failure. */ 4906-extern void _dl_add_to_slotinfo (struct link_map *l, bool do_add) 4907+extern bool _dl_add_to_slotinfo (struct link_map *l, bool do_add) 4908 attribute_hidden; 4909 4910 /* Update slot information data for at least the generation of the 4911 4912commit f4a9b6e97bf05cf5a41907e55901f7e9afaafd4d 4913Author: Florian Weimer <fweimer@redhat.com> 4914Date: Mon Sep 9 21:10:23 2024 +0200 4915 4916 elf: Fix tst-dlopen-tlsreinit1.out test dependency 4917 4918 Fixes commit 5097cd344fd243fb8deb6dec96e8073753f962f9 4919 ("elf: Avoid re-initializing already allocated TLS in dlopen 4920 (bug 31717)"). 4921 4922 Reported-by: Patsy Griffin <patsy@redhat.com> 4923 Reviewed-by: Patsy Griffin <patsy@redhat.com> 4924 (cherry picked from commit e82a7cb1622bff08d8e3a144d7c5516a088f1cbc) 4925 4926diff --git a/elf/Makefile b/elf/Makefile 4927index a03c6520d8..dc686c3bff 100644 4928--- a/elf/Makefile 4929+++ b/elf/Makefile 4930@@ -3141,7 +3141,7 @@ $(objpfx)tst-dlopen-tlsreinit4: \ 4931 # tst-dlopen-tlsreinitmod3.so. The dependency is provided via 4932 # $(objpfx)tst-dlopen-tlsreinitmod1.so. 4933 tst-dlopen-tlsreinitmod2.so-no-z-defs = yes 4934-$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \ 4935+$(objpfx)tst-dlopen-tlsreinit1.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \ 4936 $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so 4937 # Reuse an audit module which provides ample debug logging. 4938 $(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so 4939 4940commit adfb14e71f240a6bc2a4cbd6e6c50cc3fa1bcc3b 4941Author: Florian Weimer <fweimer@redhat.com> 4942Date: Tue Sep 10 12:40:27 2024 +0200 4943 4944 debug: Fix read error handling in pcprofiledump 4945 4946 The reading loops did not check for read failures. Addresses 4947 a static analysis report. 4948 4949 Manually tested by compiling a program with the GCC's 4950 -finstrument-functions option, running it with 4951 “LD_PRELOAD=debug/libpcprofile.so PCPROFILE_OUTPUT=output-file”, 4952 and reviewing the output of “debug/pcprofiledump output-file”. 4953 4954 (cherry picked from commit 89b088bf70c651c231bf27e644270d093b8f144a) 4955 4956diff --git a/debug/pcprofiledump.c b/debug/pcprofiledump.c 4957index 049a9c2744..94530f0cf9 100644 4958--- a/debug/pcprofiledump.c 4959+++ b/debug/pcprofiledump.c 4960@@ -75,6 +75,44 @@ static struct argp argp = 4961 options, parse_opt, args_doc, doc, NULL, more_help 4962 }; 4963 4964+/* Try to read SIZE bytes from FD and store them on BUF. Terminate 4965+ the process upon read error. Also terminate the process if less 4966+ than SIZE bytes are remaining in the file. If !IN_HEADER, do not 4967+ terminate the process if the end of the file is encountered 4968+ immediately, before any bytes are read. 4969+ 4970+ Returns true if SIZE bytes have been read, and false if no bytes 4971+ have been read due to an end-of-file condition. */ 4972+static bool 4973+read_exactly (int fd, void *buffer, size_t size, bool in_header) 4974+{ 4975+ char *p = buffer; 4976+ char *end = p + size; 4977+ while (p < end) 4978+ { 4979+ ssize_t ret = TEMP_FAILURE_RETRY (read (fd, p, end - p)); 4980+ if (ret < 0) 4981+ { 4982+ if (in_header) 4983+ error (EXIT_FAILURE, errno, _("cannot read header")); 4984+ else 4985+ error (EXIT_FAILURE, errno, _("cannot read pointer pair")); 4986+ } 4987+ if (ret == 0) 4988+ { 4989+ if (p == buffer && !in_header) 4990+ /* Nothing has been read. */ 4991+ return false; 4992+ if (in_header) 4993+ error (EXIT_FAILURE, 0, _("unexpected end of file in header")); 4994+ else 4995+ error (EXIT_FAILURE, 0, 4996+ _("unexpected end of file in pointer pair")); 4997+ } 4998+ p += ret; 4999+ } 5000+ return true; 5001+} 5002 5003 int 5004 main (int argc, char *argv[]) 5005@@ -110,8 +148,7 @@ main (int argc, char *argv[]) 5006 /* Read the first 4-byte word. It contains the information about 5007 the word size and the endianness. */ 5008 uint32_t word; 5009- if (TEMP_FAILURE_RETRY (read (fd, &word, 4)) != 4) 5010- error (EXIT_FAILURE, errno, _("cannot read header")); 5011+ read_exactly (fd, &word, sizeof (word), true); 5012 5013 /* Check whether we have to swap the byte order. */ 5014 int must_swap = (word & 0x0fffffff) == bswap_32 (0xdeb00000); 5015@@ -121,56 +158,30 @@ main (int argc, char *argv[]) 5016 /* We have two loops, one for 32 bit pointers, one for 64 bit pointers. */ 5017 if (word == 0xdeb00004) 5018 { 5019- union 5020- { 5021- uint32_t ptrs[2]; 5022- char bytes[8]; 5023- } pair; 5024+ uint32_t ptrs[2]; 5025 5026 while (1) 5027 { 5028- size_t len = sizeof (pair); 5029- size_t n; 5030- 5031- while (len > 0 5032- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len], 5033- len))) != 0) 5034- len -= n; 5035- 5036- if (len != 0) 5037- /* Nothing to read. */ 5038+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false)) 5039 break; 5040 5041 printf ("this = %#010" PRIx32 ", caller = %#010" PRIx32 "\n", 5042- must_swap ? bswap_32 (pair.ptrs[0]) : pair.ptrs[0], 5043- must_swap ? bswap_32 (pair.ptrs[1]) : pair.ptrs[1]); 5044+ must_swap ? bswap_32 (ptrs[0]) : ptrs[0], 5045+ must_swap ? bswap_32 (ptrs[1]) : ptrs[1]); 5046 } 5047 } 5048 else if (word == 0xdeb00008) 5049 { 5050- union 5051- { 5052- uint64_t ptrs[2]; 5053- char bytes[16]; 5054- } pair; 5055+ uint64_t ptrs[2]; 5056 5057 while (1) 5058 { 5059- size_t len = sizeof (pair); 5060- size_t n; 5061- 5062- while (len > 0 5063- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len], 5064- len))) != 0) 5065- len -= n; 5066- 5067- if (len != 0) 5068- /* Nothing to read. */ 5069+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false)) 5070 break; 5071 5072 printf ("this = %#018" PRIx64 ", caller = %#018" PRIx64 "\n", 5073- must_swap ? bswap_64 (pair.ptrs[0]) : pair.ptrs[0], 5074- must_swap ? bswap_64 (pair.ptrs[1]) : pair.ptrs[1]); 5075+ must_swap ? bswap_64 (ptrs[0]) : ptrs[0], 5076+ must_swap ? bswap_64 (ptrs[1]) : ptrs[1]); 5077 } 5078 } 5079 else 5080 5081commit 7073164add3b874cf0c19ca0fb84236f6bb0985d 5082Author: Siddhesh Poyarekar <siddhesh@sourceware.org> 5083Date: Tue Sep 3 14:58:33 2024 -0400 5084 5085 libio: Attempt wide backup free only for non-legacy code 5086 5087 _wide_data and _mode are not available in legacy code, so do not attempt 5088 to free the wide backup buffer in legacy code. 5089 5090 Resolves: BZ #32137 and BZ #27821 5091 5092 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> 5093 Reviewed-by: Florian Weimer <fweimer@redhat.com> 5094 (cherry picked from commit ae4d44b1d501421ad9a3af95279b8f4d1546f1ce) 5095 5096diff --git a/NEWS b/NEWS 5097index 5b20efbf6c..9033335db1 100644 5098--- a/NEWS 5099+++ b/NEWS 5100@@ -9,12 +9,14 @@ Version 2.40.1 5101 5102 The following bugs are resolved with this release: 5103 5104+ [27821] ungetc: Fix backup buffer leak on program exit 5105 [30081] resolv: Do not wait for non-existing second DNS response after error 5106 [31717] elf: Avoid re-initializing already allocated TLS in dlopen 5107 [31890] resolv: Allow short error responses to match any DNS query 5108 [31968] mremap implementation in C does not handle arguments correctly 5109 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces 5110 [32052] Name space violation in fortify wrappers 5111+ [32137] libio: Attempt wide backup free only for non-legacy code 5112 5113 Version 2.40 5114 5115diff --git a/libio/genops.c b/libio/genops.c 5116index 35d8b30710..6f20d49669 100644 5117--- a/libio/genops.c 5118+++ b/libio/genops.c 5119@@ -819,7 +819,7 @@ _IO_unbuffer_all (void) 5120 /* Free up the backup area if it was ever allocated. */ 5121 if (_IO_have_backup (fp)) 5122 _IO_free_backup_area (fp); 5123- if (fp->_mode > 0 && _IO_have_wbackup (fp)) 5124+ if (!legacy && fp->_mode > 0 && _IO_have_wbackup (fp)) 5125 _IO_free_wbackup_area (fp); 5126 5127 if (! (fp->_flags & _IO_UNBUFFERED) 5128 5129commit 77018fd9f99f86a354387219fdf099915857a527 5130Author: Sergey Kolosov <skolosov@redhat.com> 5131Date: Wed Sep 25 15:51:23 2024 +0200 5132 5133 stdio-common: Add new test for fdopen 5134 5135 This commit adds fdopen test with all modes. 5136 Reviewed-by: DJ Delorie <dj@redhat.com> 5137 5138 (cherry picked from commit 1d72fa3cfa046f7293421a7e58f2a272474ea901) 5139 5140diff --git a/stdio-common/Makefile b/stdio-common/Makefile 5141index a91754f52d..5af53d61fd 100644 5142--- a/stdio-common/Makefile 5143+++ b/stdio-common/Makefile 5144@@ -207,6 +207,7 @@ tests := \ 5145 tst-cookie \ 5146 tst-dprintf-length \ 5147 tst-fdopen \ 5148+ tst-fdopen2 \ 5149 tst-ferror \ 5150 tst-fgets \ 5151 tst-fileno \ 5152diff --git a/stdio-common/tst-fdopen2.c b/stdio-common/tst-fdopen2.c 5153new file mode 100644 5154index 0000000000..0c6625f258 5155--- /dev/null 5156+++ b/stdio-common/tst-fdopen2.c 5157@@ -0,0 +1,246 @@ 5158+/* Test the fdopen function. 5159+ Copyright (C) 2024 Free Software Foundation, Inc. 5160+ This file is part of the GNU C Library. 5161+ 5162+ The GNU C Library is free software; you can redistribute it and/or 5163+ modify it under the terms of the GNU Lesser General Public 5164+ License as published by the Free Software Foundation; either 5165+ version 2.1 of the License, or (at your option) any later version. 5166+ 5167+ The GNU C Library is distributed in the hope that it will be useful, 5168+ but WITHOUT ANY WARRANTY; without even the implied warranty of 5169+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 5170+ Lesser General Public License for more details. 5171+ 5172+ You should have received a copy of the GNU Lesser General Public 5173+ License along with the GNU C Library; if not, see 5174+ <https://www.gnu.org/licenses/>. */ 5175+ 5176+#include <stdio.h> 5177+#include <errno.h> 5178+#include <fcntl.h> 5179+#include <support/check.h> 5180+#include <support/support.h> 5181+#include <support/xunistd.h> 5182+#include <support/temp_file.h> 5183+ 5184+char *tmp_dir; 5185+char *path_to_file; 5186+ 5187+void 5188+prepare_tmp_dir (void) 5189+{ 5190+ tmp_dir = support_create_temp_directory ("tst-fdopen2"); 5191+ path_to_file = xasprintf ("%s/tst-fdopen2.txt", tmp_dir); 5192+} 5193+ 5194+/* open temp file descriptor with mode. */ 5195+int 5196+open_tmp_fd (int mode) 5197+{ 5198+ int fd = xopen (path_to_file, mode, 0644); 5199+ return fd; 5200+} 5201+ 5202+ 5203+/* close and remove temp file with close. */ 5204+void 5205+close_tmp_fd (int fd) 5206+{ 5207+ xclose (fd); 5208+ xunlink (path_to_file); 5209+} 5210+ 5211+/* close and remove temp file with fclose. */ 5212+void 5213+close_tmp_fp (FILE *fp) 5214+{ 5215+ fclose (fp); 5216+ xunlink (path_to_file); 5217+} 5218+ 5219+/* test "w" fdopen mode. */ 5220+void 5221+do_test_fdopen_w (void) 5222+{ 5223+ int fd, ret; 5224+ FILE *fp; 5225+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_TRUNC); 5226+ 5227+ /* test mode mismatch. */ 5228+ fp = fdopen (fd, "r"); 5229+ if (fp != NULL || errno != EINVAL) 5230+ { 5231+ close_tmp_fd (fd); 5232+ FAIL_EXIT1 ("fdopen (%d, r) should fail with EINVAL: %m", fd); 5233+ } 5234+ 5235+ fp = fdopen (fd, "w"); 5236+ if (fp == NULL) 5237+ { 5238+ close_tmp_fd (fd); 5239+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd); 5240+ } 5241+ 5242+ const void *buf = "AAAA"; 5243+ ret = fwrite (buf, 1, 4, fp); 5244+ if (ret != 4) 5245+ { 5246+ close_tmp_fp (fp); 5247+ FAIL_EXIT1 ("fwrite (): %m"); 5248+ } 5249+ 5250+ unsigned char buf2[4]; 5251+ rewind (fp); 5252+ clearerr (fp); 5253+ /* fread should fail in "w" mode */ 5254+ ret = fread (buf2, 1, 4, fp); 5255+ if (ret != 0 || ferror (fp) == 0) 5256+ { 5257+ close_tmp_fp (fp); 5258+ FAIL_EXIT1 ("fread should fail in \"w\" mode"); 5259+ } 5260+ 5261+ fclose (fp); 5262+} 5263+ 5264+/* test "r" fdopen mode. */ 5265+void 5266+do_test_fdopen_r (void) 5267+{ 5268+ int fd, ret; 5269+ FILE *fp; 5270+ fd = open_tmp_fd (O_RDONLY); 5271+ 5272+ /* test mode mismatch. */ 5273+ fp = fdopen (fd, "w"); 5274+ if (fp != NULL || errno != EINVAL) 5275+ { 5276+ close_tmp_fd (fd); 5277+ FAIL_EXIT1 ("fdopen (%d, w) should fail with EINVAL: %m", fd); 5278+ } 5279+ 5280+ fp = fdopen (fd, "r"); 5281+ if (fp == NULL) 5282+ { 5283+ close_tmp_fd (fd); 5284+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd); 5285+ } 5286+ 5287+ const void *buf = "BBBB"; 5288+ /* fwrite should fail in "r" mode. */ 5289+ ret = fwrite (buf, 1, 4, fp); 5290+ if (ret != 0 || ferror (fp) == 0) 5291+ { 5292+ close_tmp_fp (fp); 5293+ FAIL_EXIT1 ("fwrite should fail in \"r\" mode"); 5294+ } 5295+ 5296+ unsigned char buf2[4]; 5297+ ret = fread (buf2, 1, 4, fp); 5298+ if (ret != 4) 5299+ { 5300+ close_tmp_fp (fp); 5301+ FAIL_EXIT1 ("fread (): %m"); 5302+ } 5303+ 5304+ fclose (fp); 5305+} 5306+ 5307+/* test "a" fdopen mode. */ 5308+void 5309+do_test_fdopen_a (void) 5310+{ 5311+ int fd, ret; 5312+ FILE *fp; 5313+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_APPEND); 5314+ 5315+ /* test mode mismatch. */ 5316+ fp = fdopen (fd, "r+"); 5317+ if (fp != NULL || errno != EINVAL) 5318+ { 5319+ close_tmp_fd (fd); 5320+ FAIL_EXIT1 ("fdopen (%d, \"r+\") should fail with EINVAL: %m", fd); 5321+ } 5322+ 5323+ fp = fdopen (fd, "a"); 5324+ if (fp == NULL) 5325+ { 5326+ close_tmp_fd (fd); 5327+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd); 5328+ } 5329+ 5330+ const void *buf = "CCCC"; 5331+ ret = fwrite (buf, 1, 4, fp); 5332+ if (ret != 4) 5333+ { 5334+ close_tmp_fp (fp); 5335+ FAIL_EXIT1 ("fwrite (): %m"); 5336+ } 5337+ 5338+ /* fread should fail in "a" mode. */ 5339+ unsigned char buf2[4]; 5340+ clearerr (fp); 5341+ ret = fread (buf2, 1, 4, fp); 5342+ if (ret != 0 || ferror (fp) == 0) 5343+ { 5344+ close_tmp_fp (fp); 5345+ FAIL_EXIT1 ("fread should fail \"a\" mode"); 5346+ } 5347+ 5348+ fclose (fp); 5349+} 5350+ 5351+void 5352+do_test_fdopen_mode (int mode, const char *fmode) 5353+{ 5354+ int fd, ret; 5355+ FILE *fp; 5356+ fd = open_tmp_fd (mode); 5357+ 5358+ fp = fdopen (fd, fmode); 5359+ if (fp == NULL) 5360+ { 5361+ close_tmp_fd (fd); 5362+ FAIL_EXIT1 ("fdopen (%d, %s): %m", fd, fmode); 5363+ } 5364+ 5365+ const void *buf = "EEEE"; 5366+ ret = fwrite (buf, 1, 4, fp); 5367+ if (ret != 4) 5368+ { 5369+ close_tmp_fp (fp); 5370+ FAIL_EXIT1 ("fwrite () in mode:%s returns %d: %m", fmode, ret); 5371+ } 5372+ 5373+ rewind (fp); 5374+ unsigned char buf2[4]; 5375+ ret = fread (buf2, 1, 4, fp); 5376+ if (ret != 4) 5377+ { 5378+ close_tmp_fp (fp); 5379+ FAIL_EXIT1 ("fread () in mode:%s returns %d: %m", fmode, ret); 5380+ } 5381+ 5382+ fclose (fp); 5383+} 5384+ 5385+static int 5386+do_test (void) 5387+{ 5388+ 5389+ prepare_tmp_dir (); 5390+ 5391+ do_test_fdopen_w (); 5392+ do_test_fdopen_r (); 5393+ do_test_fdopen_a (); 5394+ 5395+ /* test r+ w+ a+ fdopen modes. */ 5396+ do_test_fdopen_mode (O_RDWR, "r+"); 5397+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_TRUNC, "w+"); 5398+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_APPEND, "a+"); 5399+ xunlink (path_to_file); 5400+ return 0; 5401+} 5402+ 5403+#include <support/test-driver.c> 5404 5405commit 61b6464f8d72aef520ee769a2ae317b4f68d5e1d 5406Author: Joseph Myers <josmyers@redhat.com> 5407Date: Tue Sep 24 14:06:22 2024 +0000 5408 5409 Add tests of fread 5410 5411 There seem to be no glibc tests specifically for the fread function. 5412 Add basic tests of that function. 5413 5414 Tested for x86_64. 5415 5416 (cherry picked from commit d14c977c65aac7db35bb59380ef99d6582c4f930) 5417 5418diff --git a/stdio-common/Makefile b/stdio-common/Makefile 5419index 5af53d61fd..3396090be1 100644 5420--- a/stdio-common/Makefile 5421+++ b/stdio-common/Makefile 5422@@ -217,6 +217,7 @@ tests := \ 5423 tst-fmemopen4 \ 5424 tst-fphex \ 5425 tst-fphex-wide \ 5426+ tst-fread \ 5427 tst-fseek \ 5428 tst-fwrite \ 5429 tst-gets \ 5430diff --git a/stdio-common/tst-fread.c b/stdio-common/tst-fread.c 5431new file mode 100644 5432index 0000000000..4d9a7895f6 5433--- /dev/null 5434+++ b/stdio-common/tst-fread.c 5435@@ -0,0 +1,134 @@ 5436+/* Test fread. 5437+ Copyright (C) 2024 Free Software Foundation, Inc. 5438+ This file is part of the GNU C Library. 5439+ 5440+ The GNU C Library is free software; you can redistribute it and/or 5441+ modify it under the terms of the GNU Lesser General Public 5442+ License as published by the Free Software Foundation; either 5443+ version 2.1 of the License, or (at your option) any later version. 5444+ 5445+ The GNU C Library is distributed in the hope that it will be useful, 5446+ but WITHOUT ANY WARRANTY; without even the implied warranty of 5447+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 5448+ Lesser General Public License for more details. 5449+ 5450+ You should have received a copy of the GNU Lesser General Public 5451+ License along with the GNU C Library; if not, see 5452+ <https://www.gnu.org/licenses/>. */ 5453+ 5454+#include <stdio.h> 5455+#include <stdlib.h> 5456+#include <string.h> 5457+ 5458+#include <support/check.h> 5459+#include <support/support.h> 5460+#include <support/temp_file.h> 5461+#include <support/test-driver.h> 5462+#include <support/xstdio.h> 5463+#include <support/xunistd.h> 5464+ 5465+int 5466+do_test (void) 5467+{ 5468+ char *temp_dir = support_create_temp_directory ("tst-fread"); 5469+ char *file1 = xasprintf ("%s/file1", temp_dir); 5470+ support_write_file_string (file1, "file1"); 5471+ add_temp_file (file1); 5472+ FILE *fp; 5473+ size_t ret; 5474+ char buf[1024]; 5475+ 5476+ verbose_printf ("test single-byte reads\n"); 5477+ fp = xfopen (file1, "r"); 5478+ memset (buf, 0, sizeof buf); 5479+ ret = fread (buf, 1, 2, fp); 5480+ TEST_COMPARE (ret, 2); 5481+ TEST_COMPARE (buf[0], 'f'); 5482+ TEST_COMPARE (buf[1], 'i'); 5483+ TEST_COMPARE (feof (fp), 0); 5484+ TEST_COMPARE (ftell (fp), 2); 5485+ memset (buf, 0, sizeof buf); 5486+ ret = fread (buf, 1, 3, fp); 5487+ TEST_COMPARE (ret, 3); 5488+ TEST_COMPARE (buf[0], 'l'); 5489+ TEST_COMPARE (buf[1], 'e'); 5490+ TEST_COMPARE (buf[2], '1'); 5491+ TEST_COMPARE (ftell (fp), 5); 5492+ TEST_COMPARE (feof (fp), 0); 5493+ memset (buf, 0, sizeof buf); 5494+ ret = fread (buf, 1, 1, fp); 5495+ TEST_COMPARE (ret, 0); 5496+ TEST_COMPARE (!!feof (fp), 1); 5497+ TEST_COMPARE (ferror (fp), 0); 5498+ TEST_COMPARE (ftell (fp), 5); 5499+ xfclose (fp); 5500+ 5501+ verbose_printf ("test single-byte reads, EOF part way through\n"); 5502+ fp = xfopen (file1, "r"); 5503+ memset (buf, 0, sizeof buf); 5504+ ret = fread (buf, 1, sizeof buf, fp); 5505+ TEST_COMPARE (ret, 5); 5506+ TEST_COMPARE (buf[0], 'f'); 5507+ TEST_COMPARE (buf[1], 'i'); 5508+ TEST_COMPARE (buf[2], 'l'); 5509+ TEST_COMPARE (buf[3], 'e'); 5510+ TEST_COMPARE (buf[4], '1'); 5511+ TEST_COMPARE (!!feof (fp), 1); 5512+ TEST_COMPARE (ferror (fp), 0); 5513+ TEST_COMPARE (ftell (fp), 5); 5514+ xfclose (fp); 5515+ 5516+ verbose_printf ("test multi-byte reads\n"); 5517+ fp = xfopen (file1, "r"); 5518+ memset (buf, 0, sizeof buf); 5519+ ret = fread (buf, 2, 2, fp); 5520+ TEST_COMPARE (ret, 2); 5521+ TEST_COMPARE (buf[0], 'f'); 5522+ TEST_COMPARE (buf[1], 'i'); 5523+ TEST_COMPARE (buf[2], 'l'); 5524+ TEST_COMPARE (buf[3], 'e'); 5525+ TEST_COMPARE (feof (fp), 0); 5526+ TEST_COMPARE (ftell (fp), 4); 5527+ memset (buf, 0, sizeof buf); 5528+ ret = fread (buf, 3, 3, fp); 5529+ TEST_COMPARE (ret, 0); 5530+ /* The bytes written for a partial element read are unspecified. */ 5531+ TEST_COMPARE (!!feof (fp), 1); 5532+ TEST_COMPARE (ferror (fp), 0); 5533+ TEST_COMPARE (ftell (fp), 5); 5534+ xfclose (fp); 5535+ 5536+ verbose_printf ("test read error\n"); 5537+ fp = xfopen (file1, "r"); 5538+ xclose (fileno (fp)); 5539+ memset (buf, 0, sizeof buf); 5540+ ret = fread (buf, 1, sizeof buf, fp); 5541+ TEST_COMPARE (ret, 0); 5542+ TEST_COMPARE (feof (fp), 0); 5543+ TEST_COMPARE (!!ferror (fp), 1); 5544+ fclose (fp); 5545+ 5546+ verbose_printf ("test zero size\n"); 5547+ fp = xfopen (file1, "r"); 5548+ ret = fread (buf, 0, SIZE_MAX, fp); 5549+ TEST_COMPARE (ret, 0); 5550+ TEST_COMPARE (feof (fp), 0); 5551+ TEST_COMPARE (ferror (fp), 0); 5552+ TEST_COMPARE (ftell (fp), 0); 5553+ xfclose (fp); 5554+ 5555+ verbose_printf ("test zero items\n"); 5556+ fp = xfopen (file1, "r"); 5557+ ret = fread (buf, SIZE_MAX, 0, fp); 5558+ TEST_COMPARE (ret, 0); 5559+ TEST_COMPARE (feof (fp), 0); 5560+ TEST_COMPARE (ferror (fp), 0); 5561+ TEST_COMPARE (ftell (fp), 0); 5562+ xfclose (fp); 5563+ 5564+ free (temp_dir); 5565+ free (file1); 5566+ return 0; 5567+} 5568+ 5569+#include <support/test-driver.c> 5570 5571commit 9bc76c7ca4d6022fd588c274d139813f99e04f35 5572Author: Joseph Myers <josmyers@redhat.com> 5573Date: Wed Aug 14 17:15:46 2024 +0000 5574 5575 Test errno setting on strtod overflow in tst-strtod-round 5576 5577 We have no tests that errno is set to ERANGE on overflow of 5578 strtod-family functions (we do have some tests for underflow, in 5579 tst-strtod-underflow). Add such tests to tst-strtod-round. 5580 5581 Tested for x86_64. 5582 5583 (cherry picked from commit 207d64feb26279e152c50744e3c37e68491aca99) 5584 5585diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c 5586index 6fba4b5228..c3cc0201d4 100644 5587--- a/stdlib/tst-strtod-round-skeleton.c 5588+++ b/stdlib/tst-strtod-round-skeleton.c 5589@@ -21,6 +21,7 @@ 5590 declared in the headers. */ 5591 #define _LIBC_TEST 1 5592 #define __STDC_WANT_IEC_60559_TYPES_EXT__ 5593+#include <errno.h> 5594 #include <fenv.h> 5595 #include <float.h> 5596 #include <math.h> 5597@@ -205,7 +206,9 @@ struct test { 5598 #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 5599 { \ 5600 feclearexcept (FE_ALL_EXCEPT); \ 5601+ errno = 0; \ 5602 FTYPE f = STRTO (FSUF) (s, NULL); \ 5603+ int new_errno = errno; \ 5604 if (f != expected->FSUF \ 5605 || (copysign ## CSUF) (1.0 ## LSUF, f) \ 5606 != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \ 5607@@ -254,6 +257,14 @@ struct test { 5608 printf ("ignoring this exception error\n"); \ 5609 } \ 5610 } \ 5611+ if (overflow->FSUF && new_errno != ERANGE) \ 5612+ { \ 5613+ printf (FNPFXS "to" #FSUF \ 5614+ " (" STRM ") left errno == %d," \ 5615+ " not %d (ERANGE)\n", \ 5616+ s, new_errno, ERANGE); \ 5617+ result = 1; \ 5618+ } \ 5619 } \ 5620 } 5621 5622 5623commit e06153665fa931e4c7d2a3ecc14e5197e96143a7 5624Author: Joseph Myers <josmyers@redhat.com> 5625Date: Tue Aug 27 12:38:01 2024 +0000 5626 5627 More thoroughly test underflow / errno in tst-strtod-round 5628 5629 Add tests of underflow in tst-strtod-round, and thus also test for 5630 errno being unchanged when there is neither overflow nor underflow. 5631 The errno setting before the function call to test for being unchanged 5632 is adjusted to set errno to 12345 instead of 0, so that any bugs where 5633 strtod sets errno to 0 would be detected. 5634 5635 This doesn't add any new test inputs for tst-strtod-round, and in 5636 particular doesn't cover the edge cases of underflow the way 5637 tst-strtod-underflow does (none of the existing test inputs for 5638 tst-strtod-round actually exercise cases that have underflow with 5639 before-rounding tininess detection but not with after-rounding 5640 tininess detection), but at least it provides some coverage (as per 5641 the recent discussions) that ordinary non-overflowing non-underflowing 5642 inputs to these functions do not set errno. 5643 5644 Tested for x86_64. 5645 5646 (cherry picked from commit d73ed2601b7c3c93c3529149a3d7f7b6177900a8) 5647 5648diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c 5649index e48bf4d6ea..7ce735f81d 100644 5650--- a/stdlib/gen-tst-strtod-round.c 5651+++ b/stdlib/gen-tst-strtod-round.c 5652@@ -46,6 +46,7 @@ static int 5653 string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd) 5654 { 5655 mpfr_clear_overflow (); 5656+ mpfr_clear_underflow (); 5657 #ifdef WORKAROUND 5658 mpfr_t f2; 5659 mpfr_init2 (f2, 100000); 5660@@ -53,12 +54,16 @@ string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd) 5661 int r = mpfr_set (f, f2, rnd); 5662 r |= mpfr_subnormalize (f, r, rnd); 5663 mpfr_clear (f2); 5664- return r0 | r; 5665+ r |= r0; 5666 #else 5667 int r = mpfr_strtofr (f, s, NULL, 0, rnd); 5668 r |= mpfr_subnormalize (f, r, rnd); 5669- return r; 5670 #endif 5671+ if (r == 0) 5672+ /* The MPFR underflow flag is set for exact subnormal results, 5673+ which is not wanted here. */ 5674+ mpfr_clear_underflow (); 5675+ return r; 5676 } 5677 5678 void 5679@@ -70,6 +75,21 @@ print_fp (FILE *fout, mpfr_t f, const char *suffix) 5680 mpfr_fprintf (fout, "\t%Ra%s", f, suffix); 5681 } 5682 5683+static const char * 5684+suffix_to_print (bool overflow, bool underflow, bool underflow_before_rounding, 5685+ bool with_comma) 5686+{ 5687+ if (overflow) 5688+ return with_comma ? ", true, false,\n" : ", true, false"; 5689+ if (underflow) 5690+ return with_comma ? ", false, true,\n" : ", false, true"; 5691+ if (underflow_before_rounding) 5692+ return (with_comma 5693+ ? ", false, !TININESS_AFTER_ROUNDING,\n" 5694+ : ", false, !TININESS_AFTER_ROUNDING"); 5695+ return with_comma ? ", false, false,\n" : ", false, false"; 5696+} 5697+ 5698 static void 5699 round_str (FILE *fout, const char *s, int prec, int emin, int emax, 5700 bool ibm_ld) 5701@@ -80,8 +100,11 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax, 5702 mpfr_set_emin (emin); 5703 mpfr_set_emax (emax); 5704 mpfr_init (f); 5705+ string_to_fp (f, s, MPFR_RNDZ); 5706+ bool underflow_before_rounding = mpfr_underflow_p () != 0; 5707 int r = string_to_fp (f, s, MPFR_RNDD); 5708 bool overflow = mpfr_overflow_p () != 0; 5709+ bool underflow = mpfr_underflow_p () != 0; 5710 if (ibm_ld) 5711 { 5712 assert (prec == 106 && emin == -1073 && emax == 1024); 5713@@ -97,19 +120,27 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax, 5714 } 5715 } 5716 mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true"); 5717- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); 5718+ print_fp (fout, f, 5719+ suffix_to_print (overflow, underflow, underflow_before_rounding, 5720+ true)); 5721 string_to_fp (f, s, MPFR_RNDN); 5722 overflow = (mpfr_overflow_p () != 0 5723 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); 5724- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); 5725+ print_fp (fout, f, 5726+ suffix_to_print (overflow, underflow, underflow_before_rounding, 5727+ true)); 5728 string_to_fp (f, s, MPFR_RNDZ); 5729 overflow = (mpfr_overflow_p () != 0 5730 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); 5731- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); 5732+ print_fp (fout, f, 5733+ suffix_to_print (overflow, underflow, underflow_before_rounding, 5734+ true)); 5735 string_to_fp (f, s, MPFR_RNDU); 5736 overflow = (mpfr_overflow_p () != 0 5737 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); 5738- print_fp (fout, f, overflow ? ", true" : ", false"); 5739+ print_fp (fout, f, 5740+ suffix_to_print (overflow, underflow, underflow_before_rounding, 5741+ false)); 5742 mpfr_clear (f); 5743 if (ibm_ld) 5744 mpfr_clear (max_value); 5745diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h 5746index 8899d15f9b..13e62dd2b0 100644 5747--- a/stdlib/tst-strtod-round-data.h 5748+++ b/stdlib/tst-strtod-round-data.h 5749@@ -2,1852 +2,1852 @@ 5750 static const struct test tests[] = { 5751 TEST ("3.518437208883201171875E+013", 5752 false, 5753- 0x2p+44, false, 5754- 0x2p+44, false, 5755- 0x2p+44, false, 5756- 0x2.000004p+44, false, 5757- false, 5758- 0x2.0000000000002p+44, false, 5759- 0x2.0000000000004p+44, false, 5760- 0x2.0000000000002p+44, false, 5761- 0x2.0000000000004p+44, false, 5762- true, 5763- 0x2.0000000000003p+44, false, 5764- 0x2.0000000000003p+44, false, 5765- 0x2.0000000000003p+44, false, 5766- 0x2.0000000000003p+44, false, 5767- true, 5768- 0x2.0000000000003p+44, false, 5769- 0x2.0000000000003p+44, false, 5770- 0x2.0000000000003p+44, false, 5771- 0x2.0000000000003p+44, false, 5772- true, 5773- 0x2.0000000000003p+44, false, 5774- 0x2.0000000000003p+44, false, 5775- 0x2.0000000000003p+44, false, 5776- 0x2.0000000000003p+44, false, 5777- true, 5778- 0x2.0000000000003p+44, false, 5779- 0x2.0000000000003p+44, false, 5780- 0x2.0000000000003p+44, false, 5781- 0x2.0000000000003p+44, false), 5782+ 0x2p+44, false, false, 5783+ 0x2p+44, false, false, 5784+ 0x2p+44, false, false, 5785+ 0x2.000004p+44, false, false, 5786+ false, 5787+ 0x2.0000000000002p+44, false, false, 5788+ 0x2.0000000000004p+44, false, false, 5789+ 0x2.0000000000002p+44, false, false, 5790+ 0x2.0000000000004p+44, false, false, 5791+ true, 5792+ 0x2.0000000000003p+44, false, false, 5793+ 0x2.0000000000003p+44, false, false, 5794+ 0x2.0000000000003p+44, false, false, 5795+ 0x2.0000000000003p+44, false, false, 5796+ true, 5797+ 0x2.0000000000003p+44, false, false, 5798+ 0x2.0000000000003p+44, false, false, 5799+ 0x2.0000000000003p+44, false, false, 5800+ 0x2.0000000000003p+44, false, false, 5801+ true, 5802+ 0x2.0000000000003p+44, false, false, 5803+ 0x2.0000000000003p+44, false, false, 5804+ 0x2.0000000000003p+44, false, false, 5805+ 0x2.0000000000003p+44, false, false, 5806+ true, 5807+ 0x2.0000000000003p+44, false, false, 5808+ 0x2.0000000000003p+44, false, false, 5809+ 0x2.0000000000003p+44, false, false, 5810+ 0x2.0000000000003p+44, false, false), 5811 TEST ("1.00000005960464477550", 5812 false, 5813- 0x1p+0, false, 5814- 0x1.000002p+0, false, 5815- 0x1p+0, false, 5816- 0x1.000002p+0, false, 5817- false, 5818- 0x1.000001p+0, false, 5819- 0x1.000001p+0, false, 5820- 0x1.000001p+0, false, 5821- 0x1.0000010000001p+0, false, 5822- false, 5823- 0x1.0000010000000002p+0, false, 5824- 0x1.0000010000000002p+0, false, 5825- 0x1.0000010000000002p+0, false, 5826- 0x1.0000010000000004p+0, false, 5827- false, 5828- 0x1.0000010000000002p+0, false, 5829- 0x1.0000010000000002p+0, false, 5830- 0x1.0000010000000002p+0, false, 5831- 0x1.0000010000000004p+0, false, 5832- false, 5833- 0x1.0000010000000002048242f2ffp+0, false, 5834- 0x1.0000010000000002048242f2ff8p+0, false, 5835- 0x1.0000010000000002048242f2ffp+0, false, 5836- 0x1.0000010000000002048242f2ff8p+0, false, 5837- false, 5838- 0x1.0000010000000002048242f2ff66p+0, false, 5839- 0x1.0000010000000002048242f2ff67p+0, false, 5840- 0x1.0000010000000002048242f2ff66p+0, false, 5841- 0x1.0000010000000002048242f2ff67p+0, false), 5842+ 0x1p+0, false, false, 5843+ 0x1.000002p+0, false, false, 5844+ 0x1p+0, false, false, 5845+ 0x1.000002p+0, false, false, 5846+ false, 5847+ 0x1.000001p+0, false, false, 5848+ 0x1.000001p+0, false, false, 5849+ 0x1.000001p+0, false, false, 5850+ 0x1.0000010000001p+0, false, false, 5851+ false, 5852+ 0x1.0000010000000002p+0, false, false, 5853+ 0x1.0000010000000002p+0, false, false, 5854+ 0x1.0000010000000002p+0, false, false, 5855+ 0x1.0000010000000004p+0, false, false, 5856+ false, 5857+ 0x1.0000010000000002p+0, false, false, 5858+ 0x1.0000010000000002p+0, false, false, 5859+ 0x1.0000010000000002p+0, false, false, 5860+ 0x1.0000010000000004p+0, false, false, 5861+ false, 5862+ 0x1.0000010000000002048242f2ffp+0, false, false, 5863+ 0x1.0000010000000002048242f2ff8p+0, false, false, 5864+ 0x1.0000010000000002048242f2ffp+0, false, false, 5865+ 0x1.0000010000000002048242f2ff8p+0, false, false, 5866+ false, 5867+ 0x1.0000010000000002048242f2ff66p+0, false, false, 5868+ 0x1.0000010000000002048242f2ff67p+0, false, false, 5869+ 0x1.0000010000000002048242f2ff66p+0, false, false, 5870+ 0x1.0000010000000002048242f2ff67p+0, false, false), 5871 TEST ("1.0000000596046447755", 5872 false, 5873- 0x1p+0, false, 5874- 0x1.000002p+0, false, 5875- 0x1p+0, false, 5876- 0x1.000002p+0, false, 5877- false, 5878- 0x1.000001p+0, false, 5879- 0x1.000001p+0, false, 5880- 0x1.000001p+0, false, 5881- 0x1.0000010000001p+0, false, 5882- false, 5883- 0x1.0000010000000002p+0, false, 5884- 0x1.0000010000000002p+0, false, 5885- 0x1.0000010000000002p+0, false, 5886- 0x1.0000010000000004p+0, false, 5887- false, 5888- 0x1.0000010000000002p+0, false, 5889- 0x1.0000010000000002p+0, false, 5890- 0x1.0000010000000002p+0, false, 5891- 0x1.0000010000000004p+0, false, 5892- false, 5893- 0x1.0000010000000002048242f2ffp+0, false, 5894- 0x1.0000010000000002048242f2ff8p+0, false, 5895- 0x1.0000010000000002048242f2ffp+0, false, 5896- 0x1.0000010000000002048242f2ff8p+0, false, 5897- false, 5898- 0x1.0000010000000002048242f2ff66p+0, false, 5899- 0x1.0000010000000002048242f2ff67p+0, false, 5900- 0x1.0000010000000002048242f2ff66p+0, false, 5901- 0x1.0000010000000002048242f2ff67p+0, false), 5902+ 0x1p+0, false, false, 5903+ 0x1.000002p+0, false, false, 5904+ 0x1p+0, false, false, 5905+ 0x1.000002p+0, false, false, 5906+ false, 5907+ 0x1.000001p+0, false, false, 5908+ 0x1.000001p+0, false, false, 5909+ 0x1.000001p+0, false, false, 5910+ 0x1.0000010000001p+0, false, false, 5911+ false, 5912+ 0x1.0000010000000002p+0, false, false, 5913+ 0x1.0000010000000002p+0, false, false, 5914+ 0x1.0000010000000002p+0, false, false, 5915+ 0x1.0000010000000004p+0, false, false, 5916+ false, 5917+ 0x1.0000010000000002p+0, false, false, 5918+ 0x1.0000010000000002p+0, false, false, 5919+ 0x1.0000010000000002p+0, false, false, 5920+ 0x1.0000010000000004p+0, false, false, 5921+ false, 5922+ 0x1.0000010000000002048242f2ffp+0, false, false, 5923+ 0x1.0000010000000002048242f2ff8p+0, false, false, 5924+ 0x1.0000010000000002048242f2ffp+0, false, false, 5925+ 0x1.0000010000000002048242f2ff8p+0, false, false, 5926+ false, 5927+ 0x1.0000010000000002048242f2ff66p+0, false, false, 5928+ 0x1.0000010000000002048242f2ff67p+0, false, false, 5929+ 0x1.0000010000000002048242f2ff66p+0, false, false, 5930+ 0x1.0000010000000002048242f2ff67p+0, false, false), 5931 TEST ("1.000000059604644776", 5932 false, 5933- 0x1p+0, false, 5934- 0x1.000002p+0, false, 5935- 0x1p+0, false, 5936- 0x1.000002p+0, false, 5937- false, 5938- 0x1.000001p+0, false, 5939- 0x1.000001p+0, false, 5940- 0x1.000001p+0, false, 5941- 0x1.0000010000001p+0, false, 5942- false, 5943- 0x1.000001000000000ap+0, false, 5944- 0x1.000001000000000cp+0, false, 5945- 0x1.000001000000000ap+0, false, 5946- 0x1.000001000000000cp+0, false, 5947- false, 5948- 0x1.000001000000000ap+0, false, 5949- 0x1.000001000000000cp+0, false, 5950- 0x1.000001000000000ap+0, false, 5951- 0x1.000001000000000cp+0, false, 5952- false, 5953- 0x1.000001000000000b3db12bdc21p+0, false, 5954- 0x1.000001000000000b3db12bdc21p+0, false, 5955- 0x1.000001000000000b3db12bdc21p+0, false, 5956- 0x1.000001000000000b3db12bdc218p+0, false, 5957- false, 5958- 0x1.000001000000000b3db12bdc213cp+0, false, 5959- 0x1.000001000000000b3db12bdc213dp+0, false, 5960- 0x1.000001000000000b3db12bdc213cp+0, false, 5961- 0x1.000001000000000b3db12bdc213dp+0, false), 5962+ 0x1p+0, false, false, 5963+ 0x1.000002p+0, false, false, 5964+ 0x1p+0, false, false, 5965+ 0x1.000002p+0, false, false, 5966+ false, 5967+ 0x1.000001p+0, false, false, 5968+ 0x1.000001p+0, false, false, 5969+ 0x1.000001p+0, false, false, 5970+ 0x1.0000010000001p+0, false, false, 5971+ false, 5972+ 0x1.000001000000000ap+0, false, false, 5973+ 0x1.000001000000000cp+0, false, false, 5974+ 0x1.000001000000000ap+0, false, false, 5975+ 0x1.000001000000000cp+0, false, false, 5976+ false, 5977+ 0x1.000001000000000ap+0, false, false, 5978+ 0x1.000001000000000cp+0, false, false, 5979+ 0x1.000001000000000ap+0, false, false, 5980+ 0x1.000001000000000cp+0, false, false, 5981+ false, 5982+ 0x1.000001000000000b3db12bdc21p+0, false, false, 5983+ 0x1.000001000000000b3db12bdc21p+0, false, false, 5984+ 0x1.000001000000000b3db12bdc21p+0, false, false, 5985+ 0x1.000001000000000b3db12bdc218p+0, false, false, 5986+ false, 5987+ 0x1.000001000000000b3db12bdc213cp+0, false, false, 5988+ 0x1.000001000000000b3db12bdc213dp+0, false, false, 5989+ 0x1.000001000000000b3db12bdc213cp+0, false, false, 5990+ 0x1.000001000000000b3db12bdc213dp+0, false, false), 5991 TEST ("1.000000059604644775", 5992 false, 5993- 0x1p+0, false, 5994- 0x1p+0, false, 5995- 0x1p+0, false, 5996- 0x1.000002p+0, false, 5997- false, 5998- 0x1.000000fffffffp+0, false, 5999- 0x1.000001p+0, false, 6000- 0x1.000000fffffffp+0, false, 6001- 0x1.000001p+0, false, 6002- false, 6003- 0x1.000000fffffffff8p+0, false, 6004- 0x1.000000fffffffff8p+0, false, 6005- 0x1.000000fffffffff8p+0, false, 6006- 0x1.000000fffffffffap+0, false, 6007- false, 6008- 0x1.000000fffffffff8p+0, false, 6009- 0x1.000000fffffffff8p+0, false, 6010- 0x1.000000fffffffff8p+0, false, 6011- 0x1.000000fffffffffap+0, false, 6012- false, 6013- 0x1.000000fffffffff8cb535a09dd8p+0, false, 6014- 0x1.000000fffffffff8cb535a09dd8p+0, false, 6015- 0x1.000000fffffffff8cb535a09dd8p+0, false, 6016- 0x1.000000fffffffff8cb535a09dep+0, false, 6017- false, 6018- 0x1.000000fffffffff8cb535a09dd9p+0, false, 6019- 0x1.000000fffffffff8cb535a09dd91p+0, false, 6020- 0x1.000000fffffffff8cb535a09dd9p+0, false, 6021- 0x1.000000fffffffff8cb535a09dd91p+0, false), 6022+ 0x1p+0, false, false, 6023+ 0x1p+0, false, false, 6024+ 0x1p+0, false, false, 6025+ 0x1.000002p+0, false, false, 6026+ false, 6027+ 0x1.000000fffffffp+0, false, false, 6028+ 0x1.000001p+0, false, false, 6029+ 0x1.000000fffffffp+0, false, false, 6030+ 0x1.000001p+0, false, false, 6031+ false, 6032+ 0x1.000000fffffffff8p+0, false, false, 6033+ 0x1.000000fffffffff8p+0, false, false, 6034+ 0x1.000000fffffffff8p+0, false, false, 6035+ 0x1.000000fffffffffap+0, false, false, 6036+ false, 6037+ 0x1.000000fffffffff8p+0, false, false, 6038+ 0x1.000000fffffffff8p+0, false, false, 6039+ 0x1.000000fffffffff8p+0, false, false, 6040+ 0x1.000000fffffffffap+0, false, false, 6041+ false, 6042+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false, 6043+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false, 6044+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false, 6045+ 0x1.000000fffffffff8cb535a09dep+0, false, false, 6046+ false, 6047+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false, 6048+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false, 6049+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false, 6050+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false), 6051 TEST ("1.00000005960464478", 6052 false, 6053- 0x1p+0, false, 6054- 0x1.000002p+0, false, 6055- 0x1p+0, false, 6056- 0x1.000002p+0, false, 6057- false, 6058- 0x1.000001p+0, false, 6059- 0x1.000001p+0, false, 6060- 0x1.000001p+0, false, 6061- 0x1.0000010000001p+0, false, 6062- false, 6063- 0x1.0000010000000054p+0, false, 6064- 0x1.0000010000000056p+0, false, 6065- 0x1.0000010000000054p+0, false, 6066- 0x1.0000010000000056p+0, false, 6067- false, 6068- 0x1.0000010000000054p+0, false, 6069- 0x1.0000010000000056p+0, false, 6070- 0x1.0000010000000054p+0, false, 6071- 0x1.0000010000000056p+0, false, 6072- false, 6073- 0x1.0000010000000055072873252f8p+0, false, 6074- 0x1.0000010000000055072873253p+0, false, 6075- 0x1.0000010000000055072873252f8p+0, false, 6076- 0x1.0000010000000055072873253p+0, false, 6077- false, 6078- 0x1.0000010000000055072873252febp+0, false, 6079- 0x1.0000010000000055072873252febp+0, false, 6080- 0x1.0000010000000055072873252febp+0, false, 6081- 0x1.0000010000000055072873252fecp+0, false), 6082+ 0x1p+0, false, false, 6083+ 0x1.000002p+0, false, false, 6084+ 0x1p+0, false, false, 6085+ 0x1.000002p+0, false, false, 6086+ false, 6087+ 0x1.000001p+0, false, false, 6088+ 0x1.000001p+0, false, false, 6089+ 0x1.000001p+0, false, false, 6090+ 0x1.0000010000001p+0, false, false, 6091+ false, 6092+ 0x1.0000010000000054p+0, false, false, 6093+ 0x1.0000010000000056p+0, false, false, 6094+ 0x1.0000010000000054p+0, false, false, 6095+ 0x1.0000010000000056p+0, false, false, 6096+ false, 6097+ 0x1.0000010000000054p+0, false, false, 6098+ 0x1.0000010000000056p+0, false, false, 6099+ 0x1.0000010000000054p+0, false, false, 6100+ 0x1.0000010000000056p+0, false, false, 6101+ false, 6102+ 0x1.0000010000000055072873252f8p+0, false, false, 6103+ 0x1.0000010000000055072873253p+0, false, false, 6104+ 0x1.0000010000000055072873252f8p+0, false, false, 6105+ 0x1.0000010000000055072873253p+0, false, false, 6106+ false, 6107+ 0x1.0000010000000055072873252febp+0, false, false, 6108+ 0x1.0000010000000055072873252febp+0, false, false, 6109+ 0x1.0000010000000055072873252febp+0, false, false, 6110+ 0x1.0000010000000055072873252fecp+0, false, false), 6111 TEST ("1.0000000596046448", 6112 false, 6113- 0x1p+0, false, 6114- 0x1.000002p+0, false, 6115- 0x1p+0, false, 6116- 0x1.000002p+0, false, 6117- false, 6118- 0x1.000001p+0, false, 6119- 0x1.000001p+0, false, 6120- 0x1.000001p+0, false, 6121- 0x1.0000010000001p+0, false, 6122- false, 6123- 0x1.00000100000001c4p+0, false, 6124- 0x1.00000100000001c6p+0, false, 6125- 0x1.00000100000001c4p+0, false, 6126- 0x1.00000100000001c6p+0, false, 6127- false, 6128- 0x1.00000100000001c4p+0, false, 6129- 0x1.00000100000001c6p+0, false, 6130- 0x1.00000100000001c4p+0, false, 6131- 0x1.00000100000001c6p+0, false, 6132- false, 6133- 0x1.00000100000001c5f67cd79279p+0, false, 6134- 0x1.00000100000001c5f67cd792798p+0, false, 6135- 0x1.00000100000001c5f67cd79279p+0, false, 6136- 0x1.00000100000001c5f67cd792798p+0, false, 6137- false, 6138- 0x1.00000100000001c5f67cd7927953p+0, false, 6139- 0x1.00000100000001c5f67cd7927954p+0, false, 6140- 0x1.00000100000001c5f67cd7927953p+0, false, 6141- 0x1.00000100000001c5f67cd7927954p+0, false), 6142+ 0x1p+0, false, false, 6143+ 0x1.000002p+0, false, false, 6144+ 0x1p+0, false, false, 6145+ 0x1.000002p+0, false, false, 6146+ false, 6147+ 0x1.000001p+0, false, false, 6148+ 0x1.000001p+0, false, false, 6149+ 0x1.000001p+0, false, false, 6150+ 0x1.0000010000001p+0, false, false, 6151+ false, 6152+ 0x1.00000100000001c4p+0, false, false, 6153+ 0x1.00000100000001c6p+0, false, false, 6154+ 0x1.00000100000001c4p+0, false, false, 6155+ 0x1.00000100000001c6p+0, false, false, 6156+ false, 6157+ 0x1.00000100000001c4p+0, false, false, 6158+ 0x1.00000100000001c6p+0, false, false, 6159+ 0x1.00000100000001c4p+0, false, false, 6160+ 0x1.00000100000001c6p+0, false, false, 6161+ false, 6162+ 0x1.00000100000001c5f67cd79279p+0, false, false, 6163+ 0x1.00000100000001c5f67cd792798p+0, false, false, 6164+ 0x1.00000100000001c5f67cd79279p+0, false, false, 6165+ 0x1.00000100000001c5f67cd792798p+0, false, false, 6166+ false, 6167+ 0x1.00000100000001c5f67cd7927953p+0, false, false, 6168+ 0x1.00000100000001c5f67cd7927954p+0, false, false, 6169+ 0x1.00000100000001c5f67cd7927953p+0, false, false, 6170+ 0x1.00000100000001c5f67cd7927954p+0, false, false), 6171 TEST ("1.000000059604645", 6172 false, 6173- 0x1p+0, false, 6174- 0x1.000002p+0, false, 6175- 0x1p+0, false, 6176- 0x1.000002p+0, false, 6177- false, 6178- 0x1.0000010000001p+0, false, 6179- 0x1.0000010000001p+0, false, 6180- 0x1.0000010000001p+0, false, 6181- 0x1.0000010000002p+0, false, 6182- false, 6183- 0x1.000001000000102ep+0, false, 6184- 0x1.000001000000103p+0, false, 6185- 0x1.000001000000102ep+0, false, 6186- 0x1.000001000000103p+0, false, 6187- false, 6188- 0x1.000001000000102ep+0, false, 6189- 0x1.000001000000103p+0, false, 6190- 0x1.000001000000102ep+0, false, 6191- 0x1.000001000000103p+0, false, 6192- false, 6193- 0x1.000001000000102f4fc8c3d757p+0, false, 6194- 0x1.000001000000102f4fc8c3d7578p+0, false, 6195- 0x1.000001000000102f4fc8c3d757p+0, false, 6196- 0x1.000001000000102f4fc8c3d7578p+0, false, 6197- false, 6198- 0x1.000001000000102f4fc8c3d75769p+0, false, 6199- 0x1.000001000000102f4fc8c3d75769p+0, false, 6200- 0x1.000001000000102f4fc8c3d75769p+0, false, 6201- 0x1.000001000000102f4fc8c3d7576ap+0, false), 6202+ 0x1p+0, false, false, 6203+ 0x1.000002p+0, false, false, 6204+ 0x1p+0, false, false, 6205+ 0x1.000002p+0, false, false, 6206+ false, 6207+ 0x1.0000010000001p+0, false, false, 6208+ 0x1.0000010000001p+0, false, false, 6209+ 0x1.0000010000001p+0, false, false, 6210+ 0x1.0000010000002p+0, false, false, 6211+ false, 6212+ 0x1.000001000000102ep+0, false, false, 6213+ 0x1.000001000000103p+0, false, false, 6214+ 0x1.000001000000102ep+0, false, false, 6215+ 0x1.000001000000103p+0, false, false, 6216+ false, 6217+ 0x1.000001000000102ep+0, false, false, 6218+ 0x1.000001000000103p+0, false, false, 6219+ 0x1.000001000000102ep+0, false, false, 6220+ 0x1.000001000000103p+0, false, false, 6221+ false, 6222+ 0x1.000001000000102f4fc8c3d757p+0, false, false, 6223+ 0x1.000001000000102f4fc8c3d7578p+0, false, false, 6224+ 0x1.000001000000102f4fc8c3d757p+0, false, false, 6225+ 0x1.000001000000102f4fc8c3d7578p+0, false, false, 6226+ false, 6227+ 0x1.000001000000102f4fc8c3d75769p+0, false, false, 6228+ 0x1.000001000000102f4fc8c3d75769p+0, false, false, 6229+ 0x1.000001000000102f4fc8c3d75769p+0, false, false, 6230+ 0x1.000001000000102f4fc8c3d7576ap+0, false, false), 6231 TEST ("1.00000005960464", 6232 false, 6233- 0x1p+0, false, 6234- 0x1p+0, false, 6235- 0x1p+0, false, 6236- 0x1.000002p+0, false, 6237- false, 6238- 0x1.000000fffffeap+0, false, 6239- 0x1.000000fffffeap+0, false, 6240- 0x1.000000fffffeap+0, false, 6241- 0x1.000000fffffebp+0, false, 6242- false, 6243- 0x1.000000fffffea7e4p+0, false, 6244- 0x1.000000fffffea7e6p+0, false, 6245- 0x1.000000fffffea7e4p+0, false, 6246- 0x1.000000fffffea7e6p+0, false, 6247- false, 6248- 0x1.000000fffffea7e4p+0, false, 6249- 0x1.000000fffffea7e6p+0, false, 6250- 0x1.000000fffffea7e4p+0, false, 6251- 0x1.000000fffffea7e6p+0, false, 6252- false, 6253- 0x1.000000fffffea7e5975eb11da7p+0, false, 6254- 0x1.000000fffffea7e5975eb11da78p+0, false, 6255- 0x1.000000fffffea7e5975eb11da7p+0, false, 6256- 0x1.000000fffffea7e5975eb11da78p+0, false, 6257- false, 6258- 0x1.000000fffffea7e5975eb11da74ap+0, false, 6259- 0x1.000000fffffea7e5975eb11da74bp+0, false, 6260- 0x1.000000fffffea7e5975eb11da74ap+0, false, 6261- 0x1.000000fffffea7e5975eb11da74bp+0, false), 6262+ 0x1p+0, false, false, 6263+ 0x1p+0, false, false, 6264+ 0x1p+0, false, false, 6265+ 0x1.000002p+0, false, false, 6266+ false, 6267+ 0x1.000000fffffeap+0, false, false, 6268+ 0x1.000000fffffeap+0, false, false, 6269+ 0x1.000000fffffeap+0, false, false, 6270+ 0x1.000000fffffebp+0, false, false, 6271+ false, 6272+ 0x1.000000fffffea7e4p+0, false, false, 6273+ 0x1.000000fffffea7e6p+0, false, false, 6274+ 0x1.000000fffffea7e4p+0, false, false, 6275+ 0x1.000000fffffea7e6p+0, false, false, 6276+ false, 6277+ 0x1.000000fffffea7e4p+0, false, false, 6278+ 0x1.000000fffffea7e6p+0, false, false, 6279+ 0x1.000000fffffea7e4p+0, false, false, 6280+ 0x1.000000fffffea7e6p+0, false, false, 6281+ false, 6282+ 0x1.000000fffffea7e5975eb11da7p+0, false, false, 6283+ 0x1.000000fffffea7e5975eb11da78p+0, false, false, 6284+ 0x1.000000fffffea7e5975eb11da7p+0, false, false, 6285+ 0x1.000000fffffea7e5975eb11da78p+0, false, false, 6286+ false, 6287+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false, 6288+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false, 6289+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false, 6290+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false), 6291 TEST ("1.0000000596046", 6292 false, 6293- 0x1p+0, false, 6294- 0x1p+0, false, 6295- 0x1p+0, false, 6296- 0x1.000002p+0, false, 6297- false, 6298- 0x1.000000fffff36p+0, false, 6299- 0x1.000000fffff36p+0, false, 6300- 0x1.000000fffff36p+0, false, 6301- 0x1.000000fffff37p+0, false, 6302- false, 6303- 0x1.000000fffff36596p+0, false, 6304- 0x1.000000fffff36598p+0, false, 6305- 0x1.000000fffff36596p+0, false, 6306- 0x1.000000fffff36598p+0, false, 6307- false, 6308- 0x1.000000fffff36596p+0, false, 6309- 0x1.000000fffff36598p+0, false, 6310- 0x1.000000fffff36596p+0, false, 6311- 0x1.000000fffff36598p+0, false, 6312- false, 6313- 0x1.000000fffff36597d40e1b5026p+0, false, 6314- 0x1.000000fffff36597d40e1b50268p+0, false, 6315- 0x1.000000fffff36597d40e1b5026p+0, false, 6316- 0x1.000000fffff36597d40e1b50268p+0, false, 6317- false, 6318- 0x1.000000fffff36597d40e1b502655p+0, false, 6319- 0x1.000000fffff36597d40e1b502656p+0, false, 6320- 0x1.000000fffff36597d40e1b502655p+0, false, 6321- 0x1.000000fffff36597d40e1b502656p+0, false), 6322+ 0x1p+0, false, false, 6323+ 0x1p+0, false, false, 6324+ 0x1p+0, false, false, 6325+ 0x1.000002p+0, false, false, 6326+ false, 6327+ 0x1.000000fffff36p+0, false, false, 6328+ 0x1.000000fffff36p+0, false, false, 6329+ 0x1.000000fffff36p+0, false, false, 6330+ 0x1.000000fffff37p+0, false, false, 6331+ false, 6332+ 0x1.000000fffff36596p+0, false, false, 6333+ 0x1.000000fffff36598p+0, false, false, 6334+ 0x1.000000fffff36596p+0, false, false, 6335+ 0x1.000000fffff36598p+0, false, false, 6336+ false, 6337+ 0x1.000000fffff36596p+0, false, false, 6338+ 0x1.000000fffff36598p+0, false, false, 6339+ 0x1.000000fffff36596p+0, false, false, 6340+ 0x1.000000fffff36598p+0, false, false, 6341+ false, 6342+ 0x1.000000fffff36597d40e1b5026p+0, false, false, 6343+ 0x1.000000fffff36597d40e1b50268p+0, false, false, 6344+ 0x1.000000fffff36597d40e1b5026p+0, false, false, 6345+ 0x1.000000fffff36597d40e1b50268p+0, false, false, 6346+ false, 6347+ 0x1.000000fffff36597d40e1b502655p+0, false, false, 6348+ 0x1.000000fffff36597d40e1b502656p+0, false, false, 6349+ 0x1.000000fffff36597d40e1b502655p+0, false, false, 6350+ 0x1.000000fffff36597d40e1b502656p+0, false, false), 6351 TEST ("1.000000059605", 6352 false, 6353- 0x1p+0, false, 6354- 0x1.000002p+0, false, 6355- 0x1p+0, false, 6356- 0x1.000002p+0, false, 6357- false, 6358- 0x1.000001000063fp+0, false, 6359- 0x1.000001000064p+0, false, 6360- 0x1.000001000063fp+0, false, 6361- 0x1.000001000064p+0, false, 6362- false, 6363- 0x1.000001000063fcap+0, false, 6364- 0x1.000001000063fca2p+0, false, 6365- 0x1.000001000063fcap+0, false, 6366- 0x1.000001000063fca2p+0, false, 6367- false, 6368- 0x1.000001000063fcap+0, false, 6369- 0x1.000001000063fca2p+0, false, 6370- 0x1.000001000063fcap+0, false, 6371- 0x1.000001000063fca2p+0, false, 6372- false, 6373- 0x1.000001000063fca17533f5572f8p+0, false, 6374- 0x1.000001000063fca17533f5573p+0, false, 6375- 0x1.000001000063fca17533f5572f8p+0, false, 6376- 0x1.000001000063fca17533f5573p+0, false, 6377- false, 6378- 0x1.000001000063fca17533f5572fe9p+0, false, 6379- 0x1.000001000063fca17533f5572feap+0, false, 6380- 0x1.000001000063fca17533f5572fe9p+0, false, 6381- 0x1.000001000063fca17533f5572feap+0, false), 6382+ 0x1p+0, false, false, 6383+ 0x1.000002p+0, false, false, 6384+ 0x1p+0, false, false, 6385+ 0x1.000002p+0, false, false, 6386+ false, 6387+ 0x1.000001000063fp+0, false, false, 6388+ 0x1.000001000064p+0, false, false, 6389+ 0x1.000001000063fp+0, false, false, 6390+ 0x1.000001000064p+0, false, false, 6391+ false, 6392+ 0x1.000001000063fcap+0, false, false, 6393+ 0x1.000001000063fca2p+0, false, false, 6394+ 0x1.000001000063fcap+0, false, false, 6395+ 0x1.000001000063fca2p+0, false, false, 6396+ false, 6397+ 0x1.000001000063fcap+0, false, false, 6398+ 0x1.000001000063fca2p+0, false, false, 6399+ 0x1.000001000063fcap+0, false, false, 6400+ 0x1.000001000063fca2p+0, false, false, 6401+ false, 6402+ 0x1.000001000063fca17533f5572f8p+0, false, false, 6403+ 0x1.000001000063fca17533f5573p+0, false, false, 6404+ 0x1.000001000063fca17533f5572f8p+0, false, false, 6405+ 0x1.000001000063fca17533f5573p+0, false, false, 6406+ false, 6407+ 0x1.000001000063fca17533f5572fe9p+0, false, false, 6408+ 0x1.000001000063fca17533f5572feap+0, false, false, 6409+ 0x1.000001000063fca17533f5572fe9p+0, false, false, 6410+ 0x1.000001000063fca17533f5572feap+0, false, false), 6411 TEST ("1.00000005960", 6412 false, 6413- 0x1p+0, false, 6414- 0x1p+0, false, 6415- 0x1p+0, false, 6416- 0x1.000002p+0, false, 6417- false, 6418- 0x1.000000fffae49p+0, false, 6419- 0x1.000000fffae4ap+0, false, 6420- 0x1.000000fffae49p+0, false, 6421- 0x1.000000fffae4ap+0, false, 6422- false, 6423- 0x1.000000fffae49ca8p+0, false, 6424- 0x1.000000fffae49caap+0, false, 6425- 0x1.000000fffae49ca8p+0, false, 6426- 0x1.000000fffae49caap+0, false, 6427- false, 6428- 0x1.000000fffae49ca8p+0, false, 6429- 0x1.000000fffae49caap+0, false, 6430- 0x1.000000fffae49ca8p+0, false, 6431- 0x1.000000fffae49caap+0, false, 6432- false, 6433- 0x1.000000fffae49ca916dacfff38p+0, false, 6434- 0x1.000000fffae49ca916dacfff38p+0, false, 6435- 0x1.000000fffae49ca916dacfff38p+0, false, 6436- 0x1.000000fffae49ca916dacfff388p+0, false, 6437- false, 6438- 0x1.000000fffae49ca916dacfff382dp+0, false, 6439- 0x1.000000fffae49ca916dacfff382dp+0, false, 6440- 0x1.000000fffae49ca916dacfff382dp+0, false, 6441- 0x1.000000fffae49ca916dacfff382ep+0, false), 6442+ 0x1p+0, false, false, 6443+ 0x1p+0, false, false, 6444+ 0x1p+0, false, false, 6445+ 0x1.000002p+0, false, false, 6446+ false, 6447+ 0x1.000000fffae49p+0, false, false, 6448+ 0x1.000000fffae4ap+0, false, false, 6449+ 0x1.000000fffae49p+0, false, false, 6450+ 0x1.000000fffae4ap+0, false, false, 6451+ false, 6452+ 0x1.000000fffae49ca8p+0, false, false, 6453+ 0x1.000000fffae49caap+0, false, false, 6454+ 0x1.000000fffae49ca8p+0, false, false, 6455+ 0x1.000000fffae49caap+0, false, false, 6456+ false, 6457+ 0x1.000000fffae49ca8p+0, false, false, 6458+ 0x1.000000fffae49caap+0, false, false, 6459+ 0x1.000000fffae49ca8p+0, false, false, 6460+ 0x1.000000fffae49caap+0, false, false, 6461+ false, 6462+ 0x1.000000fffae49ca916dacfff38p+0, false, false, 6463+ 0x1.000000fffae49ca916dacfff38p+0, false, false, 6464+ 0x1.000000fffae49ca916dacfff38p+0, false, false, 6465+ 0x1.000000fffae49ca916dacfff388p+0, false, false, 6466+ false, 6467+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, 6468+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, 6469+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, 6470+ 0x1.000000fffae49ca916dacfff382ep+0, false, false), 6471 TEST ("1.0000000596", 6472 false, 6473- 0x1p+0, false, 6474- 0x1p+0, false, 6475- 0x1p+0, false, 6476- 0x1.000002p+0, false, 6477- false, 6478- 0x1.000000fffae49p+0, false, 6479- 0x1.000000fffae4ap+0, false, 6480- 0x1.000000fffae49p+0, false, 6481- 0x1.000000fffae4ap+0, false, 6482- false, 6483- 0x1.000000fffae49ca8p+0, false, 6484- 0x1.000000fffae49caap+0, false, 6485- 0x1.000000fffae49ca8p+0, false, 6486- 0x1.000000fffae49caap+0, false, 6487- false, 6488- 0x1.000000fffae49ca8p+0, false, 6489- 0x1.000000fffae49caap+0, false, 6490- 0x1.000000fffae49ca8p+0, false, 6491- 0x1.000000fffae49caap+0, false, 6492- false, 6493- 0x1.000000fffae49ca916dacfff38p+0, false, 6494- 0x1.000000fffae49ca916dacfff38p+0, false, 6495- 0x1.000000fffae49ca916dacfff38p+0, false, 6496- 0x1.000000fffae49ca916dacfff388p+0, false, 6497- false, 6498- 0x1.000000fffae49ca916dacfff382dp+0, false, 6499- 0x1.000000fffae49ca916dacfff382dp+0, false, 6500- 0x1.000000fffae49ca916dacfff382dp+0, false, 6501- 0x1.000000fffae49ca916dacfff382ep+0, false), 6502+ 0x1p+0, false, false, 6503+ 0x1p+0, false, false, 6504+ 0x1p+0, false, false, 6505+ 0x1.000002p+0, false, false, 6506+ false, 6507+ 0x1.000000fffae49p+0, false, false, 6508+ 0x1.000000fffae4ap+0, false, false, 6509+ 0x1.000000fffae49p+0, false, false, 6510+ 0x1.000000fffae4ap+0, false, false, 6511+ false, 6512+ 0x1.000000fffae49ca8p+0, false, false, 6513+ 0x1.000000fffae49caap+0, false, false, 6514+ 0x1.000000fffae49ca8p+0, false, false, 6515+ 0x1.000000fffae49caap+0, false, false, 6516+ false, 6517+ 0x1.000000fffae49ca8p+0, false, false, 6518+ 0x1.000000fffae49caap+0, false, false, 6519+ 0x1.000000fffae49ca8p+0, false, false, 6520+ 0x1.000000fffae49caap+0, false, false, 6521+ false, 6522+ 0x1.000000fffae49ca916dacfff38p+0, false, false, 6523+ 0x1.000000fffae49ca916dacfff38p+0, false, false, 6524+ 0x1.000000fffae49ca916dacfff38p+0, false, false, 6525+ 0x1.000000fffae49ca916dacfff388p+0, false, false, 6526+ false, 6527+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, 6528+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, 6529+ 0x1.000000fffae49ca916dacfff382dp+0, false, false, 6530+ 0x1.000000fffae49ca916dacfff382ep+0, false, false), 6531 TEST ("1.000000060", 6532 false, 6533- 0x1p+0, false, 6534- 0x1.000002p+0, false, 6535- 0x1p+0, false, 6536- 0x1.000002p+0, false, 6537- false, 6538- 0x1.00000101b2b29p+0, false, 6539- 0x1.00000101b2b2ap+0, false, 6540- 0x1.00000101b2b29p+0, false, 6541- 0x1.00000101b2b2ap+0, false, 6542- false, 6543- 0x1.00000101b2b29a46p+0, false, 6544- 0x1.00000101b2b29a46p+0, false, 6545- 0x1.00000101b2b29a46p+0, false, 6546- 0x1.00000101b2b29a48p+0, false, 6547- false, 6548- 0x1.00000101b2b29a46p+0, false, 6549- 0x1.00000101b2b29a46p+0, false, 6550- 0x1.00000101b2b29a46p+0, false, 6551- 0x1.00000101b2b29a48p+0, false, 6552- false, 6553- 0x1.00000101b2b29a4692b67b7ca3p+0, false, 6554- 0x1.00000101b2b29a4692b67b7ca3p+0, false, 6555- 0x1.00000101b2b29a4692b67b7ca3p+0, false, 6556- 0x1.00000101b2b29a4692b67b7ca38p+0, false, 6557- false, 6558- 0x1.00000101b2b29a4692b67b7ca313p+0, false, 6559- 0x1.00000101b2b29a4692b67b7ca314p+0, false, 6560- 0x1.00000101b2b29a4692b67b7ca313p+0, false, 6561- 0x1.00000101b2b29a4692b67b7ca314p+0, false), 6562+ 0x1p+0, false, false, 6563+ 0x1.000002p+0, false, false, 6564+ 0x1p+0, false, false, 6565+ 0x1.000002p+0, false, false, 6566+ false, 6567+ 0x1.00000101b2b29p+0, false, false, 6568+ 0x1.00000101b2b2ap+0, false, false, 6569+ 0x1.00000101b2b29p+0, false, false, 6570+ 0x1.00000101b2b2ap+0, false, false, 6571+ false, 6572+ 0x1.00000101b2b29a46p+0, false, false, 6573+ 0x1.00000101b2b29a46p+0, false, false, 6574+ 0x1.00000101b2b29a46p+0, false, false, 6575+ 0x1.00000101b2b29a48p+0, false, false, 6576+ false, 6577+ 0x1.00000101b2b29a46p+0, false, false, 6578+ 0x1.00000101b2b29a46p+0, false, false, 6579+ 0x1.00000101b2b29a46p+0, false, false, 6580+ 0x1.00000101b2b29a48p+0, false, false, 6581+ false, 6582+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, 6583+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, 6584+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, 6585+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false, 6586+ false, 6587+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, 6588+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false, 6589+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, 6590+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false), 6591 TEST ("1.00000006", 6592 false, 6593- 0x1p+0, false, 6594- 0x1.000002p+0, false, 6595- 0x1p+0, false, 6596- 0x1.000002p+0, false, 6597- false, 6598- 0x1.00000101b2b29p+0, false, 6599- 0x1.00000101b2b2ap+0, false, 6600- 0x1.00000101b2b29p+0, false, 6601- 0x1.00000101b2b2ap+0, false, 6602- false, 6603- 0x1.00000101b2b29a46p+0, false, 6604- 0x1.00000101b2b29a46p+0, false, 6605- 0x1.00000101b2b29a46p+0, false, 6606- 0x1.00000101b2b29a48p+0, false, 6607- false, 6608- 0x1.00000101b2b29a46p+0, false, 6609- 0x1.00000101b2b29a46p+0, false, 6610- 0x1.00000101b2b29a46p+0, false, 6611- 0x1.00000101b2b29a48p+0, false, 6612- false, 6613- 0x1.00000101b2b29a4692b67b7ca3p+0, false, 6614- 0x1.00000101b2b29a4692b67b7ca3p+0, false, 6615- 0x1.00000101b2b29a4692b67b7ca3p+0, false, 6616- 0x1.00000101b2b29a4692b67b7ca38p+0, false, 6617- false, 6618- 0x1.00000101b2b29a4692b67b7ca313p+0, false, 6619- 0x1.00000101b2b29a4692b67b7ca314p+0, false, 6620- 0x1.00000101b2b29a4692b67b7ca313p+0, false, 6621- 0x1.00000101b2b29a4692b67b7ca314p+0, false), 6622+ 0x1p+0, false, false, 6623+ 0x1.000002p+0, false, false, 6624+ 0x1p+0, false, false, 6625+ 0x1.000002p+0, false, false, 6626+ false, 6627+ 0x1.00000101b2b29p+0, false, false, 6628+ 0x1.00000101b2b2ap+0, false, false, 6629+ 0x1.00000101b2b29p+0, false, false, 6630+ 0x1.00000101b2b2ap+0, false, false, 6631+ false, 6632+ 0x1.00000101b2b29a46p+0, false, false, 6633+ 0x1.00000101b2b29a46p+0, false, false, 6634+ 0x1.00000101b2b29a46p+0, false, false, 6635+ 0x1.00000101b2b29a48p+0, false, false, 6636+ false, 6637+ 0x1.00000101b2b29a46p+0, false, false, 6638+ 0x1.00000101b2b29a46p+0, false, false, 6639+ 0x1.00000101b2b29a46p+0, false, false, 6640+ 0x1.00000101b2b29a48p+0, false, false, 6641+ false, 6642+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, 6643+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, 6644+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, 6645+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false, 6646+ false, 6647+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, 6648+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false, 6649+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, 6650+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false), 6651 TEST ("1.0000001", 6652 false, 6653- 0x1p+0, false, 6654- 0x1.000002p+0, false, 6655- 0x1p+0, false, 6656- 0x1.000002p+0, false, 6657- false, 6658- 0x1.000001ad7f29ap+0, false, 6659- 0x1.000001ad7f29bp+0, false, 6660- 0x1.000001ad7f29ap+0, false, 6661- 0x1.000001ad7f29bp+0, false, 6662- false, 6663- 0x1.000001ad7f29abcap+0, false, 6664- 0x1.000001ad7f29abcap+0, false, 6665- 0x1.000001ad7f29abcap+0, false, 6666- 0x1.000001ad7f29abccp+0, false, 6667- false, 6668- 0x1.000001ad7f29abcap+0, false, 6669- 0x1.000001ad7f29abcap+0, false, 6670- 0x1.000001ad7f29abcap+0, false, 6671- 0x1.000001ad7f29abccp+0, false, 6672- false, 6673- 0x1.000001ad7f29abcaf485787a65p+0, false, 6674- 0x1.000001ad7f29abcaf485787a65p+0, false, 6675- 0x1.000001ad7f29abcaf485787a65p+0, false, 6676- 0x1.000001ad7f29abcaf485787a658p+0, false, 6677- false, 6678- 0x1.000001ad7f29abcaf485787a652p+0, false, 6679- 0x1.000001ad7f29abcaf485787a6521p+0, false, 6680- 0x1.000001ad7f29abcaf485787a652p+0, false, 6681- 0x1.000001ad7f29abcaf485787a6521p+0, false), 6682+ 0x1p+0, false, false, 6683+ 0x1.000002p+0, false, false, 6684+ 0x1p+0, false, false, 6685+ 0x1.000002p+0, false, false, 6686+ false, 6687+ 0x1.000001ad7f29ap+0, false, false, 6688+ 0x1.000001ad7f29bp+0, false, false, 6689+ 0x1.000001ad7f29ap+0, false, false, 6690+ 0x1.000001ad7f29bp+0, false, false, 6691+ false, 6692+ 0x1.000001ad7f29abcap+0, false, false, 6693+ 0x1.000001ad7f29abcap+0, false, false, 6694+ 0x1.000001ad7f29abcap+0, false, false, 6695+ 0x1.000001ad7f29abccp+0, false, false, 6696+ false, 6697+ 0x1.000001ad7f29abcap+0, false, false, 6698+ 0x1.000001ad7f29abcap+0, false, false, 6699+ 0x1.000001ad7f29abcap+0, false, false, 6700+ 0x1.000001ad7f29abccp+0, false, false, 6701+ false, 6702+ 0x1.000001ad7f29abcaf485787a65p+0, false, false, 6703+ 0x1.000001ad7f29abcaf485787a65p+0, false, false, 6704+ 0x1.000001ad7f29abcaf485787a65p+0, false, false, 6705+ 0x1.000001ad7f29abcaf485787a658p+0, false, false, 6706+ false, 6707+ 0x1.000001ad7f29abcaf485787a652p+0, false, false, 6708+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false, 6709+ 0x1.000001ad7f29abcaf485787a652p+0, false, false, 6710+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false), 6711 TEST ("1.000000", 6712 true, 6713- 0x1p+0, false, 6714- 0x1p+0, false, 6715- 0x1p+0, false, 6716- 0x1p+0, false, 6717- true, 6718- 0x1p+0, false, 6719- 0x1p+0, false, 6720- 0x1p+0, false, 6721- 0x1p+0, false, 6722- true, 6723- 0x1p+0, false, 6724- 0x1p+0, false, 6725- 0x1p+0, false, 6726- 0x1p+0, false, 6727- true, 6728- 0x1p+0, false, 6729- 0x1p+0, false, 6730- 0x1p+0, false, 6731- 0x1p+0, false, 6732- true, 6733- 0x1p+0, false, 6734- 0x1p+0, false, 6735- 0x1p+0, false, 6736- 0x1p+0, false, 6737- true, 6738- 0x1p+0, false, 6739- 0x1p+0, false, 6740- 0x1p+0, false, 6741- 0x1p+0, false), 6742+ 0x1p+0, false, false, 6743+ 0x1p+0, false, false, 6744+ 0x1p+0, false, false, 6745+ 0x1p+0, false, false, 6746+ true, 6747+ 0x1p+0, false, false, 6748+ 0x1p+0, false, false, 6749+ 0x1p+0, false, false, 6750+ 0x1p+0, false, false, 6751+ true, 6752+ 0x1p+0, false, false, 6753+ 0x1p+0, false, false, 6754+ 0x1p+0, false, false, 6755+ 0x1p+0, false, false, 6756+ true, 6757+ 0x1p+0, false, false, 6758+ 0x1p+0, false, false, 6759+ 0x1p+0, false, false, 6760+ 0x1p+0, false, false, 6761+ true, 6762+ 0x1p+0, false, false, 6763+ 0x1p+0, false, false, 6764+ 0x1p+0, false, false, 6765+ 0x1p+0, false, false, 6766+ true, 6767+ 0x1p+0, false, false, 6768+ 0x1p+0, false, false, 6769+ 0x1p+0, false, false, 6770+ 0x1p+0, false, false), 6771 TEST ("1.00000000000000011113", 6772 false, 6773- 0x1p+0, false, 6774- 0x1p+0, false, 6775- 0x1p+0, false, 6776- 0x1.000002p+0, false, 6777- false, 6778- 0x1p+0, false, 6779- 0x1.0000000000001p+0, false, 6780- 0x1p+0, false, 6781- 0x1.0000000000001p+0, false, 6782- false, 6783- 0x1.00000000000008p+0, false, 6784- 0x1.0000000000000802p+0, false, 6785- 0x1.00000000000008p+0, false, 6786- 0x1.0000000000000802p+0, false, 6787- false, 6788- 0x1.00000000000008p+0, false, 6789- 0x1.0000000000000802p+0, false, 6790- 0x1.00000000000008p+0, false, 6791- 0x1.0000000000000802p+0, false, 6792- false, 6793- 0x1.0000000000000801fc96557232p+0, false, 6794- 0x1.0000000000000801fc96557232p+0, false, 6795- 0x1.0000000000000801fc96557232p+0, false, 6796- 0x1.0000000000000801fc965572328p+0, false, 6797- false, 6798- 0x1.0000000000000801fc9655723222p+0, false, 6799- 0x1.0000000000000801fc9655723222p+0, false, 6800- 0x1.0000000000000801fc9655723222p+0, false, 6801- 0x1.0000000000000801fc9655723223p+0, false), 6802+ 0x1p+0, false, false, 6803+ 0x1p+0, false, false, 6804+ 0x1p+0, false, false, 6805+ 0x1.000002p+0, false, false, 6806+ false, 6807+ 0x1p+0, false, false, 6808+ 0x1.0000000000001p+0, false, false, 6809+ 0x1p+0, false, false, 6810+ 0x1.0000000000001p+0, false, false, 6811+ false, 6812+ 0x1.00000000000008p+0, false, false, 6813+ 0x1.0000000000000802p+0, false, false, 6814+ 0x1.00000000000008p+0, false, false, 6815+ 0x1.0000000000000802p+0, false, false, 6816+ false, 6817+ 0x1.00000000000008p+0, false, false, 6818+ 0x1.0000000000000802p+0, false, false, 6819+ 0x1.00000000000008p+0, false, false, 6820+ 0x1.0000000000000802p+0, false, false, 6821+ false, 6822+ 0x1.0000000000000801fc96557232p+0, false, false, 6823+ 0x1.0000000000000801fc96557232p+0, false, false, 6824+ 0x1.0000000000000801fc96557232p+0, false, false, 6825+ 0x1.0000000000000801fc965572328p+0, false, false, 6826+ false, 6827+ 0x1.0000000000000801fc9655723222p+0, false, false, 6828+ 0x1.0000000000000801fc9655723222p+0, false, false, 6829+ 0x1.0000000000000801fc9655723222p+0, false, false, 6830+ 0x1.0000000000000801fc9655723223p+0, false, false), 6831 TEST ("1.00000000000000011103", 6832 false, 6833- 0x1p+0, false, 6834- 0x1p+0, false, 6835- 0x1p+0, false, 6836- 0x1.000002p+0, false, 6837- false, 6838- 0x1p+0, false, 6839- 0x1.0000000000001p+0, false, 6840- 0x1p+0, false, 6841- 0x1.0000000000001p+0, false, 6842- false, 6843- 0x1.00000000000008p+0, false, 6844- 0x1.00000000000008p+0, false, 6845- 0x1.00000000000008p+0, false, 6846- 0x1.0000000000000802p+0, false, 6847- false, 6848- 0x1.00000000000008p+0, false, 6849- 0x1.00000000000008p+0, false, 6850- 0x1.00000000000008p+0, false, 6851- 0x1.0000000000000802p+0, false, 6852- false, 6853- 0x1.00000000000008002459c076c48p+0, false, 6854- 0x1.00000000000008002459c076c5p+0, false, 6855- 0x1.00000000000008002459c076c48p+0, false, 6856- 0x1.00000000000008002459c076c5p+0, false, 6857- false, 6858- 0x1.00000000000008002459c076c4f7p+0, false, 6859- 0x1.00000000000008002459c076c4f8p+0, false, 6860- 0x1.00000000000008002459c076c4f7p+0, false, 6861- 0x1.00000000000008002459c076c4f8p+0, false), 6862+ 0x1p+0, false, false, 6863+ 0x1p+0, false, false, 6864+ 0x1p+0, false, false, 6865+ 0x1.000002p+0, false, false, 6866+ false, 6867+ 0x1p+0, false, false, 6868+ 0x1.0000000000001p+0, false, false, 6869+ 0x1p+0, false, false, 6870+ 0x1.0000000000001p+0, false, false, 6871+ false, 6872+ 0x1.00000000000008p+0, false, false, 6873+ 0x1.00000000000008p+0, false, false, 6874+ 0x1.00000000000008p+0, false, false, 6875+ 0x1.0000000000000802p+0, false, false, 6876+ false, 6877+ 0x1.00000000000008p+0, false, false, 6878+ 0x1.00000000000008p+0, false, false, 6879+ 0x1.00000000000008p+0, false, false, 6880+ 0x1.0000000000000802p+0, false, false, 6881+ false, 6882+ 0x1.00000000000008002459c076c48p+0, false, false, 6883+ 0x1.00000000000008002459c076c5p+0, false, false, 6884+ 0x1.00000000000008002459c076c48p+0, false, false, 6885+ 0x1.00000000000008002459c076c5p+0, false, false, 6886+ false, 6887+ 0x1.00000000000008002459c076c4f7p+0, false, false, 6888+ 0x1.00000000000008002459c076c4f8p+0, false, false, 6889+ 0x1.00000000000008002459c076c4f7p+0, false, false, 6890+ 0x1.00000000000008002459c076c4f8p+0, false, false), 6891 TEST ("1.00000000000000011102", 6892 false, 6893- 0x1p+0, false, 6894- 0x1p+0, false, 6895- 0x1p+0, false, 6896- 0x1.000002p+0, false, 6897- false, 6898- 0x1p+0, false, 6899- 0x1p+0, false, 6900- 0x1p+0, false, 6901- 0x1.0000000000001p+0, false, 6902- false, 6903- 0x1.00000000000007fep+0, false, 6904- 0x1.00000000000008p+0, false, 6905- 0x1.00000000000007fep+0, false, 6906- 0x1.00000000000008p+0, false, 6907- false, 6908- 0x1.00000000000007fep+0, false, 6909- 0x1.00000000000008p+0, false, 6910- 0x1.00000000000007fep+0, false, 6911- 0x1.00000000000008p+0, false, 6912- false, 6913- 0x1.00000000000007fff5207e5dap+0, false, 6914- 0x1.00000000000007fff5207e5da08p+0, false, 6915- 0x1.00000000000007fff5207e5dap+0, false, 6916- 0x1.00000000000007fff5207e5da08p+0, false, 6917- false, 6918- 0x1.00000000000007fff5207e5da073p+0, false, 6919- 0x1.00000000000007fff5207e5da073p+0, false, 6920- 0x1.00000000000007fff5207e5da073p+0, false, 6921- 0x1.00000000000007fff5207e5da074p+0, false), 6922+ 0x1p+0, false, false, 6923+ 0x1p+0, false, false, 6924+ 0x1p+0, false, false, 6925+ 0x1.000002p+0, false, false, 6926+ false, 6927+ 0x1p+0, false, false, 6928+ 0x1p+0, false, false, 6929+ 0x1p+0, false, false, 6930+ 0x1.0000000000001p+0, false, false, 6931+ false, 6932+ 0x1.00000000000007fep+0, false, false, 6933+ 0x1.00000000000008p+0, false, false, 6934+ 0x1.00000000000007fep+0, false, false, 6935+ 0x1.00000000000008p+0, false, false, 6936+ false, 6937+ 0x1.00000000000007fep+0, false, false, 6938+ 0x1.00000000000008p+0, false, false, 6939+ 0x1.00000000000007fep+0, false, false, 6940+ 0x1.00000000000008p+0, false, false, 6941+ false, 6942+ 0x1.00000000000007fff5207e5dap+0, false, false, 6943+ 0x1.00000000000007fff5207e5da08p+0, false, false, 6944+ 0x1.00000000000007fff5207e5dap+0, false, false, 6945+ 0x1.00000000000007fff5207e5da08p+0, false, false, 6946+ false, 6947+ 0x1.00000000000007fff5207e5da073p+0, false, false, 6948+ 0x1.00000000000007fff5207e5da073p+0, false, false, 6949+ 0x1.00000000000007fff5207e5da073p+0, false, false, 6950+ 0x1.00000000000007fff5207e5da074p+0, false, false), 6951 TEST ("1.00000000000000011101", 6952 false, 6953- 0x1p+0, false, 6954- 0x1p+0, false, 6955- 0x1p+0, false, 6956- 0x1.000002p+0, false, 6957- false, 6958- 0x1p+0, false, 6959- 0x1p+0, false, 6960- 0x1p+0, false, 6961- 0x1.0000000000001p+0, false, 6962- false, 6963- 0x1.00000000000007fep+0, false, 6964- 0x1.00000000000008p+0, false, 6965- 0x1.00000000000007fep+0, false, 6966- 0x1.00000000000008p+0, false, 6967- false, 6968- 0x1.00000000000007fep+0, false, 6969- 0x1.00000000000008p+0, false, 6970- 0x1.00000000000007fep+0, false, 6971- 0x1.00000000000008p+0, false, 6972- false, 6973- 0x1.00000000000007ffc5e73c447b8p+0, false, 6974- 0x1.00000000000007ffc5e73c447cp+0, false, 6975- 0x1.00000000000007ffc5e73c447b8p+0, false, 6976- 0x1.00000000000007ffc5e73c447cp+0, false, 6977- false, 6978- 0x1.00000000000007ffc5e73c447befp+0, false, 6979- 0x1.00000000000007ffc5e73c447befp+0, false, 6980- 0x1.00000000000007ffc5e73c447befp+0, false, 6981- 0x1.00000000000007ffc5e73c447bfp+0, false), 6982+ 0x1p+0, false, false, 6983+ 0x1p+0, false, false, 6984+ 0x1p+0, false, false, 6985+ 0x1.000002p+0, false, false, 6986+ false, 6987+ 0x1p+0, false, false, 6988+ 0x1p+0, false, false, 6989+ 0x1p+0, false, false, 6990+ 0x1.0000000000001p+0, false, false, 6991+ false, 6992+ 0x1.00000000000007fep+0, false, false, 6993+ 0x1.00000000000008p+0, false, false, 6994+ 0x1.00000000000007fep+0, false, false, 6995+ 0x1.00000000000008p+0, false, false, 6996+ false, 6997+ 0x1.00000000000007fep+0, false, false, 6998+ 0x1.00000000000008p+0, false, false, 6999+ 0x1.00000000000007fep+0, false, false, 7000+ 0x1.00000000000008p+0, false, false, 7001+ false, 7002+ 0x1.00000000000007ffc5e73c447b8p+0, false, false, 7003+ 0x1.00000000000007ffc5e73c447cp+0, false, false, 7004+ 0x1.00000000000007ffc5e73c447b8p+0, false, false, 7005+ 0x1.00000000000007ffc5e73c447cp+0, false, false, 7006+ false, 7007+ 0x1.00000000000007ffc5e73c447befp+0, false, false, 7008+ 0x1.00000000000007ffc5e73c447befp+0, false, false, 7009+ 0x1.00000000000007ffc5e73c447befp+0, false, false, 7010+ 0x1.00000000000007ffc5e73c447bfp+0, false, false), 7011 TEST ("1.0000000000000001111", 7012 false, 7013- 0x1p+0, false, 7014- 0x1p+0, false, 7015- 0x1p+0, false, 7016- 0x1.000002p+0, false, 7017- false, 7018- 0x1p+0, false, 7019- 0x1.0000000000001p+0, false, 7020- 0x1p+0, false, 7021- 0x1.0000000000001p+0, false, 7022- false, 7023- 0x1.00000000000008p+0, false, 7024- 0x1.0000000000000802p+0, false, 7025- 0x1.00000000000008p+0, false, 7026- 0x1.0000000000000802p+0, false, 7027- false, 7028- 0x1.00000000000008p+0, false, 7029- 0x1.0000000000000802p+0, false, 7030- 0x1.00000000000008p+0, false, 7031- 0x1.0000000000000802p+0, false, 7032- false, 7033- 0x1.00000000000008016eea8f26c48p+0, false, 7034- 0x1.00000000000008016eea8f26c48p+0, false, 7035- 0x1.00000000000008016eea8f26c48p+0, false, 7036- 0x1.00000000000008016eea8f26c5p+0, false, 7037- false, 7038- 0x1.00000000000008016eea8f26c495p+0, false, 7039- 0x1.00000000000008016eea8f26c496p+0, false, 7040- 0x1.00000000000008016eea8f26c495p+0, false, 7041- 0x1.00000000000008016eea8f26c496p+0, false), 7042+ 0x1p+0, false, false, 7043+ 0x1p+0, false, false, 7044+ 0x1p+0, false, false, 7045+ 0x1.000002p+0, false, false, 7046+ false, 7047+ 0x1p+0, false, false, 7048+ 0x1.0000000000001p+0, false, false, 7049+ 0x1p+0, false, false, 7050+ 0x1.0000000000001p+0, false, false, 7051+ false, 7052+ 0x1.00000000000008p+0, false, false, 7053+ 0x1.0000000000000802p+0, false, false, 7054+ 0x1.00000000000008p+0, false, false, 7055+ 0x1.0000000000000802p+0, false, false, 7056+ false, 7057+ 0x1.00000000000008p+0, false, false, 7058+ 0x1.0000000000000802p+0, false, false, 7059+ 0x1.00000000000008p+0, false, false, 7060+ 0x1.0000000000000802p+0, false, false, 7061+ false, 7062+ 0x1.00000000000008016eea8f26c48p+0, false, false, 7063+ 0x1.00000000000008016eea8f26c48p+0, false, false, 7064+ 0x1.00000000000008016eea8f26c48p+0, false, false, 7065+ 0x1.00000000000008016eea8f26c5p+0, false, false, 7066+ false, 7067+ 0x1.00000000000008016eea8f26c495p+0, false, false, 7068+ 0x1.00000000000008016eea8f26c496p+0, false, false, 7069+ 0x1.00000000000008016eea8f26c495p+0, false, false, 7070+ 0x1.00000000000008016eea8f26c496p+0, false, false), 7071 TEST ("1.000000000000000111", 7072 false, 7073- 0x1p+0, false, 7074- 0x1p+0, false, 7075- 0x1p+0, false, 7076- 0x1.000002p+0, false, 7077- false, 7078- 0x1p+0, false, 7079- 0x1p+0, false, 7080- 0x1p+0, false, 7081- 0x1.0000000000001p+0, false, 7082- false, 7083- 0x1.00000000000007fep+0, false, 7084- 0x1.00000000000008p+0, false, 7085- 0x1.00000000000007fep+0, false, 7086- 0x1.00000000000008p+0, false, 7087- false, 7088- 0x1.00000000000007fep+0, false, 7089- 0x1.00000000000008p+0, false, 7090- 0x1.00000000000007fep+0, false, 7091- 0x1.00000000000008p+0, false, 7092- false, 7093- 0x1.00000000000007ff96adfa2b57p+0, false, 7094- 0x1.00000000000007ff96adfa2b578p+0, false, 7095- 0x1.00000000000007ff96adfa2b57p+0, false, 7096- 0x1.00000000000007ff96adfa2b578p+0, false, 7097- false, 7098- 0x1.00000000000007ff96adfa2b576ap+0, false, 7099- 0x1.00000000000007ff96adfa2b576bp+0, false, 7100- 0x1.00000000000007ff96adfa2b576ap+0, false, 7101- 0x1.00000000000007ff96adfa2b576bp+0, false), 7102+ 0x1p+0, false, false, 7103+ 0x1p+0, false, false, 7104+ 0x1p+0, false, false, 7105+ 0x1.000002p+0, false, false, 7106+ false, 7107+ 0x1p+0, false, false, 7108+ 0x1p+0, false, false, 7109+ 0x1p+0, false, false, 7110+ 0x1.0000000000001p+0, false, false, 7111+ false, 7112+ 0x1.00000000000007fep+0, false, false, 7113+ 0x1.00000000000008p+0, false, false, 7114+ 0x1.00000000000007fep+0, false, false, 7115+ 0x1.00000000000008p+0, false, false, 7116+ false, 7117+ 0x1.00000000000007fep+0, false, false, 7118+ 0x1.00000000000008p+0, false, false, 7119+ 0x1.00000000000007fep+0, false, false, 7120+ 0x1.00000000000008p+0, false, false, 7121+ false, 7122+ 0x1.00000000000007ff96adfa2b57p+0, false, false, 7123+ 0x1.00000000000007ff96adfa2b578p+0, false, false, 7124+ 0x1.00000000000007ff96adfa2b57p+0, false, false, 7125+ 0x1.00000000000007ff96adfa2b578p+0, false, false, 7126+ false, 7127+ 0x1.00000000000007ff96adfa2b576ap+0, false, false, 7128+ 0x1.00000000000007ff96adfa2b576bp+0, false, false, 7129+ 0x1.00000000000007ff96adfa2b576ap+0, false, false, 7130+ 0x1.00000000000007ff96adfa2b576bp+0, false, false), 7131 TEST ("1.00000000000000011", 7132 false, 7133- 0x1p+0, false, 7134- 0x1p+0, false, 7135- 0x1p+0, false, 7136- 0x1.000002p+0, false, 7137- false, 7138- 0x1p+0, false, 7139- 0x1p+0, false, 7140- 0x1p+0, false, 7141- 0x1.0000000000001p+0, false, 7142- false, 7143- 0x1.00000000000007ecp+0, false, 7144- 0x1.00000000000007eep+0, false, 7145- 0x1.00000000000007ecp+0, false, 7146- 0x1.00000000000007eep+0, false, 7147- false, 7148- 0x1.00000000000007ecp+0, false, 7149- 0x1.00000000000007eep+0, false, 7150- 0x1.00000000000007ecp+0, false, 7151- 0x1.00000000000007eep+0, false, 7152- false, 7153- 0x1.00000000000007ed24502859138p+0, false, 7154- 0x1.00000000000007ed24502859138p+0, false, 7155- 0x1.00000000000007ed24502859138p+0, false, 7156- 0x1.00000000000007ed2450285914p+0, false, 7157- false, 7158- 0x1.00000000000007ed2450285913bfp+0, false, 7159- 0x1.00000000000007ed2450285913bfp+0, false, 7160- 0x1.00000000000007ed2450285913bfp+0, false, 7161- 0x1.00000000000007ed2450285913cp+0, false), 7162+ 0x1p+0, false, false, 7163+ 0x1p+0, false, false, 7164+ 0x1p+0, false, false, 7165+ 0x1.000002p+0, false, false, 7166+ false, 7167+ 0x1p+0, false, false, 7168+ 0x1p+0, false, false, 7169+ 0x1p+0, false, false, 7170+ 0x1.0000000000001p+0, false, false, 7171+ false, 7172+ 0x1.00000000000007ecp+0, false, false, 7173+ 0x1.00000000000007eep+0, false, false, 7174+ 0x1.00000000000007ecp+0, false, false, 7175+ 0x1.00000000000007eep+0, false, false, 7176+ false, 7177+ 0x1.00000000000007ecp+0, false, false, 7178+ 0x1.00000000000007eep+0, false, false, 7179+ 0x1.00000000000007ecp+0, false, false, 7180+ 0x1.00000000000007eep+0, false, false, 7181+ false, 7182+ 0x1.00000000000007ed24502859138p+0, false, false, 7183+ 0x1.00000000000007ed24502859138p+0, false, false, 7184+ 0x1.00000000000007ed24502859138p+0, false, false, 7185+ 0x1.00000000000007ed2450285914p+0, false, false, 7186+ false, 7187+ 0x1.00000000000007ed2450285913bfp+0, false, false, 7188+ 0x1.00000000000007ed2450285913bfp+0, false, false, 7189+ 0x1.00000000000007ed2450285913bfp+0, false, false, 7190+ 0x1.00000000000007ed2450285913cp+0, false, false), 7191 TEST ("1.0000000000000001", 7192 false, 7193- 0x1p+0, false, 7194- 0x1p+0, false, 7195- 0x1p+0, false, 7196- 0x1.000002p+0, false, 7197- false, 7198- 0x1p+0, false, 7199- 0x1p+0, false, 7200- 0x1p+0, false, 7201- 0x1.0000000000001p+0, false, 7202- false, 7203- 0x1.0000000000000734p+0, false, 7204- 0x1.0000000000000734p+0, false, 7205- 0x1.0000000000000734p+0, false, 7206- 0x1.0000000000000736p+0, false, 7207- false, 7208- 0x1.0000000000000734p+0, false, 7209- 0x1.0000000000000734p+0, false, 7210- 0x1.0000000000000734p+0, false, 7211- 0x1.0000000000000736p+0, false, 7212- false, 7213- 0x1.0000000000000734aca5f6226fp+0, false, 7214- 0x1.0000000000000734aca5f6226fp+0, false, 7215- 0x1.0000000000000734aca5f6226fp+0, false, 7216- 0x1.0000000000000734aca5f6226f8p+0, false, 7217- false, 7218- 0x1.0000000000000734aca5f6226f0ap+0, false, 7219- 0x1.0000000000000734aca5f6226f0bp+0, false, 7220- 0x1.0000000000000734aca5f6226f0ap+0, false, 7221- 0x1.0000000000000734aca5f6226f0bp+0, false), 7222+ 0x1p+0, false, false, 7223+ 0x1p+0, false, false, 7224+ 0x1p+0, false, false, 7225+ 0x1.000002p+0, false, false, 7226+ false, 7227+ 0x1p+0, false, false, 7228+ 0x1p+0, false, false, 7229+ 0x1p+0, false, false, 7230+ 0x1.0000000000001p+0, false, false, 7231+ false, 7232+ 0x1.0000000000000734p+0, false, false, 7233+ 0x1.0000000000000734p+0, false, false, 7234+ 0x1.0000000000000734p+0, false, false, 7235+ 0x1.0000000000000736p+0, false, false, 7236+ false, 7237+ 0x1.0000000000000734p+0, false, false, 7238+ 0x1.0000000000000734p+0, false, false, 7239+ 0x1.0000000000000734p+0, false, false, 7240+ 0x1.0000000000000736p+0, false, false, 7241+ false, 7242+ 0x1.0000000000000734aca5f6226fp+0, false, false, 7243+ 0x1.0000000000000734aca5f6226fp+0, false, false, 7244+ 0x1.0000000000000734aca5f6226fp+0, false, false, 7245+ 0x1.0000000000000734aca5f6226f8p+0, false, false, 7246+ false, 7247+ 0x1.0000000000000734aca5f6226f0ap+0, false, false, 7248+ 0x1.0000000000000734aca5f6226f0bp+0, false, false, 7249+ 0x1.0000000000000734aca5f6226f0ap+0, false, false, 7250+ 0x1.0000000000000734aca5f6226f0bp+0, false, false), 7251 TEST ("3929201589819414e-25", 7252 false, 7253- 0x1.b0053p-32, false, 7254- 0x1.b00532p-32, false, 7255- 0x1.b0053p-32, false, 7256- 0x1.b00532p-32, false, 7257- false, 7258- 0x1.b005314e2421ep-32, false, 7259- 0x1.b005314e2421ep-32, false, 7260- 0x1.b005314e2421ep-32, false, 7261- 0x1.b005314e2421fp-32, false, 7262- false, 7263- 0x1.b005314e2421e7fep-32, false, 7264- 0x1.b005314e2421e8p-32, false, 7265- 0x1.b005314e2421e7fep-32, false, 7266- 0x1.b005314e2421e8p-32, false, 7267- false, 7268- 0x1.b005314e2421e7fep-32, false, 7269- 0x1.b005314e2421e8p-32, false, 7270- 0x1.b005314e2421e7fep-32, false, 7271- 0x1.b005314e2421e8p-32, false, 7272- false, 7273- 0x1.b005314e2421e7ffb472840c5ap-32, false, 7274- 0x1.b005314e2421e7ffb472840c5a8p-32, false, 7275- 0x1.b005314e2421e7ffb472840c5ap-32, false, 7276- 0x1.b005314e2421e7ffb472840c5a8p-32, false, 7277- false, 7278- 0x1.b005314e2421e7ffb472840c5a6ep-32, false, 7279- 0x1.b005314e2421e7ffb472840c5a6fp-32, false, 7280- 0x1.b005314e2421e7ffb472840c5a6ep-32, false, 7281- 0x1.b005314e2421e7ffb472840c5a6fp-32, false), 7282+ 0x1.b0053p-32, false, false, 7283+ 0x1.b00532p-32, false, false, 7284+ 0x1.b0053p-32, false, false, 7285+ 0x1.b00532p-32, false, false, 7286+ false, 7287+ 0x1.b005314e2421ep-32, false, false, 7288+ 0x1.b005314e2421ep-32, false, false, 7289+ 0x1.b005314e2421ep-32, false, false, 7290+ 0x1.b005314e2421fp-32, false, false, 7291+ false, 7292+ 0x1.b005314e2421e7fep-32, false, false, 7293+ 0x1.b005314e2421e8p-32, false, false, 7294+ 0x1.b005314e2421e7fep-32, false, false, 7295+ 0x1.b005314e2421e8p-32, false, false, 7296+ false, 7297+ 0x1.b005314e2421e7fep-32, false, false, 7298+ 0x1.b005314e2421e8p-32, false, false, 7299+ 0x1.b005314e2421e7fep-32, false, false, 7300+ 0x1.b005314e2421e8p-32, false, false, 7301+ false, 7302+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false, 7303+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false, 7304+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false, 7305+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false, 7306+ false, 7307+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false, 7308+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false, 7309+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false, 7310+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false), 7311 TEST ("0.0000000000000000000000000000000000000000000021019476964872" 7312 "256063855943749348741969203929128147736576356024258346866240" 7313 "28790902229957282543182373046875", 7314 false, 7315- 0x8p-152, false, 7316- 0x1p-148, false, 7317- 0x8p-152, false, 7318- 0x1p-148, false, 7319- true, 7320- 0xcp-152, false, 7321- 0xcp-152, false, 7322- 0xcp-152, false, 7323- 0xcp-152, false, 7324- true, 7325- 0xcp-152, false, 7326- 0xcp-152, false, 7327- 0xcp-152, false, 7328- 0xcp-152, false, 7329- true, 7330- 0xcp-152, false, 7331- 0xcp-152, false, 7332- 0xcp-152, false, 7333- 0xcp-152, false, 7334- true, 7335- 0xcp-152, false, 7336- 0xcp-152, false, 7337- 0xcp-152, false, 7338- 0xcp-152, false, 7339- true, 7340- 0xcp-152, false, 7341- 0xcp-152, false, 7342- 0xcp-152, false, 7343- 0xcp-152, false), 7344+ 0x8p-152, false, true, 7345+ 0x1p-148, false, true, 7346+ 0x8p-152, false, true, 7347+ 0x1p-148, false, true, 7348+ true, 7349+ 0xcp-152, false, false, 7350+ 0xcp-152, false, false, 7351+ 0xcp-152, false, false, 7352+ 0xcp-152, false, false, 7353+ true, 7354+ 0xcp-152, false, false, 7355+ 0xcp-152, false, false, 7356+ 0xcp-152, false, false, 7357+ 0xcp-152, false, false, 7358+ true, 7359+ 0xcp-152, false, false, 7360+ 0xcp-152, false, false, 7361+ 0xcp-152, false, false, 7362+ 0xcp-152, false, false, 7363+ true, 7364+ 0xcp-152, false, false, 7365+ 0xcp-152, false, false, 7366+ 0xcp-152, false, false, 7367+ 0xcp-152, false, false, 7368+ true, 7369+ 0xcp-152, false, false, 7370+ 0xcp-152, false, false, 7371+ 0xcp-152, false, false, 7372+ 0xcp-152, false, false), 7373 TEST ("1.00000005960464477539062499", 7374 false, 7375- 0x1p+0, false, 7376- 0x1p+0, false, 7377- 0x1p+0, false, 7378- 0x1.000002p+0, false, 7379- false, 7380- 0x1.000000fffffffp+0, false, 7381- 0x1.000001p+0, false, 7382- 0x1.000000fffffffp+0, false, 7383- 0x1.000001p+0, false, 7384- false, 7385- 0x1.000000fffffffffep+0, false, 7386- 0x1.000001p+0, false, 7387- 0x1.000000fffffffffep+0, false, 7388- 0x1.000001p+0, false, 7389- false, 7390- 0x1.000000fffffffffep+0, false, 7391- 0x1.000001p+0, false, 7392- 0x1.000000fffffffffep+0, false, 7393- 0x1.000001p+0, false, 7394- false, 7395- 0x1.000000fffffffffffffffce7b78p+0, false, 7396- 0x1.000000fffffffffffffffce7b8p+0, false, 7397- 0x1.000000fffffffffffffffce7b78p+0, false, 7398- 0x1.000000fffffffffffffffce7b8p+0, false, 7399- false, 7400- 0x1.000000fffffffffffffffce7b7e7p+0, false, 7401- 0x1.000000fffffffffffffffce7b7e7p+0, false, 7402- 0x1.000000fffffffffffffffce7b7e7p+0, false, 7403- 0x1.000000fffffffffffffffce7b7e8p+0, false), 7404+ 0x1p+0, false, false, 7405+ 0x1p+0, false, false, 7406+ 0x1p+0, false, false, 7407+ 0x1.000002p+0, false, false, 7408+ false, 7409+ 0x1.000000fffffffp+0, false, false, 7410+ 0x1.000001p+0, false, false, 7411+ 0x1.000000fffffffp+0, false, false, 7412+ 0x1.000001p+0, false, false, 7413+ false, 7414+ 0x1.000000fffffffffep+0, false, false, 7415+ 0x1.000001p+0, false, false, 7416+ 0x1.000000fffffffffep+0, false, false, 7417+ 0x1.000001p+0, false, false, 7418+ false, 7419+ 0x1.000000fffffffffep+0, false, false, 7420+ 0x1.000001p+0, false, false, 7421+ 0x1.000000fffffffffep+0, false, false, 7422+ 0x1.000001p+0, false, false, 7423+ false, 7424+ 0x1.000000fffffffffffffffce7b78p+0, false, false, 7425+ 0x1.000000fffffffffffffffce7b8p+0, false, false, 7426+ 0x1.000000fffffffffffffffce7b78p+0, false, false, 7427+ 0x1.000000fffffffffffffffce7b8p+0, false, false, 7428+ false, 7429+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false, 7430+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false, 7431+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false, 7432+ 0x1.000000fffffffffffffffce7b7e8p+0, false, false), 7433 TEST ("1.000000059604644775390625", 7434 false, 7435- 0x1p+0, false, 7436- 0x1p+0, false, 7437- 0x1p+0, false, 7438- 0x1.000002p+0, false, 7439- true, 7440- 0x1.000001p+0, false, 7441- 0x1.000001p+0, false, 7442- 0x1.000001p+0, false, 7443- 0x1.000001p+0, false, 7444- true, 7445- 0x1.000001p+0, false, 7446- 0x1.000001p+0, false, 7447- 0x1.000001p+0, false, 7448- 0x1.000001p+0, false, 7449- true, 7450- 0x1.000001p+0, false, 7451- 0x1.000001p+0, false, 7452- 0x1.000001p+0, false, 7453- 0x1.000001p+0, false, 7454- true, 7455- 0x1.000001p+0, false, 7456- 0x1.000001p+0, false, 7457- 0x1.000001p+0, false, 7458- 0x1.000001p+0, false, 7459- true, 7460- 0x1.000001p+0, false, 7461- 0x1.000001p+0, false, 7462- 0x1.000001p+0, false, 7463- 0x1.000001p+0, false), 7464+ 0x1p+0, false, false, 7465+ 0x1p+0, false, false, 7466+ 0x1p+0, false, false, 7467+ 0x1.000002p+0, false, false, 7468+ true, 7469+ 0x1.000001p+0, false, false, 7470+ 0x1.000001p+0, false, false, 7471+ 0x1.000001p+0, false, false, 7472+ 0x1.000001p+0, false, false, 7473+ true, 7474+ 0x1.000001p+0, false, false, 7475+ 0x1.000001p+0, false, false, 7476+ 0x1.000001p+0, false, false, 7477+ 0x1.000001p+0, false, false, 7478+ true, 7479+ 0x1.000001p+0, false, false, 7480+ 0x1.000001p+0, false, false, 7481+ 0x1.000001p+0, false, false, 7482+ 0x1.000001p+0, false, false, 7483+ true, 7484+ 0x1.000001p+0, false, false, 7485+ 0x1.000001p+0, false, false, 7486+ 0x1.000001p+0, false, false, 7487+ 0x1.000001p+0, false, false, 7488+ true, 7489+ 0x1.000001p+0, false, false, 7490+ 0x1.000001p+0, false, false, 7491+ 0x1.000001p+0, false, false, 7492+ 0x1.000001p+0, false, false), 7493 TEST ("1.00000005960464477539062501", 7494 false, 7495- 0x1p+0, false, 7496- 0x1.000002p+0, false, 7497- 0x1p+0, false, 7498- 0x1.000002p+0, false, 7499- false, 7500- 0x1.000001p+0, false, 7501- 0x1.000001p+0, false, 7502- 0x1.000001p+0, false, 7503- 0x1.0000010000001p+0, false, 7504- false, 7505- 0x1.000001p+0, false, 7506- 0x1.000001p+0, false, 7507- 0x1.000001p+0, false, 7508- 0x1.0000010000000002p+0, false, 7509- false, 7510- 0x1.000001p+0, false, 7511- 0x1.000001p+0, false, 7512- 0x1.000001p+0, false, 7513- 0x1.0000010000000002p+0, false, 7514- false, 7515- 0x1.00000100000000000000031848p+0, false, 7516- 0x1.00000100000000000000031848p+0, false, 7517- 0x1.00000100000000000000031848p+0, false, 7518- 0x1.000001000000000000000318488p+0, false, 7519- false, 7520- 0x1.0000010000000000000003184818p+0, false, 7521- 0x1.0000010000000000000003184819p+0, false, 7522- 0x1.0000010000000000000003184818p+0, false, 7523- 0x1.0000010000000000000003184819p+0, false), 7524+ 0x1p+0, false, false, 7525+ 0x1.000002p+0, false, false, 7526+ 0x1p+0, false, false, 7527+ 0x1.000002p+0, false, false, 7528+ false, 7529+ 0x1.000001p+0, false, false, 7530+ 0x1.000001p+0, false, false, 7531+ 0x1.000001p+0, false, false, 7532+ 0x1.0000010000001p+0, false, false, 7533+ false, 7534+ 0x1.000001p+0, false, false, 7535+ 0x1.000001p+0, false, false, 7536+ 0x1.000001p+0, false, false, 7537+ 0x1.0000010000000002p+0, false, false, 7538+ false, 7539+ 0x1.000001p+0, false, false, 7540+ 0x1.000001p+0, false, false, 7541+ 0x1.000001p+0, false, false, 7542+ 0x1.0000010000000002p+0, false, false, 7543+ false, 7544+ 0x1.00000100000000000000031848p+0, false, false, 7545+ 0x1.00000100000000000000031848p+0, false, false, 7546+ 0x1.00000100000000000000031848p+0, false, false, 7547+ 0x1.000001000000000000000318488p+0, false, false, 7548+ false, 7549+ 0x1.0000010000000000000003184818p+0, false, false, 7550+ 0x1.0000010000000000000003184819p+0, false, false, 7551+ 0x1.0000010000000000000003184818p+0, false, false, 7552+ 0x1.0000010000000000000003184819p+0, false, false), 7553 TEST ("1.00000011920928955078125", 7554 true, 7555- 0x1.000002p+0, false, 7556- 0x1.000002p+0, false, 7557- 0x1.000002p+0, false, 7558- 0x1.000002p+0, false, 7559- true, 7560- 0x1.000002p+0, false, 7561- 0x1.000002p+0, false, 7562- 0x1.000002p+0, false, 7563- 0x1.000002p+0, false, 7564- true, 7565- 0x1.000002p+0, false, 7566- 0x1.000002p+0, false, 7567- 0x1.000002p+0, false, 7568- 0x1.000002p+0, false, 7569- true, 7570- 0x1.000002p+0, false, 7571- 0x1.000002p+0, false, 7572- 0x1.000002p+0, false, 7573- 0x1.000002p+0, false, 7574- true, 7575- 0x1.000002p+0, false, 7576- 0x1.000002p+0, false, 7577- 0x1.000002p+0, false, 7578- 0x1.000002p+0, false, 7579- true, 7580- 0x1.000002p+0, false, 7581- 0x1.000002p+0, false, 7582- 0x1.000002p+0, false, 7583- 0x1.000002p+0, false), 7584+ 0x1.000002p+0, false, false, 7585+ 0x1.000002p+0, false, false, 7586+ 0x1.000002p+0, false, false, 7587+ 0x1.000002p+0, false, false, 7588+ true, 7589+ 0x1.000002p+0, false, false, 7590+ 0x1.000002p+0, false, false, 7591+ 0x1.000002p+0, false, false, 7592+ 0x1.000002p+0, false, false, 7593+ true, 7594+ 0x1.000002p+0, false, false, 7595+ 0x1.000002p+0, false, false, 7596+ 0x1.000002p+0, false, false, 7597+ 0x1.000002p+0, false, false, 7598+ true, 7599+ 0x1.000002p+0, false, false, 7600+ 0x1.000002p+0, false, false, 7601+ 0x1.000002p+0, false, false, 7602+ 0x1.000002p+0, false, false, 7603+ true, 7604+ 0x1.000002p+0, false, false, 7605+ 0x1.000002p+0, false, false, 7606+ 0x1.000002p+0, false, false, 7607+ 0x1.000002p+0, false, false, 7608+ true, 7609+ 0x1.000002p+0, false, false, 7610+ 0x1.000002p+0, false, false, 7611+ 0x1.000002p+0, false, false, 7612+ 0x1.000002p+0, false, false), 7613 TEST ("1.00000017881393432617187499", 7614 false, 7615- 0x1.000002p+0, false, 7616- 0x1.000002p+0, false, 7617- 0x1.000002p+0, false, 7618- 0x1.000004p+0, false, 7619- false, 7620- 0x1.000002fffffffp+0, false, 7621- 0x1.000003p+0, false, 7622- 0x1.000002fffffffp+0, false, 7623- 0x1.000003p+0, false, 7624- false, 7625- 0x1.000002fffffffffep+0, false, 7626- 0x1.000003p+0, false, 7627- 0x1.000002fffffffffep+0, false, 7628- 0x1.000003p+0, false, 7629- false, 7630- 0x1.000002fffffffffep+0, false, 7631- 0x1.000003p+0, false, 7632- 0x1.000002fffffffffep+0, false, 7633- 0x1.000003p+0, false, 7634- false, 7635- 0x1.000002fffffffffffffffce7b78p+0, false, 7636- 0x1.000002fffffffffffffffce7b8p+0, false, 7637- 0x1.000002fffffffffffffffce7b78p+0, false, 7638- 0x1.000002fffffffffffffffce7b8p+0, false, 7639- false, 7640- 0x1.000002fffffffffffffffce7b7e7p+0, false, 7641- 0x1.000002fffffffffffffffce7b7e7p+0, false, 7642- 0x1.000002fffffffffffffffce7b7e7p+0, false, 7643- 0x1.000002fffffffffffffffce7b7e8p+0, false), 7644+ 0x1.000002p+0, false, false, 7645+ 0x1.000002p+0, false, false, 7646+ 0x1.000002p+0, false, false, 7647+ 0x1.000004p+0, false, false, 7648+ false, 7649+ 0x1.000002fffffffp+0, false, false, 7650+ 0x1.000003p+0, false, false, 7651+ 0x1.000002fffffffp+0, false, false, 7652+ 0x1.000003p+0, false, false, 7653+ false, 7654+ 0x1.000002fffffffffep+0, false, false, 7655+ 0x1.000003p+0, false, false, 7656+ 0x1.000002fffffffffep+0, false, false, 7657+ 0x1.000003p+0, false, false, 7658+ false, 7659+ 0x1.000002fffffffffep+0, false, false, 7660+ 0x1.000003p+0, false, false, 7661+ 0x1.000002fffffffffep+0, false, false, 7662+ 0x1.000003p+0, false, false, 7663+ false, 7664+ 0x1.000002fffffffffffffffce7b78p+0, false, false, 7665+ 0x1.000002fffffffffffffffce7b8p+0, false, false, 7666+ 0x1.000002fffffffffffffffce7b78p+0, false, false, 7667+ 0x1.000002fffffffffffffffce7b8p+0, false, false, 7668+ false, 7669+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false, 7670+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false, 7671+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false, 7672+ 0x1.000002fffffffffffffffce7b7e8p+0, false, false), 7673 TEST ("1.000000178813934326171875", 7674 false, 7675- 0x1.000002p+0, false, 7676- 0x1.000004p+0, false, 7677- 0x1.000002p+0, false, 7678- 0x1.000004p+0, false, 7679- true, 7680- 0x1.000003p+0, false, 7681- 0x1.000003p+0, false, 7682- 0x1.000003p+0, false, 7683- 0x1.000003p+0, false, 7684- true, 7685- 0x1.000003p+0, false, 7686- 0x1.000003p+0, false, 7687- 0x1.000003p+0, false, 7688- 0x1.000003p+0, false, 7689- true, 7690- 0x1.000003p+0, false, 7691- 0x1.000003p+0, false, 7692- 0x1.000003p+0, false, 7693- 0x1.000003p+0, false, 7694- true, 7695- 0x1.000003p+0, false, 7696- 0x1.000003p+0, false, 7697- 0x1.000003p+0, false, 7698- 0x1.000003p+0, false, 7699- true, 7700- 0x1.000003p+0, false, 7701- 0x1.000003p+0, false, 7702- 0x1.000003p+0, false, 7703- 0x1.000003p+0, false), 7704+ 0x1.000002p+0, false, false, 7705+ 0x1.000004p+0, false, false, 7706+ 0x1.000002p+0, false, false, 7707+ 0x1.000004p+0, false, false, 7708+ true, 7709+ 0x1.000003p+0, false, false, 7710+ 0x1.000003p+0, false, false, 7711+ 0x1.000003p+0, false, false, 7712+ 0x1.000003p+0, false, false, 7713+ true, 7714+ 0x1.000003p+0, false, false, 7715+ 0x1.000003p+0, false, false, 7716+ 0x1.000003p+0, false, false, 7717+ 0x1.000003p+0, false, false, 7718+ true, 7719+ 0x1.000003p+0, false, false, 7720+ 0x1.000003p+0, false, false, 7721+ 0x1.000003p+0, false, false, 7722+ 0x1.000003p+0, false, false, 7723+ true, 7724+ 0x1.000003p+0, false, false, 7725+ 0x1.000003p+0, false, false, 7726+ 0x1.000003p+0, false, false, 7727+ 0x1.000003p+0, false, false, 7728+ true, 7729+ 0x1.000003p+0, false, false, 7730+ 0x1.000003p+0, false, false, 7731+ 0x1.000003p+0, false, false, 7732+ 0x1.000003p+0, false, false), 7733 TEST ("1.00000017881393432617187501", 7734 false, 7735- 0x1.000002p+0, false, 7736- 0x1.000004p+0, false, 7737- 0x1.000002p+0, false, 7738- 0x1.000004p+0, false, 7739- false, 7740- 0x1.000003p+0, false, 7741- 0x1.000003p+0, false, 7742- 0x1.000003p+0, false, 7743- 0x1.0000030000001p+0, false, 7744- false, 7745- 0x1.000003p+0, false, 7746- 0x1.000003p+0, false, 7747- 0x1.000003p+0, false, 7748- 0x1.0000030000000002p+0, false, 7749- false, 7750- 0x1.000003p+0, false, 7751- 0x1.000003p+0, false, 7752- 0x1.000003p+0, false, 7753- 0x1.0000030000000002p+0, false, 7754- false, 7755- 0x1.00000300000000000000031848p+0, false, 7756- 0x1.00000300000000000000031848p+0, false, 7757- 0x1.00000300000000000000031848p+0, false, 7758- 0x1.000003000000000000000318488p+0, false, 7759- false, 7760- 0x1.0000030000000000000003184818p+0, false, 7761- 0x1.0000030000000000000003184819p+0, false, 7762- 0x1.0000030000000000000003184818p+0, false, 7763- 0x1.0000030000000000000003184819p+0, false), 7764+ 0x1.000002p+0, false, false, 7765+ 0x1.000004p+0, false, false, 7766+ 0x1.000002p+0, false, false, 7767+ 0x1.000004p+0, false, false, 7768+ false, 7769+ 0x1.000003p+0, false, false, 7770+ 0x1.000003p+0, false, false, 7771+ 0x1.000003p+0, false, false, 7772+ 0x1.0000030000001p+0, false, false, 7773+ false, 7774+ 0x1.000003p+0, false, false, 7775+ 0x1.000003p+0, false, false, 7776+ 0x1.000003p+0, false, false, 7777+ 0x1.0000030000000002p+0, false, false, 7778+ false, 7779+ 0x1.000003p+0, false, false, 7780+ 0x1.000003p+0, false, false, 7781+ 0x1.000003p+0, false, false, 7782+ 0x1.0000030000000002p+0, false, false, 7783+ false, 7784+ 0x1.00000300000000000000031848p+0, false, false, 7785+ 0x1.00000300000000000000031848p+0, false, false, 7786+ 0x1.00000300000000000000031848p+0, false, false, 7787+ 0x1.000003000000000000000318488p+0, false, false, 7788+ false, 7789+ 0x1.0000030000000000000003184818p+0, false, false, 7790+ 0x1.0000030000000000000003184819p+0, false, false, 7791+ 0x1.0000030000000000000003184818p+0, false, false, 7792+ 0x1.0000030000000000000003184819p+0, false, false), 7793 TEST ("1.0000002384185791015625", 7794 true, 7795- 0x1.000004p+0, false, 7796- 0x1.000004p+0, false, 7797- 0x1.000004p+0, false, 7798- 0x1.000004p+0, false, 7799- true, 7800- 0x1.000004p+0, false, 7801- 0x1.000004p+0, false, 7802- 0x1.000004p+0, false, 7803- 0x1.000004p+0, false, 7804- true, 7805- 0x1.000004p+0, false, 7806- 0x1.000004p+0, false, 7807- 0x1.000004p+0, false, 7808- 0x1.000004p+0, false, 7809- true, 7810- 0x1.000004p+0, false, 7811- 0x1.000004p+0, false, 7812- 0x1.000004p+0, false, 7813- 0x1.000004p+0, false, 7814- true, 7815- 0x1.000004p+0, false, 7816- 0x1.000004p+0, false, 7817- 0x1.000004p+0, false, 7818- 0x1.000004p+0, false, 7819- true, 7820- 0x1.000004p+0, false, 7821- 0x1.000004p+0, false, 7822- 0x1.000004p+0, false, 7823- 0x1.000004p+0, false), 7824+ 0x1.000004p+0, false, false, 7825+ 0x1.000004p+0, false, false, 7826+ 0x1.000004p+0, false, false, 7827+ 0x1.000004p+0, false, false, 7828+ true, 7829+ 0x1.000004p+0, false, false, 7830+ 0x1.000004p+0, false, false, 7831+ 0x1.000004p+0, false, false, 7832+ 0x1.000004p+0, false, false, 7833+ true, 7834+ 0x1.000004p+0, false, false, 7835+ 0x1.000004p+0, false, false, 7836+ 0x1.000004p+0, false, false, 7837+ 0x1.000004p+0, false, false, 7838+ true, 7839+ 0x1.000004p+0, false, false, 7840+ 0x1.000004p+0, false, false, 7841+ 0x1.000004p+0, false, false, 7842+ 0x1.000004p+0, false, false, 7843+ true, 7844+ 0x1.000004p+0, false, false, 7845+ 0x1.000004p+0, false, false, 7846+ 0x1.000004p+0, false, false, 7847+ 0x1.000004p+0, false, false, 7848+ true, 7849+ 0x1.000004p+0, false, false, 7850+ 0x1.000004p+0, false, false, 7851+ 0x1.000004p+0, false, false, 7852+ 0x1.000004p+0, false, false), 7853 TEST ("1.08420217248550443400745280086994171142578125e-19", 7854 true, 7855- 0x2p-64, false, 7856- 0x2p-64, false, 7857- 0x2p-64, false, 7858- 0x2p-64, false, 7859- true, 7860- 0x2p-64, false, 7861- 0x2p-64, false, 7862- 0x2p-64, false, 7863- 0x2p-64, false, 7864- true, 7865- 0x2p-64, false, 7866- 0x2p-64, false, 7867- 0x2p-64, false, 7868- 0x2p-64, false, 7869- true, 7870- 0x2p-64, false, 7871- 0x2p-64, false, 7872- 0x2p-64, false, 7873- 0x2p-64, false, 7874- true, 7875- 0x2p-64, false, 7876- 0x2p-64, false, 7877- 0x2p-64, false, 7878- 0x2p-64, false, 7879- true, 7880- 0x2p-64, false, 7881- 0x2p-64, false, 7882- 0x2p-64, false, 7883- 0x2p-64, false), 7884+ 0x2p-64, false, false, 7885+ 0x2p-64, false, false, 7886+ 0x2p-64, false, false, 7887+ 0x2p-64, false, false, 7888+ true, 7889+ 0x2p-64, false, false, 7890+ 0x2p-64, false, false, 7891+ 0x2p-64, false, false, 7892+ 0x2p-64, false, false, 7893+ true, 7894+ 0x2p-64, false, false, 7895+ 0x2p-64, false, false, 7896+ 0x2p-64, false, false, 7897+ 0x2p-64, false, false, 7898+ true, 7899+ 0x2p-64, false, false, 7900+ 0x2p-64, false, false, 7901+ 0x2p-64, false, false, 7902+ 0x2p-64, false, false, 7903+ true, 7904+ 0x2p-64, false, false, 7905+ 0x2p-64, false, false, 7906+ 0x2p-64, false, false, 7907+ 0x2p-64, false, false, 7908+ true, 7909+ 0x2p-64, false, false, 7910+ 0x2p-64, false, false, 7911+ 0x2p-64, false, false, 7912+ 0x2p-64, false, false), 7913 TEST ("1.0842022371089897897127399001987457793916291848290711641311" 7914 "645507812499e-19", 7915 false, 7916- 0x2p-64, false, 7917- 0x2p-64, false, 7918- 0x2p-64, false, 7919- 0x2.000004p-64, false, 7920- false, 7921- 0x2.000001ffffffep-64, false, 7922- 0x2.000002p-64, false, 7923- 0x2.000001ffffffep-64, false, 7924- 0x2.000002p-64, false, 7925- false, 7926- 0x2.000001fffffffffcp-64, false, 7927- 0x2.000002p-64, false, 7928- 0x2.000001fffffffffcp-64, false, 7929- 0x2.000002p-64, false, 7930- false, 7931- 0x2.000001fffffffffcp-64, false, 7932- 0x2.000002p-64, false, 7933- 0x2.000001fffffffffcp-64, false, 7934- 0x2.000002p-64, false, 7935- false, 7936- 0x2.000001ffffffffffffffffffffp-64, false, 7937- 0x2.000002p-64, false, 7938- 0x2.000001ffffffffffffffffffffp-64, false, 7939- 0x2.000002p-64, false, 7940- false, 7941- 0x2.000001fffffffffffffffffffffep-64, false, 7942- 0x2.000002p-64, false, 7943- 0x2.000001fffffffffffffffffffffep-64, false, 7944- 0x2.000002p-64, false), 7945+ 0x2p-64, false, false, 7946+ 0x2p-64, false, false, 7947+ 0x2p-64, false, false, 7948+ 0x2.000004p-64, false, false, 7949+ false, 7950+ 0x2.000001ffffffep-64, false, false, 7951+ 0x2.000002p-64, false, false, 7952+ 0x2.000001ffffffep-64, false, false, 7953+ 0x2.000002p-64, false, false, 7954+ false, 7955+ 0x2.000001fffffffffcp-64, false, false, 7956+ 0x2.000002p-64, false, false, 7957+ 0x2.000001fffffffffcp-64, false, false, 7958+ 0x2.000002p-64, false, false, 7959+ false, 7960+ 0x2.000001fffffffffcp-64, false, false, 7961+ 0x2.000002p-64, false, false, 7962+ 0x2.000001fffffffffcp-64, false, false, 7963+ 0x2.000002p-64, false, false, 7964+ false, 7965+ 0x2.000001ffffffffffffffffffffp-64, false, false, 7966+ 0x2.000002p-64, false, false, 7967+ 0x2.000001ffffffffffffffffffffp-64, false, false, 7968+ 0x2.000002p-64, false, false, 7969+ false, 7970+ 0x2.000001fffffffffffffffffffffep-64, false, false, 7971+ 0x2.000002p-64, false, false, 7972+ 0x2.000001fffffffffffffffffffffep-64, false, false, 7973+ 0x2.000002p-64, false, false), 7974 TEST ("1.0842022371089897897127399001987457793916291848290711641311" 7975 "6455078125e-19", 7976 false, 7977- 0x2p-64, false, 7978- 0x2p-64, false, 7979- 0x2p-64, false, 7980- 0x2.000004p-64, false, 7981- true, 7982- 0x2.000002p-64, false, 7983- 0x2.000002p-64, false, 7984- 0x2.000002p-64, false, 7985- 0x2.000002p-64, false, 7986- true, 7987- 0x2.000002p-64, false, 7988- 0x2.000002p-64, false, 7989- 0x2.000002p-64, false, 7990- 0x2.000002p-64, false, 7991- true, 7992- 0x2.000002p-64, false, 7993- 0x2.000002p-64, false, 7994- 0x2.000002p-64, false, 7995- 0x2.000002p-64, false, 7996- true, 7997- 0x2.000002p-64, false, 7998- 0x2.000002p-64, false, 7999- 0x2.000002p-64, false, 8000- 0x2.000002p-64, false, 8001- true, 8002- 0x2.000002p-64, false, 8003- 0x2.000002p-64, false, 8004- 0x2.000002p-64, false, 8005- 0x2.000002p-64, false), 8006+ 0x2p-64, false, false, 8007+ 0x2p-64, false, false, 8008+ 0x2p-64, false, false, 8009+ 0x2.000004p-64, false, false, 8010+ true, 8011+ 0x2.000002p-64, false, false, 8012+ 0x2.000002p-64, false, false, 8013+ 0x2.000002p-64, false, false, 8014+ 0x2.000002p-64, false, false, 8015+ true, 8016+ 0x2.000002p-64, false, false, 8017+ 0x2.000002p-64, false, false, 8018+ 0x2.000002p-64, false, false, 8019+ 0x2.000002p-64, false, false, 8020+ true, 8021+ 0x2.000002p-64, false, false, 8022+ 0x2.000002p-64, false, false, 8023+ 0x2.000002p-64, false, false, 8024+ 0x2.000002p-64, false, false, 8025+ true, 8026+ 0x2.000002p-64, false, false, 8027+ 0x2.000002p-64, false, false, 8028+ 0x2.000002p-64, false, false, 8029+ 0x2.000002p-64, false, false, 8030+ true, 8031+ 0x2.000002p-64, false, false, 8032+ 0x2.000002p-64, false, false, 8033+ 0x2.000002p-64, false, false, 8034+ 0x2.000002p-64, false, false), 8035 TEST ("1.0842022371089897897127399001987457793916291848290711641311" 8036 "645507812501e-19", 8037 false, 8038- 0x2p-64, false, 8039- 0x2.000004p-64, false, 8040- 0x2p-64, false, 8041- 0x2.000004p-64, false, 8042- false, 8043- 0x2.000002p-64, false, 8044- 0x2.000002p-64, false, 8045- 0x2.000002p-64, false, 8046- 0x2.0000020000002p-64, false, 8047- false, 8048- 0x2.000002p-64, false, 8049- 0x2.000002p-64, false, 8050- 0x2.000002p-64, false, 8051- 0x2.0000020000000004p-64, false, 8052- false, 8053- 0x2.000002p-64, false, 8054- 0x2.000002p-64, false, 8055- 0x2.000002p-64, false, 8056- 0x2.0000020000000004p-64, false, 8057- false, 8058- 0x2.000002p-64, false, 8059- 0x2.000002p-64, false, 8060- 0x2.000002p-64, false, 8061- 0x2.00000200000000000000000001p-64, false, 8062- false, 8063- 0x2.000002p-64, false, 8064- 0x2.000002p-64, false, 8065- 0x2.000002p-64, false, 8066- 0x2.0000020000000000000000000002p-64, false), 8067+ 0x2p-64, false, false, 8068+ 0x2.000004p-64, false, false, 8069+ 0x2p-64, false, false, 8070+ 0x2.000004p-64, false, false, 8071+ false, 8072+ 0x2.000002p-64, false, false, 8073+ 0x2.000002p-64, false, false, 8074+ 0x2.000002p-64, false, false, 8075+ 0x2.0000020000002p-64, false, false, 8076+ false, 8077+ 0x2.000002p-64, false, false, 8078+ 0x2.000002p-64, false, false, 8079+ 0x2.000002p-64, false, false, 8080+ 0x2.0000020000000004p-64, false, false, 8081+ false, 8082+ 0x2.000002p-64, false, false, 8083+ 0x2.000002p-64, false, false, 8084+ 0x2.000002p-64, false, false, 8085+ 0x2.0000020000000004p-64, false, false, 8086+ false, 8087+ 0x2.000002p-64, false, false, 8088+ 0x2.000002p-64, false, false, 8089+ 0x2.000002p-64, false, false, 8090+ 0x2.00000200000000000000000001p-64, false, false, 8091+ false, 8092+ 0x2.000002p-64, false, false, 8093+ 0x2.000002p-64, false, false, 8094+ 0x2.000002p-64, false, false, 8095+ 0x2.0000020000000000000000000002p-64, false, false), 8096 TEST ("1.0842023017324751454180269995275498473574771196581423282623" 8097 "291015625e-19", 8098 true, 8099- 0x2.000004p-64, false, 8100- 0x2.000004p-64, false, 8101- 0x2.000004p-64, false, 8102- 0x2.000004p-64, false, 8103- true, 8104- 0x2.000004p-64, false, 8105- 0x2.000004p-64, false, 8106- 0x2.000004p-64, false, 8107- 0x2.000004p-64, false, 8108- true, 8109- 0x2.000004p-64, false, 8110- 0x2.000004p-64, false, 8111- 0x2.000004p-64, false, 8112- 0x2.000004p-64, false, 8113- true, 8114- 0x2.000004p-64, false, 8115- 0x2.000004p-64, false, 8116- 0x2.000004p-64, false, 8117- 0x2.000004p-64, false, 8118- true, 8119- 0x2.000004p-64, false, 8120- 0x2.000004p-64, false, 8121- 0x2.000004p-64, false, 8122- 0x2.000004p-64, false, 8123- true, 8124- 0x2.000004p-64, false, 8125- 0x2.000004p-64, false, 8126- 0x2.000004p-64, false, 8127- 0x2.000004p-64, false), 8128+ 0x2.000004p-64, false, false, 8129+ 0x2.000004p-64, false, false, 8130+ 0x2.000004p-64, false, false, 8131+ 0x2.000004p-64, false, false, 8132+ true, 8133+ 0x2.000004p-64, false, false, 8134+ 0x2.000004p-64, false, false, 8135+ 0x2.000004p-64, false, false, 8136+ 0x2.000004p-64, false, false, 8137+ true, 8138+ 0x2.000004p-64, false, false, 8139+ 0x2.000004p-64, false, false, 8140+ 0x2.000004p-64, false, false, 8141+ 0x2.000004p-64, false, false, 8142+ true, 8143+ 0x2.000004p-64, false, false, 8144+ 0x2.000004p-64, false, false, 8145+ 0x2.000004p-64, false, false, 8146+ 0x2.000004p-64, false, false, 8147+ true, 8148+ 0x2.000004p-64, false, false, 8149+ 0x2.000004p-64, false, false, 8150+ 0x2.000004p-64, false, false, 8151+ 0x2.000004p-64, false, false, 8152+ true, 8153+ 0x2.000004p-64, false, false, 8154+ 0x2.000004p-64, false, false, 8155+ 0x2.000004p-64, false, false, 8156+ 0x2.000004p-64, false, false), 8157 TEST ("1.0842023663559605011233140988563539153233250544872134923934" 8158 "936523437499e-19", 8159 false, 8160- 0x2.000004p-64, false, 8161- 0x2.000004p-64, false, 8162- 0x2.000004p-64, false, 8163- 0x2.000008p-64, false, 8164- false, 8165- 0x2.000005ffffffep-64, false, 8166- 0x2.000006p-64, false, 8167- 0x2.000005ffffffep-64, false, 8168- 0x2.000006p-64, false, 8169- false, 8170- 0x2.000005fffffffffcp-64, false, 8171- 0x2.000006p-64, false, 8172- 0x2.000005fffffffffcp-64, false, 8173- 0x2.000006p-64, false, 8174- false, 8175- 0x2.000005fffffffffcp-64, false, 8176- 0x2.000006p-64, false, 8177- 0x2.000005fffffffffcp-64, false, 8178- 0x2.000006p-64, false, 8179- false, 8180- 0x2.000005ffffffffffffffffffffp-64, false, 8181- 0x2.000006p-64, false, 8182- 0x2.000005ffffffffffffffffffffp-64, false, 8183- 0x2.000006p-64, false, 8184- false, 8185- 0x2.000005fffffffffffffffffffffep-64, false, 8186- 0x2.000006p-64, false, 8187- 0x2.000005fffffffffffffffffffffep-64, false, 8188- 0x2.000006p-64, false), 8189+ 0x2.000004p-64, false, false, 8190+ 0x2.000004p-64, false, false, 8191+ 0x2.000004p-64, false, false, 8192+ 0x2.000008p-64, false, false, 8193+ false, 8194+ 0x2.000005ffffffep-64, false, false, 8195+ 0x2.000006p-64, false, false, 8196+ 0x2.000005ffffffep-64, false, false, 8197+ 0x2.000006p-64, false, false, 8198+ false, 8199+ 0x2.000005fffffffffcp-64, false, false, 8200+ 0x2.000006p-64, false, false, 8201+ 0x2.000005fffffffffcp-64, false, false, 8202+ 0x2.000006p-64, false, false, 8203+ false, 8204+ 0x2.000005fffffffffcp-64, false, false, 8205+ 0x2.000006p-64, false, false, 8206+ 0x2.000005fffffffffcp-64, false, false, 8207+ 0x2.000006p-64, false, false, 8208+ false, 8209+ 0x2.000005ffffffffffffffffffffp-64, false, false, 8210+ 0x2.000006p-64, false, false, 8211+ 0x2.000005ffffffffffffffffffffp-64, false, false, 8212+ 0x2.000006p-64, false, false, 8213+ false, 8214+ 0x2.000005fffffffffffffffffffffep-64, false, false, 8215+ 0x2.000006p-64, false, false, 8216+ 0x2.000005fffffffffffffffffffffep-64, false, false, 8217+ 0x2.000006p-64, false, false), 8218 TEST ("1.0842023663559605011233140988563539153233250544872134923934" 8219 "9365234375e-19", 8220 false, 8221- 0x2.000004p-64, false, 8222- 0x2.000008p-64, false, 8223- 0x2.000004p-64, false, 8224- 0x2.000008p-64, false, 8225- true, 8226- 0x2.000006p-64, false, 8227- 0x2.000006p-64, false, 8228- 0x2.000006p-64, false, 8229- 0x2.000006p-64, false, 8230- true, 8231- 0x2.000006p-64, false, 8232- 0x2.000006p-64, false, 8233- 0x2.000006p-64, false, 8234- 0x2.000006p-64, false, 8235- true, 8236- 0x2.000006p-64, false, 8237- 0x2.000006p-64, false, 8238- 0x2.000006p-64, false, 8239- 0x2.000006p-64, false, 8240- true, 8241- 0x2.000006p-64, false, 8242- 0x2.000006p-64, false, 8243- 0x2.000006p-64, false, 8244- 0x2.000006p-64, false, 8245- true, 8246- 0x2.000006p-64, false, 8247- 0x2.000006p-64, false, 8248- 0x2.000006p-64, false, 8249- 0x2.000006p-64, false), 8250+ 0x2.000004p-64, false, false, 8251+ 0x2.000008p-64, false, false, 8252+ 0x2.000004p-64, false, false, 8253+ 0x2.000008p-64, false, false, 8254+ true, 8255+ 0x2.000006p-64, false, false, 8256+ 0x2.000006p-64, false, false, 8257+ 0x2.000006p-64, false, false, 8258+ 0x2.000006p-64, false, false, 8259+ true, 8260+ 0x2.000006p-64, false, false, 8261+ 0x2.000006p-64, false, false, 8262+ 0x2.000006p-64, false, false, 8263+ 0x2.000006p-64, false, false, 8264+ true, 8265+ 0x2.000006p-64, false, false, 8266+ 0x2.000006p-64, false, false, 8267+ 0x2.000006p-64, false, false, 8268+ 0x2.000006p-64, false, false, 8269+ true, 8270+ 0x2.000006p-64, false, false, 8271+ 0x2.000006p-64, false, false, 8272+ 0x2.000006p-64, false, false, 8273+ 0x2.000006p-64, false, false, 8274+ true, 8275+ 0x2.000006p-64, false, false, 8276+ 0x2.000006p-64, false, false, 8277+ 0x2.000006p-64, false, false, 8278+ 0x2.000006p-64, false, false), 8279 TEST ("1.0842023663559605011233140988563539153233250544872134923934" 8280 "936523437501e-19", 8281 false, 8282- 0x2.000004p-64, false, 8283- 0x2.000008p-64, false, 8284- 0x2.000004p-64, false, 8285- 0x2.000008p-64, false, 8286- false, 8287- 0x2.000006p-64, false, 8288- 0x2.000006p-64, false, 8289- 0x2.000006p-64, false, 8290- 0x2.0000060000002p-64, false, 8291- false, 8292- 0x2.000006p-64, false, 8293- 0x2.000006p-64, false, 8294- 0x2.000006p-64, false, 8295- 0x2.0000060000000004p-64, false, 8296- false, 8297- 0x2.000006p-64, false, 8298- 0x2.000006p-64, false, 8299- 0x2.000006p-64, false, 8300- 0x2.0000060000000004p-64, false, 8301- false, 8302- 0x2.000006p-64, false, 8303- 0x2.000006p-64, false, 8304- 0x2.000006p-64, false, 8305- 0x2.00000600000000000000000001p-64, false, 8306- false, 8307- 0x2.000006p-64, false, 8308- 0x2.000006p-64, false, 8309- 0x2.000006p-64, false, 8310- 0x2.0000060000000000000000000002p-64, false), 8311+ 0x2.000004p-64, false, false, 8312+ 0x2.000008p-64, false, false, 8313+ 0x2.000004p-64, false, false, 8314+ 0x2.000008p-64, false, false, 8315+ false, 8316+ 0x2.000006p-64, false, false, 8317+ 0x2.000006p-64, false, false, 8318+ 0x2.000006p-64, false, false, 8319+ 0x2.0000060000002p-64, false, false, 8320+ false, 8321+ 0x2.000006p-64, false, false, 8322+ 0x2.000006p-64, false, false, 8323+ 0x2.000006p-64, false, false, 8324+ 0x2.0000060000000004p-64, false, false, 8325+ false, 8326+ 0x2.000006p-64, false, false, 8327+ 0x2.000006p-64, false, false, 8328+ 0x2.000006p-64, false, false, 8329+ 0x2.0000060000000004p-64, false, false, 8330+ false, 8331+ 0x2.000006p-64, false, false, 8332+ 0x2.000006p-64, false, false, 8333+ 0x2.000006p-64, false, false, 8334+ 0x2.00000600000000000000000001p-64, false, false, 8335+ false, 8336+ 0x2.000006p-64, false, false, 8337+ 0x2.000006p-64, false, false, 8338+ 0x2.000006p-64, false, false, 8339+ 0x2.0000060000000000000000000002p-64, false, false), 8340 TEST ("1.0842024309794458568286011981851579832891729893162846565246" 8341 "58203125e-19", 8342 true, 8343- 0x2.000008p-64, false, 8344- 0x2.000008p-64, false, 8345- 0x2.000008p-64, false, 8346- 0x2.000008p-64, false, 8347- true, 8348- 0x2.000008p-64, false, 8349- 0x2.000008p-64, false, 8350- 0x2.000008p-64, false, 8351- 0x2.000008p-64, false, 8352- true, 8353- 0x2.000008p-64, false, 8354- 0x2.000008p-64, false, 8355- 0x2.000008p-64, false, 8356- 0x2.000008p-64, false, 8357- true, 8358- 0x2.000008p-64, false, 8359- 0x2.000008p-64, false, 8360- 0x2.000008p-64, false, 8361- 0x2.000008p-64, false, 8362- true, 8363- 0x2.000008p-64, false, 8364- 0x2.000008p-64, false, 8365- 0x2.000008p-64, false, 8366- 0x2.000008p-64, false, 8367- true, 8368- 0x2.000008p-64, false, 8369- 0x2.000008p-64, false, 8370- 0x2.000008p-64, false, 8371- 0x2.000008p-64, false), 8372+ 0x2.000008p-64, false, false, 8373+ 0x2.000008p-64, false, false, 8374+ 0x2.000008p-64, false, false, 8375+ 0x2.000008p-64, false, false, 8376+ true, 8377+ 0x2.000008p-64, false, false, 8378+ 0x2.000008p-64, false, false, 8379+ 0x2.000008p-64, false, false, 8380+ 0x2.000008p-64, false, false, 8381+ true, 8382+ 0x2.000008p-64, false, false, 8383+ 0x2.000008p-64, false, false, 8384+ 0x2.000008p-64, false, false, 8385+ 0x2.000008p-64, false, false, 8386+ true, 8387+ 0x2.000008p-64, false, false, 8388+ 0x2.000008p-64, false, false, 8389+ 0x2.000008p-64, false, false, 8390+ 0x2.000008p-64, false, false, 8391+ true, 8392+ 0x2.000008p-64, false, false, 8393+ 0x2.000008p-64, false, false, 8394+ 0x2.000008p-64, false, false, 8395+ 0x2.000008p-64, false, false, 8396+ true, 8397+ 0x2.000008p-64, false, false, 8398+ 0x2.000008p-64, false, false, 8399+ 0x2.000008p-64, false, false, 8400+ 0x2.000008p-64, false, false), 8401 TEST ("7.5231638452626400509999138382223723380394595633413601376560" 8402 "1092018187046051025390625e-37", 8403 true, 8404- 0x1p-120, false, 8405- 0x1p-120, false, 8406- 0x1p-120, false, 8407- 0x1p-120, false, 8408- true, 8409- 0x1p-120, false, 8410- 0x1p-120, false, 8411- 0x1p-120, false, 8412- 0x1p-120, false, 8413- true, 8414- 0x1p-120, false, 8415- 0x1p-120, false, 8416- 0x1p-120, false, 8417- 0x1p-120, false, 8418- true, 8419- 0x1p-120, false, 8420- 0x1p-120, false, 8421- 0x1p-120, false, 8422- 0x1p-120, false, 8423- true, 8424- 0x1p-120, false, 8425- 0x1p-120, false, 8426- 0x1p-120, false, 8427- 0x1p-120, false, 8428- true, 8429- 0x1p-120, false, 8430- 0x1p-120, false, 8431- 0x1p-120, false, 8432- 0x1p-120, false), 8433+ 0x1p-120, false, false, 8434+ 0x1p-120, false, false, 8435+ 0x1p-120, false, false, 8436+ 0x1p-120, false, false, 8437+ true, 8438+ 0x1p-120, false, false, 8439+ 0x1p-120, false, false, 8440+ 0x1p-120, false, false, 8441+ 0x1p-120, false, false, 8442+ true, 8443+ 0x1p-120, false, false, 8444+ 0x1p-120, false, false, 8445+ 0x1p-120, false, false, 8446+ 0x1p-120, false, false, 8447+ true, 8448+ 0x1p-120, false, false, 8449+ 0x1p-120, false, false, 8450+ 0x1p-120, false, false, 8451+ 0x1p-120, false, false, 8452+ true, 8453+ 0x1p-120, false, false, 8454+ 0x1p-120, false, false, 8455+ 0x1p-120, false, false, 8456+ 0x1p-120, false, false, 8457+ true, 8458+ 0x1p-120, false, false, 8459+ 0x1p-120, false, false, 8460+ 0x1p-120, false, false, 8461+ 0x1p-120, false, false), 8462 TEST ("7.5231642936781486349413765338158389908126215730251815381410" 8463 "578824437213052434003657253924757242202758789062499e-37", 8464 false, 8465- 0x1p-120, false, 8466- 0x1p-120, false, 8467- 0x1p-120, false, 8468- 0x1.000002p-120, false, 8469- false, 8470- 0x1.000000fffffffp-120, false, 8471- 0x1.000001p-120, false, 8472- 0x1.000000fffffffp-120, false, 8473- 0x1.000001p-120, false, 8474- false, 8475- 0x1.000000fffffffffep-120, false, 8476- 0x1.000001p-120, false, 8477- 0x1.000000fffffffffep-120, false, 8478- 0x1.000001p-120, false, 8479- false, 8480- 0x1.000000fffffffffep-120, false, 8481- 0x1.000001p-120, false, 8482- 0x1.000000fffffffffep-120, false, 8483- 0x1.000001p-120, false, 8484- false, 8485- 0x1.000000ffffffffffffffffffff8p-120, false, 8486- 0x1.000001p-120, false, 8487- 0x1.000000ffffffffffffffffffff8p-120, false, 8488- 0x1.000001p-120, false, 8489- false, 8490- 0x1.000000ffffffffffffffffffffffp-120, false, 8491- 0x1.000001p-120, false, 8492- 0x1.000000ffffffffffffffffffffffp-120, false, 8493- 0x1.000001p-120, false), 8494+ 0x1p-120, false, false, 8495+ 0x1p-120, false, false, 8496+ 0x1p-120, false, false, 8497+ 0x1.000002p-120, false, false, 8498+ false, 8499+ 0x1.000000fffffffp-120, false, false, 8500+ 0x1.000001p-120, false, false, 8501+ 0x1.000000fffffffp-120, false, false, 8502+ 0x1.000001p-120, false, false, 8503+ false, 8504+ 0x1.000000fffffffffep-120, false, false, 8505+ 0x1.000001p-120, false, false, 8506+ 0x1.000000fffffffffep-120, false, false, 8507+ 0x1.000001p-120, false, false, 8508+ false, 8509+ 0x1.000000fffffffffep-120, false, false, 8510+ 0x1.000001p-120, false, false, 8511+ 0x1.000000fffffffffep-120, false, false, 8512+ 0x1.000001p-120, false, false, 8513+ false, 8514+ 0x1.000000ffffffffffffffffffff8p-120, false, false, 8515+ 0x1.000001p-120, false, false, 8516+ 0x1.000000ffffffffffffffffffff8p-120, false, false, 8517+ 0x1.000001p-120, false, false, 8518+ false, 8519+ 0x1.000000ffffffffffffffffffffffp-120, false, false, 8520+ 0x1.000001p-120, false, false, 8521+ 0x1.000000ffffffffffffffffffffffp-120, false, false, 8522+ 0x1.000001p-120, false, false), 8523 TEST ("7.5231642936781486349413765338158389908126215730251815381410" 8524 "5788244372130524340036572539247572422027587890625e-37", 8525 false, 8526- 0x1p-120, false, 8527- 0x1p-120, false, 8528- 0x1p-120, false, 8529- 0x1.000002p-120, false, 8530- true, 8531- 0x1.000001p-120, false, 8532- 0x1.000001p-120, false, 8533- 0x1.000001p-120, false, 8534- 0x1.000001p-120, false, 8535- true, 8536- 0x1.000001p-120, false, 8537- 0x1.000001p-120, false, 8538- 0x1.000001p-120, false, 8539- 0x1.000001p-120, false, 8540- true, 8541- 0x1.000001p-120, false, 8542- 0x1.000001p-120, false, 8543- 0x1.000001p-120, false, 8544- 0x1.000001p-120, false, 8545- true, 8546- 0x1.000001p-120, false, 8547- 0x1.000001p-120, false, 8548- 0x1.000001p-120, false, 8549- 0x1.000001p-120, false, 8550- true, 8551- 0x1.000001p-120, false, 8552- 0x1.000001p-120, false, 8553- 0x1.000001p-120, false, 8554- 0x1.000001p-120, false), 8555+ 0x1p-120, false, false, 8556+ 0x1p-120, false, false, 8557+ 0x1p-120, false, false, 8558+ 0x1.000002p-120, false, false, 8559+ true, 8560+ 0x1.000001p-120, false, false, 8561+ 0x1.000001p-120, false, false, 8562+ 0x1.000001p-120, false, false, 8563+ 0x1.000001p-120, false, false, 8564+ true, 8565+ 0x1.000001p-120, false, false, 8566+ 0x1.000001p-120, false, false, 8567+ 0x1.000001p-120, false, false, 8568+ 0x1.000001p-120, false, false, 8569+ true, 8570+ 0x1.000001p-120, false, false, 8571+ 0x1.000001p-120, false, false, 8572+ 0x1.000001p-120, false, false, 8573+ 0x1.000001p-120, false, false, 8574+ true, 8575+ 0x1.000001p-120, false, false, 8576+ 0x1.000001p-120, false, false, 8577+ 0x1.000001p-120, false, false, 8578+ 0x1.000001p-120, false, false, 8579+ true, 8580+ 0x1.000001p-120, false, false, 8581+ 0x1.000001p-120, false, false, 8582+ 0x1.000001p-120, false, false, 8583+ 0x1.000001p-120, false, false), 8584 TEST ("7.5231642936781486349413765338158389908126215730251815381410" 8585 "578824437213052434003657253924757242202758789062501e-37", 8586 false, 8587- 0x1p-120, false, 8588- 0x1.000002p-120, false, 8589- 0x1p-120, false, 8590- 0x1.000002p-120, false, 8591- false, 8592- 0x1.000001p-120, false, 8593- 0x1.000001p-120, false, 8594- 0x1.000001p-120, false, 8595- 0x1.0000010000001p-120, false, 8596- false, 8597- 0x1.000001p-120, false, 8598- 0x1.000001p-120, false, 8599- 0x1.000001p-120, false, 8600- 0x1.0000010000000002p-120, false, 8601- false, 8602- 0x1.000001p-120, false, 8603- 0x1.000001p-120, false, 8604- 0x1.000001p-120, false, 8605- 0x1.0000010000000002p-120, false, 8606- false, 8607- 0x1.000001p-120, false, 8608- 0x1.000001p-120, false, 8609- 0x1.000001p-120, false, 8610- 0x1.000001000000000000000000008p-120, false, 8611- false, 8612- 0x1.000001p-120, false, 8613- 0x1.000001p-120, false, 8614- 0x1.000001p-120, false, 8615- 0x1.0000010000000000000000000001p-120, false), 8616+ 0x1p-120, false, false, 8617+ 0x1.000002p-120, false, false, 8618+ 0x1p-120, false, false, 8619+ 0x1.000002p-120, false, false, 8620+ false, 8621+ 0x1.000001p-120, false, false, 8622+ 0x1.000001p-120, false, false, 8623+ 0x1.000001p-120, false, false, 8624+ 0x1.0000010000001p-120, false, false, 8625+ false, 8626+ 0x1.000001p-120, false, false, 8627+ 0x1.000001p-120, false, false, 8628+ 0x1.000001p-120, false, false, 8629+ 0x1.0000010000000002p-120, false, false, 8630+ false, 8631+ 0x1.000001p-120, false, false, 8632+ 0x1.000001p-120, false, false, 8633+ 0x1.000001p-120, false, false, 8634+ 0x1.0000010000000002p-120, false, false, 8635+ false, 8636+ 0x1.000001p-120, false, false, 8637+ 0x1.000001p-120, false, false, 8638+ 0x1.000001p-120, false, false, 8639+ 0x1.000001000000000000000000008p-120, false, false, 8640+ false, 8641+ 0x1.000001p-120, false, false, 8642+ 0x1.000001p-120, false, false, 8643+ 0x1.000001p-120, false, false, 8644+ 0x1.0000010000000000000000000001p-120, false, false), 8645 TEST ("7.5231647420936572188828392294093056435857835827090029386261" 8646 "048447055721499765468252007849514484405517578125e-37", 8647 true, 8648- 0x1.000002p-120, false, 8649- 0x1.000002p-120, false, 8650- 0x1.000002p-120, false, 8651- 0x1.000002p-120, false, 8652- true, 8653- 0x1.000002p-120, false, 8654- 0x1.000002p-120, false, 8655- 0x1.000002p-120, false, 8656- 0x1.000002p-120, false, 8657- true, 8658- 0x1.000002p-120, false, 8659- 0x1.000002p-120, false, 8660- 0x1.000002p-120, false, 8661- 0x1.000002p-120, false, 8662- true, 8663- 0x1.000002p-120, false, 8664- 0x1.000002p-120, false, 8665- 0x1.000002p-120, false, 8666- 0x1.000002p-120, false, 8667- true, 8668- 0x1.000002p-120, false, 8669- 0x1.000002p-120, false, 8670- 0x1.000002p-120, false, 8671- 0x1.000002p-120, false, 8672- true, 8673- 0x1.000002p-120, false, 8674- 0x1.000002p-120, false, 8675- 0x1.000002p-120, false, 8676- 0x1.000002p-120, false), 8677+ 0x1.000002p-120, false, false, 8678+ 0x1.000002p-120, false, false, 8679+ 0x1.000002p-120, false, false, 8680+ 0x1.000002p-120, false, false, 8681+ true, 8682+ 0x1.000002p-120, false, false, 8683+ 0x1.000002p-120, false, false, 8684+ 0x1.000002p-120, false, false, 8685+ 0x1.000002p-120, false, false, 8686+ true, 8687+ 0x1.000002p-120, false, false, 8688+ 0x1.000002p-120, false, false, 8689+ 0x1.000002p-120, false, false, 8690+ 0x1.000002p-120, false, false, 8691+ true, 8692+ 0x1.000002p-120, false, false, 8693+ 0x1.000002p-120, false, false, 8694+ 0x1.000002p-120, false, false, 8695+ 0x1.000002p-120, false, false, 8696+ true, 8697+ 0x1.000002p-120, false, false, 8698+ 0x1.000002p-120, false, false, 8699+ 0x1.000002p-120, false, false, 8700+ 0x1.000002p-120, false, false, 8701+ true, 8702+ 0x1.000002p-120, false, false, 8703+ 0x1.000002p-120, false, false, 8704+ 0x1.000002p-120, false, false, 8705+ 0x1.000002p-120, false, false), 8706 TEST ("7.5231651905091658028243019250027722963589455923928243391111" 8707 "518069674229947096932846761774271726608276367187499e-37", 8708 false, 8709- 0x1.000002p-120, false, 8710- 0x1.000002p-120, false, 8711- 0x1.000002p-120, false, 8712- 0x1.000004p-120, false, 8713- false, 8714- 0x1.000002fffffffp-120, false, 8715- 0x1.000003p-120, false, 8716- 0x1.000002fffffffp-120, false, 8717- 0x1.000003p-120, false, 8718- false, 8719- 0x1.000002fffffffffep-120, false, 8720- 0x1.000003p-120, false, 8721- 0x1.000002fffffffffep-120, false, 8722- 0x1.000003p-120, false, 8723- false, 8724- 0x1.000002fffffffffep-120, false, 8725- 0x1.000003p-120, false, 8726- 0x1.000002fffffffffep-120, false, 8727- 0x1.000003p-120, false, 8728- false, 8729- 0x1.000002ffffffffffffffffffff8p-120, false, 8730- 0x1.000003p-120, false, 8731- 0x1.000002ffffffffffffffffffff8p-120, false, 8732- 0x1.000003p-120, false, 8733- false, 8734- 0x1.000002ffffffffffffffffffffffp-120, false, 8735- 0x1.000003p-120, false, 8736- 0x1.000002ffffffffffffffffffffffp-120, false, 8737- 0x1.000003p-120, false), 8738+ 0x1.000002p-120, false, false, 8739+ 0x1.000002p-120, false, false, 8740+ 0x1.000002p-120, false, false, 8741+ 0x1.000004p-120, false, false, 8742+ false, 8743+ 0x1.000002fffffffp-120, false, false, 8744+ 0x1.000003p-120, false, false, 8745+ 0x1.000002fffffffp-120, false, false, 8746+ 0x1.000003p-120, false, false, 8747+ false, 8748+ 0x1.000002fffffffffep-120, false, false, 8749+ 0x1.000003p-120, false, false, 8750+ 0x1.000002fffffffffep-120, false, false, 8751+ 0x1.000003p-120, false, false, 8752+ false, 8753+ 0x1.000002fffffffffep-120, false, false, 8754+ 0x1.000003p-120, false, false, 8755+ 0x1.000002fffffffffep-120, false, false, 8756+ 0x1.000003p-120, false, false, 8757+ false, 8758+ 0x1.000002ffffffffffffffffffff8p-120, false, false, 8759+ 0x1.000003p-120, false, false, 8760+ 0x1.000002ffffffffffffffffffff8p-120, false, false, 8761+ 0x1.000003p-120, false, false, 8762+ false, 8763+ 0x1.000002ffffffffffffffffffffffp-120, false, false, 8764+ 0x1.000003p-120, false, false, 8765+ 0x1.000002ffffffffffffffffffffffp-120, false, false, 8766+ 0x1.000003p-120, false, false), 8767 TEST ("7.5231651905091658028243019250027722963589455923928243391111" 8768 "5180696742299470969328467617742717266082763671875e-37", 8769 false, 8770- 0x1.000002p-120, false, 8771- 0x1.000004p-120, false, 8772- 0x1.000002p-120, false, 8773- 0x1.000004p-120, false, 8774- true, 8775- 0x1.000003p-120, false, 8776- 0x1.000003p-120, false, 8777- 0x1.000003p-120, false, 8778- 0x1.000003p-120, false, 8779- true, 8780- 0x1.000003p-120, false, 8781- 0x1.000003p-120, false, 8782- 0x1.000003p-120, false, 8783- 0x1.000003p-120, false, 8784- true, 8785- 0x1.000003p-120, false, 8786- 0x1.000003p-120, false, 8787- 0x1.000003p-120, false, 8788- 0x1.000003p-120, false, 8789- true, 8790- 0x1.000003p-120, false, 8791- 0x1.000003p-120, false, 8792- 0x1.000003p-120, false, 8793- 0x1.000003p-120, false, 8794- true, 8795- 0x1.000003p-120, false, 8796- 0x1.000003p-120, false, 8797- 0x1.000003p-120, false, 8798- 0x1.000003p-120, false), 8799+ 0x1.000002p-120, false, false, 8800+ 0x1.000004p-120, false, false, 8801+ 0x1.000002p-120, false, false, 8802+ 0x1.000004p-120, false, false, 8803+ true, 8804+ 0x1.000003p-120, false, false, 8805+ 0x1.000003p-120, false, false, 8806+ 0x1.000003p-120, false, false, 8807+ 0x1.000003p-120, false, false, 8808+ true, 8809+ 0x1.000003p-120, false, false, 8810+ 0x1.000003p-120, false, false, 8811+ 0x1.000003p-120, false, false, 8812+ 0x1.000003p-120, false, false, 8813+ true, 8814+ 0x1.000003p-120, false, false, 8815+ 0x1.000003p-120, false, false, 8816+ 0x1.000003p-120, false, false, 8817+ 0x1.000003p-120, false, false, 8818+ true, 8819+ 0x1.000003p-120, false, false, 8820+ 0x1.000003p-120, false, false, 8821+ 0x1.000003p-120, false, false, 8822+ 0x1.000003p-120, false, false, 8823+ true, 8824+ 0x1.000003p-120, false, false, 8825+ 0x1.000003p-120, false, false, 8826+ 0x1.000003p-120, false, false, 8827+ 0x1.000003p-120, false, false), 8828 TEST ("7.5231651905091658028243019250027722963589455923928243391111" 8829 "518069674229947096932846761774271726608276367187501e-37", 8830 false, 8831- 0x1.000002p-120, false, 8832- 0x1.000004p-120, false, 8833- 0x1.000002p-120, false, 8834- 0x1.000004p-120, false, 8835- false, 8836- 0x1.000003p-120, false, 8837- 0x1.000003p-120, false, 8838- 0x1.000003p-120, false, 8839- 0x1.0000030000001p-120, false, 8840- false, 8841- 0x1.000003p-120, false, 8842- 0x1.000003p-120, false, 8843- 0x1.000003p-120, false, 8844- 0x1.0000030000000002p-120, false, 8845- false, 8846- 0x1.000003p-120, false, 8847- 0x1.000003p-120, false, 8848- 0x1.000003p-120, false, 8849- 0x1.0000030000000002p-120, false, 8850- false, 8851- 0x1.000003p-120, false, 8852- 0x1.000003p-120, false, 8853- 0x1.000003p-120, false, 8854- 0x1.000003000000000000000000008p-120, false, 8855- false, 8856- 0x1.000003p-120, false, 8857- 0x1.000003p-120, false, 8858- 0x1.000003p-120, false, 8859- 0x1.0000030000000000000000000001p-120, false), 8860+ 0x1.000002p-120, false, false, 8861+ 0x1.000004p-120, false, false, 8862+ 0x1.000002p-120, false, false, 8863+ 0x1.000004p-120, false, false, 8864+ false, 8865+ 0x1.000003p-120, false, false, 8866+ 0x1.000003p-120, false, false, 8867+ 0x1.000003p-120, false, false, 8868+ 0x1.0000030000001p-120, false, false, 8869+ false, 8870+ 0x1.000003p-120, false, false, 8871+ 0x1.000003p-120, false, false, 8872+ 0x1.000003p-120, false, false, 8873+ 0x1.0000030000000002p-120, false, false, 8874+ false, 8875+ 0x1.000003p-120, false, false, 8876+ 0x1.000003p-120, false, false, 8877+ 0x1.000003p-120, false, false, 8878+ 0x1.0000030000000002p-120, false, false, 8879+ false, 8880+ 0x1.000003p-120, false, false, 8881+ 0x1.000003p-120, false, false, 8882+ 0x1.000003p-120, false, false, 8883+ 0x1.000003000000000000000000008p-120, false, false, 8884+ false, 8885+ 0x1.000003p-120, false, false, 8886+ 0x1.000003p-120, false, false, 8887+ 0x1.000003p-120, false, false, 8888+ 0x1.0000030000000000000000000001p-120, false, false), 8889 TEST ("7.5231656389246743867657646205962389491321076020766457395961" 8890 "98769229273839442839744151569902896881103515625e-37", 8891 true, 8892- 0x1.000004p-120, false, 8893- 0x1.000004p-120, false, 8894- 0x1.000004p-120, false, 8895- 0x1.000004p-120, false, 8896- true, 8897- 0x1.000004p-120, false, 8898- 0x1.000004p-120, false, 8899- 0x1.000004p-120, false, 8900- 0x1.000004p-120, false, 8901- true, 8902- 0x1.000004p-120, false, 8903- 0x1.000004p-120, false, 8904- 0x1.000004p-120, false, 8905- 0x1.000004p-120, false, 8906- true, 8907- 0x1.000004p-120, false, 8908- 0x1.000004p-120, false, 8909- 0x1.000004p-120, false, 8910- 0x1.000004p-120, false, 8911- true, 8912- 0x1.000004p-120, false, 8913- 0x1.000004p-120, false, 8914- 0x1.000004p-120, false, 8915- 0x1.000004p-120, false, 8916- true, 8917- 0x1.000004p-120, false, 8918- 0x1.000004p-120, false, 8919- 0x1.000004p-120, false, 8920- 0x1.000004p-120, false), 8921+ 0x1.000004p-120, false, false, 8922+ 0x1.000004p-120, false, false, 8923+ 0x1.000004p-120, false, false, 8924+ 0x1.000004p-120, false, false, 8925+ true, 8926+ 0x1.000004p-120, false, false, 8927+ 0x1.000004p-120, false, false, 8928+ 0x1.000004p-120, false, false, 8929+ 0x1.000004p-120, false, false, 8930+ true, 8931+ 0x1.000004p-120, false, false, 8932+ 0x1.000004p-120, false, false, 8933+ 0x1.000004p-120, false, false, 8934+ 0x1.000004p-120, false, false, 8935+ true, 8936+ 0x1.000004p-120, false, false, 8937+ 0x1.000004p-120, false, false, 8938+ 0x1.000004p-120, false, false, 8939+ 0x1.000004p-120, false, false, 8940+ true, 8941+ 0x1.000004p-120, false, false, 8942+ 0x1.000004p-120, false, false, 8943+ 0x1.000004p-120, false, false, 8944+ 0x1.000004p-120, false, false, 8945+ true, 8946+ 0x1.000004p-120, false, false, 8947+ 0x1.000004p-120, false, false, 8948+ 0x1.000004p-120, false, false, 8949+ 0x1.000004p-120, false, false), 8950 TEST ("340282356779733661637539395458142568447.999", 8951 false, 8952- 0xf.fffffp+124, false, 8953- 0xf.fffffp+124, false, 8954- 0xf.fffffp+124, false, 8955- INF, true, 8956- false, 8957- 0xf.fffff7ffffff8p+124, false, 8958- 0xf.fffff8p+124, false, 8959- 0xf.fffff7ffffff8p+124, false, 8960- 0xf.fffff8p+124, false, 8961- false, 8962- 0xf.fffff7fffffffffp+124, false, 8963- 0xf.fffff8p+124, false, 8964- 0xf.fffff7fffffffffp+124, false, 8965- 0xf.fffff8p+124, false, 8966- false, 8967- 0xf.fffff7fffffffffp+124, false, 8968- 0xf.fffff8p+124, false, 8969- 0xf.fffff7fffffffffp+124, false, 8970- 0xf.fffff8p+124, false, 8971- false, 8972- 0xf.fffff7fffffffffffffffffffcp+124, false, 8973- 0xf.fffff8p+124, false, 8974- 0xf.fffff7fffffffffffffffffffcp+124, false, 8975- 0xf.fffff8p+124, false, 8976- false, 8977- 0xf.fffff7fffffffffffffffffffff8p+124, false, 8978- 0xf.fffff8p+124, false, 8979- 0xf.fffff7fffffffffffffffffffff8p+124, false, 8980- 0xf.fffff8p+124, false), 8981+ 0xf.fffffp+124, false, false, 8982+ 0xf.fffffp+124, false, false, 8983+ 0xf.fffffp+124, false, false, 8984+ INF, true, false, 8985+ false, 8986+ 0xf.fffff7ffffff8p+124, false, false, 8987+ 0xf.fffff8p+124, false, false, 8988+ 0xf.fffff7ffffff8p+124, false, false, 8989+ 0xf.fffff8p+124, false, false, 8990+ false, 8991+ 0xf.fffff7fffffffffp+124, false, false, 8992+ 0xf.fffff8p+124, false, false, 8993+ 0xf.fffff7fffffffffp+124, false, false, 8994+ 0xf.fffff8p+124, false, false, 8995+ false, 8996+ 0xf.fffff7fffffffffp+124, false, false, 8997+ 0xf.fffff8p+124, false, false, 8998+ 0xf.fffff7fffffffffp+124, false, false, 8999+ 0xf.fffff8p+124, false, false, 9000+ false, 9001+ 0xf.fffff7fffffffffffffffffffcp+124, false, false, 9002+ 0xf.fffff8p+124, false, false, 9003+ 0xf.fffff7fffffffffffffffffffcp+124, false, false, 9004+ 0xf.fffff8p+124, false, false, 9005+ false, 9006+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false, 9007+ 0xf.fffff8p+124, false, false, 9008+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false, 9009+ 0xf.fffff8p+124, false, false), 9010 TEST ("340282356779733661637539395458142568448", 9011 false, 9012- 0xf.fffffp+124, false, 9013- INF, true, 9014- 0xf.fffffp+124, false, 9015- INF, true, 9016- true, 9017- 0xf.fffff8p+124, false, 9018- 0xf.fffff8p+124, false, 9019- 0xf.fffff8p+124, false, 9020- 0xf.fffff8p+124, false, 9021- true, 9022- 0xf.fffff8p+124, false, 9023- 0xf.fffff8p+124, false, 9024- 0xf.fffff8p+124, false, 9025- 0xf.fffff8p+124, false, 9026- true, 9027- 0xf.fffff8p+124, false, 9028- 0xf.fffff8p+124, false, 9029- 0xf.fffff8p+124, false, 9030- 0xf.fffff8p+124, false, 9031- true, 9032- 0xf.fffff8p+124, false, 9033- 0xf.fffff8p+124, false, 9034- 0xf.fffff8p+124, false, 9035- 0xf.fffff8p+124, false, 9036- true, 9037- 0xf.fffff8p+124, false, 9038- 0xf.fffff8p+124, false, 9039- 0xf.fffff8p+124, false, 9040- 0xf.fffff8p+124, false), 9041+ 0xf.fffffp+124, false, false, 9042+ INF, true, false, 9043+ 0xf.fffffp+124, false, false, 9044+ INF, true, false, 9045+ true, 9046+ 0xf.fffff8p+124, false, false, 9047+ 0xf.fffff8p+124, false, false, 9048+ 0xf.fffff8p+124, false, false, 9049+ 0xf.fffff8p+124, false, false, 9050+ true, 9051+ 0xf.fffff8p+124, false, false, 9052+ 0xf.fffff8p+124, false, false, 9053+ 0xf.fffff8p+124, false, false, 9054+ 0xf.fffff8p+124, false, false, 9055+ true, 9056+ 0xf.fffff8p+124, false, false, 9057+ 0xf.fffff8p+124, false, false, 9058+ 0xf.fffff8p+124, false, false, 9059+ 0xf.fffff8p+124, false, false, 9060+ true, 9061+ 0xf.fffff8p+124, false, false, 9062+ 0xf.fffff8p+124, false, false, 9063+ 0xf.fffff8p+124, false, false, 9064+ 0xf.fffff8p+124, false, false, 9065+ true, 9066+ 0xf.fffff8p+124, false, false, 9067+ 0xf.fffff8p+124, false, false, 9068+ 0xf.fffff8p+124, false, false, 9069+ 0xf.fffff8p+124, false, false), 9070 TEST ("340282356779733661637539395458142568448.001", 9071 false, 9072- 0xf.fffffp+124, false, 9073- INF, true, 9074- 0xf.fffffp+124, false, 9075- INF, true, 9076- false, 9077- 0xf.fffff8p+124, false, 9078- 0xf.fffff8p+124, false, 9079- 0xf.fffff8p+124, false, 9080- 0xf.fffff80000008p+124, false, 9081- false, 9082- 0xf.fffff8p+124, false, 9083- 0xf.fffff8p+124, false, 9084- 0xf.fffff8p+124, false, 9085- 0xf.fffff8000000001p+124, false, 9086- false, 9087- 0xf.fffff8p+124, false, 9088- 0xf.fffff8p+124, false, 9089- 0xf.fffff8p+124, false, 9090- 0xf.fffff8000000001p+124, false, 9091- false, 9092- 0xf.fffff8p+124, false, 9093- 0xf.fffff8p+124, false, 9094- 0xf.fffff8p+124, false, 9095- 0xf.fffff800000000000000000004p+124, false, 9096- false, 9097- 0xf.fffff8p+124, false, 9098- 0xf.fffff8p+124, false, 9099- 0xf.fffff8p+124, false, 9100- 0xf.fffff80000000000000000000008p+124, false), 9101+ 0xf.fffffp+124, false, false, 9102+ INF, true, false, 9103+ 0xf.fffffp+124, false, false, 9104+ INF, true, false, 9105+ false, 9106+ 0xf.fffff8p+124, false, false, 9107+ 0xf.fffff8p+124, false, false, 9108+ 0xf.fffff8p+124, false, false, 9109+ 0xf.fffff80000008p+124, false, false, 9110+ false, 9111+ 0xf.fffff8p+124, false, false, 9112+ 0xf.fffff8p+124, false, false, 9113+ 0xf.fffff8p+124, false, false, 9114+ 0xf.fffff8000000001p+124, false, false, 9115+ false, 9116+ 0xf.fffff8p+124, false, false, 9117+ 0xf.fffff8p+124, false, false, 9118+ 0xf.fffff8p+124, false, false, 9119+ 0xf.fffff8000000001p+124, false, false, 9120+ false, 9121+ 0xf.fffff8p+124, false, false, 9122+ 0xf.fffff8p+124, false, false, 9123+ 0xf.fffff8p+124, false, false, 9124+ 0xf.fffff800000000000000000004p+124, false, false, 9125+ false, 9126+ 0xf.fffff8p+124, false, false, 9127+ 0xf.fffff8p+124, false, false, 9128+ 0xf.fffff8p+124, false, false, 9129+ 0xf.fffff80000000000000000000008p+124, false, false), 9130 TEST ("-340282356779733661637539395458142568447.999", 9131 false, 9132- -INF, true, 9133- -0xf.fffffp+124, false, 9134- -0xf.fffffp+124, false, 9135- -0xf.fffffp+124, false, 9136- false, 9137- -0xf.fffff8p+124, false, 9138- -0xf.fffff8p+124, false, 9139- -0xf.fffff7ffffff8p+124, false, 9140- -0xf.fffff7ffffff8p+124, false, 9141- false, 9142- -0xf.fffff8p+124, false, 9143- -0xf.fffff8p+124, false, 9144- -0xf.fffff7fffffffffp+124, false, 9145- -0xf.fffff7fffffffffp+124, false, 9146- false, 9147- -0xf.fffff8p+124, false, 9148- -0xf.fffff8p+124, false, 9149- -0xf.fffff7fffffffffp+124, false, 9150- -0xf.fffff7fffffffffp+124, false, 9151- false, 9152- -0xf.fffff8p+124, false, 9153- -0xf.fffff8p+124, false, 9154- -0xf.fffff7fffffffffffffffffffcp+124, false, 9155- -0xf.fffff7fffffffffffffffffffcp+124, false, 9156- false, 9157- -0xf.fffff8p+124, false, 9158- -0xf.fffff8p+124, false, 9159- -0xf.fffff7fffffffffffffffffffff8p+124, false, 9160- -0xf.fffff7fffffffffffffffffffff8p+124, false), 9161+ -INF, true, false, 9162+ -0xf.fffffp+124, false, false, 9163+ -0xf.fffffp+124, false, false, 9164+ -0xf.fffffp+124, false, false, 9165+ false, 9166+ -0xf.fffff8p+124, false, false, 9167+ -0xf.fffff8p+124, false, false, 9168+ -0xf.fffff7ffffff8p+124, false, false, 9169+ -0xf.fffff7ffffff8p+124, false, false, 9170+ false, 9171+ -0xf.fffff8p+124, false, false, 9172+ -0xf.fffff8p+124, false, false, 9173+ -0xf.fffff7fffffffffp+124, false, false, 9174+ -0xf.fffff7fffffffffp+124, false, false, 9175+ false, 9176+ -0xf.fffff8p+124, false, false, 9177+ -0xf.fffff8p+124, false, false, 9178+ -0xf.fffff7fffffffffp+124, false, false, 9179+ -0xf.fffff7fffffffffp+124, false, false, 9180+ false, 9181+ -0xf.fffff8p+124, false, false, 9182+ -0xf.fffff8p+124, false, false, 9183+ -0xf.fffff7fffffffffffffffffffcp+124, false, false, 9184+ -0xf.fffff7fffffffffffffffffffcp+124, false, false, 9185+ false, 9186+ -0xf.fffff8p+124, false, false, 9187+ -0xf.fffff8p+124, false, false, 9188+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false, 9189+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false), 9190 TEST ("-340282356779733661637539395458142568448", 9191 false, 9192- -INF, true, 9193- -INF, true, 9194- -0xf.fffffp+124, false, 9195- -0xf.fffffp+124, false, 9196- true, 9197- -0xf.fffff8p+124, false, 9198- -0xf.fffff8p+124, false, 9199- -0xf.fffff8p+124, false, 9200- -0xf.fffff8p+124, false, 9201- true, 9202- -0xf.fffff8p+124, false, 9203- -0xf.fffff8p+124, false, 9204- -0xf.fffff8p+124, false, 9205- -0xf.fffff8p+124, false, 9206- true, 9207- -0xf.fffff8p+124, false, 9208- -0xf.fffff8p+124, false, 9209- -0xf.fffff8p+124, false, 9210- -0xf.fffff8p+124, false, 9211- true, 9212- -0xf.fffff8p+124, false, 9213- -0xf.fffff8p+124, false, 9214- -0xf.fffff8p+124, false, 9215- -0xf.fffff8p+124, false, 9216- true, 9217- -0xf.fffff8p+124, false, 9218- -0xf.fffff8p+124, false, 9219- -0xf.fffff8p+124, false, 9220- -0xf.fffff8p+124, false), 9221+ -INF, true, false, 9222+ -INF, true, false, 9223+ -0xf.fffffp+124, false, false, 9224+ -0xf.fffffp+124, false, false, 9225+ true, 9226+ -0xf.fffff8p+124, false, false, 9227+ -0xf.fffff8p+124, false, false, 9228+ -0xf.fffff8p+124, false, false, 9229+ -0xf.fffff8p+124, false, false, 9230+ true, 9231+ -0xf.fffff8p+124, false, false, 9232+ -0xf.fffff8p+124, false, false, 9233+ -0xf.fffff8p+124, false, false, 9234+ -0xf.fffff8p+124, false, false, 9235+ true, 9236+ -0xf.fffff8p+124, false, false, 9237+ -0xf.fffff8p+124, false, false, 9238+ -0xf.fffff8p+124, false, false, 9239+ -0xf.fffff8p+124, false, false, 9240+ true, 9241+ -0xf.fffff8p+124, false, false, 9242+ -0xf.fffff8p+124, false, false, 9243+ -0xf.fffff8p+124, false, false, 9244+ -0xf.fffff8p+124, false, false, 9245+ true, 9246+ -0xf.fffff8p+124, false, false, 9247+ -0xf.fffff8p+124, false, false, 9248+ -0xf.fffff8p+124, false, false, 9249+ -0xf.fffff8p+124, false, false), 9250 TEST ("-340282356779733661637539395458142568448.001", 9251 false, 9252- -INF, true, 9253- -INF, true, 9254- -0xf.fffffp+124, false, 9255- -0xf.fffffp+124, false, 9256- false, 9257- -0xf.fffff80000008p+124, false, 9258- -0xf.fffff8p+124, false, 9259- -0xf.fffff8p+124, false, 9260- -0xf.fffff8p+124, false, 9261- false, 9262- -0xf.fffff8000000001p+124, false, 9263- -0xf.fffff8p+124, false, 9264- -0xf.fffff8p+124, false, 9265- -0xf.fffff8p+124, false, 9266- false, 9267- -0xf.fffff8000000001p+124, false, 9268- -0xf.fffff8p+124, false, 9269- -0xf.fffff8p+124, false, 9270- -0xf.fffff8p+124, false, 9271- false, 9272- -0xf.fffff800000000000000000004p+124, false, 9273- -0xf.fffff8p+124, false, 9274- -0xf.fffff8p+124, false, 9275- -0xf.fffff8p+124, false, 9276- false, 9277- -0xf.fffff80000000000000000000008p+124, false, 9278- -0xf.fffff8p+124, false, 9279- -0xf.fffff8p+124, false, 9280- -0xf.fffff8p+124, false), 9281+ -INF, true, false, 9282+ -INF, true, false, 9283+ -0xf.fffffp+124, false, false, 9284+ -0xf.fffffp+124, false, false, 9285+ false, 9286+ -0xf.fffff80000008p+124, false, false, 9287+ -0xf.fffff8p+124, false, false, 9288+ -0xf.fffff8p+124, false, false, 9289+ -0xf.fffff8p+124, false, false, 9290+ false, 9291+ -0xf.fffff8000000001p+124, false, false, 9292+ -0xf.fffff8p+124, false, false, 9293+ -0xf.fffff8p+124, false, false, 9294+ -0xf.fffff8p+124, false, false, 9295+ false, 9296+ -0xf.fffff8000000001p+124, false, false, 9297+ -0xf.fffff8p+124, false, false, 9298+ -0xf.fffff8p+124, false, false, 9299+ -0xf.fffff8p+124, false, false, 9300+ false, 9301+ -0xf.fffff800000000000000000004p+124, false, false, 9302+ -0xf.fffff8p+124, false, false, 9303+ -0xf.fffff8p+124, false, false, 9304+ -0xf.fffff8p+124, false, false, 9305+ false, 9306+ -0xf.fffff80000000000000000000008p+124, false, false, 9307+ -0xf.fffff8p+124, false, false, 9308+ -0xf.fffff8p+124, false, false, 9309+ -0xf.fffff8p+124, false, false), 9310 TEST ("179769313486231580793728971405303415079934132710037826936173" 9311 "778980444968292764750946649017977587207096330286416692887910" 9312 "946555547851940402630657488671505820681908902000708383676273" 9313@@ -1855,35 +1855,35 @@ static const struct test tests[] = { 9314 "936475292719074168444365510704342711559699508093042880177904" 9315 "174497791.999", 9316 false, 9317- 0xf.fffffp+124, true, 9318- INF, true, 9319- 0xf.fffffp+124, true, 9320- INF, true, 9321- false, 9322- 0xf.ffffffffffff8p+1020, false, 9323- 0xf.ffffffffffff8p+1020, false, 9324- 0xf.ffffffffffff8p+1020, false, 9325- INF, true, 9326- false, 9327- 0xf.ffffffffffffbffp+1020, false, 9328- 0xf.ffffffffffffcp+1020, false, 9329- 0xf.ffffffffffffbffp+1020, false, 9330- 0xf.ffffffffffffcp+1020, false, 9331- false, 9332- 0xf.ffffffffffffbffp+1020, false, 9333- 0xf.ffffffffffffcp+1020, false, 9334- 0xf.ffffffffffffbffp+1020, false, 9335- 0xf.ffffffffffffcp+1020, false, 9336- false, 9337- 0xf.ffffffffffffbffffffffffffcp+1020, false, 9338- 0xf.ffffffffffffcp+1020, true, 9339- 0xf.ffffffffffffbffffffffffffcp+1020, false, 9340- 0xf.ffffffffffffcp+1020, true, 9341- false, 9342- 0xf.ffffffffffffbffffffffffffff8p+1020, false, 9343- 0xf.ffffffffffffcp+1020, false, 9344- 0xf.ffffffffffffbffffffffffffff8p+1020, false, 9345- 0xf.ffffffffffffcp+1020, false), 9346+ 0xf.fffffp+124, true, false, 9347+ INF, true, false, 9348+ 0xf.fffffp+124, true, false, 9349+ INF, true, false, 9350+ false, 9351+ 0xf.ffffffffffff8p+1020, false, false, 9352+ 0xf.ffffffffffff8p+1020, false, false, 9353+ 0xf.ffffffffffff8p+1020, false, false, 9354+ INF, true, false, 9355+ false, 9356+ 0xf.ffffffffffffbffp+1020, false, false, 9357+ 0xf.ffffffffffffcp+1020, false, false, 9358+ 0xf.ffffffffffffbffp+1020, false, false, 9359+ 0xf.ffffffffffffcp+1020, false, false, 9360+ false, 9361+ 0xf.ffffffffffffbffp+1020, false, false, 9362+ 0xf.ffffffffffffcp+1020, false, false, 9363+ 0xf.ffffffffffffbffp+1020, false, false, 9364+ 0xf.ffffffffffffcp+1020, false, false, 9365+ false, 9366+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false, 9367+ 0xf.ffffffffffffcp+1020, true, false, 9368+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false, 9369+ 0xf.ffffffffffffcp+1020, true, false, 9370+ false, 9371+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false, 9372+ 0xf.ffffffffffffcp+1020, false, false, 9373+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false, 9374+ 0xf.ffffffffffffcp+1020, false, false), 9375 TEST ("179769313486231580793728971405303415079934132710037826936173" 9376 "778980444968292764750946649017977587207096330286416692887910" 9377 "946555547851940402630657488671505820681908902000708383676273" 9378@@ -1891,35 +1891,35 @@ static const struct test tests[] = { 9379 "936475292719074168444365510704342711559699508093042880177904" 9380 "174497792", 9381 false, 9382- 0xf.fffffp+124, true, 9383- INF, true, 9384- 0xf.fffffp+124, true, 9385- INF, true, 9386- false, 9387- 0xf.ffffffffffff8p+1020, false, 9388- INF, true, 9389- 0xf.ffffffffffff8p+1020, false, 9390- INF, true, 9391- true, 9392- 0xf.ffffffffffffcp+1020, false, 9393- 0xf.ffffffffffffcp+1020, false, 9394- 0xf.ffffffffffffcp+1020, false, 9395- 0xf.ffffffffffffcp+1020, false, 9396- true, 9397- 0xf.ffffffffffffcp+1020, false, 9398- 0xf.ffffffffffffcp+1020, false, 9399- 0xf.ffffffffffffcp+1020, false, 9400- 0xf.ffffffffffffcp+1020, false, 9401- false, 9402- 0xf.ffffffffffffcp+1020, true, 9403- 0xf.ffffffffffffcp+1020, true, 9404- 0xf.ffffffffffffcp+1020, true, 9405- 0xf.ffffffffffffcp+1020, true, 9406- true, 9407- 0xf.ffffffffffffcp+1020, false, 9408- 0xf.ffffffffffffcp+1020, false, 9409- 0xf.ffffffffffffcp+1020, false, 9410- 0xf.ffffffffffffcp+1020, false), 9411+ 0xf.fffffp+124, true, false, 9412+ INF, true, false, 9413+ 0xf.fffffp+124, true, false, 9414+ INF, true, false, 9415+ false, 9416+ 0xf.ffffffffffff8p+1020, false, false, 9417+ INF, true, false, 9418+ 0xf.ffffffffffff8p+1020, false, false, 9419+ INF, true, false, 9420+ true, 9421+ 0xf.ffffffffffffcp+1020, false, false, 9422+ 0xf.ffffffffffffcp+1020, false, false, 9423+ 0xf.ffffffffffffcp+1020, false, false, 9424+ 0xf.ffffffffffffcp+1020, false, false, 9425+ true, 9426+ 0xf.ffffffffffffcp+1020, false, false, 9427+ 0xf.ffffffffffffcp+1020, false, false, 9428+ 0xf.ffffffffffffcp+1020, false, false, 9429+ 0xf.ffffffffffffcp+1020, false, false, 9430+ false, 9431+ 0xf.ffffffffffffcp+1020, true, false, 9432+ 0xf.ffffffffffffcp+1020, true, false, 9433+ 0xf.ffffffffffffcp+1020, true, false, 9434+ 0xf.ffffffffffffcp+1020, true, false, 9435+ true, 9436+ 0xf.ffffffffffffcp+1020, false, false, 9437+ 0xf.ffffffffffffcp+1020, false, false, 9438+ 0xf.ffffffffffffcp+1020, false, false, 9439+ 0xf.ffffffffffffcp+1020, false, false), 9440 TEST ("179769313486231580793728971405303415079934132710037826936173" 9441 "778980444968292764750946649017977587207096330286416692887910" 9442 "946555547851940402630657488671505820681908902000708383676273" 9443@@ -1927,35 +1927,35 @@ static const struct test tests[] = { 9444 "936475292719074168444365510704342711559699508093042880177904" 9445 "174497792.001", 9446 false, 9447- 0xf.fffffp+124, true, 9448- INF, true, 9449- 0xf.fffffp+124, true, 9450- INF, true, 9451- false, 9452- 0xf.ffffffffffff8p+1020, false, 9453- INF, true, 9454- 0xf.ffffffffffff8p+1020, false, 9455- INF, true, 9456- false, 9457- 0xf.ffffffffffffcp+1020, false, 9458- 0xf.ffffffffffffcp+1020, false, 9459- 0xf.ffffffffffffcp+1020, false, 9460- 0xf.ffffffffffffc01p+1020, false, 9461- false, 9462- 0xf.ffffffffffffcp+1020, false, 9463- 0xf.ffffffffffffcp+1020, false, 9464- 0xf.ffffffffffffcp+1020, false, 9465- 0xf.ffffffffffffc01p+1020, false, 9466- false, 9467- 0xf.ffffffffffffcp+1020, true, 9468- 0xf.ffffffffffffcp+1020, true, 9469- 0xf.ffffffffffffcp+1020, true, 9470- 0xf.ffffffffffffc0000000000004p+1020, true, 9471- false, 9472- 0xf.ffffffffffffcp+1020, false, 9473- 0xf.ffffffffffffcp+1020, false, 9474- 0xf.ffffffffffffcp+1020, false, 9475- 0xf.ffffffffffffc000000000000008p+1020, false), 9476+ 0xf.fffffp+124, true, false, 9477+ INF, true, false, 9478+ 0xf.fffffp+124, true, false, 9479+ INF, true, false, 9480+ false, 9481+ 0xf.ffffffffffff8p+1020, false, false, 9482+ INF, true, false, 9483+ 0xf.ffffffffffff8p+1020, false, false, 9484+ INF, true, false, 9485+ false, 9486+ 0xf.ffffffffffffcp+1020, false, false, 9487+ 0xf.ffffffffffffcp+1020, false, false, 9488+ 0xf.ffffffffffffcp+1020, false, false, 9489+ 0xf.ffffffffffffc01p+1020, false, false, 9490+ false, 9491+ 0xf.ffffffffffffcp+1020, false, false, 9492+ 0xf.ffffffffffffcp+1020, false, false, 9493+ 0xf.ffffffffffffcp+1020, false, false, 9494+ 0xf.ffffffffffffc01p+1020, false, false, 9495+ false, 9496+ 0xf.ffffffffffffcp+1020, true, false, 9497+ 0xf.ffffffffffffcp+1020, true, false, 9498+ 0xf.ffffffffffffcp+1020, true, false, 9499+ 0xf.ffffffffffffc0000000000004p+1020, true, false, 9500+ false, 9501+ 0xf.ffffffffffffcp+1020, false, false, 9502+ 0xf.ffffffffffffcp+1020, false, false, 9503+ 0xf.ffffffffffffcp+1020, false, false, 9504+ 0xf.ffffffffffffc000000000000008p+1020, false, false), 9505 TEST ("-17976931348623158079372897140530341507993413271003782693617" 9506 "377898044496829276475094664901797758720709633028641669288791" 9507 "094655554785194040263065748867150582068190890200070838367627" 9508@@ -1963,35 +1963,35 @@ static const struct test tests[] = { 9509 "493647529271907416844436551070434271155969950809304288017790" 9510 "4174497791.999", 9511 false, 9512- -INF, true, 9513- -INF, true, 9514- -0xf.fffffp+124, true, 9515- -0xf.fffffp+124, true, 9516- false, 9517- -INF, true, 9518- -0xf.ffffffffffff8p+1020, false, 9519- -0xf.ffffffffffff8p+1020, false, 9520- -0xf.ffffffffffff8p+1020, false, 9521- false, 9522- -0xf.ffffffffffffcp+1020, false, 9523- -0xf.ffffffffffffcp+1020, false, 9524- -0xf.ffffffffffffbffp+1020, false, 9525- -0xf.ffffffffffffbffp+1020, false, 9526- false, 9527- -0xf.ffffffffffffcp+1020, false, 9528- -0xf.ffffffffffffcp+1020, false, 9529- -0xf.ffffffffffffbffp+1020, false, 9530- -0xf.ffffffffffffbffp+1020, false, 9531- false, 9532- -0xf.ffffffffffffcp+1020, true, 9533- -0xf.ffffffffffffcp+1020, true, 9534- -0xf.ffffffffffffbffffffffffffcp+1020, false, 9535- -0xf.ffffffffffffbffffffffffffcp+1020, false, 9536- false, 9537- -0xf.ffffffffffffcp+1020, false, 9538- -0xf.ffffffffffffcp+1020, false, 9539- -0xf.ffffffffffffbffffffffffffff8p+1020, false, 9540- -0xf.ffffffffffffbffffffffffffff8p+1020, false), 9541+ -INF, true, false, 9542+ -INF, true, false, 9543+ -0xf.fffffp+124, true, false, 9544+ -0xf.fffffp+124, true, false, 9545+ false, 9546+ -INF, true, false, 9547+ -0xf.ffffffffffff8p+1020, false, false, 9548+ -0xf.ffffffffffff8p+1020, false, false, 9549+ -0xf.ffffffffffff8p+1020, false, false, 9550+ false, 9551+ -0xf.ffffffffffffcp+1020, false, false, 9552+ -0xf.ffffffffffffcp+1020, false, false, 9553+ -0xf.ffffffffffffbffp+1020, false, false, 9554+ -0xf.ffffffffffffbffp+1020, false, false, 9555+ false, 9556+ -0xf.ffffffffffffcp+1020, false, false, 9557+ -0xf.ffffffffffffcp+1020, false, false, 9558+ -0xf.ffffffffffffbffp+1020, false, false, 9559+ -0xf.ffffffffffffbffp+1020, false, false, 9560+ false, 9561+ -0xf.ffffffffffffcp+1020, true, false, 9562+ -0xf.ffffffffffffcp+1020, true, false, 9563+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false, 9564+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false, 9565+ false, 9566+ -0xf.ffffffffffffcp+1020, false, false, 9567+ -0xf.ffffffffffffcp+1020, false, false, 9568+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false, 9569+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false), 9570 TEST ("-17976931348623158079372897140530341507993413271003782693617" 9571 "377898044496829276475094664901797758720709633028641669288791" 9572 "094655554785194040263065748867150582068190890200070838367627" 9573@@ -1999,35 +1999,35 @@ static const struct test tests[] = { 9574 "493647529271907416844436551070434271155969950809304288017790" 9575 "4174497792", 9576 false, 9577- -INF, true, 9578- -INF, true, 9579- -0xf.fffffp+124, true, 9580- -0xf.fffffp+124, true, 9581- false, 9582- -INF, true, 9583- -INF, true, 9584- -0xf.ffffffffffff8p+1020, false, 9585- -0xf.ffffffffffff8p+1020, false, 9586- true, 9587- -0xf.ffffffffffffcp+1020, false, 9588- -0xf.ffffffffffffcp+1020, false, 9589- -0xf.ffffffffffffcp+1020, false, 9590- -0xf.ffffffffffffcp+1020, false, 9591- true, 9592- -0xf.ffffffffffffcp+1020, false, 9593- -0xf.ffffffffffffcp+1020, false, 9594- -0xf.ffffffffffffcp+1020, false, 9595- -0xf.ffffffffffffcp+1020, false, 9596- false, 9597- -0xf.ffffffffffffcp+1020, true, 9598- -0xf.ffffffffffffcp+1020, true, 9599- -0xf.ffffffffffffcp+1020, true, 9600- -0xf.ffffffffffffcp+1020, true, 9601- true, 9602- -0xf.ffffffffffffcp+1020, false, 9603- -0xf.ffffffffffffcp+1020, false, 9604- -0xf.ffffffffffffcp+1020, false, 9605- -0xf.ffffffffffffcp+1020, false), 9606+ -INF, true, false, 9607+ -INF, true, false, 9608+ -0xf.fffffp+124, true, false, 9609+ -0xf.fffffp+124, true, false, 9610+ false, 9611+ -INF, true, false, 9612+ -INF, true, false, 9613+ -0xf.ffffffffffff8p+1020, false, false, 9614+ -0xf.ffffffffffff8p+1020, false, false, 9615+ true, 9616+ -0xf.ffffffffffffcp+1020, false, false, 9617+ -0xf.ffffffffffffcp+1020, false, false, 9618+ -0xf.ffffffffffffcp+1020, false, false, 9619+ -0xf.ffffffffffffcp+1020, false, false, 9620+ true, 9621+ -0xf.ffffffffffffcp+1020, false, false, 9622+ -0xf.ffffffffffffcp+1020, false, false, 9623+ -0xf.ffffffffffffcp+1020, false, false, 9624+ -0xf.ffffffffffffcp+1020, false, false, 9625+ false, 9626+ -0xf.ffffffffffffcp+1020, true, false, 9627+ -0xf.ffffffffffffcp+1020, true, false, 9628+ -0xf.ffffffffffffcp+1020, true, false, 9629+ -0xf.ffffffffffffcp+1020, true, false, 9630+ true, 9631+ -0xf.ffffffffffffcp+1020, false, false, 9632+ -0xf.ffffffffffffcp+1020, false, false, 9633+ -0xf.ffffffffffffcp+1020, false, false, 9634+ -0xf.ffffffffffffcp+1020, false, false), 9635 TEST ("-17976931348623158079372897140530341507993413271003782693617" 9636 "377898044496829276475094664901797758720709633028641669288791" 9637 "094655554785194040263065748867150582068190890200070838367627" 9638@@ -2035,35 +2035,35 @@ static const struct test tests[] = { 9639 "493647529271907416844436551070434271155969950809304288017790" 9640 "4174497792.001", 9641 false, 9642- -INF, true, 9643- -INF, true, 9644- -0xf.fffffp+124, true, 9645- -0xf.fffffp+124, true, 9646- false, 9647- -INF, true, 9648- -INF, true, 9649- -0xf.ffffffffffff8p+1020, false, 9650- -0xf.ffffffffffff8p+1020, false, 9651- false, 9652- -0xf.ffffffffffffc01p+1020, false, 9653- -0xf.ffffffffffffcp+1020, false, 9654- -0xf.ffffffffffffcp+1020, false, 9655- -0xf.ffffffffffffcp+1020, false, 9656- false, 9657- -0xf.ffffffffffffc01p+1020, false, 9658- -0xf.ffffffffffffcp+1020, false, 9659- -0xf.ffffffffffffcp+1020, false, 9660- -0xf.ffffffffffffcp+1020, false, 9661- false, 9662- -0xf.ffffffffffffc0000000000004p+1020, true, 9663- -0xf.ffffffffffffcp+1020, true, 9664- -0xf.ffffffffffffcp+1020, true, 9665- -0xf.ffffffffffffcp+1020, true, 9666- false, 9667- -0xf.ffffffffffffc000000000000008p+1020, false, 9668- -0xf.ffffffffffffcp+1020, false, 9669- -0xf.ffffffffffffcp+1020, false, 9670- -0xf.ffffffffffffcp+1020, false), 9671+ -INF, true, false, 9672+ -INF, true, false, 9673+ -0xf.fffffp+124, true, false, 9674+ -0xf.fffffp+124, true, false, 9675+ false, 9676+ -INF, true, false, 9677+ -INF, true, false, 9678+ -0xf.ffffffffffff8p+1020, false, false, 9679+ -0xf.ffffffffffff8p+1020, false, false, 9680+ false, 9681+ -0xf.ffffffffffffc01p+1020, false, false, 9682+ -0xf.ffffffffffffcp+1020, false, false, 9683+ -0xf.ffffffffffffcp+1020, false, false, 9684+ -0xf.ffffffffffffcp+1020, false, false, 9685+ false, 9686+ -0xf.ffffffffffffc01p+1020, false, false, 9687+ -0xf.ffffffffffffcp+1020, false, false, 9688+ -0xf.ffffffffffffcp+1020, false, false, 9689+ -0xf.ffffffffffffcp+1020, false, false, 9690+ false, 9691+ -0xf.ffffffffffffc0000000000004p+1020, true, false, 9692+ -0xf.ffffffffffffcp+1020, true, false, 9693+ -0xf.ffffffffffffcp+1020, true, false, 9694+ -0xf.ffffffffffffcp+1020, true, false, 9695+ false, 9696+ -0xf.ffffffffffffc000000000000008p+1020, false, false, 9697+ -0xf.ffffffffffffcp+1020, false, false, 9698+ -0xf.ffffffffffffcp+1020, false, false, 9699+ -0xf.ffffffffffffcp+1020, false, false), 9700 TEST ("118973149535723176505351158982948866796625400469556721895649" 9701 "927756249918185172720476044944290457046138433056764616744328" 9702 "666255526748948793023632513609765434237723241753648908036202" 9703@@ -2148,35 +2148,35 @@ static const struct test tests[] = { 9704 "578031503869424406179027994752890226443351619365453243328968" 9705 "8740976918527.999", 9706 false, 9707- 0xf.fffffp+124, true, 9708- INF, true, 9709- 0xf.fffffp+124, true, 9710- INF, true, 9711- false, 9712- 0xf.ffffffffffff8p+1020, true, 9713- INF, true, 9714- 0xf.ffffffffffff8p+1020, true, 9715- INF, true, 9716- false, 9717- 0xf.fffffffffffffffp+16380, false, 9718- 0xf.fffffffffffffffp+16380, false, 9719- 0xf.fffffffffffffffp+16380, false, 9720- INF, true, 9721- false, 9722- 0xf.fffffffffffffffp+16380, false, 9723- 0xf.fffffffffffffffp+16380, false, 9724- 0xf.fffffffffffffffp+16380, false, 9725- INF, true, 9726- false, 9727- 0xf.fffffffffffffffffffffffffcp+1020, true, 9728- INF, true, 9729- 0xf.fffffffffffffffffffffffffcp+1020, true, 9730- INF, true, 9731- false, 9732- 0xf.fffffffffffffff7fffffffffff8p+16380, false, 9733- 0xf.fffffffffffffff8p+16380, false, 9734- 0xf.fffffffffffffff7fffffffffff8p+16380, false, 9735- 0xf.fffffffffffffff8p+16380, false), 9736+ 0xf.fffffp+124, true, false, 9737+ INF, true, false, 9738+ 0xf.fffffp+124, true, false, 9739+ INF, true, false, 9740+ false, 9741+ 0xf.ffffffffffff8p+1020, true, false, 9742+ INF, true, false, 9743+ 0xf.ffffffffffff8p+1020, true, false, 9744+ INF, true, false, 9745+ false, 9746+ 0xf.fffffffffffffffp+16380, false, false, 9747+ 0xf.fffffffffffffffp+16380, false, false, 9748+ 0xf.fffffffffffffffp+16380, false, false, 9749+ INF, true, false, 9750+ false, 9751+ 0xf.fffffffffffffffp+16380, false, false, 9752+ 0xf.fffffffffffffffp+16380, false, false, 9753+ 0xf.fffffffffffffffp+16380, false, false, 9754+ INF, true, false, 9755+ false, 9756+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 9757+ INF, true, false, 9758+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 9759+ INF, true, false, 9760+ false, 9761+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false, 9762+ 0xf.fffffffffffffff8p+16380, false, false, 9763+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false, 9764+ 0xf.fffffffffffffff8p+16380, false, false), 9765 TEST ("118973149535723176505351158982948866796625400469556721895649" 9766 "927756249918185172720476044944290457046138433056764616744328" 9767 "666255526748948793023632513609765434237723241753648908036202" 9768@@ -2261,35 +2261,35 @@ static const struct test tests[] = { 9769 "578031503869424406179027994752890226443351619365453243328968" 9770 "8740976918528", 9771 false, 9772- 0xf.fffffp+124, true, 9773- INF, true, 9774- 0xf.fffffp+124, true, 9775- INF, true, 9776- false, 9777- 0xf.ffffffffffff8p+1020, true, 9778- INF, true, 9779- 0xf.ffffffffffff8p+1020, true, 9780- INF, true, 9781- false, 9782- 0xf.fffffffffffffffp+16380, false, 9783- INF, true, 9784- 0xf.fffffffffffffffp+16380, false, 9785- INF, true, 9786- false, 9787- 0xf.fffffffffffffffp+16380, false, 9788- INF, true, 9789- 0xf.fffffffffffffffp+16380, false, 9790- INF, true, 9791- false, 9792- 0xf.fffffffffffffffffffffffffcp+1020, true, 9793- INF, true, 9794- 0xf.fffffffffffffffffffffffffcp+1020, true, 9795- INF, true, 9796- true, 9797- 0xf.fffffffffffffff8p+16380, false, 9798- 0xf.fffffffffffffff8p+16380, false, 9799- 0xf.fffffffffffffff8p+16380, false, 9800- 0xf.fffffffffffffff8p+16380, false), 9801+ 0xf.fffffp+124, true, false, 9802+ INF, true, false, 9803+ 0xf.fffffp+124, true, false, 9804+ INF, true, false, 9805+ false, 9806+ 0xf.ffffffffffff8p+1020, true, false, 9807+ INF, true, false, 9808+ 0xf.ffffffffffff8p+1020, true, false, 9809+ INF, true, false, 9810+ false, 9811+ 0xf.fffffffffffffffp+16380, false, false, 9812+ INF, true, false, 9813+ 0xf.fffffffffffffffp+16380, false, false, 9814+ INF, true, false, 9815+ false, 9816+ 0xf.fffffffffffffffp+16380, false, false, 9817+ INF, true, false, 9818+ 0xf.fffffffffffffffp+16380, false, false, 9819+ INF, true, false, 9820+ false, 9821+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 9822+ INF, true, false, 9823+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 9824+ INF, true, false, 9825+ true, 9826+ 0xf.fffffffffffffff8p+16380, false, false, 9827+ 0xf.fffffffffffffff8p+16380, false, false, 9828+ 0xf.fffffffffffffff8p+16380, false, false, 9829+ 0xf.fffffffffffffff8p+16380, false, false), 9830 TEST ("118973149535723176505351158982948866796625400469556721895649" 9831 "927756249918185172720476044944290457046138433056764616744328" 9832 "666255526748948793023632513609765434237723241753648908036202" 9833@@ -2374,35 +2374,35 @@ static const struct test tests[] = { 9834 "578031503869424406179027994752890226443351619365453243328968" 9835 "8740976918528.001", 9836 false, 9837- 0xf.fffffp+124, true, 9838- INF, true, 9839- 0xf.fffffp+124, true, 9840- INF, true, 9841- false, 9842- 0xf.ffffffffffff8p+1020, true, 9843- INF, true, 9844- 0xf.ffffffffffff8p+1020, true, 9845- INF, true, 9846- false, 9847- 0xf.fffffffffffffffp+16380, false, 9848- INF, true, 9849- 0xf.fffffffffffffffp+16380, false, 9850- INF, true, 9851- false, 9852- 0xf.fffffffffffffffp+16380, false, 9853- INF, true, 9854- 0xf.fffffffffffffffp+16380, false, 9855- INF, true, 9856- false, 9857- 0xf.fffffffffffffffffffffffffcp+1020, true, 9858- INF, true, 9859- 0xf.fffffffffffffffffffffffffcp+1020, true, 9860- INF, true, 9861- false, 9862- 0xf.fffffffffffffff8p+16380, false, 9863- 0xf.fffffffffffffff8p+16380, false, 9864- 0xf.fffffffffffffff8p+16380, false, 9865- 0xf.fffffffffffffff8000000000008p+16380, false), 9866+ 0xf.fffffp+124, true, false, 9867+ INF, true, false, 9868+ 0xf.fffffp+124, true, false, 9869+ INF, true, false, 9870+ false, 9871+ 0xf.ffffffffffff8p+1020, true, false, 9872+ INF, true, false, 9873+ 0xf.ffffffffffff8p+1020, true, false, 9874+ INF, true, false, 9875+ false, 9876+ 0xf.fffffffffffffffp+16380, false, false, 9877+ INF, true, false, 9878+ 0xf.fffffffffffffffp+16380, false, false, 9879+ INF, true, false, 9880+ false, 9881+ 0xf.fffffffffffffffp+16380, false, false, 9882+ INF, true, false, 9883+ 0xf.fffffffffffffffp+16380, false, false, 9884+ INF, true, false, 9885+ false, 9886+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 9887+ INF, true, false, 9888+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 9889+ INF, true, false, 9890+ false, 9891+ 0xf.fffffffffffffff8p+16380, false, false, 9892+ 0xf.fffffffffffffff8p+16380, false, false, 9893+ 0xf.fffffffffffffff8p+16380, false, false, 9894+ 0xf.fffffffffffffff8000000000008p+16380, false, false), 9895 TEST ("-11897314953572317650535115898294886679662540046955672189564" 9896 "992775624991818517272047604494429045704613843305676461674432" 9897 "866625552674894879302363251360976543423772324175364890803620" 9898@@ -2487,35 +2487,35 @@ static const struct test tests[] = { 9899 "557803150386942440617902799475289022644335161936545324332896" 9900 "88740976918527.999", 9901 false, 9902- -INF, true, 9903- -INF, true, 9904- -0xf.fffffp+124, true, 9905- -0xf.fffffp+124, true, 9906- false, 9907- -INF, true, 9908- -INF, true, 9909- -0xf.ffffffffffff8p+1020, true, 9910- -0xf.ffffffffffff8p+1020, true, 9911- false, 9912- -INF, true, 9913- -0xf.fffffffffffffffp+16380, false, 9914- -0xf.fffffffffffffffp+16380, false, 9915- -0xf.fffffffffffffffp+16380, false, 9916- false, 9917- -INF, true, 9918- -0xf.fffffffffffffffp+16380, false, 9919- -0xf.fffffffffffffffp+16380, false, 9920- -0xf.fffffffffffffffp+16380, false, 9921- false, 9922- -INF, true, 9923- -INF, true, 9924- -0xf.fffffffffffffffffffffffffcp+1020, true, 9925- -0xf.fffffffffffffffffffffffffcp+1020, true, 9926- false, 9927- -0xf.fffffffffffffff8p+16380, false, 9928- -0xf.fffffffffffffff8p+16380, false, 9929- -0xf.fffffffffffffff7fffffffffff8p+16380, false, 9930- -0xf.fffffffffffffff7fffffffffff8p+16380, false), 9931+ -INF, true, false, 9932+ -INF, true, false, 9933+ -0xf.fffffp+124, true, false, 9934+ -0xf.fffffp+124, true, false, 9935+ false, 9936+ -INF, true, false, 9937+ -INF, true, false, 9938+ -0xf.ffffffffffff8p+1020, true, false, 9939+ -0xf.ffffffffffff8p+1020, true, false, 9940+ false, 9941+ -INF, true, false, 9942+ -0xf.fffffffffffffffp+16380, false, false, 9943+ -0xf.fffffffffffffffp+16380, false, false, 9944+ -0xf.fffffffffffffffp+16380, false, false, 9945+ false, 9946+ -INF, true, false, 9947+ -0xf.fffffffffffffffp+16380, false, false, 9948+ -0xf.fffffffffffffffp+16380, false, false, 9949+ -0xf.fffffffffffffffp+16380, false, false, 9950+ false, 9951+ -INF, true, false, 9952+ -INF, true, false, 9953+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 9954+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 9955+ false, 9956+ -0xf.fffffffffffffff8p+16380, false, false, 9957+ -0xf.fffffffffffffff8p+16380, false, false, 9958+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false, 9959+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false), 9960 TEST ("-11897314953572317650535115898294886679662540046955672189564" 9961 "992775624991818517272047604494429045704613843305676461674432" 9962 "866625552674894879302363251360976543423772324175364890803620" 9963@@ -2600,35 +2600,35 @@ static const struct test tests[] = { 9964 "557803150386942440617902799475289022644335161936545324332896" 9965 "88740976918528", 9966 false, 9967- -INF, true, 9968- -INF, true, 9969- -0xf.fffffp+124, true, 9970- -0xf.fffffp+124, true, 9971- false, 9972- -INF, true, 9973- -INF, true, 9974- -0xf.ffffffffffff8p+1020, true, 9975- -0xf.ffffffffffff8p+1020, true, 9976- false, 9977- -INF, true, 9978- -INF, true, 9979- -0xf.fffffffffffffffp+16380, false, 9980- -0xf.fffffffffffffffp+16380, false, 9981- false, 9982- -INF, true, 9983- -INF, true, 9984- -0xf.fffffffffffffffp+16380, false, 9985- -0xf.fffffffffffffffp+16380, false, 9986- false, 9987- -INF, true, 9988- -INF, true, 9989- -0xf.fffffffffffffffffffffffffcp+1020, true, 9990- -0xf.fffffffffffffffffffffffffcp+1020, true, 9991- true, 9992- -0xf.fffffffffffffff8p+16380, false, 9993- -0xf.fffffffffffffff8p+16380, false, 9994- -0xf.fffffffffffffff8p+16380, false, 9995- -0xf.fffffffffffffff8p+16380, false), 9996+ -INF, true, false, 9997+ -INF, true, false, 9998+ -0xf.fffffp+124, true, false, 9999+ -0xf.fffffp+124, true, false, 10000+ false, 10001+ -INF, true, false, 10002+ -INF, true, false, 10003+ -0xf.ffffffffffff8p+1020, true, false, 10004+ -0xf.ffffffffffff8p+1020, true, false, 10005+ false, 10006+ -INF, true, false, 10007+ -INF, true, false, 10008+ -0xf.fffffffffffffffp+16380, false, false, 10009+ -0xf.fffffffffffffffp+16380, false, false, 10010+ false, 10011+ -INF, true, false, 10012+ -INF, true, false, 10013+ -0xf.fffffffffffffffp+16380, false, false, 10014+ -0xf.fffffffffffffffp+16380, false, false, 10015+ false, 10016+ -INF, true, false, 10017+ -INF, true, false, 10018+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10019+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10020+ true, 10021+ -0xf.fffffffffffffff8p+16380, false, false, 10022+ -0xf.fffffffffffffff8p+16380, false, false, 10023+ -0xf.fffffffffffffff8p+16380, false, false, 10024+ -0xf.fffffffffffffff8p+16380, false, false), 10025 TEST ("-11897314953572317650535115898294886679662540046955672189564" 10026 "992775624991818517272047604494429045704613843305676461674432" 10027 "866625552674894879302363251360976543423772324175364890803620" 10028@@ -2713,35 +2713,35 @@ static const struct test tests[] = { 10029 "557803150386942440617902799475289022644335161936545324332896" 10030 "88740976918528.001", 10031 false, 10032- -INF, true, 10033- -INF, true, 10034- -0xf.fffffp+124, true, 10035- -0xf.fffffp+124, true, 10036- false, 10037- -INF, true, 10038- -INF, true, 10039- -0xf.ffffffffffff8p+1020, true, 10040- -0xf.ffffffffffff8p+1020, true, 10041- false, 10042- -INF, true, 10043- -INF, true, 10044- -0xf.fffffffffffffffp+16380, false, 10045- -0xf.fffffffffffffffp+16380, false, 10046- false, 10047- -INF, true, 10048- -INF, true, 10049- -0xf.fffffffffffffffp+16380, false, 10050- -0xf.fffffffffffffffp+16380, false, 10051- false, 10052- -INF, true, 10053- -INF, true, 10054- -0xf.fffffffffffffffffffffffffcp+1020, true, 10055- -0xf.fffffffffffffffffffffffffcp+1020, true, 10056- false, 10057- -0xf.fffffffffffffff8000000000008p+16380, false, 10058- -0xf.fffffffffffffff8p+16380, false, 10059- -0xf.fffffffffffffff8p+16380, false, 10060- -0xf.fffffffffffffff8p+16380, false), 10061+ -INF, true, false, 10062+ -INF, true, false, 10063+ -0xf.fffffp+124, true, false, 10064+ -0xf.fffffp+124, true, false, 10065+ false, 10066+ -INF, true, false, 10067+ -INF, true, false, 10068+ -0xf.ffffffffffff8p+1020, true, false, 10069+ -0xf.ffffffffffff8p+1020, true, false, 10070+ false, 10071+ -INF, true, false, 10072+ -INF, true, false, 10073+ -0xf.fffffffffffffffp+16380, false, false, 10074+ -0xf.fffffffffffffffp+16380, false, false, 10075+ false, 10076+ -INF, true, false, 10077+ -INF, true, false, 10078+ -0xf.fffffffffffffffp+16380, false, false, 10079+ -0xf.fffffffffffffffp+16380, false, false, 10080+ false, 10081+ -INF, true, false, 10082+ -INF, true, false, 10083+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10084+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10085+ false, 10086+ -0xf.fffffffffffffff8000000000008p+16380, false, false, 10087+ -0xf.fffffffffffffff8p+16380, false, false, 10088+ -0xf.fffffffffffffff8p+16380, false, false, 10089+ -0xf.fffffffffffffff8p+16380, false, false), 10090 TEST ("118973149535723176508575932662800707347995686986910214150118" 10091 "685272271246896789803961473130416053705672050873552479421805" 10092 "932646640744124594447361172514341324846716679654551308018400" 10093@@ -2826,35 +2826,35 @@ static const struct test tests[] = { 10094 "972233447491583165728635513802591543441145939539353470970452" 10095 "5536550715391.999", 10096 false, 10097- 0xf.fffffp+124, true, 10098- INF, true, 10099- 0xf.fffffp+124, true, 10100- INF, true, 10101- false, 10102- 0xf.ffffffffffff8p+1020, true, 10103- INF, true, 10104- 0xf.ffffffffffff8p+1020, true, 10105- INF, true, 10106- false, 10107- 0xf.fffffffffffffffp+16380, false, 10108- INF, true, 10109- 0xf.fffffffffffffffp+16380, false, 10110- INF, true, 10111- false, 10112- 0xf.fffffffffffffffp+16380, false, 10113- INF, true, 10114- 0xf.fffffffffffffffp+16380, false, 10115- INF, true, 10116- false, 10117- 0xf.fffffffffffffffffffffffffcp+1020, true, 10118- INF, true, 10119- 0xf.fffffffffffffffffffffffffcp+1020, true, 10120- INF, true, 10121- false, 10122- 0xf.fffffffffffffffffffffffffff8p+16380, false, 10123- 0xf.fffffffffffffffffffffffffff8p+16380, false, 10124- 0xf.fffffffffffffffffffffffffff8p+16380, false, 10125- INF, true), 10126+ 0xf.fffffp+124, true, false, 10127+ INF, true, false, 10128+ 0xf.fffffp+124, true, false, 10129+ INF, true, false, 10130+ false, 10131+ 0xf.ffffffffffff8p+1020, true, false, 10132+ INF, true, false, 10133+ 0xf.ffffffffffff8p+1020, true, false, 10134+ INF, true, false, 10135+ false, 10136+ 0xf.fffffffffffffffp+16380, false, false, 10137+ INF, true, false, 10138+ 0xf.fffffffffffffffp+16380, false, false, 10139+ INF, true, false, 10140+ false, 10141+ 0xf.fffffffffffffffp+16380, false, false, 10142+ INF, true, false, 10143+ 0xf.fffffffffffffffp+16380, false, false, 10144+ INF, true, false, 10145+ false, 10146+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 10147+ INF, true, false, 10148+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 10149+ INF, true, false, 10150+ false, 10151+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10152+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10153+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10154+ INF, true, false), 10155 TEST ("118973149535723176508575932662800707347995686986910214150118" 10156 "685272271246896789803961473130416053705672050873552479421805" 10157 "932646640744124594447361172514341324846716679654551308018400" 10158@@ -2939,35 +2939,35 @@ static const struct test tests[] = { 10159 "972233447491583165728635513802591543441145939539353470970452" 10160 "5536550715392", 10161 false, 10162- 0xf.fffffp+124, true, 10163- INF, true, 10164- 0xf.fffffp+124, true, 10165- INF, true, 10166- false, 10167- 0xf.ffffffffffff8p+1020, true, 10168- INF, true, 10169- 0xf.ffffffffffff8p+1020, true, 10170- INF, true, 10171- false, 10172- 0xf.fffffffffffffffp+16380, false, 10173- INF, true, 10174- 0xf.fffffffffffffffp+16380, false, 10175- INF, true, 10176- false, 10177- 0xf.fffffffffffffffp+16380, false, 10178- INF, true, 10179- 0xf.fffffffffffffffp+16380, false, 10180- INF, true, 10181- false, 10182- 0xf.fffffffffffffffffffffffffcp+1020, true, 10183- INF, true, 10184- 0xf.fffffffffffffffffffffffffcp+1020, true, 10185- INF, true, 10186- false, 10187- 0xf.fffffffffffffffffffffffffff8p+16380, false, 10188- INF, true, 10189- 0xf.fffffffffffffffffffffffffff8p+16380, false, 10190- INF, true), 10191+ 0xf.fffffp+124, true, false, 10192+ INF, true, false, 10193+ 0xf.fffffp+124, true, false, 10194+ INF, true, false, 10195+ false, 10196+ 0xf.ffffffffffff8p+1020, true, false, 10197+ INF, true, false, 10198+ 0xf.ffffffffffff8p+1020, true, false, 10199+ INF, true, false, 10200+ false, 10201+ 0xf.fffffffffffffffp+16380, false, false, 10202+ INF, true, false, 10203+ 0xf.fffffffffffffffp+16380, false, false, 10204+ INF, true, false, 10205+ false, 10206+ 0xf.fffffffffffffffp+16380, false, false, 10207+ INF, true, false, 10208+ 0xf.fffffffffffffffp+16380, false, false, 10209+ INF, true, false, 10210+ false, 10211+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 10212+ INF, true, false, 10213+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 10214+ INF, true, false, 10215+ false, 10216+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10217+ INF, true, false, 10218+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10219+ INF, true, false), 10220 TEST ("118973149535723176508575932662800707347995686986910214150118" 10221 "685272271246896789803961473130416053705672050873552479421805" 10222 "932646640744124594447361172514341324846716679654551308018400" 10223@@ -3052,35 +3052,35 @@ static const struct test tests[] = { 10224 "972233447491583165728635513802591543441145939539353470970452" 10225 "5536550715392.001", 10226 false, 10227- 0xf.fffffp+124, true, 10228- INF, true, 10229- 0xf.fffffp+124, true, 10230- INF, true, 10231- false, 10232- 0xf.ffffffffffff8p+1020, true, 10233- INF, true, 10234- 0xf.ffffffffffff8p+1020, true, 10235- INF, true, 10236- false, 10237- 0xf.fffffffffffffffp+16380, false, 10238- INF, true, 10239- 0xf.fffffffffffffffp+16380, false, 10240- INF, true, 10241- false, 10242- 0xf.fffffffffffffffp+16380, false, 10243- INF, true, 10244- 0xf.fffffffffffffffp+16380, false, 10245- INF, true, 10246- false, 10247- 0xf.fffffffffffffffffffffffffcp+1020, true, 10248- INF, true, 10249- 0xf.fffffffffffffffffffffffffcp+1020, true, 10250- INF, true, 10251- false, 10252- 0xf.fffffffffffffffffffffffffff8p+16380, false, 10253- INF, true, 10254- 0xf.fffffffffffffffffffffffffff8p+16380, false, 10255- INF, true), 10256+ 0xf.fffffp+124, true, false, 10257+ INF, true, false, 10258+ 0xf.fffffp+124, true, false, 10259+ INF, true, false, 10260+ false, 10261+ 0xf.ffffffffffff8p+1020, true, false, 10262+ INF, true, false, 10263+ 0xf.ffffffffffff8p+1020, true, false, 10264+ INF, true, false, 10265+ false, 10266+ 0xf.fffffffffffffffp+16380, false, false, 10267+ INF, true, false, 10268+ 0xf.fffffffffffffffp+16380, false, false, 10269+ INF, true, false, 10270+ false, 10271+ 0xf.fffffffffffffffp+16380, false, false, 10272+ INF, true, false, 10273+ 0xf.fffffffffffffffp+16380, false, false, 10274+ INF, true, false, 10275+ false, 10276+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 10277+ INF, true, false, 10278+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 10279+ INF, true, false, 10280+ false, 10281+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10282+ INF, true, false, 10283+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10284+ INF, true, false), 10285 TEST ("-11897314953572317650857593266280070734799568698691021415011" 10286 "868527227124689678980396147313041605370567205087355247942180" 10287 "593264664074412459444736117251434132484671667965455130801840" 10288@@ -3165,35 +3165,35 @@ static const struct test tests[] = { 10289 "097223344749158316572863551380259154344114593953935347097045" 10290 "25536550715391.999", 10291 false, 10292- -INF, true, 10293- -INF, true, 10294- -0xf.fffffp+124, true, 10295- -0xf.fffffp+124, true, 10296- false, 10297- -INF, true, 10298- -INF, true, 10299- -0xf.ffffffffffff8p+1020, true, 10300- -0xf.ffffffffffff8p+1020, true, 10301- false, 10302- -INF, true, 10303- -INF, true, 10304- -0xf.fffffffffffffffp+16380, false, 10305- -0xf.fffffffffffffffp+16380, false, 10306- false, 10307- -INF, true, 10308- -INF, true, 10309- -0xf.fffffffffffffffp+16380, false, 10310- -0xf.fffffffffffffffp+16380, false, 10311- false, 10312- -INF, true, 10313- -INF, true, 10314- -0xf.fffffffffffffffffffffffffcp+1020, true, 10315- -0xf.fffffffffffffffffffffffffcp+1020, true, 10316- false, 10317- -INF, true, 10318- -0xf.fffffffffffffffffffffffffff8p+16380, false, 10319- -0xf.fffffffffffffffffffffffffff8p+16380, false, 10320- -0xf.fffffffffffffffffffffffffff8p+16380, false), 10321+ -INF, true, false, 10322+ -INF, true, false, 10323+ -0xf.fffffp+124, true, false, 10324+ -0xf.fffffp+124, true, false, 10325+ false, 10326+ -INF, true, false, 10327+ -INF, true, false, 10328+ -0xf.ffffffffffff8p+1020, true, false, 10329+ -0xf.ffffffffffff8p+1020, true, false, 10330+ false, 10331+ -INF, true, false, 10332+ -INF, true, false, 10333+ -0xf.fffffffffffffffp+16380, false, false, 10334+ -0xf.fffffffffffffffp+16380, false, false, 10335+ false, 10336+ -INF, true, false, 10337+ -INF, true, false, 10338+ -0xf.fffffffffffffffp+16380, false, false, 10339+ -0xf.fffffffffffffffp+16380, false, false, 10340+ false, 10341+ -INF, true, false, 10342+ -INF, true, false, 10343+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10344+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10345+ false, 10346+ -INF, true, false, 10347+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10348+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10349+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), 10350 TEST ("-11897314953572317650857593266280070734799568698691021415011" 10351 "868527227124689678980396147313041605370567205087355247942180" 10352 "593264664074412459444736117251434132484671667965455130801840" 10353@@ -3278,35 +3278,35 @@ static const struct test tests[] = { 10354 "097223344749158316572863551380259154344114593953935347097045" 10355 "25536550715392", 10356 false, 10357- -INF, true, 10358- -INF, true, 10359- -0xf.fffffp+124, true, 10360- -0xf.fffffp+124, true, 10361- false, 10362- -INF, true, 10363- -INF, true, 10364- -0xf.ffffffffffff8p+1020, true, 10365- -0xf.ffffffffffff8p+1020, true, 10366- false, 10367- -INF, true, 10368- -INF, true, 10369- -0xf.fffffffffffffffp+16380, false, 10370- -0xf.fffffffffffffffp+16380, false, 10371- false, 10372- -INF, true, 10373- -INF, true, 10374- -0xf.fffffffffffffffp+16380, false, 10375- -0xf.fffffffffffffffp+16380, false, 10376- false, 10377- -INF, true, 10378- -INF, true, 10379- -0xf.fffffffffffffffffffffffffcp+1020, true, 10380- -0xf.fffffffffffffffffffffffffcp+1020, true, 10381- false, 10382- -INF, true, 10383- -INF, true, 10384- -0xf.fffffffffffffffffffffffffff8p+16380, false, 10385- -0xf.fffffffffffffffffffffffffff8p+16380, false), 10386+ -INF, true, false, 10387+ -INF, true, false, 10388+ -0xf.fffffp+124, true, false, 10389+ -0xf.fffffp+124, true, false, 10390+ false, 10391+ -INF, true, false, 10392+ -INF, true, false, 10393+ -0xf.ffffffffffff8p+1020, true, false, 10394+ -0xf.ffffffffffff8p+1020, true, false, 10395+ false, 10396+ -INF, true, false, 10397+ -INF, true, false, 10398+ -0xf.fffffffffffffffp+16380, false, false, 10399+ -0xf.fffffffffffffffp+16380, false, false, 10400+ false, 10401+ -INF, true, false, 10402+ -INF, true, false, 10403+ -0xf.fffffffffffffffp+16380, false, false, 10404+ -0xf.fffffffffffffffp+16380, false, false, 10405+ false, 10406+ -INF, true, false, 10407+ -INF, true, false, 10408+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10409+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10410+ false, 10411+ -INF, true, false, 10412+ -INF, true, false, 10413+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10414+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), 10415 TEST ("-11897314953572317650857593266280070734799568698691021415011" 10416 "868527227124689678980396147313041605370567205087355247942180" 10417 "593264664074412459444736117251434132484671667965455130801840" 10418@@ -3391,419 +3391,419 @@ static const struct test tests[] = { 10419 "097223344749158316572863551380259154344114593953935347097045" 10420 "25536550715392.001", 10421 false, 10422- -INF, true, 10423- -INF, true, 10424- -0xf.fffffp+124, true, 10425- -0xf.fffffp+124, true, 10426- false, 10427- -INF, true, 10428- -INF, true, 10429- -0xf.ffffffffffff8p+1020, true, 10430- -0xf.ffffffffffff8p+1020, true, 10431- false, 10432- -INF, true, 10433- -INF, true, 10434- -0xf.fffffffffffffffp+16380, false, 10435- -0xf.fffffffffffffffp+16380, false, 10436- false, 10437- -INF, true, 10438- -INF, true, 10439- -0xf.fffffffffffffffp+16380, false, 10440- -0xf.fffffffffffffffp+16380, false, 10441- false, 10442- -INF, true, 10443- -INF, true, 10444- -0xf.fffffffffffffffffffffffffcp+1020, true, 10445- -0xf.fffffffffffffffffffffffffcp+1020, true, 10446- false, 10447- -INF, true, 10448- -INF, true, 10449- -0xf.fffffffffffffffffffffffffff8p+16380, false, 10450- -0xf.fffffffffffffffffffffffffff8p+16380, false), 10451+ -INF, true, false, 10452+ -INF, true, false, 10453+ -0xf.fffffp+124, true, false, 10454+ -0xf.fffffp+124, true, false, 10455+ false, 10456+ -INF, true, false, 10457+ -INF, true, false, 10458+ -0xf.ffffffffffff8p+1020, true, false, 10459+ -0xf.ffffffffffff8p+1020, true, false, 10460+ false, 10461+ -INF, true, false, 10462+ -INF, true, false, 10463+ -0xf.fffffffffffffffp+16380, false, false, 10464+ -0xf.fffffffffffffffp+16380, false, false, 10465+ false, 10466+ -INF, true, false, 10467+ -INF, true, false, 10468+ -0xf.fffffffffffffffp+16380, false, false, 10469+ -0xf.fffffffffffffffp+16380, false, false, 10470+ false, 10471+ -INF, true, false, 10472+ -INF, true, false, 10473+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10474+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 10475+ false, 10476+ -INF, true, false, 10477+ -INF, true, false, 10478+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, 10479+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), 10480 TEST ("2.1019476964872256063855943749348741969203929128147736576356" 10481 "0242583468662402879090222995728254318237304687499e-45", 10482 false, 10483- 0x8p-152, false, 10484- 0x8p-152, false, 10485- 0x8p-152, false, 10486- 0x1p-148, false, 10487- false, 10488- 0xb.ffffffffffff8p-152, false, 10489- 0xcp-152, false, 10490- 0xb.ffffffffffff8p-152, false, 10491- 0xcp-152, false, 10492- false, 10493- 0xb.fffffffffffffffp-152, false, 10494- 0xcp-152, false, 10495- 0xb.fffffffffffffffp-152, false, 10496- 0xcp-152, false, 10497- false, 10498- 0xb.fffffffffffffffp-152, false, 10499- 0xcp-152, false, 10500- 0xb.fffffffffffffffp-152, false, 10501- 0xcp-152, false, 10502- false, 10503- 0xb.fffffffffffffffffffffffffcp-152, false, 10504- 0xcp-152, false, 10505- 0xb.fffffffffffffffffffffffffcp-152, false, 10506- 0xcp-152, false, 10507- false, 10508- 0xb.fffffffffffffffffffffffffff8p-152, false, 10509- 0xcp-152, false, 10510- 0xb.fffffffffffffffffffffffffff8p-152, false, 10511- 0xcp-152, false), 10512+ 0x8p-152, false, true, 10513+ 0x8p-152, false, true, 10514+ 0x8p-152, false, true, 10515+ 0x1p-148, false, true, 10516+ false, 10517+ 0xb.ffffffffffff8p-152, false, false, 10518+ 0xcp-152, false, false, 10519+ 0xb.ffffffffffff8p-152, false, false, 10520+ 0xcp-152, false, false, 10521+ false, 10522+ 0xb.fffffffffffffffp-152, false, false, 10523+ 0xcp-152, false, false, 10524+ 0xb.fffffffffffffffp-152, false, false, 10525+ 0xcp-152, false, false, 10526+ false, 10527+ 0xb.fffffffffffffffp-152, false, false, 10528+ 0xcp-152, false, false, 10529+ 0xb.fffffffffffffffp-152, false, false, 10530+ 0xcp-152, false, false, 10531+ false, 10532+ 0xb.fffffffffffffffffffffffffcp-152, false, false, 10533+ 0xcp-152, false, false, 10534+ 0xb.fffffffffffffffffffffffffcp-152, false, false, 10535+ 0xcp-152, false, false, 10536+ false, 10537+ 0xb.fffffffffffffffffffffffffff8p-152, false, false, 10538+ 0xcp-152, false, false, 10539+ 0xb.fffffffffffffffffffffffffff8p-152, false, false, 10540+ 0xcp-152, false, false), 10541 TEST ("2.1019476964872256063855943749348741969203929128147736576356" 10542 "02425834686624028790902229957282543182373046875e-45", 10543 false, 10544- 0x8p-152, false, 10545- 0x1p-148, false, 10546- 0x8p-152, false, 10547- 0x1p-148, false, 10548- true, 10549- 0xcp-152, false, 10550- 0xcp-152, false, 10551- 0xcp-152, false, 10552- 0xcp-152, false, 10553- true, 10554- 0xcp-152, false, 10555- 0xcp-152, false, 10556- 0xcp-152, false, 10557- 0xcp-152, false, 10558- true, 10559- 0xcp-152, false, 10560- 0xcp-152, false, 10561- 0xcp-152, false, 10562- 0xcp-152, false, 10563- true, 10564- 0xcp-152, false, 10565- 0xcp-152, false, 10566- 0xcp-152, false, 10567- 0xcp-152, false, 10568- true, 10569- 0xcp-152, false, 10570- 0xcp-152, false, 10571- 0xcp-152, false, 10572- 0xcp-152, false), 10573+ 0x8p-152, false, true, 10574+ 0x1p-148, false, true, 10575+ 0x8p-152, false, true, 10576+ 0x1p-148, false, true, 10577+ true, 10578+ 0xcp-152, false, false, 10579+ 0xcp-152, false, false, 10580+ 0xcp-152, false, false, 10581+ 0xcp-152, false, false, 10582+ true, 10583+ 0xcp-152, false, false, 10584+ 0xcp-152, false, false, 10585+ 0xcp-152, false, false, 10586+ 0xcp-152, false, false, 10587+ true, 10588+ 0xcp-152, false, false, 10589+ 0xcp-152, false, false, 10590+ 0xcp-152, false, false, 10591+ 0xcp-152, false, false, 10592+ true, 10593+ 0xcp-152, false, false, 10594+ 0xcp-152, false, false, 10595+ 0xcp-152, false, false, 10596+ 0xcp-152, false, false, 10597+ true, 10598+ 0xcp-152, false, false, 10599+ 0xcp-152, false, false, 10600+ 0xcp-152, false, false, 10601+ 0xcp-152, false, false), 10602 TEST ("2.1019476964872256063855943749348741969203929128147736576356" 10603 "0242583468662402879090222995728254318237304687501e-45", 10604 false, 10605- 0x8p-152, false, 10606- 0x1p-148, false, 10607- 0x8p-152, false, 10608- 0x1p-148, false, 10609- false, 10610- 0xcp-152, false, 10611- 0xcp-152, false, 10612- 0xcp-152, false, 10613- 0xc.0000000000008p-152, false, 10614- false, 10615- 0xcp-152, false, 10616- 0xcp-152, false, 10617- 0xcp-152, false, 10618- 0xc.000000000000001p-152, false, 10619- false, 10620- 0xcp-152, false, 10621- 0xcp-152, false, 10622- 0xcp-152, false, 10623- 0xc.000000000000001p-152, false, 10624- false, 10625- 0xcp-152, false, 10626- 0xcp-152, false, 10627- 0xcp-152, false, 10628- 0xc.00000000000000000000000004p-152, false, 10629- false, 10630- 0xcp-152, false, 10631- 0xcp-152, false, 10632- 0xcp-152, false, 10633- 0xc.0000000000000000000000000008p-152, false), 10634+ 0x8p-152, false, true, 10635+ 0x1p-148, false, true, 10636+ 0x8p-152, false, true, 10637+ 0x1p-148, false, true, 10638+ false, 10639+ 0xcp-152, false, false, 10640+ 0xcp-152, false, false, 10641+ 0xcp-152, false, false, 10642+ 0xc.0000000000008p-152, false, false, 10643+ false, 10644+ 0xcp-152, false, false, 10645+ 0xcp-152, false, false, 10646+ 0xcp-152, false, false, 10647+ 0xc.000000000000001p-152, false, false, 10648+ false, 10649+ 0xcp-152, false, false, 10650+ 0xcp-152, false, false, 10651+ 0xcp-152, false, false, 10652+ 0xc.000000000000001p-152, false, false, 10653+ false, 10654+ 0xcp-152, false, false, 10655+ 0xcp-152, false, false, 10656+ 0xcp-152, false, false, 10657+ 0xc.00000000000000000000000004p-152, false, false, 10658+ false, 10659+ 0xcp-152, false, false, 10660+ 0xcp-152, false, false, 10661+ 0xcp-152, false, false, 10662+ 0xc.0000000000000000000000000008p-152, false, false), 10663 TEST ("-2.101947696487225606385594374934874196920392912814773657635" 10664 "60242583468662402879090222995728254318237304687499e-45", 10665 false, 10666- -0x1p-148, false, 10667- -0x8p-152, false, 10668- -0x8p-152, false, 10669- -0x8p-152, false, 10670- false, 10671- -0xcp-152, false, 10672- -0xcp-152, false, 10673- -0xb.ffffffffffff8p-152, false, 10674- -0xb.ffffffffffff8p-152, false, 10675- false, 10676- -0xcp-152, false, 10677- -0xcp-152, false, 10678- -0xb.fffffffffffffffp-152, false, 10679- -0xb.fffffffffffffffp-152, false, 10680- false, 10681- -0xcp-152, false, 10682- -0xcp-152, false, 10683- -0xb.fffffffffffffffp-152, false, 10684- -0xb.fffffffffffffffp-152, false, 10685- false, 10686- -0xcp-152, false, 10687- -0xcp-152, false, 10688- -0xb.fffffffffffffffffffffffffcp-152, false, 10689- -0xb.fffffffffffffffffffffffffcp-152, false, 10690- false, 10691- -0xcp-152, false, 10692- -0xcp-152, false, 10693- -0xb.fffffffffffffffffffffffffff8p-152, false, 10694- -0xb.fffffffffffffffffffffffffff8p-152, false), 10695+ -0x1p-148, false, true, 10696+ -0x8p-152, false, true, 10697+ -0x8p-152, false, true, 10698+ -0x8p-152, false, true, 10699+ false, 10700+ -0xcp-152, false, false, 10701+ -0xcp-152, false, false, 10702+ -0xb.ffffffffffff8p-152, false, false, 10703+ -0xb.ffffffffffff8p-152, false, false, 10704+ false, 10705+ -0xcp-152, false, false, 10706+ -0xcp-152, false, false, 10707+ -0xb.fffffffffffffffp-152, false, false, 10708+ -0xb.fffffffffffffffp-152, false, false, 10709+ false, 10710+ -0xcp-152, false, false, 10711+ -0xcp-152, false, false, 10712+ -0xb.fffffffffffffffp-152, false, false, 10713+ -0xb.fffffffffffffffp-152, false, false, 10714+ false, 10715+ -0xcp-152, false, false, 10716+ -0xcp-152, false, false, 10717+ -0xb.fffffffffffffffffffffffffcp-152, false, false, 10718+ -0xb.fffffffffffffffffffffffffcp-152, false, false, 10719+ false, 10720+ -0xcp-152, false, false, 10721+ -0xcp-152, false, false, 10722+ -0xb.fffffffffffffffffffffffffff8p-152, false, false, 10723+ -0xb.fffffffffffffffffffffffffff8p-152, false, false), 10724 TEST ("-2.101947696487225606385594374934874196920392912814773657635" 10725 "602425834686624028790902229957282543182373046875e-45", 10726 false, 10727- -0x1p-148, false, 10728- -0x1p-148, false, 10729- -0x8p-152, false, 10730- -0x8p-152, false, 10731- true, 10732- -0xcp-152, false, 10733- -0xcp-152, false, 10734- -0xcp-152, false, 10735- -0xcp-152, false, 10736- true, 10737- -0xcp-152, false, 10738- -0xcp-152, false, 10739- -0xcp-152, false, 10740- -0xcp-152, false, 10741- true, 10742- -0xcp-152, false, 10743- -0xcp-152, false, 10744- -0xcp-152, false, 10745- -0xcp-152, false, 10746- true, 10747- -0xcp-152, false, 10748- -0xcp-152, false, 10749- -0xcp-152, false, 10750- -0xcp-152, false, 10751- true, 10752- -0xcp-152, false, 10753- -0xcp-152, false, 10754- -0xcp-152, false, 10755- -0xcp-152, false), 10756+ -0x1p-148, false, true, 10757+ -0x1p-148, false, true, 10758+ -0x8p-152, false, true, 10759+ -0x8p-152, false, true, 10760+ true, 10761+ -0xcp-152, false, false, 10762+ -0xcp-152, false, false, 10763+ -0xcp-152, false, false, 10764+ -0xcp-152, false, false, 10765+ true, 10766+ -0xcp-152, false, false, 10767+ -0xcp-152, false, false, 10768+ -0xcp-152, false, false, 10769+ -0xcp-152, false, false, 10770+ true, 10771+ -0xcp-152, false, false, 10772+ -0xcp-152, false, false, 10773+ -0xcp-152, false, false, 10774+ -0xcp-152, false, false, 10775+ true, 10776+ -0xcp-152, false, false, 10777+ -0xcp-152, false, false, 10778+ -0xcp-152, false, false, 10779+ -0xcp-152, false, false, 10780+ true, 10781+ -0xcp-152, false, false, 10782+ -0xcp-152, false, false, 10783+ -0xcp-152, false, false, 10784+ -0xcp-152, false, false), 10785 TEST ("-2.101947696487225606385594374934874196920392912814773657635" 10786 "60242583468662402879090222995728254318237304687501e-45", 10787 false, 10788- -0x1p-148, false, 10789- -0x1p-148, false, 10790- -0x8p-152, false, 10791- -0x8p-152, false, 10792- false, 10793- -0xc.0000000000008p-152, false, 10794- -0xcp-152, false, 10795- -0xcp-152, false, 10796- -0xcp-152, false, 10797- false, 10798- -0xc.000000000000001p-152, false, 10799- -0xcp-152, false, 10800- -0xcp-152, false, 10801- -0xcp-152, false, 10802- false, 10803- -0xc.000000000000001p-152, false, 10804- -0xcp-152, false, 10805- -0xcp-152, false, 10806- -0xcp-152, false, 10807- false, 10808- -0xc.00000000000000000000000004p-152, false, 10809- -0xcp-152, false, 10810- -0xcp-152, false, 10811- -0xcp-152, false, 10812- false, 10813- -0xc.0000000000000000000000000008p-152, false, 10814- -0xcp-152, false, 10815- -0xcp-152, false, 10816- -0xcp-152, false), 10817+ -0x1p-148, false, true, 10818+ -0x1p-148, false, true, 10819+ -0x8p-152, false, true, 10820+ -0x8p-152, false, true, 10821+ false, 10822+ -0xc.0000000000008p-152, false, false, 10823+ -0xcp-152, false, false, 10824+ -0xcp-152, false, false, 10825+ -0xcp-152, false, false, 10826+ false, 10827+ -0xc.000000000000001p-152, false, false, 10828+ -0xcp-152, false, false, 10829+ -0xcp-152, false, false, 10830+ -0xcp-152, false, false, 10831+ false, 10832+ -0xc.000000000000001p-152, false, false, 10833+ -0xcp-152, false, false, 10834+ -0xcp-152, false, false, 10835+ -0xcp-152, false, false, 10836+ false, 10837+ -0xc.00000000000000000000000004p-152, false, false, 10838+ -0xcp-152, false, false, 10839+ -0xcp-152, false, false, 10840+ -0xcp-152, false, false, 10841+ false, 10842+ -0xc.0000000000000000000000000008p-152, false, false, 10843+ -0xcp-152, false, false, 10844+ -0xcp-152, false, false, 10845+ -0xcp-152, false, false), 10846 TEST ("3.5032461608120426773093239582247903282006548546912894293926" 10847 "7070972447770671465150371659547090530395507812499e-45", 10848 false, 10849- 0x1p-148, false, 10850- 0x1p-148, false, 10851- 0x1p-148, false, 10852- 0x1.8p-148, false, 10853- false, 10854- 0x1.3ffffffffffffp-148, false, 10855- 0x1.4p-148, false, 10856- 0x1.3ffffffffffffp-148, false, 10857- 0x1.4p-148, false, 10858- false, 10859- 0x1.3ffffffffffffffep-148, false, 10860- 0x1.4p-148, false, 10861- 0x1.3ffffffffffffffep-148, false, 10862- 0x1.4p-148, false, 10863- false, 10864- 0x1.3ffffffffffffffep-148, false, 10865- 0x1.4p-148, false, 10866- 0x1.3ffffffffffffffep-148, false, 10867- 0x1.4p-148, false, 10868- false, 10869- 0x1.3fffffffffffffffffffffffff8p-148, false, 10870- 0x1.4p-148, false, 10871- 0x1.3fffffffffffffffffffffffff8p-148, false, 10872- 0x1.4p-148, false, 10873- false, 10874- 0x1.3fffffffffffffffffffffffffffp-148, false, 10875- 0x1.4p-148, false, 10876- 0x1.3fffffffffffffffffffffffffffp-148, false, 10877- 0x1.4p-148, false), 10878+ 0x1p-148, false, true, 10879+ 0x1p-148, false, true, 10880+ 0x1p-148, false, true, 10881+ 0x1.8p-148, false, true, 10882+ false, 10883+ 0x1.3ffffffffffffp-148, false, false, 10884+ 0x1.4p-148, false, false, 10885+ 0x1.3ffffffffffffp-148, false, false, 10886+ 0x1.4p-148, false, false, 10887+ false, 10888+ 0x1.3ffffffffffffffep-148, false, false, 10889+ 0x1.4p-148, false, false, 10890+ 0x1.3ffffffffffffffep-148, false, false, 10891+ 0x1.4p-148, false, false, 10892+ false, 10893+ 0x1.3ffffffffffffffep-148, false, false, 10894+ 0x1.4p-148, false, false, 10895+ 0x1.3ffffffffffffffep-148, false, false, 10896+ 0x1.4p-148, false, false, 10897+ false, 10898+ 0x1.3fffffffffffffffffffffffff8p-148, false, false, 10899+ 0x1.4p-148, false, false, 10900+ 0x1.3fffffffffffffffffffffffff8p-148, false, false, 10901+ 0x1.4p-148, false, false, 10902+ false, 10903+ 0x1.3fffffffffffffffffffffffffffp-148, false, false, 10904+ 0x1.4p-148, false, false, 10905+ 0x1.3fffffffffffffffffffffffffffp-148, false, false, 10906+ 0x1.4p-148, false, false), 10907 TEST ("3.5032461608120426773093239582247903282006548546912894293926" 10908 "70709724477706714651503716595470905303955078125e-45", 10909 false, 10910- 0x1p-148, false, 10911- 0x1p-148, false, 10912- 0x1p-148, false, 10913- 0x1.8p-148, false, 10914- true, 10915- 0x1.4p-148, false, 10916- 0x1.4p-148, false, 10917- 0x1.4p-148, false, 10918- 0x1.4p-148, false, 10919- true, 10920- 0x1.4p-148, false, 10921- 0x1.4p-148, false, 10922- 0x1.4p-148, false, 10923- 0x1.4p-148, false, 10924- true, 10925- 0x1.4p-148, false, 10926- 0x1.4p-148, false, 10927- 0x1.4p-148, false, 10928- 0x1.4p-148, false, 10929- true, 10930- 0x1.4p-148, false, 10931- 0x1.4p-148, false, 10932- 0x1.4p-148, false, 10933- 0x1.4p-148, false, 10934- true, 10935- 0x1.4p-148, false, 10936- 0x1.4p-148, false, 10937- 0x1.4p-148, false, 10938- 0x1.4p-148, false), 10939+ 0x1p-148, false, true, 10940+ 0x1p-148, false, true, 10941+ 0x1p-148, false, true, 10942+ 0x1.8p-148, false, true, 10943+ true, 10944+ 0x1.4p-148, false, false, 10945+ 0x1.4p-148, false, false, 10946+ 0x1.4p-148, false, false, 10947+ 0x1.4p-148, false, false, 10948+ true, 10949+ 0x1.4p-148, false, false, 10950+ 0x1.4p-148, false, false, 10951+ 0x1.4p-148, false, false, 10952+ 0x1.4p-148, false, false, 10953+ true, 10954+ 0x1.4p-148, false, false, 10955+ 0x1.4p-148, false, false, 10956+ 0x1.4p-148, false, false, 10957+ 0x1.4p-148, false, false, 10958+ true, 10959+ 0x1.4p-148, false, false, 10960+ 0x1.4p-148, false, false, 10961+ 0x1.4p-148, false, false, 10962+ 0x1.4p-148, false, false, 10963+ true, 10964+ 0x1.4p-148, false, false, 10965+ 0x1.4p-148, false, false, 10966+ 0x1.4p-148, false, false, 10967+ 0x1.4p-148, false, false), 10968 TEST ("3.5032461608120426773093239582247903282006548546912894293926" 10969 "7070972447770671465150371659547090530395507812501e-45", 10970 false, 10971- 0x1p-148, false, 10972- 0x1.8p-148, false, 10973- 0x1p-148, false, 10974- 0x1.8p-148, false, 10975- false, 10976- 0x1.4p-148, false, 10977- 0x1.4p-148, false, 10978- 0x1.4p-148, false, 10979- 0x1.4000000000001p-148, false, 10980- false, 10981- 0x1.4p-148, false, 10982- 0x1.4p-148, false, 10983- 0x1.4p-148, false, 10984- 0x1.4000000000000002p-148, false, 10985- false, 10986- 0x1.4p-148, false, 10987- 0x1.4p-148, false, 10988- 0x1.4p-148, false, 10989- 0x1.4000000000000002p-148, false, 10990- false, 10991- 0x1.4p-148, false, 10992- 0x1.4p-148, false, 10993- 0x1.4p-148, false, 10994- 0x1.400000000000000000000000008p-148, false, 10995- false, 10996- 0x1.4p-148, false, 10997- 0x1.4p-148, false, 10998- 0x1.4p-148, false, 10999- 0x1.4000000000000000000000000001p-148, false), 11000+ 0x1p-148, false, true, 11001+ 0x1.8p-148, false, true, 11002+ 0x1p-148, false, true, 11003+ 0x1.8p-148, false, true, 11004+ false, 11005+ 0x1.4p-148, false, false, 11006+ 0x1.4p-148, false, false, 11007+ 0x1.4p-148, false, false, 11008+ 0x1.4000000000001p-148, false, false, 11009+ false, 11010+ 0x1.4p-148, false, false, 11011+ 0x1.4p-148, false, false, 11012+ 0x1.4p-148, false, false, 11013+ 0x1.4000000000000002p-148, false, false, 11014+ false, 11015+ 0x1.4p-148, false, false, 11016+ 0x1.4p-148, false, false, 11017+ 0x1.4p-148, false, false, 11018+ 0x1.4000000000000002p-148, false, false, 11019+ false, 11020+ 0x1.4p-148, false, false, 11021+ 0x1.4p-148, false, false, 11022+ 0x1.4p-148, false, false, 11023+ 0x1.400000000000000000000000008p-148, false, false, 11024+ false, 11025+ 0x1.4p-148, false, false, 11026+ 0x1.4p-148, false, false, 11027+ 0x1.4p-148, false, false, 11028+ 0x1.4000000000000000000000000001p-148, false, false), 11029 TEST ("-3.503246160812042677309323958224790328200654854691289429392" 11030 "67070972447770671465150371659547090530395507812499e-45", 11031 false, 11032- -0x1.8p-148, false, 11033- -0x1p-148, false, 11034- -0x1p-148, false, 11035- -0x1p-148, false, 11036- false, 11037- -0x1.4p-148, false, 11038- -0x1.4p-148, false, 11039- -0x1.3ffffffffffffp-148, false, 11040- -0x1.3ffffffffffffp-148, false, 11041- false, 11042- -0x1.4p-148, false, 11043- -0x1.4p-148, false, 11044- -0x1.3ffffffffffffffep-148, false, 11045- -0x1.3ffffffffffffffep-148, false, 11046- false, 11047- -0x1.4p-148, false, 11048- -0x1.4p-148, false, 11049- -0x1.3ffffffffffffffep-148, false, 11050- -0x1.3ffffffffffffffep-148, false, 11051- false, 11052- -0x1.4p-148, false, 11053- -0x1.4p-148, false, 11054- -0x1.3fffffffffffffffffffffffff8p-148, false, 11055- -0x1.3fffffffffffffffffffffffff8p-148, false, 11056- false, 11057- -0x1.4p-148, false, 11058- -0x1.4p-148, false, 11059- -0x1.3fffffffffffffffffffffffffffp-148, false, 11060- -0x1.3fffffffffffffffffffffffffffp-148, false), 11061+ -0x1.8p-148, false, true, 11062+ -0x1p-148, false, true, 11063+ -0x1p-148, false, true, 11064+ -0x1p-148, false, true, 11065+ false, 11066+ -0x1.4p-148, false, false, 11067+ -0x1.4p-148, false, false, 11068+ -0x1.3ffffffffffffp-148, false, false, 11069+ -0x1.3ffffffffffffp-148, false, false, 11070+ false, 11071+ -0x1.4p-148, false, false, 11072+ -0x1.4p-148, false, false, 11073+ -0x1.3ffffffffffffffep-148, false, false, 11074+ -0x1.3ffffffffffffffep-148, false, false, 11075+ false, 11076+ -0x1.4p-148, false, false, 11077+ -0x1.4p-148, false, false, 11078+ -0x1.3ffffffffffffffep-148, false, false, 11079+ -0x1.3ffffffffffffffep-148, false, false, 11080+ false, 11081+ -0x1.4p-148, false, false, 11082+ -0x1.4p-148, false, false, 11083+ -0x1.3fffffffffffffffffffffffff8p-148, false, false, 11084+ -0x1.3fffffffffffffffffffffffff8p-148, false, false, 11085+ false, 11086+ -0x1.4p-148, false, false, 11087+ -0x1.4p-148, false, false, 11088+ -0x1.3fffffffffffffffffffffffffffp-148, false, false, 11089+ -0x1.3fffffffffffffffffffffffffffp-148, false, false), 11090 TEST ("-3.503246160812042677309323958224790328200654854691289429392" 11091 "670709724477706714651503716595470905303955078125e-45", 11092 false, 11093- -0x1.8p-148, false, 11094- -0x1p-148, false, 11095- -0x1p-148, false, 11096- -0x1p-148, false, 11097- true, 11098- -0x1.4p-148, false, 11099- -0x1.4p-148, false, 11100- -0x1.4p-148, false, 11101- -0x1.4p-148, false, 11102- true, 11103- -0x1.4p-148, false, 11104- -0x1.4p-148, false, 11105- -0x1.4p-148, false, 11106- -0x1.4p-148, false, 11107- true, 11108- -0x1.4p-148, false, 11109- -0x1.4p-148, false, 11110- -0x1.4p-148, false, 11111- -0x1.4p-148, false, 11112- true, 11113- -0x1.4p-148, false, 11114- -0x1.4p-148, false, 11115- -0x1.4p-148, false, 11116- -0x1.4p-148, false, 11117- true, 11118- -0x1.4p-148, false, 11119- -0x1.4p-148, false, 11120- -0x1.4p-148, false, 11121- -0x1.4p-148, false), 11122+ -0x1.8p-148, false, true, 11123+ -0x1p-148, false, true, 11124+ -0x1p-148, false, true, 11125+ -0x1p-148, false, true, 11126+ true, 11127+ -0x1.4p-148, false, false, 11128+ -0x1.4p-148, false, false, 11129+ -0x1.4p-148, false, false, 11130+ -0x1.4p-148, false, false, 11131+ true, 11132+ -0x1.4p-148, false, false, 11133+ -0x1.4p-148, false, false, 11134+ -0x1.4p-148, false, false, 11135+ -0x1.4p-148, false, false, 11136+ true, 11137+ -0x1.4p-148, false, false, 11138+ -0x1.4p-148, false, false, 11139+ -0x1.4p-148, false, false, 11140+ -0x1.4p-148, false, false, 11141+ true, 11142+ -0x1.4p-148, false, false, 11143+ -0x1.4p-148, false, false, 11144+ -0x1.4p-148, false, false, 11145+ -0x1.4p-148, false, false, 11146+ true, 11147+ -0x1.4p-148, false, false, 11148+ -0x1.4p-148, false, false, 11149+ -0x1.4p-148, false, false, 11150+ -0x1.4p-148, false, false), 11151 TEST ("-3.503246160812042677309323958224790328200654854691289429392" 11152 "67070972447770671465150371659547090530395507812501e-45", 11153 false, 11154- -0x1.8p-148, false, 11155- -0x1.8p-148, false, 11156- -0x1p-148, false, 11157- -0x1p-148, false, 11158- false, 11159- -0x1.4000000000001p-148, false, 11160- -0x1.4p-148, false, 11161- -0x1.4p-148, false, 11162- -0x1.4p-148, false, 11163- false, 11164- -0x1.4000000000000002p-148, false, 11165- -0x1.4p-148, false, 11166- -0x1.4p-148, false, 11167- -0x1.4p-148, false, 11168- false, 11169- -0x1.4000000000000002p-148, false, 11170- -0x1.4p-148, false, 11171- -0x1.4p-148, false, 11172- -0x1.4p-148, false, 11173- false, 11174- -0x1.400000000000000000000000008p-148, false, 11175- -0x1.4p-148, false, 11176- -0x1.4p-148, false, 11177- -0x1.4p-148, false, 11178- false, 11179- -0x1.4000000000000000000000000001p-148, false, 11180- -0x1.4p-148, false, 11181- -0x1.4p-148, false, 11182- -0x1.4p-148, false), 11183+ -0x1.8p-148, false, true, 11184+ -0x1.8p-148, false, true, 11185+ -0x1p-148, false, true, 11186+ -0x1p-148, false, true, 11187+ false, 11188+ -0x1.4000000000001p-148, false, false, 11189+ -0x1.4p-148, false, false, 11190+ -0x1.4p-148, false, false, 11191+ -0x1.4p-148, false, false, 11192+ false, 11193+ -0x1.4000000000000002p-148, false, false, 11194+ -0x1.4p-148, false, false, 11195+ -0x1.4p-148, false, false, 11196+ -0x1.4p-148, false, false, 11197+ false, 11198+ -0x1.4000000000000002p-148, false, false, 11199+ -0x1.4p-148, false, false, 11200+ -0x1.4p-148, false, false, 11201+ -0x1.4p-148, false, false, 11202+ false, 11203+ -0x1.400000000000000000000000008p-148, false, false, 11204+ -0x1.4p-148, false, false, 11205+ -0x1.4p-148, false, false, 11206+ -0x1.4p-148, false, false, 11207+ false, 11208+ -0x1.4000000000000000000000000001p-148, false, false, 11209+ -0x1.4p-148, false, false, 11210+ -0x1.4p-148, false, false, 11211+ -0x1.4p-148, false, false), 11212 TEST ("7.4109846876186981626485318930233205854758970392148714663837" 11213 "852375101326090531312779794975454245398856969484704316857659" 11214 "638998506553390969459816219401617281718945106978546710679176" 11215@@ -3818,35 +3818,35 @@ static const struct test tests[] = { 11216 "337560846003984904972149117463085539556354188641513168478436" 11217 "31308023759629577398300170898437499e-324", 11218 false, 11219- 0x0p+0, false, 11220- 0x0p+0, false, 11221- 0x0p+0, false, 11222- 0x8p-152, false, 11223- false, 11224- 0x4p-1076, false, 11225- 0x4p-1076, false, 11226- 0x4p-1076, false, 11227- 0x8p-1076, false, 11228- false, 11229- 0x5.fffffffffffffff8p-1076, false, 11230- 0x6p-1076, false, 11231- 0x5.fffffffffffffff8p-1076, false, 11232- 0x6p-1076, false, 11233- false, 11234- 0x5.fffffffffffffff8p-1076, false, 11235- 0x6p-1076, false, 11236- 0x5.fffffffffffffff8p-1076, false, 11237- 0x6p-1076, false, 11238- false, 11239- 0x4p-1076, false, 11240- 0x4p-1076, false, 11241- 0x4p-1076, false, 11242- 0x8p-1076, false, 11243- false, 11244- 0x5.fffffffffffffffffffffffffffcp-1076, false, 11245- 0x6p-1076, false, 11246- 0x5.fffffffffffffffffffffffffffcp-1076, false, 11247- 0x6p-1076, false), 11248+ 0x0p+0, false, true, 11249+ 0x0p+0, false, true, 11250+ 0x0p+0, false, true, 11251+ 0x8p-152, false, true, 11252+ false, 11253+ 0x4p-1076, false, true, 11254+ 0x4p-1076, false, true, 11255+ 0x4p-1076, false, true, 11256+ 0x8p-1076, false, true, 11257+ false, 11258+ 0x5.fffffffffffffff8p-1076, false, false, 11259+ 0x6p-1076, false, false, 11260+ 0x5.fffffffffffffff8p-1076, false, false, 11261+ 0x6p-1076, false, false, 11262+ false, 11263+ 0x5.fffffffffffffff8p-1076, false, false, 11264+ 0x6p-1076, false, false, 11265+ 0x5.fffffffffffffff8p-1076, false, false, 11266+ 0x6p-1076, false, false, 11267+ false, 11268+ 0x4p-1076, false, true, 11269+ 0x4p-1076, false, true, 11270+ 0x4p-1076, false, true, 11271+ 0x8p-1076, false, true, 11272+ false, 11273+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false, 11274+ 0x6p-1076, false, false, 11275+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false, 11276+ 0x6p-1076, false, false), 11277 TEST ("7.4109846876186981626485318930233205854758970392148714663837" 11278 "852375101326090531312779794975454245398856969484704316857659" 11279 "638998506553390969459816219401617281718945106978546710679176" 11280@@ -3861,35 +3861,35 @@ static const struct test tests[] = { 11281 "337560846003984904972149117463085539556354188641513168478436" 11282 "313080237596295773983001708984375e-324", 11283 false, 11284- 0x0p+0, false, 11285- 0x0p+0, false, 11286- 0x0p+0, false, 11287- 0x8p-152, false, 11288- false, 11289- 0x4p-1076, false, 11290- 0x8p-1076, false, 11291- 0x4p-1076, false, 11292- 0x8p-1076, false, 11293- true, 11294- 0x6p-1076, false, 11295- 0x6p-1076, false, 11296- 0x6p-1076, false, 11297- 0x6p-1076, false, 11298- true, 11299- 0x6p-1076, false, 11300- 0x6p-1076, false, 11301- 0x6p-1076, false, 11302- 0x6p-1076, false, 11303- false, 11304- 0x4p-1076, false, 11305- 0x8p-1076, false, 11306- 0x4p-1076, false, 11307- 0x8p-1076, false, 11308- true, 11309- 0x6p-1076, false, 11310- 0x6p-1076, false, 11311- 0x6p-1076, false, 11312- 0x6p-1076, false), 11313+ 0x0p+0, false, true, 11314+ 0x0p+0, false, true, 11315+ 0x0p+0, false, true, 11316+ 0x8p-152, false, true, 11317+ false, 11318+ 0x4p-1076, false, true, 11319+ 0x8p-1076, false, true, 11320+ 0x4p-1076, false, true, 11321+ 0x8p-1076, false, true, 11322+ true, 11323+ 0x6p-1076, false, false, 11324+ 0x6p-1076, false, false, 11325+ 0x6p-1076, false, false, 11326+ 0x6p-1076, false, false, 11327+ true, 11328+ 0x6p-1076, false, false, 11329+ 0x6p-1076, false, false, 11330+ 0x6p-1076, false, false, 11331+ 0x6p-1076, false, false, 11332+ false, 11333+ 0x4p-1076, false, true, 11334+ 0x8p-1076, false, true, 11335+ 0x4p-1076, false, true, 11336+ 0x8p-1076, false, true, 11337+ true, 11338+ 0x6p-1076, false, false, 11339+ 0x6p-1076, false, false, 11340+ 0x6p-1076, false, false, 11341+ 0x6p-1076, false, false), 11342 TEST ("7.4109846876186981626485318930233205854758970392148714663837" 11343 "852375101326090531312779794975454245398856969484704316857659" 11344 "638998506553390969459816219401617281718945106978546710679176" 11345@@ -3904,35 +3904,35 @@ static const struct test tests[] = { 11346 "337560846003984904972149117463085539556354188641513168478436" 11347 "31308023759629577398300170898437501e-324", 11348 false, 11349- 0x0p+0, false, 11350- 0x0p+0, false, 11351- 0x0p+0, false, 11352- 0x8p-152, false, 11353- false, 11354- 0x4p-1076, false, 11355- 0x8p-1076, false, 11356- 0x4p-1076, false, 11357- 0x8p-1076, false, 11358- false, 11359- 0x6p-1076, false, 11360- 0x6p-1076, false, 11361- 0x6p-1076, false, 11362- 0x6.0000000000000008p-1076, false, 11363- false, 11364- 0x6p-1076, false, 11365- 0x6p-1076, false, 11366- 0x6p-1076, false, 11367- 0x6.0000000000000008p-1076, false, 11368- false, 11369- 0x4p-1076, false, 11370- 0x8p-1076, false, 11371- 0x4p-1076, false, 11372- 0x8p-1076, false, 11373- false, 11374- 0x6p-1076, false, 11375- 0x6p-1076, false, 11376- 0x6p-1076, false, 11377- 0x6.0000000000000000000000000004p-1076, false), 11378+ 0x0p+0, false, true, 11379+ 0x0p+0, false, true, 11380+ 0x0p+0, false, true, 11381+ 0x8p-152, false, true, 11382+ false, 11383+ 0x4p-1076, false, true, 11384+ 0x8p-1076, false, true, 11385+ 0x4p-1076, false, true, 11386+ 0x8p-1076, false, true, 11387+ false, 11388+ 0x6p-1076, false, false, 11389+ 0x6p-1076, false, false, 11390+ 0x6p-1076, false, false, 11391+ 0x6.0000000000000008p-1076, false, false, 11392+ false, 11393+ 0x6p-1076, false, false, 11394+ 0x6p-1076, false, false, 11395+ 0x6p-1076, false, false, 11396+ 0x6.0000000000000008p-1076, false, false, 11397+ false, 11398+ 0x4p-1076, false, true, 11399+ 0x8p-1076, false, true, 11400+ 0x4p-1076, false, true, 11401+ 0x8p-1076, false, true, 11402+ false, 11403+ 0x6p-1076, false, false, 11404+ 0x6p-1076, false, false, 11405+ 0x6p-1076, false, false, 11406+ 0x6.0000000000000000000000000004p-1076, false, false), 11407 TEST ("-7.410984687618698162648531893023320585475897039214871466383" 11408 "785237510132609053131277979497545424539885696948470431685765" 11409 "963899850655339096945981621940161728171894510697854671067917" 11410@@ -3947,35 +3947,35 @@ static const struct test tests[] = { 11411 "433756084600398490497214911746308553955635418864151316847843" 11412 "631308023759629577398300170898437499e-324", 11413 false, 11414- -0x8p-152, false, 11415- -0x0p+0, false, 11416- -0x0p+0, false, 11417- -0x0p+0, false, 11418- false, 11419- -0x8p-1076, false, 11420- -0x4p-1076, false, 11421- -0x4p-1076, false, 11422- -0x4p-1076, false, 11423- false, 11424- -0x6p-1076, false, 11425- -0x6p-1076, false, 11426- -0x5.fffffffffffffff8p-1076, false, 11427- -0x5.fffffffffffffff8p-1076, false, 11428- false, 11429- -0x6p-1076, false, 11430- -0x6p-1076, false, 11431- -0x5.fffffffffffffff8p-1076, false, 11432- -0x5.fffffffffffffff8p-1076, false, 11433- false, 11434- -0x8p-1076, false, 11435- -0x4p-1076, false, 11436- -0x4p-1076, false, 11437- -0x4p-1076, false, 11438- false, 11439- -0x6p-1076, false, 11440- -0x6p-1076, false, 11441- -0x5.fffffffffffffffffffffffffffcp-1076, false, 11442- -0x5.fffffffffffffffffffffffffffcp-1076, false), 11443+ -0x8p-152, false, true, 11444+ -0x0p+0, false, true, 11445+ -0x0p+0, false, true, 11446+ -0x0p+0, false, true, 11447+ false, 11448+ -0x8p-1076, false, true, 11449+ -0x4p-1076, false, true, 11450+ -0x4p-1076, false, true, 11451+ -0x4p-1076, false, true, 11452+ false, 11453+ -0x6p-1076, false, false, 11454+ -0x6p-1076, false, false, 11455+ -0x5.fffffffffffffff8p-1076, false, false, 11456+ -0x5.fffffffffffffff8p-1076, false, false, 11457+ false, 11458+ -0x6p-1076, false, false, 11459+ -0x6p-1076, false, false, 11460+ -0x5.fffffffffffffff8p-1076, false, false, 11461+ -0x5.fffffffffffffff8p-1076, false, false, 11462+ false, 11463+ -0x8p-1076, false, true, 11464+ -0x4p-1076, false, true, 11465+ -0x4p-1076, false, true, 11466+ -0x4p-1076, false, true, 11467+ false, 11468+ -0x6p-1076, false, false, 11469+ -0x6p-1076, false, false, 11470+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false, 11471+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false), 11472 TEST ("-7.410984687618698162648531893023320585475897039214871466383" 11473 "785237510132609053131277979497545424539885696948470431685765" 11474 "963899850655339096945981621940161728171894510697854671067917" 11475@@ -3990,35 +3990,35 @@ static const struct test tests[] = { 11476 "433756084600398490497214911746308553955635418864151316847843" 11477 "6313080237596295773983001708984375e-324", 11478 false, 11479- -0x8p-152, false, 11480- -0x0p+0, false, 11481- -0x0p+0, false, 11482- -0x0p+0, false, 11483- false, 11484- -0x8p-1076, false, 11485- -0x8p-1076, false, 11486- -0x4p-1076, false, 11487- -0x4p-1076, false, 11488- true, 11489- -0x6p-1076, false, 11490- -0x6p-1076, false, 11491- -0x6p-1076, false, 11492- -0x6p-1076, false, 11493- true, 11494- -0x6p-1076, false, 11495- -0x6p-1076, false, 11496- -0x6p-1076, false, 11497- -0x6p-1076, false, 11498- false, 11499- -0x8p-1076, false, 11500- -0x8p-1076, false, 11501- -0x4p-1076, false, 11502- -0x4p-1076, false, 11503- true, 11504- -0x6p-1076, false, 11505- -0x6p-1076, false, 11506- -0x6p-1076, false, 11507- -0x6p-1076, false), 11508+ -0x8p-152, false, true, 11509+ -0x0p+0, false, true, 11510+ -0x0p+0, false, true, 11511+ -0x0p+0, false, true, 11512+ false, 11513+ -0x8p-1076, false, true, 11514+ -0x8p-1076, false, true, 11515+ -0x4p-1076, false, true, 11516+ -0x4p-1076, false, true, 11517+ true, 11518+ -0x6p-1076, false, false, 11519+ -0x6p-1076, false, false, 11520+ -0x6p-1076, false, false, 11521+ -0x6p-1076, false, false, 11522+ true, 11523+ -0x6p-1076, false, false, 11524+ -0x6p-1076, false, false, 11525+ -0x6p-1076, false, false, 11526+ -0x6p-1076, false, false, 11527+ false, 11528+ -0x8p-1076, false, true, 11529+ -0x8p-1076, false, true, 11530+ -0x4p-1076, false, true, 11531+ -0x4p-1076, false, true, 11532+ true, 11533+ -0x6p-1076, false, false, 11534+ -0x6p-1076, false, false, 11535+ -0x6p-1076, false, false, 11536+ -0x6p-1076, false, false), 11537 TEST ("-7.410984687618698162648531893023320585475897039214871466383" 11538 "785237510132609053131277979497545424539885696948470431685765" 11539 "963899850655339096945981621940161728171894510697854671067917" 11540@@ -4033,35 +4033,35 @@ static const struct test tests[] = { 11541 "433756084600398490497214911746308553955635418864151316847843" 11542 "631308023759629577398300170898437501e-324", 11543 false, 11544- -0x8p-152, false, 11545- -0x0p+0, false, 11546- -0x0p+0, false, 11547- -0x0p+0, false, 11548- false, 11549- -0x8p-1076, false, 11550- -0x8p-1076, false, 11551- -0x4p-1076, false, 11552- -0x4p-1076, false, 11553- false, 11554- -0x6.0000000000000008p-1076, false, 11555- -0x6p-1076, false, 11556- -0x6p-1076, false, 11557- -0x6p-1076, false, 11558- false, 11559- -0x6.0000000000000008p-1076, false, 11560- -0x6p-1076, false, 11561- -0x6p-1076, false, 11562- -0x6p-1076, false, 11563- false, 11564- -0x8p-1076, false, 11565- -0x8p-1076, false, 11566- -0x4p-1076, false, 11567- -0x4p-1076, false, 11568- false, 11569- -0x6.0000000000000000000000000004p-1076, false, 11570- -0x6p-1076, false, 11571- -0x6p-1076, false, 11572- -0x6p-1076, false), 11573+ -0x8p-152, false, true, 11574+ -0x0p+0, false, true, 11575+ -0x0p+0, false, true, 11576+ -0x0p+0, false, true, 11577+ false, 11578+ -0x8p-1076, false, true, 11579+ -0x8p-1076, false, true, 11580+ -0x4p-1076, false, true, 11581+ -0x4p-1076, false, true, 11582+ false, 11583+ -0x6.0000000000000008p-1076, false, false, 11584+ -0x6p-1076, false, false, 11585+ -0x6p-1076, false, false, 11586+ -0x6p-1076, false, false, 11587+ false, 11588+ -0x6.0000000000000008p-1076, false, false, 11589+ -0x6p-1076, false, false, 11590+ -0x6p-1076, false, false, 11591+ -0x6p-1076, false, false, 11592+ false, 11593+ -0x8p-1076, false, true, 11594+ -0x8p-1076, false, true, 11595+ -0x4p-1076, false, true, 11596+ -0x4p-1076, false, true, 11597+ false, 11598+ -0x6.0000000000000000000000000004p-1076, false, false, 11599+ -0x6p-1076, false, false, 11600+ -0x6p-1076, false, false, 11601+ -0x6p-1076, false, false), 11602 TEST ("5.4677992978237119037926089004291297245985762235403450155814" 11603 "707305425575329500966052143410629387408077958710210208052966" 11604 "529504784489330482549602621133847135082257338717668975178538" 11605@@ -4255,35 +4255,35 @@ static const struct test tests[] = { 11606 "866268925981702690270202829595794350800918257913991744455922" 11607 "683343374046671669930219650268554687499e-4951", 11608 false, 11609- 0x0p+0, false, 11610- 0x0p+0, false, 11611- 0x0p+0, false, 11612- 0x8p-152, false, 11613- false, 11614- 0x0p+0, false, 11615- 0x0p+0, false, 11616- 0x0p+0, false, 11617- 0x4p-1076, false, 11618- false, 11619- 0x8p-16448, false, 11620- 0x8p-16448, false, 11621- 0x8p-16448, false, 11622- 0x1p-16444, false, 11623- false, 11624- 0x8p-16448, false, 11625- 0xcp-16448, false, 11626- 0x8p-16448, false, 11627- 0xcp-16448, false, 11628- false, 11629- 0x0p+0, false, 11630- 0x0p+0, false, 11631- 0x0p+0, false, 11632- 0x4p-1076, false, 11633- false, 11634- 0xb.fffffffffffcp-16448, false, 11635- 0xcp-16448, false, 11636- 0xb.fffffffffffcp-16448, false, 11637- 0xcp-16448, false), 11638+ 0x0p+0, false, true, 11639+ 0x0p+0, false, true, 11640+ 0x0p+0, false, true, 11641+ 0x8p-152, false, true, 11642+ false, 11643+ 0x0p+0, false, true, 11644+ 0x0p+0, false, true, 11645+ 0x0p+0, false, true, 11646+ 0x4p-1076, false, true, 11647+ false, 11648+ 0x8p-16448, false, true, 11649+ 0x8p-16448, false, true, 11650+ 0x8p-16448, false, true, 11651+ 0x1p-16444, false, true, 11652+ false, 11653+ 0x8p-16448, false, true, 11654+ 0xcp-16448, false, true, 11655+ 0x8p-16448, false, true, 11656+ 0xcp-16448, false, true, 11657+ false, 11658+ 0x0p+0, false, true, 11659+ 0x0p+0, false, true, 11660+ 0x0p+0, false, true, 11661+ 0x4p-1076, false, true, 11662+ false, 11663+ 0xb.fffffffffffcp-16448, false, true, 11664+ 0xcp-16448, false, true, 11665+ 0xb.fffffffffffcp-16448, false, true, 11666+ 0xcp-16448, false, true), 11667 TEST ("5.4677992978237119037926089004291297245985762235403450155814" 11668 "707305425575329500966052143410629387408077958710210208052966" 11669 "529504784489330482549602621133847135082257338717668975178538" 11670@@ -4477,35 +4477,35 @@ static const struct test tests[] = { 11671 "866268925981702690270202829595794350800918257913991744455922" 11672 "6833433740466716699302196502685546875e-4951", 11673 false, 11674- 0x0p+0, false, 11675- 0x0p+0, false, 11676- 0x0p+0, false, 11677- 0x8p-152, false, 11678- false, 11679- 0x0p+0, false, 11680- 0x0p+0, false, 11681- 0x0p+0, false, 11682- 0x4p-1076, false, 11683- false, 11684- 0x8p-16448, false, 11685- 0x1p-16444, false, 11686- 0x8p-16448, false, 11687- 0x1p-16444, false, 11688- true, 11689- 0xcp-16448, false, 11690- 0xcp-16448, false, 11691- 0xcp-16448, false, 11692- 0xcp-16448, false, 11693- false, 11694- 0x0p+0, false, 11695- 0x0p+0, false, 11696- 0x0p+0, false, 11697- 0x4p-1076, false, 11698- true, 11699- 0xcp-16448, false, 11700- 0xcp-16448, false, 11701- 0xcp-16448, false, 11702- 0xcp-16448, false), 11703+ 0x0p+0, false, true, 11704+ 0x0p+0, false, true, 11705+ 0x0p+0, false, true, 11706+ 0x8p-152, false, true, 11707+ false, 11708+ 0x0p+0, false, true, 11709+ 0x0p+0, false, true, 11710+ 0x0p+0, false, true, 11711+ 0x4p-1076, false, true, 11712+ false, 11713+ 0x8p-16448, false, true, 11714+ 0x1p-16444, false, true, 11715+ 0x8p-16448, false, true, 11716+ 0x1p-16444, false, true, 11717+ true, 11718+ 0xcp-16448, false, false, 11719+ 0xcp-16448, false, false, 11720+ 0xcp-16448, false, false, 11721+ 0xcp-16448, false, false, 11722+ false, 11723+ 0x0p+0, false, true, 11724+ 0x0p+0, false, true, 11725+ 0x0p+0, false, true, 11726+ 0x4p-1076, false, true, 11727+ true, 11728+ 0xcp-16448, false, false, 11729+ 0xcp-16448, false, false, 11730+ 0xcp-16448, false, false, 11731+ 0xcp-16448, false, false), 11732 TEST ("5.4677992978237119037926089004291297245985762235403450155814" 11733 "707305425575329500966052143410629387408077958710210208052966" 11734 "529504784489330482549602621133847135082257338717668975178538" 11735@@ -4699,35 +4699,35 @@ static const struct test tests[] = { 11736 "866268925981702690270202829595794350800918257913991744455922" 11737 "683343374046671669930219650268554687501e-4951", 11738 false, 11739- 0x0p+0, false, 11740- 0x0p+0, false, 11741- 0x0p+0, false, 11742- 0x8p-152, false, 11743- false, 11744- 0x0p+0, false, 11745- 0x0p+0, false, 11746- 0x0p+0, false, 11747- 0x4p-1076, false, 11748- false, 11749- 0x8p-16448, false, 11750- 0x1p-16444, false, 11751- 0x8p-16448, false, 11752- 0x1p-16444, false, 11753- false, 11754- 0xcp-16448, false, 11755- 0xcp-16448, false, 11756- 0xcp-16448, false, 11757- 0x1p-16444, false, 11758- false, 11759- 0x0p+0, false, 11760- 0x0p+0, false, 11761- 0x0p+0, false, 11762- 0x4p-1076, false, 11763- false, 11764- 0xcp-16448, false, 11765- 0xcp-16448, false, 11766- 0xcp-16448, false, 11767- 0xc.000000000004p-16448, false), 11768+ 0x0p+0, false, true, 11769+ 0x0p+0, false, true, 11770+ 0x0p+0, false, true, 11771+ 0x8p-152, false, true, 11772+ false, 11773+ 0x0p+0, false, true, 11774+ 0x0p+0, false, true, 11775+ 0x0p+0, false, true, 11776+ 0x4p-1076, false, true, 11777+ false, 11778+ 0x8p-16448, false, true, 11779+ 0x1p-16444, false, true, 11780+ 0x8p-16448, false, true, 11781+ 0x1p-16444, false, true, 11782+ false, 11783+ 0xcp-16448, false, true, 11784+ 0xcp-16448, false, true, 11785+ 0xcp-16448, false, true, 11786+ 0x1p-16444, false, true, 11787+ false, 11788+ 0x0p+0, false, true, 11789+ 0x0p+0, false, true, 11790+ 0x0p+0, false, true, 11791+ 0x4p-1076, false, true, 11792+ false, 11793+ 0xcp-16448, false, true, 11794+ 0xcp-16448, false, true, 11795+ 0xcp-16448, false, true, 11796+ 0xc.000000000004p-16448, false, true), 11797 TEST ("-5.467799297823711903792608900429129724598576223540345015581" 11798 "470730542557532950096605214341062938740807795871021020805296" 11799 "652950478448933048254960262113384713508225733871766897517853" 11800@@ -4921,35 +4921,35 @@ static const struct test tests[] = { 11801 "386626892598170269027020282959579435080091825791399174445592" 11802 "2683343374046671669930219650268554687499e-4951", 11803 false, 11804- -0x8p-152, false, 11805- -0x0p+0, false, 11806- -0x0p+0, false, 11807- -0x0p+0, false, 11808- false, 11809- -0x4p-1076, false, 11810- -0x0p+0, false, 11811- -0x0p+0, false, 11812- -0x0p+0, false, 11813- false, 11814- -0x1p-16444, false, 11815- -0x8p-16448, false, 11816- -0x8p-16448, false, 11817- -0x8p-16448, false, 11818- false, 11819- -0xcp-16448, false, 11820- -0xcp-16448, false, 11821- -0x8p-16448, false, 11822- -0x8p-16448, false, 11823- false, 11824- -0x4p-1076, false, 11825- -0x0p+0, false, 11826- -0x0p+0, false, 11827- -0x0p+0, false, 11828- false, 11829- -0xcp-16448, false, 11830- -0xcp-16448, false, 11831- -0xb.fffffffffffcp-16448, false, 11832- -0xb.fffffffffffcp-16448, false), 11833+ -0x8p-152, false, true, 11834+ -0x0p+0, false, true, 11835+ -0x0p+0, false, true, 11836+ -0x0p+0, false, true, 11837+ false, 11838+ -0x4p-1076, false, true, 11839+ -0x0p+0, false, true, 11840+ -0x0p+0, false, true, 11841+ -0x0p+0, false, true, 11842+ false, 11843+ -0x1p-16444, false, true, 11844+ -0x8p-16448, false, true, 11845+ -0x8p-16448, false, true, 11846+ -0x8p-16448, false, true, 11847+ false, 11848+ -0xcp-16448, false, true, 11849+ -0xcp-16448, false, true, 11850+ -0x8p-16448, false, true, 11851+ -0x8p-16448, false, true, 11852+ false, 11853+ -0x4p-1076, false, true, 11854+ -0x0p+0, false, true, 11855+ -0x0p+0, false, true, 11856+ -0x0p+0, false, true, 11857+ false, 11858+ -0xcp-16448, false, true, 11859+ -0xcp-16448, false, true, 11860+ -0xb.fffffffffffcp-16448, false, true, 11861+ -0xb.fffffffffffcp-16448, false, true), 11862 TEST ("-5.467799297823711903792608900429129724598576223540345015581" 11863 "470730542557532950096605214341062938740807795871021020805296" 11864 "652950478448933048254960262113384713508225733871766897517853" 11865@@ -5143,35 +5143,35 @@ static const struct test tests[] = { 11866 "386626892598170269027020282959579435080091825791399174445592" 11867 "26833433740466716699302196502685546875e-4951", 11868 false, 11869- -0x8p-152, false, 11870- -0x0p+0, false, 11871- -0x0p+0, false, 11872- -0x0p+0, false, 11873- false, 11874- -0x4p-1076, false, 11875- -0x0p+0, false, 11876- -0x0p+0, false, 11877- -0x0p+0, false, 11878- false, 11879- -0x1p-16444, false, 11880- -0x1p-16444, false, 11881- -0x8p-16448, false, 11882- -0x8p-16448, false, 11883- true, 11884- -0xcp-16448, false, 11885- -0xcp-16448, false, 11886- -0xcp-16448, false, 11887- -0xcp-16448, false, 11888- false, 11889- -0x4p-1076, false, 11890- -0x0p+0, false, 11891- -0x0p+0, false, 11892- -0x0p+0, false, 11893- true, 11894- -0xcp-16448, false, 11895- -0xcp-16448, false, 11896- -0xcp-16448, false, 11897- -0xcp-16448, false), 11898+ -0x8p-152, false, true, 11899+ -0x0p+0, false, true, 11900+ -0x0p+0, false, true, 11901+ -0x0p+0, false, true, 11902+ false, 11903+ -0x4p-1076, false, true, 11904+ -0x0p+0, false, true, 11905+ -0x0p+0, false, true, 11906+ -0x0p+0, false, true, 11907+ false, 11908+ -0x1p-16444, false, true, 11909+ -0x1p-16444, false, true, 11910+ -0x8p-16448, false, true, 11911+ -0x8p-16448, false, true, 11912+ true, 11913+ -0xcp-16448, false, false, 11914+ -0xcp-16448, false, false, 11915+ -0xcp-16448, false, false, 11916+ -0xcp-16448, false, false, 11917+ false, 11918+ -0x4p-1076, false, true, 11919+ -0x0p+0, false, true, 11920+ -0x0p+0, false, true, 11921+ -0x0p+0, false, true, 11922+ true, 11923+ -0xcp-16448, false, false, 11924+ -0xcp-16448, false, false, 11925+ -0xcp-16448, false, false, 11926+ -0xcp-16448, false, false), 11927 TEST ("-5.467799297823711903792608900429129724598576223540345015581" 11928 "470730542557532950096605214341062938740807795871021020805296" 11929 "652950478448933048254960262113384713508225733871766897517853" 11930@@ -5365,35 +5365,35 @@ static const struct test tests[] = { 11931 "386626892598170269027020282959579435080091825791399174445592" 11932 "2683343374046671669930219650268554687501e-4951", 11933 false, 11934- -0x8p-152, false, 11935- -0x0p+0, false, 11936- -0x0p+0, false, 11937- -0x0p+0, false, 11938- false, 11939- -0x4p-1076, false, 11940- -0x0p+0, false, 11941- -0x0p+0, false, 11942- -0x0p+0, false, 11943- false, 11944- -0x1p-16444, false, 11945- -0x1p-16444, false, 11946- -0x8p-16448, false, 11947- -0x8p-16448, false, 11948- false, 11949- -0x1p-16444, false, 11950- -0xcp-16448, false, 11951- -0xcp-16448, false, 11952- -0xcp-16448, false, 11953- false, 11954- -0x4p-1076, false, 11955- -0x0p+0, false, 11956- -0x0p+0, false, 11957- -0x0p+0, false, 11958- false, 11959- -0xc.000000000004p-16448, false, 11960- -0xcp-16448, false, 11961- -0xcp-16448, false, 11962- -0xcp-16448, false), 11963+ -0x8p-152, false, true, 11964+ -0x0p+0, false, true, 11965+ -0x0p+0, false, true, 11966+ -0x0p+0, false, true, 11967+ false, 11968+ -0x4p-1076, false, true, 11969+ -0x0p+0, false, true, 11970+ -0x0p+0, false, true, 11971+ -0x0p+0, false, true, 11972+ false, 11973+ -0x1p-16444, false, true, 11974+ -0x1p-16444, false, true, 11975+ -0x8p-16448, false, true, 11976+ -0x8p-16448, false, true, 11977+ false, 11978+ -0x1p-16444, false, true, 11979+ -0xcp-16448, false, true, 11980+ -0xcp-16448, false, true, 11981+ -0xcp-16448, false, true, 11982+ false, 11983+ -0x4p-1076, false, true, 11984+ -0x0p+0, false, true, 11985+ -0x0p+0, false, true, 11986+ -0x0p+0, false, true, 11987+ false, 11988+ -0xc.000000000004p-16448, false, true, 11989+ -0xcp-16448, false, true, 11990+ -0xcp-16448, false, true, 11991+ -0xcp-16448, false, true), 11992 TEST ("5.4677992978237119037926089004291297245985762235403450155814" 11993 "707305425575329500966052143410629387408077958710210208052966" 11994 "529504784489330482549602621133847135082257338717668975178538" 11995@@ -5587,35 +5587,35 @@ static const struct test tests[] = { 11996 "866268925981702690270202829595794350800918257913991744455922" 11997 "683343374046671669930219650268554687499e-4951", 11998 false, 11999- 0x0p+0, false, 12000- 0x0p+0, false, 12001- 0x0p+0, false, 12002- 0x8p-152, false, 12003- false, 12004- 0x0p+0, false, 12005- 0x0p+0, false, 12006- 0x0p+0, false, 12007- 0x4p-1076, false, 12008- false, 12009- 0x8p-16448, false, 12010- 0x8p-16448, false, 12011- 0x8p-16448, false, 12012- 0x1p-16444, false, 12013- false, 12014- 0x8p-16448, false, 12015- 0xcp-16448, false, 12016- 0x8p-16448, false, 12017- 0xcp-16448, false, 12018- false, 12019- 0x0p+0, false, 12020- 0x0p+0, false, 12021- 0x0p+0, false, 12022- 0x4p-1076, false, 12023- false, 12024- 0xb.fffffffffffcp-16448, false, 12025- 0xcp-16448, false, 12026- 0xb.fffffffffffcp-16448, false, 12027- 0xcp-16448, false), 12028+ 0x0p+0, false, true, 12029+ 0x0p+0, false, true, 12030+ 0x0p+0, false, true, 12031+ 0x8p-152, false, true, 12032+ false, 12033+ 0x0p+0, false, true, 12034+ 0x0p+0, false, true, 12035+ 0x0p+0, false, true, 12036+ 0x4p-1076, false, true, 12037+ false, 12038+ 0x8p-16448, false, true, 12039+ 0x8p-16448, false, true, 12040+ 0x8p-16448, false, true, 12041+ 0x1p-16444, false, true, 12042+ false, 12043+ 0x8p-16448, false, true, 12044+ 0xcp-16448, false, true, 12045+ 0x8p-16448, false, true, 12046+ 0xcp-16448, false, true, 12047+ false, 12048+ 0x0p+0, false, true, 12049+ 0x0p+0, false, true, 12050+ 0x0p+0, false, true, 12051+ 0x4p-1076, false, true, 12052+ false, 12053+ 0xb.fffffffffffcp-16448, false, true, 12054+ 0xcp-16448, false, true, 12055+ 0xb.fffffffffffcp-16448, false, true, 12056+ 0xcp-16448, false, true), 12057 TEST ("5.4677992978237119037926089004291297245985762235403450155814" 12058 "707305425575329500966052143410629387408077958710210208052966" 12059 "529504784489330482549602621133847135082257338717668975178538" 12060@@ -5809,35 +5809,35 @@ static const struct test tests[] = { 12061 "866268925981702690270202829595794350800918257913991744455922" 12062 "6833433740466716699302196502685546875e-4951", 12063 false, 12064- 0x0p+0, false, 12065- 0x0p+0, false, 12066- 0x0p+0, false, 12067- 0x8p-152, false, 12068- false, 12069- 0x0p+0, false, 12070- 0x0p+0, false, 12071- 0x0p+0, false, 12072- 0x4p-1076, false, 12073- false, 12074- 0x8p-16448, false, 12075- 0x1p-16444, false, 12076- 0x8p-16448, false, 12077- 0x1p-16444, false, 12078- true, 12079- 0xcp-16448, false, 12080- 0xcp-16448, false, 12081- 0xcp-16448, false, 12082- 0xcp-16448, false, 12083- false, 12084- 0x0p+0, false, 12085- 0x0p+0, false, 12086- 0x0p+0, false, 12087- 0x4p-1076, false, 12088- true, 12089- 0xcp-16448, false, 12090- 0xcp-16448, false, 12091- 0xcp-16448, false, 12092- 0xcp-16448, false), 12093+ 0x0p+0, false, true, 12094+ 0x0p+0, false, true, 12095+ 0x0p+0, false, true, 12096+ 0x8p-152, false, true, 12097+ false, 12098+ 0x0p+0, false, true, 12099+ 0x0p+0, false, true, 12100+ 0x0p+0, false, true, 12101+ 0x4p-1076, false, true, 12102+ false, 12103+ 0x8p-16448, false, true, 12104+ 0x1p-16444, false, true, 12105+ 0x8p-16448, false, true, 12106+ 0x1p-16444, false, true, 12107+ true, 12108+ 0xcp-16448, false, false, 12109+ 0xcp-16448, false, false, 12110+ 0xcp-16448, false, false, 12111+ 0xcp-16448, false, false, 12112+ false, 12113+ 0x0p+0, false, true, 12114+ 0x0p+0, false, true, 12115+ 0x0p+0, false, true, 12116+ 0x4p-1076, false, true, 12117+ true, 12118+ 0xcp-16448, false, false, 12119+ 0xcp-16448, false, false, 12120+ 0xcp-16448, false, false, 12121+ 0xcp-16448, false, false), 12122 TEST ("5.4677992978237119037926089004291297245985762235403450155814" 12123 "707305425575329500966052143410629387408077958710210208052966" 12124 "529504784489330482549602621133847135082257338717668975178538" 12125@@ -6031,35 +6031,35 @@ static const struct test tests[] = { 12126 "866268925981702690270202829595794350800918257913991744455922" 12127 "683343374046671669930219650268554687501e-4951", 12128 false, 12129- 0x0p+0, false, 12130- 0x0p+0, false, 12131- 0x0p+0, false, 12132- 0x8p-152, false, 12133- false, 12134- 0x0p+0, false, 12135- 0x0p+0, false, 12136- 0x0p+0, false, 12137- 0x4p-1076, false, 12138- false, 12139- 0x8p-16448, false, 12140- 0x1p-16444, false, 12141- 0x8p-16448, false, 12142- 0x1p-16444, false, 12143- false, 12144- 0xcp-16448, false, 12145- 0xcp-16448, false, 12146- 0xcp-16448, false, 12147- 0x1p-16444, false, 12148- false, 12149- 0x0p+0, false, 12150- 0x0p+0, false, 12151- 0x0p+0, false, 12152- 0x4p-1076, false, 12153- false, 12154- 0xcp-16448, false, 12155- 0xcp-16448, false, 12156- 0xcp-16448, false, 12157- 0xc.000000000004p-16448, false), 12158+ 0x0p+0, false, true, 12159+ 0x0p+0, false, true, 12160+ 0x0p+0, false, true, 12161+ 0x8p-152, false, true, 12162+ false, 12163+ 0x0p+0, false, true, 12164+ 0x0p+0, false, true, 12165+ 0x0p+0, false, true, 12166+ 0x4p-1076, false, true, 12167+ false, 12168+ 0x8p-16448, false, true, 12169+ 0x1p-16444, false, true, 12170+ 0x8p-16448, false, true, 12171+ 0x1p-16444, false, true, 12172+ false, 12173+ 0xcp-16448, false, true, 12174+ 0xcp-16448, false, true, 12175+ 0xcp-16448, false, true, 12176+ 0x1p-16444, false, true, 12177+ false, 12178+ 0x0p+0, false, true, 12179+ 0x0p+0, false, true, 12180+ 0x0p+0, false, true, 12181+ 0x4p-1076, false, true, 12182+ false, 12183+ 0xcp-16448, false, true, 12184+ 0xcp-16448, false, true, 12185+ 0xcp-16448, false, true, 12186+ 0xc.000000000004p-16448, false, true), 12187 TEST ("-5.467799297823711903792608900429129724598576223540345015581" 12188 "470730542557532950096605214341062938740807795871021020805296" 12189 "652950478448933048254960262113384713508225733871766897517853" 12190@@ -6253,35 +6253,35 @@ static const struct test tests[] = { 12191 "386626892598170269027020282959579435080091825791399174445592" 12192 "2683343374046671669930219650268554687499e-4951", 12193 false, 12194- -0x8p-152, false, 12195- -0x0p+0, false, 12196- -0x0p+0, false, 12197- -0x0p+0, false, 12198- false, 12199- -0x4p-1076, false, 12200- -0x0p+0, false, 12201- -0x0p+0, false, 12202- -0x0p+0, false, 12203- false, 12204- -0x1p-16444, false, 12205- -0x8p-16448, false, 12206- -0x8p-16448, false, 12207- -0x8p-16448, false, 12208- false, 12209- -0xcp-16448, false, 12210- -0xcp-16448, false, 12211- -0x8p-16448, false, 12212- -0x8p-16448, false, 12213- false, 12214- -0x4p-1076, false, 12215- -0x0p+0, false, 12216- -0x0p+0, false, 12217- -0x0p+0, false, 12218- false, 12219- -0xcp-16448, false, 12220- -0xcp-16448, false, 12221- -0xb.fffffffffffcp-16448, false, 12222- -0xb.fffffffffffcp-16448, false), 12223+ -0x8p-152, false, true, 12224+ -0x0p+0, false, true, 12225+ -0x0p+0, false, true, 12226+ -0x0p+0, false, true, 12227+ false, 12228+ -0x4p-1076, false, true, 12229+ -0x0p+0, false, true, 12230+ -0x0p+0, false, true, 12231+ -0x0p+0, false, true, 12232+ false, 12233+ -0x1p-16444, false, true, 12234+ -0x8p-16448, false, true, 12235+ -0x8p-16448, false, true, 12236+ -0x8p-16448, false, true, 12237+ false, 12238+ -0xcp-16448, false, true, 12239+ -0xcp-16448, false, true, 12240+ -0x8p-16448, false, true, 12241+ -0x8p-16448, false, true, 12242+ false, 12243+ -0x4p-1076, false, true, 12244+ -0x0p+0, false, true, 12245+ -0x0p+0, false, true, 12246+ -0x0p+0, false, true, 12247+ false, 12248+ -0xcp-16448, false, true, 12249+ -0xcp-16448, false, true, 12250+ -0xb.fffffffffffcp-16448, false, true, 12251+ -0xb.fffffffffffcp-16448, false, true), 12252 TEST ("-5.467799297823711903792608900429129724598576223540345015581" 12253 "470730542557532950096605214341062938740807795871021020805296" 12254 "652950478448933048254960262113384713508225733871766897517853" 12255@@ -6475,35 +6475,35 @@ static const struct test tests[] = { 12256 "386626892598170269027020282959579435080091825791399174445592" 12257 "26833433740466716699302196502685546875e-4951", 12258 false, 12259- -0x8p-152, false, 12260- -0x0p+0, false, 12261- -0x0p+0, false, 12262- -0x0p+0, false, 12263- false, 12264- -0x4p-1076, false, 12265- -0x0p+0, false, 12266- -0x0p+0, false, 12267- -0x0p+0, false, 12268- false, 12269- -0x1p-16444, false, 12270- -0x1p-16444, false, 12271- -0x8p-16448, false, 12272- -0x8p-16448, false, 12273- true, 12274- -0xcp-16448, false, 12275- -0xcp-16448, false, 12276- -0xcp-16448, false, 12277- -0xcp-16448, false, 12278- false, 12279- -0x4p-1076, false, 12280- -0x0p+0, false, 12281- -0x0p+0, false, 12282- -0x0p+0, false, 12283- true, 12284- -0xcp-16448, false, 12285- -0xcp-16448, false, 12286- -0xcp-16448, false, 12287- -0xcp-16448, false), 12288+ -0x8p-152, false, true, 12289+ -0x0p+0, false, true, 12290+ -0x0p+0, false, true, 12291+ -0x0p+0, false, true, 12292+ false, 12293+ -0x4p-1076, false, true, 12294+ -0x0p+0, false, true, 12295+ -0x0p+0, false, true, 12296+ -0x0p+0, false, true, 12297+ false, 12298+ -0x1p-16444, false, true, 12299+ -0x1p-16444, false, true, 12300+ -0x8p-16448, false, true, 12301+ -0x8p-16448, false, true, 12302+ true, 12303+ -0xcp-16448, false, false, 12304+ -0xcp-16448, false, false, 12305+ -0xcp-16448, false, false, 12306+ -0xcp-16448, false, false, 12307+ false, 12308+ -0x4p-1076, false, true, 12309+ -0x0p+0, false, true, 12310+ -0x0p+0, false, true, 12311+ -0x0p+0, false, true, 12312+ true, 12313+ -0xcp-16448, false, false, 12314+ -0xcp-16448, false, false, 12315+ -0xcp-16448, false, false, 12316+ -0xcp-16448, false, false), 12317 TEST ("-5.467799297823711903792608900429129724598576223540345015581" 12318 "470730542557532950096605214341062938740807795871021020805296" 12319 "652950478448933048254960262113384713508225733871766897517853" 12320@@ -6697,630 +6697,630 @@ static const struct test tests[] = { 12321 "386626892598170269027020282959579435080091825791399174445592" 12322 "2683343374046671669930219650268554687501e-4951", 12323 false, 12324- -0x8p-152, false, 12325- -0x0p+0, false, 12326- -0x0p+0, false, 12327- -0x0p+0, false, 12328- false, 12329- -0x4p-1076, false, 12330- -0x0p+0, false, 12331- -0x0p+0, false, 12332- -0x0p+0, false, 12333- false, 12334- -0x1p-16444, false, 12335- -0x1p-16444, false, 12336- -0x8p-16448, false, 12337- -0x8p-16448, false, 12338- false, 12339- -0x1p-16444, false, 12340- -0xcp-16448, false, 12341- -0xcp-16448, false, 12342- -0xcp-16448, false, 12343- false, 12344- -0x4p-1076, false, 12345- -0x0p+0, false, 12346- -0x0p+0, false, 12347- -0x0p+0, false, 12348- false, 12349- -0xc.000000000004p-16448, false, 12350- -0xcp-16448, false, 12351- -0xcp-16448, false, 12352- -0xcp-16448, false), 12353+ -0x8p-152, false, true, 12354+ -0x0p+0, false, true, 12355+ -0x0p+0, false, true, 12356+ -0x0p+0, false, true, 12357+ false, 12358+ -0x4p-1076, false, true, 12359+ -0x0p+0, false, true, 12360+ -0x0p+0, false, true, 12361+ -0x0p+0, false, true, 12362+ false, 12363+ -0x1p-16444, false, true, 12364+ -0x1p-16444, false, true, 12365+ -0x8p-16448, false, true, 12366+ -0x8p-16448, false, true, 12367+ false, 12368+ -0x1p-16444, false, true, 12369+ -0xcp-16448, false, true, 12370+ -0xcp-16448, false, true, 12371+ -0xcp-16448, false, true, 12372+ false, 12373+ -0x4p-1076, false, true, 12374+ -0x0p+0, false, true, 12375+ -0x0p+0, false, true, 12376+ -0x0p+0, false, true, 12377+ false, 12378+ -0xc.000000000004p-16448, false, true, 12379+ -0xcp-16448, false, true, 12380+ -0xcp-16448, false, true, 12381+ -0xcp-16448, false, true), 12382 TEST ("-0x0.7p-149", 12383 false, 12384- -0x8p-152, false, 12385- -0x0p+0, false, 12386- -0x0p+0, false, 12387- -0x0p+0, false, 12388- true, 12389- -0x3.8p-152, false, 12390- -0x3.8p-152, false, 12391- -0x3.8p-152, false, 12392- -0x3.8p-152, false, 12393- true, 12394- -0x3.8p-152, false, 12395- -0x3.8p-152, false, 12396- -0x3.8p-152, false, 12397- -0x3.8p-152, false, 12398- true, 12399- -0x3.8p-152, false, 12400- -0x3.8p-152, false, 12401- -0x3.8p-152, false, 12402- -0x3.8p-152, false, 12403- true, 12404- -0x3.8p-152, false, 12405- -0x3.8p-152, false, 12406- -0x3.8p-152, false, 12407- -0x3.8p-152, false, 12408- true, 12409- -0x3.8p-152, false, 12410- -0x3.8p-152, false, 12411- -0x3.8p-152, false, 12412- -0x3.8p-152, false), 12413+ -0x8p-152, false, true, 12414+ -0x0p+0, false, true, 12415+ -0x0p+0, false, true, 12416+ -0x0p+0, false, true, 12417+ true, 12418+ -0x3.8p-152, false, false, 12419+ -0x3.8p-152, false, false, 12420+ -0x3.8p-152, false, false, 12421+ -0x3.8p-152, false, false, 12422+ true, 12423+ -0x3.8p-152, false, false, 12424+ -0x3.8p-152, false, false, 12425+ -0x3.8p-152, false, false, 12426+ -0x3.8p-152, false, false, 12427+ true, 12428+ -0x3.8p-152, false, false, 12429+ -0x3.8p-152, false, false, 12430+ -0x3.8p-152, false, false, 12431+ -0x3.8p-152, false, false, 12432+ true, 12433+ -0x3.8p-152, false, false, 12434+ -0x3.8p-152, false, false, 12435+ -0x3.8p-152, false, false, 12436+ -0x3.8p-152, false, false, 12437+ true, 12438+ -0x3.8p-152, false, false, 12439+ -0x3.8p-152, false, false, 12440+ -0x3.8p-152, false, false, 12441+ -0x3.8p-152, false, false), 12442 TEST ("-0x0.7p-1074", 12443 false, 12444- -0x8p-152, false, 12445- -0x0p+0, false, 12446- -0x0p+0, false, 12447- -0x0p+0, false, 12448- false, 12449- -0x4p-1076, false, 12450- -0x0p+0, false, 12451- -0x0p+0, false, 12452- -0x0p+0, false, 12453- true, 12454- -0x1.cp-1076, false, 12455- -0x1.cp-1076, false, 12456- -0x1.cp-1076, false, 12457- -0x1.cp-1076, false, 12458- true, 12459- -0x1.cp-1076, false, 12460- -0x1.cp-1076, false, 12461- -0x1.cp-1076, false, 12462- -0x1.cp-1076, false, 12463- false, 12464- -0x4p-1076, false, 12465- -0x0p+0, false, 12466- -0x0p+0, false, 12467- -0x0p+0, false, 12468- true, 12469- -0x1.cp-1076, false, 12470- -0x1.cp-1076, false, 12471- -0x1.cp-1076, false, 12472- -0x1.cp-1076, false), 12473+ -0x8p-152, false, true, 12474+ -0x0p+0, false, true, 12475+ -0x0p+0, false, true, 12476+ -0x0p+0, false, true, 12477+ false, 12478+ -0x4p-1076, false, true, 12479+ -0x0p+0, false, true, 12480+ -0x0p+0, false, true, 12481+ -0x0p+0, false, true, 12482+ true, 12483+ -0x1.cp-1076, false, false, 12484+ -0x1.cp-1076, false, false, 12485+ -0x1.cp-1076, false, false, 12486+ -0x1.cp-1076, false, false, 12487+ true, 12488+ -0x1.cp-1076, false, false, 12489+ -0x1.cp-1076, false, false, 12490+ -0x1.cp-1076, false, false, 12491+ -0x1.cp-1076, false, false, 12492+ false, 12493+ -0x4p-1076, false, true, 12494+ -0x0p+0, false, true, 12495+ -0x0p+0, false, true, 12496+ -0x0p+0, false, true, 12497+ true, 12498+ -0x1.cp-1076, false, false, 12499+ -0x1.cp-1076, false, false, 12500+ -0x1.cp-1076, false, false, 12501+ -0x1.cp-1076, false, false), 12502 TEST ("-0x0.7p-16445", 12503 false, 12504- -0x8p-152, false, 12505- -0x0p+0, false, 12506- -0x0p+0, false, 12507- -0x0p+0, false, 12508- false, 12509- -0x4p-1076, false, 12510- -0x0p+0, false, 12511- -0x0p+0, false, 12512- -0x0p+0, false, 12513- false, 12514- -0x8p-16448, false, 12515- -0x0p+0, false, 12516- -0x0p+0, false, 12517- -0x0p+0, false, 12518- false, 12519- -0x4p-16448, false, 12520- -0x4p-16448, false, 12521- -0x0p+0, false, 12522- -0x0p+0, false, 12523- false, 12524- -0x4p-1076, false, 12525- -0x0p+0, false, 12526- -0x0p+0, false, 12527- -0x0p+0, false, 12528- true, 12529- -0x3.8p-16448, false, 12530- -0x3.8p-16448, false, 12531- -0x3.8p-16448, false, 12532- -0x3.8p-16448, false), 12533+ -0x8p-152, false, true, 12534+ -0x0p+0, false, true, 12535+ -0x0p+0, false, true, 12536+ -0x0p+0, false, true, 12537+ false, 12538+ -0x4p-1076, false, true, 12539+ -0x0p+0, false, true, 12540+ -0x0p+0, false, true, 12541+ -0x0p+0, false, true, 12542+ false, 12543+ -0x8p-16448, false, true, 12544+ -0x0p+0, false, true, 12545+ -0x0p+0, false, true, 12546+ -0x0p+0, false, true, 12547+ false, 12548+ -0x4p-16448, false, true, 12549+ -0x4p-16448, false, true, 12550+ -0x0p+0, false, true, 12551+ -0x0p+0, false, true, 12552+ false, 12553+ -0x4p-1076, false, true, 12554+ -0x0p+0, false, true, 12555+ -0x0p+0, false, true, 12556+ -0x0p+0, false, true, 12557+ true, 12558+ -0x3.8p-16448, false, false, 12559+ -0x3.8p-16448, false, false, 12560+ -0x3.8p-16448, false, false, 12561+ -0x3.8p-16448, false, false), 12562 TEST ("-0x0.7p-16494", 12563 false, 12564- -0x8p-152, false, 12565- -0x0p+0, false, 12566- -0x0p+0, false, 12567- -0x0p+0, false, 12568- false, 12569- -0x4p-1076, false, 12570- -0x0p+0, false, 12571- -0x0p+0, false, 12572- -0x0p+0, false, 12573- false, 12574- -0x8p-16448, false, 12575- -0x0p+0, false, 12576- -0x0p+0, false, 12577- -0x0p+0, false, 12578- false, 12579- -0x4p-16448, false, 12580- -0x0p+0, false, 12581- -0x0p+0, false, 12582- -0x0p+0, false, 12583- false, 12584- -0x4p-1076, false, 12585- -0x0p+0, false, 12586- -0x0p+0, false, 12587- -0x0p+0, false, 12588- false, 12589- -0x4p-16496, false, 12590- -0x0p+0, false, 12591- -0x0p+0, false, 12592- -0x0p+0, false), 12593+ -0x8p-152, false, true, 12594+ -0x0p+0, false, true, 12595+ -0x0p+0, false, true, 12596+ -0x0p+0, false, true, 12597+ false, 12598+ -0x4p-1076, false, true, 12599+ -0x0p+0, false, true, 12600+ -0x0p+0, false, true, 12601+ -0x0p+0, false, true, 12602+ false, 12603+ -0x8p-16448, false, true, 12604+ -0x0p+0, false, true, 12605+ -0x0p+0, false, true, 12606+ -0x0p+0, false, true, 12607+ false, 12608+ -0x4p-16448, false, true, 12609+ -0x0p+0, false, true, 12610+ -0x0p+0, false, true, 12611+ -0x0p+0, false, true, 12612+ false, 12613+ -0x4p-1076, false, true, 12614+ -0x0p+0, false, true, 12615+ -0x0p+0, false, true, 12616+ -0x0p+0, false, true, 12617+ false, 12618+ -0x4p-16496, false, true, 12619+ -0x0p+0, false, true, 12620+ -0x0p+0, false, true, 12621+ -0x0p+0, false, true), 12622 TEST ("0x1p-150", 12623 false, 12624- 0x0p+0, false, 12625- 0x0p+0, false, 12626- 0x0p+0, false, 12627- 0x8p-152, false, 12628- true, 12629- 0x4p-152, false, 12630- 0x4p-152, false, 12631- 0x4p-152, false, 12632- 0x4p-152, false, 12633- true, 12634- 0x4p-152, false, 12635- 0x4p-152, false, 12636- 0x4p-152, false, 12637- 0x4p-152, false, 12638- true, 12639- 0x4p-152, false, 12640- 0x4p-152, false, 12641- 0x4p-152, false, 12642- 0x4p-152, false, 12643- true, 12644- 0x4p-152, false, 12645- 0x4p-152, false, 12646- 0x4p-152, false, 12647- 0x4p-152, false, 12648- true, 12649- 0x4p-152, false, 12650- 0x4p-152, false, 12651- 0x4p-152, false, 12652- 0x4p-152, false), 12653+ 0x0p+0, false, true, 12654+ 0x0p+0, false, true, 12655+ 0x0p+0, false, true, 12656+ 0x8p-152, false, true, 12657+ true, 12658+ 0x4p-152, false, false, 12659+ 0x4p-152, false, false, 12660+ 0x4p-152, false, false, 12661+ 0x4p-152, false, false, 12662+ true, 12663+ 0x4p-152, false, false, 12664+ 0x4p-152, false, false, 12665+ 0x4p-152, false, false, 12666+ 0x4p-152, false, false, 12667+ true, 12668+ 0x4p-152, false, false, 12669+ 0x4p-152, false, false, 12670+ 0x4p-152, false, false, 12671+ 0x4p-152, false, false, 12672+ true, 12673+ 0x4p-152, false, false, 12674+ 0x4p-152, false, false, 12675+ 0x4p-152, false, false, 12676+ 0x4p-152, false, false, 12677+ true, 12678+ 0x4p-152, false, false, 12679+ 0x4p-152, false, false, 12680+ 0x4p-152, false, false, 12681+ 0x4p-152, false, false), 12682 TEST ("0x1p-1075", 12683 false, 12684- 0x0p+0, false, 12685- 0x0p+0, false, 12686- 0x0p+0, false, 12687- 0x8p-152, false, 12688- false, 12689- 0x0p+0, false, 12690- 0x0p+0, false, 12691- 0x0p+0, false, 12692- 0x4p-1076, false, 12693- true, 12694- 0x2p-1076, false, 12695- 0x2p-1076, false, 12696- 0x2p-1076, false, 12697- 0x2p-1076, false, 12698- true, 12699- 0x2p-1076, false, 12700- 0x2p-1076, false, 12701- 0x2p-1076, false, 12702- 0x2p-1076, false, 12703- false, 12704- 0x0p+0, false, 12705- 0x0p+0, false, 12706- 0x0p+0, false, 12707- 0x4p-1076, false, 12708- true, 12709- 0x2p-1076, false, 12710- 0x2p-1076, false, 12711- 0x2p-1076, false, 12712- 0x2p-1076, false), 12713+ 0x0p+0, false, true, 12714+ 0x0p+0, false, true, 12715+ 0x0p+0, false, true, 12716+ 0x8p-152, false, true, 12717+ false, 12718+ 0x0p+0, false, true, 12719+ 0x0p+0, false, true, 12720+ 0x0p+0, false, true, 12721+ 0x4p-1076, false, true, 12722+ true, 12723+ 0x2p-1076, false, false, 12724+ 0x2p-1076, false, false, 12725+ 0x2p-1076, false, false, 12726+ 0x2p-1076, false, false, 12727+ true, 12728+ 0x2p-1076, false, false, 12729+ 0x2p-1076, false, false, 12730+ 0x2p-1076, false, false, 12731+ 0x2p-1076, false, false, 12732+ false, 12733+ 0x0p+0, false, true, 12734+ 0x0p+0, false, true, 12735+ 0x0p+0, false, true, 12736+ 0x4p-1076, false, true, 12737+ true, 12738+ 0x2p-1076, false, false, 12739+ 0x2p-1076, false, false, 12740+ 0x2p-1076, false, false, 12741+ 0x2p-1076, false, false), 12742 TEST ("0x1p-16446", 12743 false, 12744- 0x0p+0, false, 12745- 0x0p+0, false, 12746- 0x0p+0, false, 12747- 0x8p-152, false, 12748- false, 12749- 0x0p+0, false, 12750- 0x0p+0, false, 12751- 0x0p+0, false, 12752- 0x4p-1076, false, 12753- false, 12754- 0x0p+0, false, 12755- 0x0p+0, false, 12756- 0x0p+0, false, 12757- 0x8p-16448, false, 12758- true, 12759- 0x4p-16448, false, 12760- 0x4p-16448, false, 12761- 0x4p-16448, false, 12762- 0x4p-16448, false, 12763- false, 12764- 0x0p+0, false, 12765- 0x0p+0, false, 12766- 0x0p+0, false, 12767- 0x4p-1076, false, 12768- true, 12769- 0x4p-16448, false, 12770- 0x4p-16448, false, 12771- 0x4p-16448, false, 12772- 0x4p-16448, false), 12773+ 0x0p+0, false, true, 12774+ 0x0p+0, false, true, 12775+ 0x0p+0, false, true, 12776+ 0x8p-152, false, true, 12777+ false, 12778+ 0x0p+0, false, true, 12779+ 0x0p+0, false, true, 12780+ 0x0p+0, false, true, 12781+ 0x4p-1076, false, true, 12782+ false, 12783+ 0x0p+0, false, true, 12784+ 0x0p+0, false, true, 12785+ 0x0p+0, false, true, 12786+ 0x8p-16448, false, true, 12787+ true, 12788+ 0x4p-16448, false, false, 12789+ 0x4p-16448, false, false, 12790+ 0x4p-16448, false, false, 12791+ 0x4p-16448, false, false, 12792+ false, 12793+ 0x0p+0, false, true, 12794+ 0x0p+0, false, true, 12795+ 0x0p+0, false, true, 12796+ 0x4p-1076, false, true, 12797+ true, 12798+ 0x4p-16448, false, false, 12799+ 0x4p-16448, false, false, 12800+ 0x4p-16448, false, false, 12801+ 0x4p-16448, false, false), 12802 TEST ("0x1p-16495", 12803 false, 12804- 0x0p+0, false, 12805- 0x0p+0, false, 12806- 0x0p+0, false, 12807- 0x8p-152, false, 12808- false, 12809- 0x0p+0, false, 12810- 0x0p+0, false, 12811- 0x0p+0, false, 12812- 0x4p-1076, false, 12813- false, 12814- 0x0p+0, false, 12815- 0x0p+0, false, 12816- 0x0p+0, false, 12817- 0x8p-16448, false, 12818- false, 12819- 0x0p+0, false, 12820- 0x0p+0, false, 12821- 0x0p+0, false, 12822- 0x4p-16448, false, 12823- false, 12824- 0x0p+0, false, 12825- 0x0p+0, false, 12826- 0x0p+0, false, 12827- 0x4p-1076, false, 12828- false, 12829- 0x0p+0, false, 12830- 0x0p+0, false, 12831- 0x0p+0, false, 12832- 0x4p-16496, false), 12833+ 0x0p+0, false, true, 12834+ 0x0p+0, false, true, 12835+ 0x0p+0, false, true, 12836+ 0x8p-152, false, true, 12837+ false, 12838+ 0x0p+0, false, true, 12839+ 0x0p+0, false, true, 12840+ 0x0p+0, false, true, 12841+ 0x4p-1076, false, true, 12842+ false, 12843+ 0x0p+0, false, true, 12844+ 0x0p+0, false, true, 12845+ 0x0p+0, false, true, 12846+ 0x8p-16448, false, true, 12847+ false, 12848+ 0x0p+0, false, true, 12849+ 0x0p+0, false, true, 12850+ 0x0p+0, false, true, 12851+ 0x4p-16448, false, true, 12852+ false, 12853+ 0x0p+0, false, true, 12854+ 0x0p+0, false, true, 12855+ 0x0p+0, false, true, 12856+ 0x4p-1076, false, true, 12857+ false, 12858+ 0x0p+0, false, true, 12859+ 0x0p+0, false, true, 12860+ 0x0p+0, false, true, 12861+ 0x4p-16496, false, true), 12862 TEST ("-0x1p-150", 12863 false, 12864- -0x8p-152, false, 12865- -0x0p+0, false, 12866- -0x0p+0, false, 12867- -0x0p+0, false, 12868- true, 12869- -0x4p-152, false, 12870- -0x4p-152, false, 12871- -0x4p-152, false, 12872- -0x4p-152, false, 12873- true, 12874- -0x4p-152, false, 12875- -0x4p-152, false, 12876- -0x4p-152, false, 12877- -0x4p-152, false, 12878- true, 12879- -0x4p-152, false, 12880- -0x4p-152, false, 12881- -0x4p-152, false, 12882- -0x4p-152, false, 12883- true, 12884- -0x4p-152, false, 12885- -0x4p-152, false, 12886- -0x4p-152, false, 12887- -0x4p-152, false, 12888- true, 12889- -0x4p-152, false, 12890- -0x4p-152, false, 12891- -0x4p-152, false, 12892- -0x4p-152, false), 12893+ -0x8p-152, false, true, 12894+ -0x0p+0, false, true, 12895+ -0x0p+0, false, true, 12896+ -0x0p+0, false, true, 12897+ true, 12898+ -0x4p-152, false, false, 12899+ -0x4p-152, false, false, 12900+ -0x4p-152, false, false, 12901+ -0x4p-152, false, false, 12902+ true, 12903+ -0x4p-152, false, false, 12904+ -0x4p-152, false, false, 12905+ -0x4p-152, false, false, 12906+ -0x4p-152, false, false, 12907+ true, 12908+ -0x4p-152, false, false, 12909+ -0x4p-152, false, false, 12910+ -0x4p-152, false, false, 12911+ -0x4p-152, false, false, 12912+ true, 12913+ -0x4p-152, false, false, 12914+ -0x4p-152, false, false, 12915+ -0x4p-152, false, false, 12916+ -0x4p-152, false, false, 12917+ true, 12918+ -0x4p-152, false, false, 12919+ -0x4p-152, false, false, 12920+ -0x4p-152, false, false, 12921+ -0x4p-152, false, false), 12922 TEST ("-0x1p-1075", 12923 false, 12924- -0x8p-152, false, 12925- -0x0p+0, false, 12926- -0x0p+0, false, 12927- -0x0p+0, false, 12928- false, 12929- -0x4p-1076, false, 12930- -0x0p+0, false, 12931- -0x0p+0, false, 12932- -0x0p+0, false, 12933- true, 12934- -0x2p-1076, false, 12935- -0x2p-1076, false, 12936- -0x2p-1076, false, 12937- -0x2p-1076, false, 12938- true, 12939- -0x2p-1076, false, 12940- -0x2p-1076, false, 12941- -0x2p-1076, false, 12942- -0x2p-1076, false, 12943- false, 12944- -0x4p-1076, false, 12945- -0x0p+0, false, 12946- -0x0p+0, false, 12947- -0x0p+0, false, 12948- true, 12949- -0x2p-1076, false, 12950- -0x2p-1076, false, 12951- -0x2p-1076, false, 12952- -0x2p-1076, false), 12953+ -0x8p-152, false, true, 12954+ -0x0p+0, false, true, 12955+ -0x0p+0, false, true, 12956+ -0x0p+0, false, true, 12957+ false, 12958+ -0x4p-1076, false, true, 12959+ -0x0p+0, false, true, 12960+ -0x0p+0, false, true, 12961+ -0x0p+0, false, true, 12962+ true, 12963+ -0x2p-1076, false, false, 12964+ -0x2p-1076, false, false, 12965+ -0x2p-1076, false, false, 12966+ -0x2p-1076, false, false, 12967+ true, 12968+ -0x2p-1076, false, false, 12969+ -0x2p-1076, false, false, 12970+ -0x2p-1076, false, false, 12971+ -0x2p-1076, false, false, 12972+ false, 12973+ -0x4p-1076, false, true, 12974+ -0x0p+0, false, true, 12975+ -0x0p+0, false, true, 12976+ -0x0p+0, false, true, 12977+ true, 12978+ -0x2p-1076, false, false, 12979+ -0x2p-1076, false, false, 12980+ -0x2p-1076, false, false, 12981+ -0x2p-1076, false, false), 12982 TEST ("-0x1p-16446", 12983 false, 12984- -0x8p-152, false, 12985- -0x0p+0, false, 12986- -0x0p+0, false, 12987- -0x0p+0, false, 12988- false, 12989- -0x4p-1076, false, 12990- -0x0p+0, false, 12991- -0x0p+0, false, 12992- -0x0p+0, false, 12993- false, 12994- -0x8p-16448, false, 12995- -0x0p+0, false, 12996- -0x0p+0, false, 12997- -0x0p+0, false, 12998- true, 12999- -0x4p-16448, false, 13000- -0x4p-16448, false, 13001- -0x4p-16448, false, 13002- -0x4p-16448, false, 13003- false, 13004- -0x4p-1076, false, 13005- -0x0p+0, false, 13006- -0x0p+0, false, 13007- -0x0p+0, false, 13008- true, 13009- -0x4p-16448, false, 13010- -0x4p-16448, false, 13011- -0x4p-16448, false, 13012- -0x4p-16448, false), 13013+ -0x8p-152, false, true, 13014+ -0x0p+0, false, true, 13015+ -0x0p+0, false, true, 13016+ -0x0p+0, false, true, 13017+ false, 13018+ -0x4p-1076, false, true, 13019+ -0x0p+0, false, true, 13020+ -0x0p+0, false, true, 13021+ -0x0p+0, false, true, 13022+ false, 13023+ -0x8p-16448, false, true, 13024+ -0x0p+0, false, true, 13025+ -0x0p+0, false, true, 13026+ -0x0p+0, false, true, 13027+ true, 13028+ -0x4p-16448, false, false, 13029+ -0x4p-16448, false, false, 13030+ -0x4p-16448, false, false, 13031+ -0x4p-16448, false, false, 13032+ false, 13033+ -0x4p-1076, false, true, 13034+ -0x0p+0, false, true, 13035+ -0x0p+0, false, true, 13036+ -0x0p+0, false, true, 13037+ true, 13038+ -0x4p-16448, false, false, 13039+ -0x4p-16448, false, false, 13040+ -0x4p-16448, false, false, 13041+ -0x4p-16448, false, false), 13042 TEST ("-0x1p-16495", 13043 false, 13044- -0x8p-152, false, 13045- -0x0p+0, false, 13046- -0x0p+0, false, 13047- -0x0p+0, false, 13048- false, 13049- -0x4p-1076, false, 13050- -0x0p+0, false, 13051- -0x0p+0, false, 13052- -0x0p+0, false, 13053- false, 13054- -0x8p-16448, false, 13055- -0x0p+0, false, 13056- -0x0p+0, false, 13057- -0x0p+0, false, 13058- false, 13059- -0x4p-16448, false, 13060- -0x0p+0, false, 13061- -0x0p+0, false, 13062- -0x0p+0, false, 13063- false, 13064- -0x4p-1076, false, 13065- -0x0p+0, false, 13066- -0x0p+0, false, 13067- -0x0p+0, false, 13068- false, 13069- -0x4p-16496, false, 13070- -0x0p+0, false, 13071- -0x0p+0, false, 13072- -0x0p+0, false), 13073+ -0x8p-152, false, true, 13074+ -0x0p+0, false, true, 13075+ -0x0p+0, false, true, 13076+ -0x0p+0, false, true, 13077+ false, 13078+ -0x4p-1076, false, true, 13079+ -0x0p+0, false, true, 13080+ -0x0p+0, false, true, 13081+ -0x0p+0, false, true, 13082+ false, 13083+ -0x8p-16448, false, true, 13084+ -0x0p+0, false, true, 13085+ -0x0p+0, false, true, 13086+ -0x0p+0, false, true, 13087+ false, 13088+ -0x4p-16448, false, true, 13089+ -0x0p+0, false, true, 13090+ -0x0p+0, false, true, 13091+ -0x0p+0, false, true, 13092+ false, 13093+ -0x4p-1076, false, true, 13094+ -0x0p+0, false, true, 13095+ -0x0p+0, false, true, 13096+ -0x0p+0, false, true, 13097+ false, 13098+ -0x4p-16496, false, true, 13099+ -0x0p+0, false, true, 13100+ -0x0p+0, false, true, 13101+ -0x0p+0, false, true), 13102 TEST (".70064923216240853546186479164495807e-45", 13103 false, 13104- 0x0p+0, false, 13105- 0x8p-152, false, 13106- 0x0p+0, false, 13107- 0x8p-152, false, 13108- false, 13109- 0x4p-152, false, 13110- 0x4p-152, false, 13111- 0x4p-152, false, 13112- 0x4.0000000000004p-152, false, 13113- false, 13114- 0x4p-152, false, 13115- 0x4p-152, false, 13116- 0x4p-152, false, 13117- 0x4.0000000000000008p-152, false, 13118- false, 13119- 0x4p-152, false, 13120- 0x4p-152, false, 13121- 0x4p-152, false, 13122- 0x4.0000000000000008p-152, false, 13123- false, 13124- 0x4p-152, false, 13125- 0x4p-152, false, 13126- 0x4p-152, false, 13127- 0x4.00000000000000000000000002p-152, false, 13128- false, 13129- 0x4p-152, false, 13130- 0x4p-152, false, 13131- 0x4p-152, false, 13132- 0x4.0000000000000000000000000004p-152, false), 13133+ 0x0p+0, false, true, 13134+ 0x8p-152, false, true, 13135+ 0x0p+0, false, true, 13136+ 0x8p-152, false, true, 13137+ false, 13138+ 0x4p-152, false, false, 13139+ 0x4p-152, false, false, 13140+ 0x4p-152, false, false, 13141+ 0x4.0000000000004p-152, false, false, 13142+ false, 13143+ 0x4p-152, false, false, 13144+ 0x4p-152, false, false, 13145+ 0x4p-152, false, false, 13146+ 0x4.0000000000000008p-152, false, false, 13147+ false, 13148+ 0x4p-152, false, false, 13149+ 0x4p-152, false, false, 13150+ 0x4p-152, false, false, 13151+ 0x4.0000000000000008p-152, false, false, 13152+ false, 13153+ 0x4p-152, false, false, 13154+ 0x4p-152, false, false, 13155+ 0x4p-152, false, false, 13156+ 0x4.00000000000000000000000002p-152, false, false, 13157+ false, 13158+ 0x4p-152, false, false, 13159+ 0x4p-152, false, false, 13160+ 0x4p-152, false, false, 13161+ 0x4.0000000000000000000000000004p-152, false, false), 13162 TEST ("7.0064923216240853546186479164495806564013097093825788587853" 13163 "4141944895541342930300743319094181060791015624e-46", 13164 false, 13165- 0x0p+0, false, 13166- 0x0p+0, false, 13167- 0x0p+0, false, 13168- 0x8p-152, false, 13169- false, 13170- 0x3.ffffffffffffep-152, false, 13171- 0x4p-152, false, 13172- 0x3.ffffffffffffep-152, false, 13173- 0x4p-152, false, 13174- false, 13175- 0x3.fffffffffffffffcp-152, false, 13176- 0x4p-152, false, 13177- 0x3.fffffffffffffffcp-152, false, 13178- 0x4p-152, false, 13179- false, 13180- 0x3.fffffffffffffffcp-152, false, 13181- 0x4p-152, false, 13182- 0x3.fffffffffffffffcp-152, false, 13183- 0x4p-152, false, 13184- false, 13185- 0x3.ffffffffffffffffffffffffffp-152, false, 13186- 0x4p-152, false, 13187- 0x3.ffffffffffffffffffffffffffp-152, false, 13188- 0x4p-152, false, 13189- false, 13190- 0x3.fffffffffffffffffffffffffffep-152, false, 13191- 0x4p-152, false, 13192- 0x3.fffffffffffffffffffffffffffep-152, false, 13193- 0x4p-152, false), 13194+ 0x0p+0, false, true, 13195+ 0x0p+0, false, true, 13196+ 0x0p+0, false, true, 13197+ 0x8p-152, false, true, 13198+ false, 13199+ 0x3.ffffffffffffep-152, false, false, 13200+ 0x4p-152, false, false, 13201+ 0x3.ffffffffffffep-152, false, false, 13202+ 0x4p-152, false, false, 13203+ false, 13204+ 0x3.fffffffffffffffcp-152, false, false, 13205+ 0x4p-152, false, false, 13206+ 0x3.fffffffffffffffcp-152, false, false, 13207+ 0x4p-152, false, false, 13208+ false, 13209+ 0x3.fffffffffffffffcp-152, false, false, 13210+ 0x4p-152, false, false, 13211+ 0x3.fffffffffffffffcp-152, false, false, 13212+ 0x4p-152, false, false, 13213+ false, 13214+ 0x3.ffffffffffffffffffffffffffp-152, false, false, 13215+ 0x4p-152, false, false, 13216+ 0x3.ffffffffffffffffffffffffffp-152, false, false, 13217+ 0x4p-152, false, false, 13218+ false, 13219+ 0x3.fffffffffffffffffffffffffffep-152, false, false, 13220+ 0x4p-152, false, false, 13221+ 0x3.fffffffffffffffffffffffffffep-152, false, false, 13222+ 0x4p-152, false, false), 13223 TEST ("7.0064923216240853546186479164495806564013097093825788587853" 13224 "4141944895541342930300743319094181060791015625e-46", 13225 false, 13226- 0x0p+0, false, 13227- 0x0p+0, false, 13228- 0x0p+0, false, 13229- 0x8p-152, false, 13230- true, 13231- 0x4p-152, false, 13232- 0x4p-152, false, 13233- 0x4p-152, false, 13234- 0x4p-152, false, 13235- true, 13236- 0x4p-152, false, 13237- 0x4p-152, false, 13238- 0x4p-152, false, 13239- 0x4p-152, false, 13240- true, 13241- 0x4p-152, false, 13242- 0x4p-152, false, 13243- 0x4p-152, false, 13244- 0x4p-152, false, 13245- true, 13246- 0x4p-152, false, 13247- 0x4p-152, false, 13248- 0x4p-152, false, 13249- 0x4p-152, false, 13250- true, 13251- 0x4p-152, false, 13252- 0x4p-152, false, 13253- 0x4p-152, false, 13254- 0x4p-152, false), 13255+ 0x0p+0, false, true, 13256+ 0x0p+0, false, true, 13257+ 0x0p+0, false, true, 13258+ 0x8p-152, false, true, 13259+ true, 13260+ 0x4p-152, false, false, 13261+ 0x4p-152, false, false, 13262+ 0x4p-152, false, false, 13263+ 0x4p-152, false, false, 13264+ true, 13265+ 0x4p-152, false, false, 13266+ 0x4p-152, false, false, 13267+ 0x4p-152, false, false, 13268+ 0x4p-152, false, false, 13269+ true, 13270+ 0x4p-152, false, false, 13271+ 0x4p-152, false, false, 13272+ 0x4p-152, false, false, 13273+ 0x4p-152, false, false, 13274+ true, 13275+ 0x4p-152, false, false, 13276+ 0x4p-152, false, false, 13277+ 0x4p-152, false, false, 13278+ 0x4p-152, false, false, 13279+ true, 13280+ 0x4p-152, false, false, 13281+ 0x4p-152, false, false, 13282+ 0x4p-152, false, false, 13283+ 0x4p-152, false, false), 13284 TEST ("7.0064923216240853546186479164495806564013097093825788587853" 13285 "4141944895541342930300743319094181060791015626e-46", 13286 false, 13287- 0x0p+0, false, 13288- 0x8p-152, false, 13289- 0x0p+0, false, 13290- 0x8p-152, false, 13291- false, 13292- 0x4p-152, false, 13293- 0x4p-152, false, 13294- 0x4p-152, false, 13295- 0x4.0000000000004p-152, false, 13296- false, 13297- 0x4p-152, false, 13298- 0x4p-152, false, 13299- 0x4p-152, false, 13300- 0x4.0000000000000008p-152, false, 13301- false, 13302- 0x4p-152, false, 13303- 0x4p-152, false, 13304- 0x4p-152, false, 13305- 0x4.0000000000000008p-152, false, 13306- false, 13307- 0x4p-152, false, 13308- 0x4p-152, false, 13309- 0x4p-152, false, 13310- 0x4.00000000000000000000000002p-152, false, 13311- false, 13312- 0x4p-152, false, 13313- 0x4p-152, false, 13314- 0x4p-152, false, 13315- 0x4.0000000000000000000000000004p-152, false), 13316+ 0x0p+0, false, true, 13317+ 0x8p-152, false, true, 13318+ 0x0p+0, false, true, 13319+ 0x8p-152, false, true, 13320+ false, 13321+ 0x4p-152, false, false, 13322+ 0x4p-152, false, false, 13323+ 0x4p-152, false, false, 13324+ 0x4.0000000000004p-152, false, false, 13325+ false, 13326+ 0x4p-152, false, false, 13327+ 0x4p-152, false, false, 13328+ 0x4p-152, false, false, 13329+ 0x4.0000000000000008p-152, false, false, 13330+ false, 13331+ 0x4p-152, false, false, 13332+ 0x4p-152, false, false, 13333+ 0x4p-152, false, false, 13334+ 0x4.0000000000000008p-152, false, false, 13335+ false, 13336+ 0x4p-152, false, false, 13337+ 0x4p-152, false, false, 13338+ 0x4p-152, false, false, 13339+ 0x4.00000000000000000000000002p-152, false, false, 13340+ false, 13341+ 0x4p-152, false, false, 13342+ 0x4p-152, false, false, 13343+ 0x4p-152, false, false, 13344+ 0x4.0000000000000000000000000004p-152, false, false), 13345 TEST ("-7.006492321624085354618647916449580656401309709382578858785" 13346 "34141944895541342930300743319094181060791015624e-46", 13347 false, 13348- -0x8p-152, false, 13349- -0x0p+0, false, 13350- -0x0p+0, false, 13351- -0x0p+0, false, 13352- false, 13353- -0x4p-152, false, 13354- -0x4p-152, false, 13355- -0x3.ffffffffffffep-152, false, 13356- -0x3.ffffffffffffep-152, false, 13357- false, 13358- -0x4p-152, false, 13359- -0x4p-152, false, 13360- -0x3.fffffffffffffffcp-152, false, 13361- -0x3.fffffffffffffffcp-152, false, 13362- false, 13363- -0x4p-152, false, 13364- -0x4p-152, false, 13365- -0x3.fffffffffffffffcp-152, false, 13366- -0x3.fffffffffffffffcp-152, false, 13367- false, 13368- -0x4p-152, false, 13369- -0x4p-152, false, 13370- -0x3.ffffffffffffffffffffffffffp-152, false, 13371- -0x3.ffffffffffffffffffffffffffp-152, false, 13372- false, 13373- -0x4p-152, false, 13374- -0x4p-152, false, 13375- -0x3.fffffffffffffffffffffffffffep-152, false, 13376- -0x3.fffffffffffffffffffffffffffep-152, false), 13377+ -0x8p-152, false, true, 13378+ -0x0p+0, false, true, 13379+ -0x0p+0, false, true, 13380+ -0x0p+0, false, true, 13381+ false, 13382+ -0x4p-152, false, false, 13383+ -0x4p-152, false, false, 13384+ -0x3.ffffffffffffep-152, false, false, 13385+ -0x3.ffffffffffffep-152, false, false, 13386+ false, 13387+ -0x4p-152, false, false, 13388+ -0x4p-152, false, false, 13389+ -0x3.fffffffffffffffcp-152, false, false, 13390+ -0x3.fffffffffffffffcp-152, false, false, 13391+ false, 13392+ -0x4p-152, false, false, 13393+ -0x4p-152, false, false, 13394+ -0x3.fffffffffffffffcp-152, false, false, 13395+ -0x3.fffffffffffffffcp-152, false, false, 13396+ false, 13397+ -0x4p-152, false, false, 13398+ -0x4p-152, false, false, 13399+ -0x3.ffffffffffffffffffffffffffp-152, false, false, 13400+ -0x3.ffffffffffffffffffffffffffp-152, false, false, 13401+ false, 13402+ -0x4p-152, false, false, 13403+ -0x4p-152, false, false, 13404+ -0x3.fffffffffffffffffffffffffffep-152, false, false, 13405+ -0x3.fffffffffffffffffffffffffffep-152, false, false), 13406 TEST ("-7.006492321624085354618647916449580656401309709382578858785" 13407 "34141944895541342930300743319094181060791015625e-46", 13408 false, 13409- -0x8p-152, false, 13410- -0x0p+0, false, 13411- -0x0p+0, false, 13412- -0x0p+0, false, 13413- true, 13414- -0x4p-152, false, 13415- -0x4p-152, false, 13416- -0x4p-152, false, 13417- -0x4p-152, false, 13418- true, 13419- -0x4p-152, false, 13420- -0x4p-152, false, 13421- -0x4p-152, false, 13422- -0x4p-152, false, 13423- true, 13424- -0x4p-152, false, 13425- -0x4p-152, false, 13426- -0x4p-152, false, 13427- -0x4p-152, false, 13428- true, 13429- -0x4p-152, false, 13430- -0x4p-152, false, 13431- -0x4p-152, false, 13432- -0x4p-152, false, 13433- true, 13434- -0x4p-152, false, 13435- -0x4p-152, false, 13436- -0x4p-152, false, 13437- -0x4p-152, false), 13438+ -0x8p-152, false, true, 13439+ -0x0p+0, false, true, 13440+ -0x0p+0, false, true, 13441+ -0x0p+0, false, true, 13442+ true, 13443+ -0x4p-152, false, false, 13444+ -0x4p-152, false, false, 13445+ -0x4p-152, false, false, 13446+ -0x4p-152, false, false, 13447+ true, 13448+ -0x4p-152, false, false, 13449+ -0x4p-152, false, false, 13450+ -0x4p-152, false, false, 13451+ -0x4p-152, false, false, 13452+ true, 13453+ -0x4p-152, false, false, 13454+ -0x4p-152, false, false, 13455+ -0x4p-152, false, false, 13456+ -0x4p-152, false, false, 13457+ true, 13458+ -0x4p-152, false, false, 13459+ -0x4p-152, false, false, 13460+ -0x4p-152, false, false, 13461+ -0x4p-152, false, false, 13462+ true, 13463+ -0x4p-152, false, false, 13464+ -0x4p-152, false, false, 13465+ -0x4p-152, false, false, 13466+ -0x4p-152, false, false), 13467 TEST ("-7.006492321624085354618647916449580656401309709382578858785" 13468 "34141944895541342930300743319094181060791015626e-46", 13469 false, 13470- -0x8p-152, false, 13471- -0x8p-152, false, 13472- -0x0p+0, false, 13473- -0x0p+0, false, 13474- false, 13475- -0x4.0000000000004p-152, false, 13476- -0x4p-152, false, 13477- -0x4p-152, false, 13478- -0x4p-152, false, 13479- false, 13480- -0x4.0000000000000008p-152, false, 13481- -0x4p-152, false, 13482- -0x4p-152, false, 13483- -0x4p-152, false, 13484- false, 13485- -0x4.0000000000000008p-152, false, 13486- -0x4p-152, false, 13487- -0x4p-152, false, 13488- -0x4p-152, false, 13489- false, 13490- -0x4.00000000000000000000000002p-152, false, 13491- -0x4p-152, false, 13492- -0x4p-152, false, 13493- -0x4p-152, false, 13494- false, 13495- -0x4.0000000000000000000000000004p-152, false, 13496- -0x4p-152, false, 13497- -0x4p-152, false, 13498- -0x4p-152, false), 13499+ -0x8p-152, false, true, 13500+ -0x8p-152, false, true, 13501+ -0x0p+0, false, true, 13502+ -0x0p+0, false, true, 13503+ false, 13504+ -0x4.0000000000004p-152, false, false, 13505+ -0x4p-152, false, false, 13506+ -0x4p-152, false, false, 13507+ -0x4p-152, false, false, 13508+ false, 13509+ -0x4.0000000000000008p-152, false, false, 13510+ -0x4p-152, false, false, 13511+ -0x4p-152, false, false, 13512+ -0x4p-152, false, false, 13513+ false, 13514+ -0x4.0000000000000008p-152, false, false, 13515+ -0x4p-152, false, false, 13516+ -0x4p-152, false, false, 13517+ -0x4p-152, false, false, 13518+ false, 13519+ -0x4.00000000000000000000000002p-152, false, false, 13520+ -0x4p-152, false, false, 13521+ -0x4p-152, false, false, 13522+ -0x4p-152, false, false, 13523+ false, 13524+ -0x4.0000000000000000000000000004p-152, false, false, 13525+ -0x4p-152, false, false, 13526+ -0x4p-152, false, false, 13527+ -0x4p-152, false, false), 13528 TEST ("2.4703282292062327208828439643411068618252990130716238221279" 13529 "284125033775363510437593264991818081799618989828234772285886" 13530 "546332835517796989819938739800539093906315035659515570226392" 13531@@ -7335,35 +7335,35 @@ static const struct test tests[] = { 13532 "779186948667994968324049705821028513185451396213837722826145" 13533 "437693412532098591327667236328124e-324", 13534 false, 13535- 0x0p+0, false, 13536- 0x0p+0, false, 13537- 0x0p+0, false, 13538- 0x8p-152, false, 13539- false, 13540- 0x0p+0, false, 13541- 0x0p+0, false, 13542- 0x0p+0, false, 13543- 0x4p-1076, false, 13544- false, 13545- 0x1.fffffffffffffffep-1076, false, 13546- 0x2p-1076, false, 13547- 0x1.fffffffffffffffep-1076, false, 13548- 0x2p-1076, false, 13549- false, 13550- 0x1.fffffffffffffffep-1076, false, 13551- 0x2p-1076, false, 13552- 0x1.fffffffffffffffep-1076, false, 13553- 0x2p-1076, false, 13554- false, 13555- 0x0p+0, false, 13556- 0x0p+0, false, 13557- 0x0p+0, false, 13558- 0x4p-1076, false, 13559- false, 13560- 0x1.ffffffffffffffffffffffffffffp-1076, false, 13561- 0x2p-1076, false, 13562- 0x1.ffffffffffffffffffffffffffffp-1076, false, 13563- 0x2p-1076, false), 13564+ 0x0p+0, false, true, 13565+ 0x0p+0, false, true, 13566+ 0x0p+0, false, true, 13567+ 0x8p-152, false, true, 13568+ false, 13569+ 0x0p+0, false, true, 13570+ 0x0p+0, false, true, 13571+ 0x0p+0, false, true, 13572+ 0x4p-1076, false, true, 13573+ false, 13574+ 0x1.fffffffffffffffep-1076, false, false, 13575+ 0x2p-1076, false, false, 13576+ 0x1.fffffffffffffffep-1076, false, false, 13577+ 0x2p-1076, false, false, 13578+ false, 13579+ 0x1.fffffffffffffffep-1076, false, false, 13580+ 0x2p-1076, false, false, 13581+ 0x1.fffffffffffffffep-1076, false, false, 13582+ 0x2p-1076, false, false, 13583+ false, 13584+ 0x0p+0, false, true, 13585+ 0x0p+0, false, true, 13586+ 0x0p+0, false, true, 13587+ 0x4p-1076, false, true, 13588+ false, 13589+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false, 13590+ 0x2p-1076, false, false, 13591+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false, 13592+ 0x2p-1076, false, false), 13593 TEST ("2.4703282292062327208828439643411068618252990130716238221279" 13594 "284125033775363510437593264991818081799618989828234772285886" 13595 "546332835517796989819938739800539093906315035659515570226392" 13596@@ -7378,35 +7378,35 @@ static const struct test tests[] = { 13597 "779186948667994968324049705821028513185451396213837722826145" 13598 "437693412532098591327667236328125e-324", 13599 false, 13600- 0x0p+0, false, 13601- 0x0p+0, false, 13602- 0x0p+0, false, 13603- 0x8p-152, false, 13604- false, 13605- 0x0p+0, false, 13606- 0x0p+0, false, 13607- 0x0p+0, false, 13608- 0x4p-1076, false, 13609- true, 13610- 0x2p-1076, false, 13611- 0x2p-1076, false, 13612- 0x2p-1076, false, 13613- 0x2p-1076, false, 13614- true, 13615- 0x2p-1076, false, 13616- 0x2p-1076, false, 13617- 0x2p-1076, false, 13618- 0x2p-1076, false, 13619- false, 13620- 0x0p+0, false, 13621- 0x0p+0, false, 13622- 0x0p+0, false, 13623- 0x4p-1076, false, 13624- true, 13625- 0x2p-1076, false, 13626- 0x2p-1076, false, 13627- 0x2p-1076, false, 13628- 0x2p-1076, false), 13629+ 0x0p+0, false, true, 13630+ 0x0p+0, false, true, 13631+ 0x0p+0, false, true, 13632+ 0x8p-152, false, true, 13633+ false, 13634+ 0x0p+0, false, true, 13635+ 0x0p+0, false, true, 13636+ 0x0p+0, false, true, 13637+ 0x4p-1076, false, true, 13638+ true, 13639+ 0x2p-1076, false, false, 13640+ 0x2p-1076, false, false, 13641+ 0x2p-1076, false, false, 13642+ 0x2p-1076, false, false, 13643+ true, 13644+ 0x2p-1076, false, false, 13645+ 0x2p-1076, false, false, 13646+ 0x2p-1076, false, false, 13647+ 0x2p-1076, false, false, 13648+ false, 13649+ 0x0p+0, false, true, 13650+ 0x0p+0, false, true, 13651+ 0x0p+0, false, true, 13652+ 0x4p-1076, false, true, 13653+ true, 13654+ 0x2p-1076, false, false, 13655+ 0x2p-1076, false, false, 13656+ 0x2p-1076, false, false, 13657+ 0x2p-1076, false, false), 13658 TEST ("2.4703282292062327208828439643411068618252990130716238221279" 13659 "284125033775363510437593264991818081799618989828234772285886" 13660 "546332835517796989819938739800539093906315035659515570226392" 13661@@ -7421,35 +7421,35 @@ static const struct test tests[] = { 13662 "779186948667994968324049705821028513185451396213837722826145" 13663 "437693412532098591327667236328126e-324", 13664 false, 13665- 0x0p+0, false, 13666- 0x0p+0, false, 13667- 0x0p+0, false, 13668- 0x8p-152, false, 13669- false, 13670- 0x0p+0, false, 13671- 0x4p-1076, false, 13672- 0x0p+0, false, 13673- 0x4p-1076, false, 13674- false, 13675- 0x2p-1076, false, 13676- 0x2p-1076, false, 13677- 0x2p-1076, false, 13678- 0x2.0000000000000004p-1076, false, 13679- false, 13680- 0x2p-1076, false, 13681- 0x2p-1076, false, 13682- 0x2p-1076, false, 13683- 0x2.0000000000000004p-1076, false, 13684- false, 13685- 0x0p+0, false, 13686- 0x4p-1076, false, 13687- 0x0p+0, false, 13688- 0x4p-1076, false, 13689- false, 13690- 0x2p-1076, false, 13691- 0x2p-1076, false, 13692- 0x2p-1076, false, 13693- 0x2.0000000000000000000000000002p-1076, false), 13694+ 0x0p+0, false, true, 13695+ 0x0p+0, false, true, 13696+ 0x0p+0, false, true, 13697+ 0x8p-152, false, true, 13698+ false, 13699+ 0x0p+0, false, true, 13700+ 0x4p-1076, false, true, 13701+ 0x0p+0, false, true, 13702+ 0x4p-1076, false, true, 13703+ false, 13704+ 0x2p-1076, false, false, 13705+ 0x2p-1076, false, false, 13706+ 0x2p-1076, false, false, 13707+ 0x2.0000000000000004p-1076, false, false, 13708+ false, 13709+ 0x2p-1076, false, false, 13710+ 0x2p-1076, false, false, 13711+ 0x2p-1076, false, false, 13712+ 0x2.0000000000000004p-1076, false, false, 13713+ false, 13714+ 0x0p+0, false, true, 13715+ 0x4p-1076, false, true, 13716+ 0x0p+0, false, true, 13717+ 0x4p-1076, false, true, 13718+ false, 13719+ 0x2p-1076, false, false, 13720+ 0x2p-1076, false, false, 13721+ 0x2p-1076, false, false, 13722+ 0x2.0000000000000000000000000002p-1076, false, false), 13723 TEST ("-2.470328229206232720882843964341106861825299013071623822127" 13724 "928412503377536351043759326499181808179961898982823477228588" 13725 "654633283551779698981993873980053909390631503565951557022639" 13726@@ -7464,35 +7464,35 @@ static const struct test tests[] = { 13727 "477918694866799496832404970582102851318545139621383772282614" 13728 "5437693412532098591327667236328124e-324", 13729 false, 13730- -0x8p-152, false, 13731- -0x0p+0, false, 13732- -0x0p+0, false, 13733- -0x0p+0, false, 13734- false, 13735- -0x4p-1076, false, 13736- -0x0p+0, false, 13737- -0x0p+0, false, 13738- -0x0p+0, false, 13739- false, 13740- -0x2p-1076, false, 13741- -0x2p-1076, false, 13742- -0x1.fffffffffffffffep-1076, false, 13743- -0x1.fffffffffffffffep-1076, false, 13744- false, 13745- -0x2p-1076, false, 13746- -0x2p-1076, false, 13747- -0x1.fffffffffffffffep-1076, false, 13748- -0x1.fffffffffffffffep-1076, false, 13749- false, 13750- -0x4p-1076, false, 13751- -0x0p+0, false, 13752- -0x0p+0, false, 13753- -0x0p+0, false, 13754- false, 13755- -0x2p-1076, false, 13756- -0x2p-1076, false, 13757- -0x1.ffffffffffffffffffffffffffffp-1076, false, 13758- -0x1.ffffffffffffffffffffffffffffp-1076, false), 13759+ -0x8p-152, false, true, 13760+ -0x0p+0, false, true, 13761+ -0x0p+0, false, true, 13762+ -0x0p+0, false, true, 13763+ false, 13764+ -0x4p-1076, false, true, 13765+ -0x0p+0, false, true, 13766+ -0x0p+0, false, true, 13767+ -0x0p+0, false, true, 13768+ false, 13769+ -0x2p-1076, false, false, 13770+ -0x2p-1076, false, false, 13771+ -0x1.fffffffffffffffep-1076, false, false, 13772+ -0x1.fffffffffffffffep-1076, false, false, 13773+ false, 13774+ -0x2p-1076, false, false, 13775+ -0x2p-1076, false, false, 13776+ -0x1.fffffffffffffffep-1076, false, false, 13777+ -0x1.fffffffffffffffep-1076, false, false, 13778+ false, 13779+ -0x4p-1076, false, true, 13780+ -0x0p+0, false, true, 13781+ -0x0p+0, false, true, 13782+ -0x0p+0, false, true, 13783+ false, 13784+ -0x2p-1076, false, false, 13785+ -0x2p-1076, false, false, 13786+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false, 13787+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false), 13788 TEST ("-2.470328229206232720882843964341106861825299013071623822127" 13789 "928412503377536351043759326499181808179961898982823477228588" 13790 "654633283551779698981993873980053909390631503565951557022639" 13791@@ -7507,35 +7507,35 @@ static const struct test tests[] = { 13792 "477918694866799496832404970582102851318545139621383772282614" 13793 "5437693412532098591327667236328125e-324", 13794 false, 13795- -0x8p-152, false, 13796- -0x0p+0, false, 13797- -0x0p+0, false, 13798- -0x0p+0, false, 13799- false, 13800- -0x4p-1076, false, 13801- -0x0p+0, false, 13802- -0x0p+0, false, 13803- -0x0p+0, false, 13804- true, 13805- -0x2p-1076, false, 13806- -0x2p-1076, false, 13807- -0x2p-1076, false, 13808- -0x2p-1076, false, 13809- true, 13810- -0x2p-1076, false, 13811- -0x2p-1076, false, 13812- -0x2p-1076, false, 13813- -0x2p-1076, false, 13814- false, 13815- -0x4p-1076, false, 13816- -0x0p+0, false, 13817- -0x0p+0, false, 13818- -0x0p+0, false, 13819- true, 13820- -0x2p-1076, false, 13821- -0x2p-1076, false, 13822- -0x2p-1076, false, 13823- -0x2p-1076, false), 13824+ -0x8p-152, false, true, 13825+ -0x0p+0, false, true, 13826+ -0x0p+0, false, true, 13827+ -0x0p+0, false, true, 13828+ false, 13829+ -0x4p-1076, false, true, 13830+ -0x0p+0, false, true, 13831+ -0x0p+0, false, true, 13832+ -0x0p+0, false, true, 13833+ true, 13834+ -0x2p-1076, false, false, 13835+ -0x2p-1076, false, false, 13836+ -0x2p-1076, false, false, 13837+ -0x2p-1076, false, false, 13838+ true, 13839+ -0x2p-1076, false, false, 13840+ -0x2p-1076, false, false, 13841+ -0x2p-1076, false, false, 13842+ -0x2p-1076, false, false, 13843+ false, 13844+ -0x4p-1076, false, true, 13845+ -0x0p+0, false, true, 13846+ -0x0p+0, false, true, 13847+ -0x0p+0, false, true, 13848+ true, 13849+ -0x2p-1076, false, false, 13850+ -0x2p-1076, false, false, 13851+ -0x2p-1076, false, false, 13852+ -0x2p-1076, false, false), 13853 TEST ("-2.470328229206232720882843964341106861825299013071623822127" 13854 "928412503377536351043759326499181808179961898982823477228588" 13855 "654633283551779698981993873980053909390631503565951557022639" 13856@@ -7550,35 +7550,35 @@ static const struct test tests[] = { 13857 "477918694866799496832404970582102851318545139621383772282614" 13858 "5437693412532098591327667236328126e-324", 13859 false, 13860- -0x8p-152, false, 13861- -0x0p+0, false, 13862- -0x0p+0, false, 13863- -0x0p+0, false, 13864- false, 13865- -0x4p-1076, false, 13866- -0x4p-1076, false, 13867- -0x0p+0, false, 13868- -0x0p+0, false, 13869- false, 13870- -0x2.0000000000000004p-1076, false, 13871- -0x2p-1076, false, 13872- -0x2p-1076, false, 13873- -0x2p-1076, false, 13874- false, 13875- -0x2.0000000000000004p-1076, false, 13876- -0x2p-1076, false, 13877- -0x2p-1076, false, 13878- -0x2p-1076, false, 13879- false, 13880- -0x4p-1076, false, 13881- -0x4p-1076, false, 13882- -0x0p+0, false, 13883- -0x0p+0, false, 13884- false, 13885- -0x2.0000000000000000000000000002p-1076, false, 13886- -0x2p-1076, false, 13887- -0x2p-1076, false, 13888- -0x2p-1076, false), 13889+ -0x8p-152, false, true, 13890+ -0x0p+0, false, true, 13891+ -0x0p+0, false, true, 13892+ -0x0p+0, false, true, 13893+ false, 13894+ -0x4p-1076, false, true, 13895+ -0x4p-1076, false, true, 13896+ -0x0p+0, false, true, 13897+ -0x0p+0, false, true, 13898+ false, 13899+ -0x2.0000000000000004p-1076, false, false, 13900+ -0x2p-1076, false, false, 13901+ -0x2p-1076, false, false, 13902+ -0x2p-1076, false, false, 13903+ false, 13904+ -0x2.0000000000000004p-1076, false, false, 13905+ -0x2p-1076, false, false, 13906+ -0x2p-1076, false, false, 13907+ -0x2p-1076, false, false, 13908+ false, 13909+ -0x4p-1076, false, true, 13910+ -0x4p-1076, false, true, 13911+ -0x0p+0, false, true, 13912+ -0x0p+0, false, true, 13913+ false, 13914+ -0x2.0000000000000000000000000002p-1076, false, false, 13915+ -0x2p-1076, false, false, 13916+ -0x2p-1076, false, false, 13917+ -0x2p-1076, false, false), 13918 TEST ("1.8225997659412373012642029668097099081995254078467816718604" 13919 "902435141858443166988684047803543129136025986236736736017655" 13920 "509834928163110160849867540377949045027419112905889658392846" 13921@@ -7772,35 +7772,35 @@ static const struct test tests[] = { 13922 "622089641993900896756734276531931450266972752637997248151974" 13923 "2277811246822238899767398834228515624e-4951", 13924 false, 13925- 0x0p+0, false, 13926- 0x0p+0, false, 13927- 0x0p+0, false, 13928- 0x8p-152, false, 13929- false, 13930- 0x0p+0, false, 13931- 0x0p+0, false, 13932- 0x0p+0, false, 13933- 0x4p-1076, false, 13934- false, 13935- 0x0p+0, false, 13936- 0x0p+0, false, 13937- 0x0p+0, false, 13938- 0x8p-16448, false, 13939- false, 13940- 0x0p+0, false, 13941- 0x4p-16448, false, 13942- 0x0p+0, false, 13943- 0x4p-16448, false, 13944- false, 13945- 0x0p+0, false, 13946- 0x0p+0, false, 13947- 0x0p+0, false, 13948- 0x4p-1076, false, 13949- false, 13950- 0x3.fffffffffffcp-16448, false, 13951- 0x4p-16448, false, 13952- 0x3.fffffffffffcp-16448, false, 13953- 0x4p-16448, false), 13954+ 0x0p+0, false, true, 13955+ 0x0p+0, false, true, 13956+ 0x0p+0, false, true, 13957+ 0x8p-152, false, true, 13958+ false, 13959+ 0x0p+0, false, true, 13960+ 0x0p+0, false, true, 13961+ 0x0p+0, false, true, 13962+ 0x4p-1076, false, true, 13963+ false, 13964+ 0x0p+0, false, true, 13965+ 0x0p+0, false, true, 13966+ 0x0p+0, false, true, 13967+ 0x8p-16448, false, true, 13968+ false, 13969+ 0x0p+0, false, true, 13970+ 0x4p-16448, false, true, 13971+ 0x0p+0, false, true, 13972+ 0x4p-16448, false, true, 13973+ false, 13974+ 0x0p+0, false, true, 13975+ 0x0p+0, false, true, 13976+ 0x0p+0, false, true, 13977+ 0x4p-1076, false, true, 13978+ false, 13979+ 0x3.fffffffffffcp-16448, false, true, 13980+ 0x4p-16448, false, true, 13981+ 0x3.fffffffffffcp-16448, false, true, 13982+ 0x4p-16448, false, true), 13983 TEST ("1.8225997659412373012642029668097099081995254078467816718604" 13984 "902435141858443166988684047803543129136025986236736736017655" 13985 "509834928163110160849867540377949045027419112905889658392846" 13986@@ -7994,35 +7994,35 @@ static const struct test tests[] = { 13987 "622089641993900896756734276531931450266972752637997248151974" 13988 "2277811246822238899767398834228515625e-4951", 13989 false, 13990- 0x0p+0, false, 13991- 0x0p+0, false, 13992- 0x0p+0, false, 13993- 0x8p-152, false, 13994- false, 13995- 0x0p+0, false, 13996- 0x0p+0, false, 13997- 0x0p+0, false, 13998- 0x4p-1076, false, 13999- false, 14000- 0x0p+0, false, 14001- 0x0p+0, false, 14002- 0x0p+0, false, 14003- 0x8p-16448, false, 14004- true, 14005- 0x4p-16448, false, 14006- 0x4p-16448, false, 14007- 0x4p-16448, false, 14008- 0x4p-16448, false, 14009- false, 14010- 0x0p+0, false, 14011- 0x0p+0, false, 14012- 0x0p+0, false, 14013- 0x4p-1076, false, 14014- true, 14015- 0x4p-16448, false, 14016- 0x4p-16448, false, 14017- 0x4p-16448, false, 14018- 0x4p-16448, false), 14019+ 0x0p+0, false, true, 14020+ 0x0p+0, false, true, 14021+ 0x0p+0, false, true, 14022+ 0x8p-152, false, true, 14023+ false, 14024+ 0x0p+0, false, true, 14025+ 0x0p+0, false, true, 14026+ 0x0p+0, false, true, 14027+ 0x4p-1076, false, true, 14028+ false, 14029+ 0x0p+0, false, true, 14030+ 0x0p+0, false, true, 14031+ 0x0p+0, false, true, 14032+ 0x8p-16448, false, true, 14033+ true, 14034+ 0x4p-16448, false, false, 14035+ 0x4p-16448, false, false, 14036+ 0x4p-16448, false, false, 14037+ 0x4p-16448, false, false, 14038+ false, 14039+ 0x0p+0, false, true, 14040+ 0x0p+0, false, true, 14041+ 0x0p+0, false, true, 14042+ 0x4p-1076, false, true, 14043+ true, 14044+ 0x4p-16448, false, false, 14045+ 0x4p-16448, false, false, 14046+ 0x4p-16448, false, false, 14047+ 0x4p-16448, false, false), 14048 TEST ("1.8225997659412373012642029668097099081995254078467816718604" 14049 "902435141858443166988684047803543129136025986236736736017655" 14050 "509834928163110160849867540377949045027419112905889658392846" 14051@@ -8216,35 +8216,35 @@ static const struct test tests[] = { 14052 "622089641993900896756734276531931450266972752637997248151974" 14053 "2277811246822238899767398834228515626e-4951", 14054 false, 14055- 0x0p+0, false, 14056- 0x0p+0, false, 14057- 0x0p+0, false, 14058- 0x8p-152, false, 14059- false, 14060- 0x0p+0, false, 14061- 0x0p+0, false, 14062- 0x0p+0, false, 14063- 0x4p-1076, false, 14064- false, 14065- 0x0p+0, false, 14066- 0x8p-16448, false, 14067- 0x0p+0, false, 14068- 0x8p-16448, false, 14069- false, 14070- 0x4p-16448, false, 14071- 0x4p-16448, false, 14072- 0x4p-16448, false, 14073- 0x8p-16448, false, 14074- false, 14075- 0x0p+0, false, 14076- 0x0p+0, false, 14077- 0x0p+0, false, 14078- 0x4p-1076, false, 14079- false, 14080- 0x4p-16448, false, 14081- 0x4p-16448, false, 14082- 0x4p-16448, false, 14083- 0x4.000000000004p-16448, false), 14084+ 0x0p+0, false, true, 14085+ 0x0p+0, false, true, 14086+ 0x0p+0, false, true, 14087+ 0x8p-152, false, true, 14088+ false, 14089+ 0x0p+0, false, true, 14090+ 0x0p+0, false, true, 14091+ 0x0p+0, false, true, 14092+ 0x4p-1076, false, true, 14093+ false, 14094+ 0x0p+0, false, true, 14095+ 0x8p-16448, false, true, 14096+ 0x0p+0, false, true, 14097+ 0x8p-16448, false, true, 14098+ false, 14099+ 0x4p-16448, false, true, 14100+ 0x4p-16448, false, true, 14101+ 0x4p-16448, false, true, 14102+ 0x8p-16448, false, true, 14103+ false, 14104+ 0x0p+0, false, true, 14105+ 0x0p+0, false, true, 14106+ 0x0p+0, false, true, 14107+ 0x4p-1076, false, true, 14108+ false, 14109+ 0x4p-16448, false, true, 14110+ 0x4p-16448, false, true, 14111+ 0x4p-16448, false, true, 14112+ 0x4.000000000004p-16448, false, true), 14113 TEST ("-1.822599765941237301264202966809709908199525407846781671860" 14114 "490243514185844316698868404780354312913602598623673673601765" 14115 "550983492816311016084986754037794904502741911290588965839284" 14116@@ -8438,35 +8438,35 @@ static const struct test tests[] = { 14117 "462208964199390089675673427653193145026697275263799724815197" 14118 "42277811246822238899767398834228515624e-4951", 14119 false, 14120- -0x8p-152, false, 14121- -0x0p+0, false, 14122- -0x0p+0, false, 14123- -0x0p+0, false, 14124- false, 14125- -0x4p-1076, false, 14126- -0x0p+0, false, 14127- -0x0p+0, false, 14128- -0x0p+0, false, 14129- false, 14130- -0x8p-16448, false, 14131- -0x0p+0, false, 14132- -0x0p+0, false, 14133- -0x0p+0, false, 14134- false, 14135- -0x4p-16448, false, 14136- -0x4p-16448, false, 14137- -0x0p+0, false, 14138- -0x0p+0, false, 14139- false, 14140- -0x4p-1076, false, 14141- -0x0p+0, false, 14142- -0x0p+0, false, 14143- -0x0p+0, false, 14144- false, 14145- -0x4p-16448, false, 14146- -0x4p-16448, false, 14147- -0x3.fffffffffffcp-16448, false, 14148- -0x3.fffffffffffcp-16448, false), 14149+ -0x8p-152, false, true, 14150+ -0x0p+0, false, true, 14151+ -0x0p+0, false, true, 14152+ -0x0p+0, false, true, 14153+ false, 14154+ -0x4p-1076, false, true, 14155+ -0x0p+0, false, true, 14156+ -0x0p+0, false, true, 14157+ -0x0p+0, false, true, 14158+ false, 14159+ -0x8p-16448, false, true, 14160+ -0x0p+0, false, true, 14161+ -0x0p+0, false, true, 14162+ -0x0p+0, false, true, 14163+ false, 14164+ -0x4p-16448, false, true, 14165+ -0x4p-16448, false, true, 14166+ -0x0p+0, false, true, 14167+ -0x0p+0, false, true, 14168+ false, 14169+ -0x4p-1076, false, true, 14170+ -0x0p+0, false, true, 14171+ -0x0p+0, false, true, 14172+ -0x0p+0, false, true, 14173+ false, 14174+ -0x4p-16448, false, true, 14175+ -0x4p-16448, false, true, 14176+ -0x3.fffffffffffcp-16448, false, true, 14177+ -0x3.fffffffffffcp-16448, false, true), 14178 TEST ("-1.822599765941237301264202966809709908199525407846781671860" 14179 "490243514185844316698868404780354312913602598623673673601765" 14180 "550983492816311016084986754037794904502741911290588965839284" 14181@@ -8660,35 +8660,35 @@ static const struct test tests[] = { 14182 "462208964199390089675673427653193145026697275263799724815197" 14183 "42277811246822238899767398834228515625e-4951", 14184 false, 14185- -0x8p-152, false, 14186- -0x0p+0, false, 14187- -0x0p+0, false, 14188- -0x0p+0, false, 14189- false, 14190- -0x4p-1076, false, 14191- -0x0p+0, false, 14192- -0x0p+0, false, 14193- -0x0p+0, false, 14194- false, 14195- -0x8p-16448, false, 14196- -0x0p+0, false, 14197- -0x0p+0, false, 14198- -0x0p+0, false, 14199- true, 14200- -0x4p-16448, false, 14201- -0x4p-16448, false, 14202- -0x4p-16448, false, 14203- -0x4p-16448, false, 14204- false, 14205- -0x4p-1076, false, 14206- -0x0p+0, false, 14207- -0x0p+0, false, 14208- -0x0p+0, false, 14209- true, 14210- -0x4p-16448, false, 14211- -0x4p-16448, false, 14212- -0x4p-16448, false, 14213- -0x4p-16448, false), 14214+ -0x8p-152, false, true, 14215+ -0x0p+0, false, true, 14216+ -0x0p+0, false, true, 14217+ -0x0p+0, false, true, 14218+ false, 14219+ -0x4p-1076, false, true, 14220+ -0x0p+0, false, true, 14221+ -0x0p+0, false, true, 14222+ -0x0p+0, false, true, 14223+ false, 14224+ -0x8p-16448, false, true, 14225+ -0x0p+0, false, true, 14226+ -0x0p+0, false, true, 14227+ -0x0p+0, false, true, 14228+ true, 14229+ -0x4p-16448, false, false, 14230+ -0x4p-16448, false, false, 14231+ -0x4p-16448, false, false, 14232+ -0x4p-16448, false, false, 14233+ false, 14234+ -0x4p-1076, false, true, 14235+ -0x0p+0, false, true, 14236+ -0x0p+0, false, true, 14237+ -0x0p+0, false, true, 14238+ true, 14239+ -0x4p-16448, false, false, 14240+ -0x4p-16448, false, false, 14241+ -0x4p-16448, false, false, 14242+ -0x4p-16448, false, false), 14243 TEST ("-1.822599765941237301264202966809709908199525407846781671860" 14244 "490243514185844316698868404780354312913602598623673673601765" 14245 "550983492816311016084986754037794904502741911290588965839284" 14246@@ -8882,35 +8882,35 @@ static const struct test tests[] = { 14247 "462208964199390089675673427653193145026697275263799724815197" 14248 "42277811246822238899767398834228515626e-4951", 14249 false, 14250- -0x8p-152, false, 14251- -0x0p+0, false, 14252- -0x0p+0, false, 14253- -0x0p+0, false, 14254- false, 14255- -0x4p-1076, false, 14256- -0x0p+0, false, 14257- -0x0p+0, false, 14258- -0x0p+0, false, 14259- false, 14260- -0x8p-16448, false, 14261- -0x8p-16448, false, 14262- -0x0p+0, false, 14263- -0x0p+0, false, 14264- false, 14265- -0x8p-16448, false, 14266- -0x4p-16448, false, 14267- -0x4p-16448, false, 14268- -0x4p-16448, false, 14269- false, 14270- -0x4p-1076, false, 14271- -0x0p+0, false, 14272- -0x0p+0, false, 14273- -0x0p+0, false, 14274- false, 14275- -0x4.000000000004p-16448, false, 14276- -0x4p-16448, false, 14277- -0x4p-16448, false, 14278- -0x4p-16448, false), 14279+ -0x8p-152, false, true, 14280+ -0x0p+0, false, true, 14281+ -0x0p+0, false, true, 14282+ -0x0p+0, false, true, 14283+ false, 14284+ -0x4p-1076, false, true, 14285+ -0x0p+0, false, true, 14286+ -0x0p+0, false, true, 14287+ -0x0p+0, false, true, 14288+ false, 14289+ -0x8p-16448, false, true, 14290+ -0x8p-16448, false, true, 14291+ -0x0p+0, false, true, 14292+ -0x0p+0, false, true, 14293+ false, 14294+ -0x8p-16448, false, true, 14295+ -0x4p-16448, false, true, 14296+ -0x4p-16448, false, true, 14297+ -0x4p-16448, false, true, 14298+ false, 14299+ -0x4p-1076, false, true, 14300+ -0x0p+0, false, true, 14301+ -0x0p+0, false, true, 14302+ -0x0p+0, false, true, 14303+ false, 14304+ -0x4.000000000004p-16448, false, true, 14305+ -0x4p-16448, false, true, 14306+ -0x4p-16448, false, true, 14307+ -0x4p-16448, false, true), 14308 TEST ("9.1129988297061865063210148340485495409976270392339083593024" 14309 "512175709292215834943420239017715645680129931183683680088277" 14310 "549174640815550804249337701889745225137095564529448291964230" 14311@@ -9104,35 +9104,35 @@ static const struct test tests[] = { 14312 "110448209969504483783671382659657251334863763189986240759871" 14313 "1389056234111194498836994171142578124e-4952", 14314 false, 14315- 0x0p+0, false, 14316- 0x0p+0, false, 14317- 0x0p+0, false, 14318- 0x8p-152, false, 14319- false, 14320- 0x0p+0, false, 14321- 0x0p+0, false, 14322- 0x0p+0, false, 14323- 0x4p-1076, false, 14324- false, 14325- 0x0p+0, false, 14326- 0x0p+0, false, 14327- 0x0p+0, false, 14328- 0x8p-16448, false, 14329- false, 14330- 0x0p+0, false, 14331- 0x0p+0, false, 14332- 0x0p+0, false, 14333- 0x4p-16448, false, 14334- false, 14335- 0x0p+0, false, 14336- 0x0p+0, false, 14337- 0x0p+0, false, 14338- 0x4p-1076, false, 14339- false, 14340- 0x1.fffffffffffcp-16448, false, 14341- 0x2p-16448, false, 14342- 0x1.fffffffffffcp-16448, false, 14343- 0x2p-16448, false), 14344+ 0x0p+0, false, true, 14345+ 0x0p+0, false, true, 14346+ 0x0p+0, false, true, 14347+ 0x8p-152, false, true, 14348+ false, 14349+ 0x0p+0, false, true, 14350+ 0x0p+0, false, true, 14351+ 0x0p+0, false, true, 14352+ 0x4p-1076, false, true, 14353+ false, 14354+ 0x0p+0, false, true, 14355+ 0x0p+0, false, true, 14356+ 0x0p+0, false, true, 14357+ 0x8p-16448, false, true, 14358+ false, 14359+ 0x0p+0, false, true, 14360+ 0x0p+0, false, true, 14361+ 0x0p+0, false, true, 14362+ 0x4p-16448, false, true, 14363+ false, 14364+ 0x0p+0, false, true, 14365+ 0x0p+0, false, true, 14366+ 0x0p+0, false, true, 14367+ 0x4p-1076, false, true, 14368+ false, 14369+ 0x1.fffffffffffcp-16448, false, true, 14370+ 0x2p-16448, false, true, 14371+ 0x1.fffffffffffcp-16448, false, true, 14372+ 0x2p-16448, false, true), 14373 TEST ("9.1129988297061865063210148340485495409976270392339083593024" 14374 "512175709292215834943420239017715645680129931183683680088277" 14375 "549174640815550804249337701889745225137095564529448291964230" 14376@@ -9326,35 +9326,35 @@ static const struct test tests[] = { 14377 "110448209969504483783671382659657251334863763189986240759871" 14378 "1389056234111194498836994171142578125e-4952", 14379 false, 14380- 0x0p+0, false, 14381- 0x0p+0, false, 14382- 0x0p+0, false, 14383- 0x8p-152, false, 14384- false, 14385- 0x0p+0, false, 14386- 0x0p+0, false, 14387- 0x0p+0, false, 14388- 0x4p-1076, false, 14389- false, 14390- 0x0p+0, false, 14391- 0x0p+0, false, 14392- 0x0p+0, false, 14393- 0x8p-16448, false, 14394- false, 14395- 0x0p+0, false, 14396- 0x0p+0, false, 14397- 0x0p+0, false, 14398- 0x4p-16448, false, 14399- false, 14400- 0x0p+0, false, 14401- 0x0p+0, false, 14402- 0x0p+0, false, 14403- 0x4p-1076, false, 14404- true, 14405- 0x2p-16448, false, 14406- 0x2p-16448, false, 14407- 0x2p-16448, false, 14408- 0x2p-16448, false), 14409+ 0x0p+0, false, true, 14410+ 0x0p+0, false, true, 14411+ 0x0p+0, false, true, 14412+ 0x8p-152, false, true, 14413+ false, 14414+ 0x0p+0, false, true, 14415+ 0x0p+0, false, true, 14416+ 0x0p+0, false, true, 14417+ 0x4p-1076, false, true, 14418+ false, 14419+ 0x0p+0, false, true, 14420+ 0x0p+0, false, true, 14421+ 0x0p+0, false, true, 14422+ 0x8p-16448, false, true, 14423+ false, 14424+ 0x0p+0, false, true, 14425+ 0x0p+0, false, true, 14426+ 0x0p+0, false, true, 14427+ 0x4p-16448, false, true, 14428+ false, 14429+ 0x0p+0, false, true, 14430+ 0x0p+0, false, true, 14431+ 0x0p+0, false, true, 14432+ 0x4p-1076, false, true, 14433+ true, 14434+ 0x2p-16448, false, false, 14435+ 0x2p-16448, false, false, 14436+ 0x2p-16448, false, false, 14437+ 0x2p-16448, false, false), 14438 TEST ("9.1129988297061865063210148340485495409976270392339083593024" 14439 "512175709292215834943420239017715645680129931183683680088277" 14440 "549174640815550804249337701889745225137095564529448291964230" 14441@@ -9548,35 +9548,35 @@ static const struct test tests[] = { 14442 "110448209969504483783671382659657251334863763189986240759871" 14443 "1389056234111194498836994171142578126e-4952", 14444 false, 14445- 0x0p+0, false, 14446- 0x0p+0, false, 14447- 0x0p+0, false, 14448- 0x8p-152, false, 14449- false, 14450- 0x0p+0, false, 14451- 0x0p+0, false, 14452- 0x0p+0, false, 14453- 0x4p-1076, false, 14454- false, 14455- 0x0p+0, false, 14456- 0x0p+0, false, 14457- 0x0p+0, false, 14458- 0x8p-16448, false, 14459- false, 14460- 0x0p+0, false, 14461- 0x4p-16448, false, 14462- 0x0p+0, false, 14463- 0x4p-16448, false, 14464- false, 14465- 0x0p+0, false, 14466- 0x0p+0, false, 14467- 0x0p+0, false, 14468- 0x4p-1076, false, 14469- false, 14470- 0x2p-16448, false, 14471- 0x2p-16448, false, 14472- 0x2p-16448, false, 14473- 0x2.000000000004p-16448, false), 14474+ 0x0p+0, false, true, 14475+ 0x0p+0, false, true, 14476+ 0x0p+0, false, true, 14477+ 0x8p-152, false, true, 14478+ false, 14479+ 0x0p+0, false, true, 14480+ 0x0p+0, false, true, 14481+ 0x0p+0, false, true, 14482+ 0x4p-1076, false, true, 14483+ false, 14484+ 0x0p+0, false, true, 14485+ 0x0p+0, false, true, 14486+ 0x0p+0, false, true, 14487+ 0x8p-16448, false, true, 14488+ false, 14489+ 0x0p+0, false, true, 14490+ 0x4p-16448, false, true, 14491+ 0x0p+0, false, true, 14492+ 0x4p-16448, false, true, 14493+ false, 14494+ 0x0p+0, false, true, 14495+ 0x0p+0, false, true, 14496+ 0x0p+0, false, true, 14497+ 0x4p-1076, false, true, 14498+ false, 14499+ 0x2p-16448, false, true, 14500+ 0x2p-16448, false, true, 14501+ 0x2p-16448, false, true, 14502+ 0x2.000000000004p-16448, false, true), 14503 TEST ("-9.112998829706186506321014834048549540997627039233908359302" 14504 "451217570929221583494342023901771564568012993118368368008827" 14505 "754917464081555080424933770188974522513709556452944829196423" 14506@@ -9770,35 +9770,35 @@ static const struct test tests[] = { 14507 "311044820996950448378367138265965725133486376318998624075987" 14508 "11389056234111194498836994171142578124e-4952", 14509 false, 14510- -0x8p-152, false, 14511- -0x0p+0, false, 14512- -0x0p+0, false, 14513- -0x0p+0, false, 14514- false, 14515- -0x4p-1076, false, 14516- -0x0p+0, false, 14517- -0x0p+0, false, 14518- -0x0p+0, false, 14519- false, 14520- -0x8p-16448, false, 14521- -0x0p+0, false, 14522- -0x0p+0, false, 14523- -0x0p+0, false, 14524- false, 14525- -0x4p-16448, false, 14526- -0x0p+0, false, 14527- -0x0p+0, false, 14528- -0x0p+0, false, 14529- false, 14530- -0x4p-1076, false, 14531- -0x0p+0, false, 14532- -0x0p+0, false, 14533- -0x0p+0, false, 14534- false, 14535- -0x2p-16448, false, 14536- -0x2p-16448, false, 14537- -0x1.fffffffffffcp-16448, false, 14538- -0x1.fffffffffffcp-16448, false), 14539+ -0x8p-152, false, true, 14540+ -0x0p+0, false, true, 14541+ -0x0p+0, false, true, 14542+ -0x0p+0, false, true, 14543+ false, 14544+ -0x4p-1076, false, true, 14545+ -0x0p+0, false, true, 14546+ -0x0p+0, false, true, 14547+ -0x0p+0, false, true, 14548+ false, 14549+ -0x8p-16448, false, true, 14550+ -0x0p+0, false, true, 14551+ -0x0p+0, false, true, 14552+ -0x0p+0, false, true, 14553+ false, 14554+ -0x4p-16448, false, true, 14555+ -0x0p+0, false, true, 14556+ -0x0p+0, false, true, 14557+ -0x0p+0, false, true, 14558+ false, 14559+ -0x4p-1076, false, true, 14560+ -0x0p+0, false, true, 14561+ -0x0p+0, false, true, 14562+ -0x0p+0, false, true, 14563+ false, 14564+ -0x2p-16448, false, true, 14565+ -0x2p-16448, false, true, 14566+ -0x1.fffffffffffcp-16448, false, true, 14567+ -0x1.fffffffffffcp-16448, false, true), 14568 TEST ("-9.112998829706186506321014834048549540997627039233908359302" 14569 "451217570929221583494342023901771564568012993118368368008827" 14570 "754917464081555080424933770188974522513709556452944829196423" 14571@@ -9992,35 +9992,35 @@ static const struct test tests[] = { 14572 "311044820996950448378367138265965725133486376318998624075987" 14573 "11389056234111194498836994171142578125e-4952", 14574 false, 14575- -0x8p-152, false, 14576- -0x0p+0, false, 14577- -0x0p+0, false, 14578- -0x0p+0, false, 14579- false, 14580- -0x4p-1076, false, 14581- -0x0p+0, false, 14582- -0x0p+0, false, 14583- -0x0p+0, false, 14584- false, 14585- -0x8p-16448, false, 14586- -0x0p+0, false, 14587- -0x0p+0, false, 14588- -0x0p+0, false, 14589- false, 14590- -0x4p-16448, false, 14591- -0x0p+0, false, 14592- -0x0p+0, false, 14593- -0x0p+0, false, 14594- false, 14595- -0x4p-1076, false, 14596- -0x0p+0, false, 14597- -0x0p+0, false, 14598- -0x0p+0, false, 14599- true, 14600- -0x2p-16448, false, 14601- -0x2p-16448, false, 14602- -0x2p-16448, false, 14603- -0x2p-16448, false), 14604+ -0x8p-152, false, true, 14605+ -0x0p+0, false, true, 14606+ -0x0p+0, false, true, 14607+ -0x0p+0, false, true, 14608+ false, 14609+ -0x4p-1076, false, true, 14610+ -0x0p+0, false, true, 14611+ -0x0p+0, false, true, 14612+ -0x0p+0, false, true, 14613+ false, 14614+ -0x8p-16448, false, true, 14615+ -0x0p+0, false, true, 14616+ -0x0p+0, false, true, 14617+ -0x0p+0, false, true, 14618+ false, 14619+ -0x4p-16448, false, true, 14620+ -0x0p+0, false, true, 14621+ -0x0p+0, false, true, 14622+ -0x0p+0, false, true, 14623+ false, 14624+ -0x4p-1076, false, true, 14625+ -0x0p+0, false, true, 14626+ -0x0p+0, false, true, 14627+ -0x0p+0, false, true, 14628+ true, 14629+ -0x2p-16448, false, false, 14630+ -0x2p-16448, false, false, 14631+ -0x2p-16448, false, false, 14632+ -0x2p-16448, false, false), 14633 TEST ("-9.112998829706186506321014834048549540997627039233908359302" 14634 "451217570929221583494342023901771564568012993118368368008827" 14635 "754917464081555080424933770188974522513709556452944829196423" 14636@@ -10214,35 +10214,35 @@ static const struct test tests[] = { 14637 "311044820996950448378367138265965725133486376318998624075987" 14638 "11389056234111194498836994171142578126e-4952", 14639 false, 14640- -0x8p-152, false, 14641- -0x0p+0, false, 14642- -0x0p+0, false, 14643- -0x0p+0, false, 14644- false, 14645- -0x4p-1076, false, 14646- -0x0p+0, false, 14647- -0x0p+0, false, 14648- -0x0p+0, false, 14649- false, 14650- -0x8p-16448, false, 14651- -0x0p+0, false, 14652- -0x0p+0, false, 14653- -0x0p+0, false, 14654- false, 14655- -0x4p-16448, false, 14656- -0x4p-16448, false, 14657- -0x0p+0, false, 14658- -0x0p+0, false, 14659- false, 14660- -0x4p-1076, false, 14661- -0x0p+0, false, 14662- -0x0p+0, false, 14663- -0x0p+0, false, 14664- false, 14665- -0x2.000000000004p-16448, false, 14666- -0x2p-16448, false, 14667- -0x2p-16448, false, 14668- -0x2p-16448, false), 14669+ -0x8p-152, false, true, 14670+ -0x0p+0, false, true, 14671+ -0x0p+0, false, true, 14672+ -0x0p+0, false, true, 14673+ false, 14674+ -0x4p-1076, false, true, 14675+ -0x0p+0, false, true, 14676+ -0x0p+0, false, true, 14677+ -0x0p+0, false, true, 14678+ false, 14679+ -0x8p-16448, false, true, 14680+ -0x0p+0, false, true, 14681+ -0x0p+0, false, true, 14682+ -0x0p+0, false, true, 14683+ false, 14684+ -0x4p-16448, false, true, 14685+ -0x4p-16448, false, true, 14686+ -0x0p+0, false, true, 14687+ -0x0p+0, false, true, 14688+ false, 14689+ -0x4p-1076, false, true, 14690+ -0x0p+0, false, true, 14691+ -0x0p+0, false, true, 14692+ -0x0p+0, false, true, 14693+ false, 14694+ -0x2.000000000004p-16448, false, true, 14695+ -0x2p-16448, false, true, 14696+ -0x2p-16448, false, true, 14697+ -0x2p-16448, false, true), 14698 TEST ("3.2375875597190125554622194791138232762497846690173405048449" 14699 "421945985197700620596855088357456383249701279390707384240598" 14700 "382936099431912710233425550359863089915213963553756674672083" 14701@@ -10437,35 +10437,35 @@ static const struct test tests[] = { 14702 "182358152808745703724362178773168996492870519432472065091133" 14703 "11767578124e-4966", 14704 false, 14705- 0x0p+0, false, 14706- 0x0p+0, false, 14707- 0x0p+0, false, 14708- 0x8p-152, false, 14709- false, 14710- 0x0p+0, false, 14711- 0x0p+0, false, 14712- 0x0p+0, false, 14713- 0x4p-1076, false, 14714- false, 14715- 0x0p+0, false, 14716- 0x0p+0, false, 14717- 0x0p+0, false, 14718- 0x8p-16448, false, 14719- false, 14720- 0x0p+0, false, 14721- 0x0p+0, false, 14722- 0x0p+0, false, 14723- 0x4p-16448, false, 14724- false, 14725- 0x0p+0, false, 14726- 0x0p+0, false, 14727- 0x0p+0, false, 14728- 0x4p-1076, false, 14729- false, 14730- 0x0p+0, false, 14731- 0x0p+0, false, 14732- 0x0p+0, false, 14733- 0x4p-16496, false), 14734+ 0x0p+0, false, true, 14735+ 0x0p+0, false, true, 14736+ 0x0p+0, false, true, 14737+ 0x8p-152, false, true, 14738+ false, 14739+ 0x0p+0, false, true, 14740+ 0x0p+0, false, true, 14741+ 0x0p+0, false, true, 14742+ 0x4p-1076, false, true, 14743+ false, 14744+ 0x0p+0, false, true, 14745+ 0x0p+0, false, true, 14746+ 0x0p+0, false, true, 14747+ 0x8p-16448, false, true, 14748+ false, 14749+ 0x0p+0, false, true, 14750+ 0x0p+0, false, true, 14751+ 0x0p+0, false, true, 14752+ 0x4p-16448, false, true, 14753+ false, 14754+ 0x0p+0, false, true, 14755+ 0x0p+0, false, true, 14756+ 0x0p+0, false, true, 14757+ 0x4p-1076, false, true, 14758+ false, 14759+ 0x0p+0, false, true, 14760+ 0x0p+0, false, true, 14761+ 0x0p+0, false, true, 14762+ 0x4p-16496, false, true), 14763 TEST ("3.2375875597190125554622194791138232762497846690173405048449" 14764 "421945985197700620596855088357456383249701279390707384240598" 14765 "382936099431912710233425550359863089915213963553756674672083" 14766@@ -10660,35 +10660,35 @@ static const struct test tests[] = { 14767 "182358152808745703724362178773168996492870519432472065091133" 14768 "11767578125e-4966", 14769 false, 14770- 0x0p+0, false, 14771- 0x0p+0, false, 14772- 0x0p+0, false, 14773- 0x8p-152, false, 14774- false, 14775- 0x0p+0, false, 14776- 0x0p+0, false, 14777- 0x0p+0, false, 14778- 0x4p-1076, false, 14779- false, 14780- 0x0p+0, false, 14781- 0x0p+0, false, 14782- 0x0p+0, false, 14783- 0x8p-16448, false, 14784- false, 14785- 0x0p+0, false, 14786- 0x0p+0, false, 14787- 0x0p+0, false, 14788- 0x4p-16448, false, 14789- false, 14790- 0x0p+0, false, 14791- 0x0p+0, false, 14792- 0x0p+0, false, 14793- 0x4p-1076, false, 14794- false, 14795- 0x0p+0, false, 14796- 0x0p+0, false, 14797- 0x0p+0, false, 14798- 0x4p-16496, false), 14799+ 0x0p+0, false, true, 14800+ 0x0p+0, false, true, 14801+ 0x0p+0, false, true, 14802+ 0x8p-152, false, true, 14803+ false, 14804+ 0x0p+0, false, true, 14805+ 0x0p+0, false, true, 14806+ 0x0p+0, false, true, 14807+ 0x4p-1076, false, true, 14808+ false, 14809+ 0x0p+0, false, true, 14810+ 0x0p+0, false, true, 14811+ 0x0p+0, false, true, 14812+ 0x8p-16448, false, true, 14813+ false, 14814+ 0x0p+0, false, true, 14815+ 0x0p+0, false, true, 14816+ 0x0p+0, false, true, 14817+ 0x4p-16448, false, true, 14818+ false, 14819+ 0x0p+0, false, true, 14820+ 0x0p+0, false, true, 14821+ 0x0p+0, false, true, 14822+ 0x4p-1076, false, true, 14823+ false, 14824+ 0x0p+0, false, true, 14825+ 0x0p+0, false, true, 14826+ 0x0p+0, false, true, 14827+ 0x4p-16496, false, true), 14828 TEST ("3.2375875597190125554622194791138232762497846690173405048449" 14829 "421945985197700620596855088357456383249701279390707384240598" 14830 "382936099431912710233425550359863089915213963553756674672083" 14831@@ -10883,35 +10883,35 @@ static const struct test tests[] = { 14832 "182358152808745703724362178773168996492870519432472065091133" 14833 "11767578126e-4966", 14834 false, 14835- 0x0p+0, false, 14836- 0x0p+0, false, 14837- 0x0p+0, false, 14838- 0x8p-152, false, 14839- false, 14840- 0x0p+0, false, 14841- 0x0p+0, false, 14842- 0x0p+0, false, 14843- 0x4p-1076, false, 14844- false, 14845- 0x0p+0, false, 14846- 0x0p+0, false, 14847- 0x0p+0, false, 14848- 0x8p-16448, false, 14849- false, 14850- 0x0p+0, false, 14851- 0x0p+0, false, 14852- 0x0p+0, false, 14853- 0x4p-16448, false, 14854- false, 14855- 0x0p+0, false, 14856- 0x0p+0, false, 14857- 0x0p+0, false, 14858- 0x4p-1076, false, 14859- false, 14860- 0x0p+0, false, 14861- 0x4p-16496, false, 14862- 0x0p+0, false, 14863- 0x4p-16496, false), 14864+ 0x0p+0, false, true, 14865+ 0x0p+0, false, true, 14866+ 0x0p+0, false, true, 14867+ 0x8p-152, false, true, 14868+ false, 14869+ 0x0p+0, false, true, 14870+ 0x0p+0, false, true, 14871+ 0x0p+0, false, true, 14872+ 0x4p-1076, false, true, 14873+ false, 14874+ 0x0p+0, false, true, 14875+ 0x0p+0, false, true, 14876+ 0x0p+0, false, true, 14877+ 0x8p-16448, false, true, 14878+ false, 14879+ 0x0p+0, false, true, 14880+ 0x0p+0, false, true, 14881+ 0x0p+0, false, true, 14882+ 0x4p-16448, false, true, 14883+ false, 14884+ 0x0p+0, false, true, 14885+ 0x0p+0, false, true, 14886+ 0x0p+0, false, true, 14887+ 0x4p-1076, false, true, 14888+ false, 14889+ 0x0p+0, false, true, 14890+ 0x4p-16496, false, true, 14891+ 0x0p+0, false, true, 14892+ 0x4p-16496, false, true), 14893 TEST ("-3.237587559719012555462219479113823276249784669017340504844" 14894 "942194598519770062059685508835745638324970127939070738424059" 14895 "838293609943191271023342555035986308991521396355375667467208" 14896@@ -11106,35 +11106,35 @@ static const struct test tests[] = { 14897 "218235815280874570372436217877316899649287051943247206509113" 14898 "311767578124e-4966", 14899 false, 14900- -0x8p-152, false, 14901- -0x0p+0, false, 14902- -0x0p+0, false, 14903- -0x0p+0, false, 14904- false, 14905- -0x4p-1076, false, 14906- -0x0p+0, false, 14907- -0x0p+0, false, 14908- -0x0p+0, false, 14909- false, 14910- -0x8p-16448, false, 14911- -0x0p+0, false, 14912- -0x0p+0, false, 14913- -0x0p+0, false, 14914- false, 14915- -0x4p-16448, false, 14916- -0x0p+0, false, 14917- -0x0p+0, false, 14918- -0x0p+0, false, 14919- false, 14920- -0x4p-1076, false, 14921- -0x0p+0, false, 14922- -0x0p+0, false, 14923- -0x0p+0, false, 14924- false, 14925- -0x4p-16496, false, 14926- -0x0p+0, false, 14927- -0x0p+0, false, 14928- -0x0p+0, false), 14929+ -0x8p-152, false, true, 14930+ -0x0p+0, false, true, 14931+ -0x0p+0, false, true, 14932+ -0x0p+0, false, true, 14933+ false, 14934+ -0x4p-1076, false, true, 14935+ -0x0p+0, false, true, 14936+ -0x0p+0, false, true, 14937+ -0x0p+0, false, true, 14938+ false, 14939+ -0x8p-16448, false, true, 14940+ -0x0p+0, false, true, 14941+ -0x0p+0, false, true, 14942+ -0x0p+0, false, true, 14943+ false, 14944+ -0x4p-16448, false, true, 14945+ -0x0p+0, false, true, 14946+ -0x0p+0, false, true, 14947+ -0x0p+0, false, true, 14948+ false, 14949+ -0x4p-1076, false, true, 14950+ -0x0p+0, false, true, 14951+ -0x0p+0, false, true, 14952+ -0x0p+0, false, true, 14953+ false, 14954+ -0x4p-16496, false, true, 14955+ -0x0p+0, false, true, 14956+ -0x0p+0, false, true, 14957+ -0x0p+0, false, true), 14958 TEST ("-3.237587559719012555462219479113823276249784669017340504844" 14959 "942194598519770062059685508835745638324970127939070738424059" 14960 "838293609943191271023342555035986308991521396355375667467208" 14961@@ -11329,35 +11329,35 @@ static const struct test tests[] = { 14962 "218235815280874570372436217877316899649287051943247206509113" 14963 "311767578125e-4966", 14964 false, 14965- -0x8p-152, false, 14966- -0x0p+0, false, 14967- -0x0p+0, false, 14968- -0x0p+0, false, 14969- false, 14970- -0x4p-1076, false, 14971- -0x0p+0, false, 14972- -0x0p+0, false, 14973- -0x0p+0, false, 14974- false, 14975- -0x8p-16448, false, 14976- -0x0p+0, false, 14977- -0x0p+0, false, 14978- -0x0p+0, false, 14979- false, 14980- -0x4p-16448, false, 14981- -0x0p+0, false, 14982- -0x0p+0, false, 14983- -0x0p+0, false, 14984- false, 14985- -0x4p-1076, false, 14986- -0x0p+0, false, 14987- -0x0p+0, false, 14988- -0x0p+0, false, 14989- false, 14990- -0x4p-16496, false, 14991- -0x0p+0, false, 14992- -0x0p+0, false, 14993- -0x0p+0, false), 14994+ -0x8p-152, false, true, 14995+ -0x0p+0, false, true, 14996+ -0x0p+0, false, true, 14997+ -0x0p+0, false, true, 14998+ false, 14999+ -0x4p-1076, false, true, 15000+ -0x0p+0, false, true, 15001+ -0x0p+0, false, true, 15002+ -0x0p+0, false, true, 15003+ false, 15004+ -0x8p-16448, false, true, 15005+ -0x0p+0, false, true, 15006+ -0x0p+0, false, true, 15007+ -0x0p+0, false, true, 15008+ false, 15009+ -0x4p-16448, false, true, 15010+ -0x0p+0, false, true, 15011+ -0x0p+0, false, true, 15012+ -0x0p+0, false, true, 15013+ false, 15014+ -0x4p-1076, false, true, 15015+ -0x0p+0, false, true, 15016+ -0x0p+0, false, true, 15017+ -0x0p+0, false, true, 15018+ false, 15019+ -0x4p-16496, false, true, 15020+ -0x0p+0, false, true, 15021+ -0x0p+0, false, true, 15022+ -0x0p+0, false, true), 15023 TEST ("-3.237587559719012555462219479113823276249784669017340504844" 15024 "942194598519770062059685508835745638324970127939070738424059" 15025 "838293609943191271023342555035986308991521396355375667467208" 15026@@ -11552,66 +11552,66 @@ static const struct test tests[] = { 15027 "218235815280874570372436217877316899649287051943247206509113" 15028 "311767578126e-4966", 15029 false, 15030- -0x8p-152, false, 15031- -0x0p+0, false, 15032- -0x0p+0, false, 15033- -0x0p+0, false, 15034- false, 15035- -0x4p-1076, false, 15036- -0x0p+0, false, 15037- -0x0p+0, false, 15038- -0x0p+0, false, 15039- false, 15040- -0x8p-16448, false, 15041- -0x0p+0, false, 15042- -0x0p+0, false, 15043- -0x0p+0, false, 15044- false, 15045- -0x4p-16448, false, 15046- -0x0p+0, false, 15047- -0x0p+0, false, 15048- -0x0p+0, false, 15049- false, 15050- -0x4p-1076, false, 15051- -0x0p+0, false, 15052- -0x0p+0, false, 15053- -0x0p+0, false, 15054- false, 15055- -0x4p-16496, false, 15056- -0x4p-16496, false, 15057- -0x0p+0, false, 15058- -0x0p+0, false), 15059+ -0x8p-152, false, true, 15060+ -0x0p+0, false, true, 15061+ -0x0p+0, false, true, 15062+ -0x0p+0, false, true, 15063+ false, 15064+ -0x4p-1076, false, true, 15065+ -0x0p+0, false, true, 15066+ -0x0p+0, false, true, 15067+ -0x0p+0, false, true, 15068+ false, 15069+ -0x8p-16448, false, true, 15070+ -0x0p+0, false, true, 15071+ -0x0p+0, false, true, 15072+ -0x0p+0, false, true, 15073+ false, 15074+ -0x4p-16448, false, true, 15075+ -0x0p+0, false, true, 15076+ -0x0p+0, false, true, 15077+ -0x0p+0, false, true, 15078+ false, 15079+ -0x4p-1076, false, true, 15080+ -0x0p+0, false, true, 15081+ -0x0p+0, false, true, 15082+ -0x0p+0, false, true, 15083+ false, 15084+ -0x4p-16496, false, true, 15085+ -0x4p-16496, false, true, 15086+ -0x0p+0, false, true, 15087+ -0x0p+0, false, true), 15088 TEST ("340282366920938463463374607431768211455", 15089 false, 15090- 0xf.fffffp+124, false, 15091- INF, true, 15092- 0xf.fffffp+124, false, 15093- INF, true, 15094- false, 15095- 0xf.ffffffffffff8p+124, false, 15096- 0x1p+128, false, 15097- 0xf.ffffffffffff8p+124, false, 15098- 0x1p+128, false, 15099- false, 15100- 0xf.fffffffffffffffp+124, false, 15101- 0x1p+128, false, 15102- 0xf.fffffffffffffffp+124, false, 15103- 0x1p+128, false, 15104- false, 15105- 0xf.fffffffffffffffp+124, false, 15106- 0x1p+128, false, 15107- 0xf.fffffffffffffffp+124, false, 15108- 0x1p+128, false, 15109- false, 15110- 0xf.fffffffffffffffffffffffffcp+124, false, 15111- 0x1p+128, false, 15112- 0xf.fffffffffffffffffffffffffcp+124, false, 15113- 0x1p+128, false, 15114- false, 15115- 0xf.fffffffffffffffffffffffffff8p+124, false, 15116- 0x1p+128, false, 15117- 0xf.fffffffffffffffffffffffffff8p+124, false, 15118- 0x1p+128, false), 15119+ 0xf.fffffp+124, false, false, 15120+ INF, true, false, 15121+ 0xf.fffffp+124, false, false, 15122+ INF, true, false, 15123+ false, 15124+ 0xf.ffffffffffff8p+124, false, false, 15125+ 0x1p+128, false, false, 15126+ 0xf.ffffffffffff8p+124, false, false, 15127+ 0x1p+128, false, false, 15128+ false, 15129+ 0xf.fffffffffffffffp+124, false, false, 15130+ 0x1p+128, false, false, 15131+ 0xf.fffffffffffffffp+124, false, false, 15132+ 0x1p+128, false, false, 15133+ false, 15134+ 0xf.fffffffffffffffp+124, false, false, 15135+ 0x1p+128, false, false, 15136+ 0xf.fffffffffffffffp+124, false, false, 15137+ 0x1p+128, false, false, 15138+ false, 15139+ 0xf.fffffffffffffffffffffffffcp+124, false, false, 15140+ 0x1p+128, false, false, 15141+ 0xf.fffffffffffffffffffffffffcp+124, false, false, 15142+ 0x1p+128, false, false, 15143+ false, 15144+ 0xf.fffffffffffffffffffffffffff8p+124, false, false, 15145+ 0x1p+128, false, false, 15146+ 0xf.fffffffffffffffffffffffffff8p+124, false, false, 15147+ 0x1p+128, false, false), 15148 TEST ("179769313486231590772930519078902473361797697894230657273430" 15149 "081157732675805500963132708477322407536021120113879871393357" 15150 "658789768814416622492847430639474124377767893424865485276302" 15151@@ -11619,35 +11619,35 @@ static const struct test tests[] = { 15152 "540827237163350510684586298239947245938479716304835356329624" 15153 "224137215", 15154 false, 15155- 0xf.fffffp+124, true, 15156- INF, true, 15157- 0xf.fffffp+124, true, 15158- INF, true, 15159- false, 15160- 0xf.ffffffffffff8p+1020, false, 15161- INF, true, 15162- 0xf.ffffffffffff8p+1020, false, 15163- INF, true, 15164- false, 15165- 0xf.fffffffffffffffp+1020, false, 15166- 0x1p+1024, false, 15167- 0xf.fffffffffffffffp+1020, false, 15168- 0x1p+1024, false, 15169- false, 15170- 0xf.fffffffffffffffp+1020, false, 15171- 0x1p+1024, false, 15172- 0xf.fffffffffffffffp+1020, false, 15173- 0x1p+1024, false, 15174- false, 15175- 0xf.fffffffffffffffffffffffffcp+1020, true, 15176- INF, true, 15177- 0xf.fffffffffffffffffffffffffcp+1020, true, 15178- INF, true, 15179- false, 15180- 0xf.fffffffffffffffffffffffffff8p+1020, false, 15181- 0x1p+1024, false, 15182- 0xf.fffffffffffffffffffffffffff8p+1020, false, 15183- 0x1p+1024, false), 15184+ 0xf.fffffp+124, true, false, 15185+ INF, true, false, 15186+ 0xf.fffffp+124, true, false, 15187+ INF, true, false, 15188+ false, 15189+ 0xf.ffffffffffff8p+1020, false, false, 15190+ INF, true, false, 15191+ 0xf.ffffffffffff8p+1020, false, false, 15192+ INF, true, false, 15193+ false, 15194+ 0xf.fffffffffffffffp+1020, false, false, 15195+ 0x1p+1024, false, false, 15196+ 0xf.fffffffffffffffp+1020, false, false, 15197+ 0x1p+1024, false, false, 15198+ false, 15199+ 0xf.fffffffffffffffp+1020, false, false, 15200+ 0x1p+1024, false, false, 15201+ 0xf.fffffffffffffffp+1020, false, false, 15202+ 0x1p+1024, false, false, 15203+ false, 15204+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 15205+ INF, true, false, 15206+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 15207+ INF, true, false, 15208+ false, 15209+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false, 15210+ 0x1p+1024, false, false, 15211+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false, 15212+ 0x1p+1024, false, false), 15213 TEST ("118973149535723176508575932662800713076344468709651023747267" 15214 "482123326135818048368690448859547261203991511543748483930925" 15215 "889766738130868742627452469834156500608087163436600489752214" 15216@@ -11732,66 +11732,66 @@ static const struct test tests[] = { 15217 "047398248889922809181821393428829567971736994315246044702729" 15218 "0669964066815", 15219 false, 15220- 0xf.fffffp+124, true, 15221- INF, true, 15222- 0xf.fffffp+124, true, 15223- INF, true, 15224- false, 15225- 0xf.ffffffffffff8p+1020, true, 15226- INF, true, 15227- 0xf.ffffffffffff8p+1020, true, 15228- INF, true, 15229- false, 15230- 0xf.fffffffffffffffp+16380, false, 15231- INF, true, 15232- 0xf.fffffffffffffffp+16380, false, 15233- INF, true, 15234- false, 15235- 0xf.fffffffffffffffp+16380, false, 15236- INF, true, 15237- 0xf.fffffffffffffffp+16380, false, 15238- INF, true, 15239- false, 15240- 0xf.fffffffffffffffffffffffffcp+1020, true, 15241- INF, true, 15242- 0xf.fffffffffffffffffffffffffcp+1020, true, 15243- INF, true, 15244- false, 15245- 0xf.fffffffffffffffffffffffffff8p+16380, false, 15246- INF, true, 15247- 0xf.fffffffffffffffffffffffffff8p+16380, false, 15248- INF, true), 15249+ 0xf.fffffp+124, true, false, 15250+ INF, true, false, 15251+ 0xf.fffffp+124, true, false, 15252+ INF, true, false, 15253+ false, 15254+ 0xf.ffffffffffff8p+1020, true, false, 15255+ INF, true, false, 15256+ 0xf.ffffffffffff8p+1020, true, false, 15257+ INF, true, false, 15258+ false, 15259+ 0xf.fffffffffffffffp+16380, false, false, 15260+ INF, true, false, 15261+ 0xf.fffffffffffffffp+16380, false, false, 15262+ INF, true, false, 15263+ false, 15264+ 0xf.fffffffffffffffp+16380, false, false, 15265+ INF, true, false, 15266+ 0xf.fffffffffffffffp+16380, false, false, 15267+ INF, true, false, 15268+ false, 15269+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 15270+ INF, true, false, 15271+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 15272+ INF, true, false, 15273+ false, 15274+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 15275+ INF, true, false, 15276+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false, 15277+ INF, true, false), 15278 TEST ("-340282366920938463463374607431768211455", 15279 false, 15280- -INF, true, 15281- -INF, true, 15282- -0xf.fffffp+124, false, 15283- -0xf.fffffp+124, false, 15284- false, 15285- -0x1p+128, false, 15286- -0x1p+128, false, 15287- -0xf.ffffffffffff8p+124, false, 15288- -0xf.ffffffffffff8p+124, false, 15289- false, 15290- -0x1p+128, false, 15291- -0x1p+128, false, 15292- -0xf.fffffffffffffffp+124, false, 15293- -0xf.fffffffffffffffp+124, false, 15294- false, 15295- -0x1p+128, false, 15296- -0x1p+128, false, 15297- -0xf.fffffffffffffffp+124, false, 15298- -0xf.fffffffffffffffp+124, false, 15299- false, 15300- -0x1p+128, false, 15301- -0x1p+128, false, 15302- -0xf.fffffffffffffffffffffffffcp+124, false, 15303- -0xf.fffffffffffffffffffffffffcp+124, false, 15304- false, 15305- -0x1p+128, false, 15306- -0x1p+128, false, 15307- -0xf.fffffffffffffffffffffffffff8p+124, false, 15308- -0xf.fffffffffffffffffffffffffff8p+124, false), 15309+ -INF, true, false, 15310+ -INF, true, false, 15311+ -0xf.fffffp+124, false, false, 15312+ -0xf.fffffp+124, false, false, 15313+ false, 15314+ -0x1p+128, false, false, 15315+ -0x1p+128, false, false, 15316+ -0xf.ffffffffffff8p+124, false, false, 15317+ -0xf.ffffffffffff8p+124, false, false, 15318+ false, 15319+ -0x1p+128, false, false, 15320+ -0x1p+128, false, false, 15321+ -0xf.fffffffffffffffp+124, false, false, 15322+ -0xf.fffffffffffffffp+124, false, false, 15323+ false, 15324+ -0x1p+128, false, false, 15325+ -0x1p+128, false, false, 15326+ -0xf.fffffffffffffffp+124, false, false, 15327+ -0xf.fffffffffffffffp+124, false, false, 15328+ false, 15329+ -0x1p+128, false, false, 15330+ -0x1p+128, false, false, 15331+ -0xf.fffffffffffffffffffffffffcp+124, false, false, 15332+ -0xf.fffffffffffffffffffffffffcp+124, false, false, 15333+ false, 15334+ -0x1p+128, false, false, 15335+ -0x1p+128, false, false, 15336+ -0xf.fffffffffffffffffffffffffff8p+124, false, false, 15337+ -0xf.fffffffffffffffffffffffffff8p+124, false, false), 15338 TEST ("-17976931348623159077293051907890247336179769789423065727343" 15339 "008115773267580550096313270847732240753602112011387987139335" 15340 "765878976881441662249284743063947412437776789342486548527630" 15341@@ -11799,35 +11799,35 @@ static const struct test tests[] = { 15342 "054082723716335051068458629823994724593847971630483535632962" 15343 "4224137215", 15344 false, 15345- -INF, true, 15346- -INF, true, 15347- -0xf.fffffp+124, true, 15348- -0xf.fffffp+124, true, 15349- false, 15350- -INF, true, 15351- -INF, true, 15352- -0xf.ffffffffffff8p+1020, false, 15353- -0xf.ffffffffffff8p+1020, false, 15354- false, 15355- -0x1p+1024, false, 15356- -0x1p+1024, false, 15357- -0xf.fffffffffffffffp+1020, false, 15358- -0xf.fffffffffffffffp+1020, false, 15359- false, 15360- -0x1p+1024, false, 15361- -0x1p+1024, false, 15362- -0xf.fffffffffffffffp+1020, false, 15363- -0xf.fffffffffffffffp+1020, false, 15364- false, 15365- -INF, true, 15366- -INF, true, 15367- -0xf.fffffffffffffffffffffffffcp+1020, true, 15368- -0xf.fffffffffffffffffffffffffcp+1020, true, 15369- false, 15370- -0x1p+1024, false, 15371- -0x1p+1024, false, 15372- -0xf.fffffffffffffffffffffffffff8p+1020, false, 15373- -0xf.fffffffffffffffffffffffffff8p+1020, false), 15374+ -INF, true, false, 15375+ -INF, true, false, 15376+ -0xf.fffffp+124, true, false, 15377+ -0xf.fffffp+124, true, false, 15378+ false, 15379+ -INF, true, false, 15380+ -INF, true, false, 15381+ -0xf.ffffffffffff8p+1020, false, false, 15382+ -0xf.ffffffffffff8p+1020, false, false, 15383+ false, 15384+ -0x1p+1024, false, false, 15385+ -0x1p+1024, false, false, 15386+ -0xf.fffffffffffffffp+1020, false, false, 15387+ -0xf.fffffffffffffffp+1020, false, false, 15388+ false, 15389+ -0x1p+1024, false, false, 15390+ -0x1p+1024, false, false, 15391+ -0xf.fffffffffffffffp+1020, false, false, 15392+ -0xf.fffffffffffffffp+1020, false, false, 15393+ false, 15394+ -INF, true, false, 15395+ -INF, true, false, 15396+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 15397+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 15398+ false, 15399+ -0x1p+1024, false, false, 15400+ -0x1p+1024, false, false, 15401+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false, 15402+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false), 15403 TEST ("-11897314953572317650857593266280071307634446870965102374726" 15404 "748212332613581804836869044885954726120399151154374848393092" 15405 "588976673813086874262745246983415650060808716343660048975221" 15406@@ -11912,3529 +11912,3529 @@ static const struct test tests[] = { 15407 "904739824888992280918182139342882956797173699431524604470272" 15408 "90669964066815", 15409 false, 15410- -INF, true, 15411- -INF, true, 15412- -0xf.fffffp+124, true, 15413- -0xf.fffffp+124, true, 15414- false, 15415- -INF, true, 15416- -INF, true, 15417- -0xf.ffffffffffff8p+1020, true, 15418- -0xf.ffffffffffff8p+1020, true, 15419- false, 15420- -INF, true, 15421- -INF, true, 15422- -0xf.fffffffffffffffp+16380, false, 15423- -0xf.fffffffffffffffp+16380, false, 15424- false, 15425- -INF, true, 15426- -INF, true, 15427- -0xf.fffffffffffffffp+16380, false, 15428- -0xf.fffffffffffffffp+16380, false, 15429- false, 15430- -INF, true, 15431- -INF, true, 15432- -0xf.fffffffffffffffffffffffffcp+1020, true, 15433- -0xf.fffffffffffffffffffffffffcp+1020, true, 15434- false, 15435- -INF, true, 15436- -INF, true, 15437- -0xf.fffffffffffffffffffffffffff8p+16380, false, 15438- -0xf.fffffffffffffffffffffffffff8p+16380, false), 15439+ -INF, true, false, 15440+ -INF, true, false, 15441+ -0xf.fffffp+124, true, false, 15442+ -0xf.fffffp+124, true, false, 15443+ false, 15444+ -INF, true, false, 15445+ -INF, true, false, 15446+ -0xf.ffffffffffff8p+1020, true, false, 15447+ -0xf.ffffffffffff8p+1020, true, false, 15448+ false, 15449+ -INF, true, false, 15450+ -INF, true, false, 15451+ -0xf.fffffffffffffffp+16380, false, false, 15452+ -0xf.fffffffffffffffp+16380, false, false, 15453+ false, 15454+ -INF, true, false, 15455+ -INF, true, false, 15456+ -0xf.fffffffffffffffp+16380, false, false, 15457+ -0xf.fffffffffffffffp+16380, false, false, 15458+ false, 15459+ -INF, true, false, 15460+ -INF, true, false, 15461+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 15462+ -0xf.fffffffffffffffffffffffffcp+1020, true, false, 15463+ false, 15464+ -INF, true, false, 15465+ -INF, true, false, 15466+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false, 15467+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false), 15468 TEST ("+0x.80000000000000000000000000000001p1025", 15469 false, 15470- 0xf.fffffp+124, true, 15471- INF, true, 15472- 0xf.fffffp+124, true, 15473- INF, true, 15474- false, 15475- 0xf.ffffffffffff8p+1020, true, 15476- INF, true, 15477- 0xf.ffffffffffff8p+1020, true, 15478- INF, true, 15479- false, 15480- 0x1p+1024, false, 15481- 0x1p+1024, false, 15482- 0x1p+1024, false, 15483- 0x1.0000000000000002p+1024, false, 15484- false, 15485- 0x1p+1024, false, 15486- 0x1p+1024, false, 15487- 0x1p+1024, false, 15488- 0x1.0000000000000002p+1024, false, 15489- false, 15490- 0xf.fffffffffffffffffffffffffcp+1020, true, 15491- INF, true, 15492- 0xf.fffffffffffffffffffffffffcp+1020, true, 15493- INF, true, 15494- false, 15495- 0x1p+1024, false, 15496- 0x1p+1024, false, 15497- 0x1p+1024, false, 15498- 0x1.0000000000000000000000000001p+1024, false), 15499+ 0xf.fffffp+124, true, false, 15500+ INF, true, false, 15501+ 0xf.fffffp+124, true, false, 15502+ INF, true, false, 15503+ false, 15504+ 0xf.ffffffffffff8p+1020, true, false, 15505+ INF, true, false, 15506+ 0xf.ffffffffffff8p+1020, true, false, 15507+ INF, true, false, 15508+ false, 15509+ 0x1p+1024, false, false, 15510+ 0x1p+1024, false, false, 15511+ 0x1p+1024, false, false, 15512+ 0x1.0000000000000002p+1024, false, false, 15513+ false, 15514+ 0x1p+1024, false, false, 15515+ 0x1p+1024, false, false, 15516+ 0x1p+1024, false, false, 15517+ 0x1.0000000000000002p+1024, false, false, 15518+ false, 15519+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 15520+ INF, true, false, 15521+ 0xf.fffffffffffffffffffffffffcp+1020, true, false, 15522+ INF, true, false, 15523+ false, 15524+ 0x1p+1024, false, false, 15525+ 0x1p+1024, false, false, 15526+ 0x1p+1024, false, false, 15527+ 0x1.0000000000000000000000000001p+1024, false, false), 15528 TEST ("1.5", 15529 true, 15530- 0x1.8p+0, false, 15531- 0x1.8p+0, false, 15532- 0x1.8p+0, false, 15533- 0x1.8p+0, false, 15534- true, 15535- 0x1.8p+0, false, 15536- 0x1.8p+0, false, 15537- 0x1.8p+0, false, 15538- 0x1.8p+0, false, 15539- true, 15540- 0x1.8p+0, false, 15541- 0x1.8p+0, false, 15542- 0x1.8p+0, false, 15543- 0x1.8p+0, false, 15544- true, 15545- 0x1.8p+0, false, 15546- 0x1.8p+0, false, 15547- 0x1.8p+0, false, 15548- 0x1.8p+0, false, 15549- true, 15550- 0x1.8p+0, false, 15551- 0x1.8p+0, false, 15552- 0x1.8p+0, false, 15553- 0x1.8p+0, false, 15554- true, 15555- 0x1.8p+0, false, 15556- 0x1.8p+0, false, 15557- 0x1.8p+0, false, 15558- 0x1.8p+0, false), 15559+ 0x1.8p+0, false, false, 15560+ 0x1.8p+0, false, false, 15561+ 0x1.8p+0, false, false, 15562+ 0x1.8p+0, false, false, 15563+ true, 15564+ 0x1.8p+0, false, false, 15565+ 0x1.8p+0, false, false, 15566+ 0x1.8p+0, false, false, 15567+ 0x1.8p+0, false, false, 15568+ true, 15569+ 0x1.8p+0, false, false, 15570+ 0x1.8p+0, false, false, 15571+ 0x1.8p+0, false, false, 15572+ 0x1.8p+0, false, false, 15573+ true, 15574+ 0x1.8p+0, false, false, 15575+ 0x1.8p+0, false, false, 15576+ 0x1.8p+0, false, false, 15577+ 0x1.8p+0, false, false, 15578+ true, 15579+ 0x1.8p+0, false, false, 15580+ 0x1.8p+0, false, false, 15581+ 0x1.8p+0, false, false, 15582+ 0x1.8p+0, false, false, 15583+ true, 15584+ 0x1.8p+0, false, false, 15585+ 0x1.8p+0, false, false, 15586+ 0x1.8p+0, false, false, 15587+ 0x1.8p+0, false, false), 15588 TEST ("1.25", 15589 true, 15590- 0x1.4p+0, false, 15591- 0x1.4p+0, false, 15592- 0x1.4p+0, false, 15593- 0x1.4p+0, false, 15594- true, 15595- 0x1.4p+0, false, 15596- 0x1.4p+0, false, 15597- 0x1.4p+0, false, 15598- 0x1.4p+0, false, 15599- true, 15600- 0x1.4p+0, false, 15601- 0x1.4p+0, false, 15602- 0x1.4p+0, false, 15603- 0x1.4p+0, false, 15604- true, 15605- 0x1.4p+0, false, 15606- 0x1.4p+0, false, 15607- 0x1.4p+0, false, 15608- 0x1.4p+0, false, 15609- true, 15610- 0x1.4p+0, false, 15611- 0x1.4p+0, false, 15612- 0x1.4p+0, false, 15613- 0x1.4p+0, false, 15614- true, 15615- 0x1.4p+0, false, 15616- 0x1.4p+0, false, 15617- 0x1.4p+0, false, 15618- 0x1.4p+0, false), 15619+ 0x1.4p+0, false, false, 15620+ 0x1.4p+0, false, false, 15621+ 0x1.4p+0, false, false, 15622+ 0x1.4p+0, false, false, 15623+ true, 15624+ 0x1.4p+0, false, false, 15625+ 0x1.4p+0, false, false, 15626+ 0x1.4p+0, false, false, 15627+ 0x1.4p+0, false, false, 15628+ true, 15629+ 0x1.4p+0, false, false, 15630+ 0x1.4p+0, false, false, 15631+ 0x1.4p+0, false, false, 15632+ 0x1.4p+0, false, false, 15633+ true, 15634+ 0x1.4p+0, false, false, 15635+ 0x1.4p+0, false, false, 15636+ 0x1.4p+0, false, false, 15637+ 0x1.4p+0, false, false, 15638+ true, 15639+ 0x1.4p+0, false, false, 15640+ 0x1.4p+0, false, false, 15641+ 0x1.4p+0, false, false, 15642+ 0x1.4p+0, false, false, 15643+ true, 15644+ 0x1.4p+0, false, false, 15645+ 0x1.4p+0, false, false, 15646+ 0x1.4p+0, false, false, 15647+ 0x1.4p+0, false, false), 15648 TEST ("1.125", 15649 true, 15650- 0x1.2p+0, false, 15651- 0x1.2p+0, false, 15652- 0x1.2p+0, false, 15653- 0x1.2p+0, false, 15654- true, 15655- 0x1.2p+0, false, 15656- 0x1.2p+0, false, 15657- 0x1.2p+0, false, 15658- 0x1.2p+0, false, 15659- true, 15660- 0x1.2p+0, false, 15661- 0x1.2p+0, false, 15662- 0x1.2p+0, false, 15663- 0x1.2p+0, false, 15664- true, 15665- 0x1.2p+0, false, 15666- 0x1.2p+0, false, 15667- 0x1.2p+0, false, 15668- 0x1.2p+0, false, 15669- true, 15670- 0x1.2p+0, false, 15671- 0x1.2p+0, false, 15672- 0x1.2p+0, false, 15673- 0x1.2p+0, false, 15674- true, 15675- 0x1.2p+0, false, 15676- 0x1.2p+0, false, 15677- 0x1.2p+0, false, 15678- 0x1.2p+0, false), 15679+ 0x1.2p+0, false, false, 15680+ 0x1.2p+0, false, false, 15681+ 0x1.2p+0, false, false, 15682+ 0x1.2p+0, false, false, 15683+ true, 15684+ 0x1.2p+0, false, false, 15685+ 0x1.2p+0, false, false, 15686+ 0x1.2p+0, false, false, 15687+ 0x1.2p+0, false, false, 15688+ true, 15689+ 0x1.2p+0, false, false, 15690+ 0x1.2p+0, false, false, 15691+ 0x1.2p+0, false, false, 15692+ 0x1.2p+0, false, false, 15693+ true, 15694+ 0x1.2p+0, false, false, 15695+ 0x1.2p+0, false, false, 15696+ 0x1.2p+0, false, false, 15697+ 0x1.2p+0, false, false, 15698+ true, 15699+ 0x1.2p+0, false, false, 15700+ 0x1.2p+0, false, false, 15701+ 0x1.2p+0, false, false, 15702+ 0x1.2p+0, false, false, 15703+ true, 15704+ 0x1.2p+0, false, false, 15705+ 0x1.2p+0, false, false, 15706+ 0x1.2p+0, false, false, 15707+ 0x1.2p+0, false, false), 15708 TEST ("1.0625", 15709 true, 15710- 0x1.1p+0, false, 15711- 0x1.1p+0, false, 15712- 0x1.1p+0, false, 15713- 0x1.1p+0, false, 15714- true, 15715- 0x1.1p+0, false, 15716- 0x1.1p+0, false, 15717- 0x1.1p+0, false, 15718- 0x1.1p+0, false, 15719- true, 15720- 0x1.1p+0, false, 15721- 0x1.1p+0, false, 15722- 0x1.1p+0, false, 15723- 0x1.1p+0, false, 15724- true, 15725- 0x1.1p+0, false, 15726- 0x1.1p+0, false, 15727- 0x1.1p+0, false, 15728- 0x1.1p+0, false, 15729- true, 15730- 0x1.1p+0, false, 15731- 0x1.1p+0, false, 15732- 0x1.1p+0, false, 15733- 0x1.1p+0, false, 15734- true, 15735- 0x1.1p+0, false, 15736- 0x1.1p+0, false, 15737- 0x1.1p+0, false, 15738- 0x1.1p+0, false), 15739+ 0x1.1p+0, false, false, 15740+ 0x1.1p+0, false, false, 15741+ 0x1.1p+0, false, false, 15742+ 0x1.1p+0, false, false, 15743+ true, 15744+ 0x1.1p+0, false, false, 15745+ 0x1.1p+0, false, false, 15746+ 0x1.1p+0, false, false, 15747+ 0x1.1p+0, false, false, 15748+ true, 15749+ 0x1.1p+0, false, false, 15750+ 0x1.1p+0, false, false, 15751+ 0x1.1p+0, false, false, 15752+ 0x1.1p+0, false, false, 15753+ true, 15754+ 0x1.1p+0, false, false, 15755+ 0x1.1p+0, false, false, 15756+ 0x1.1p+0, false, false, 15757+ 0x1.1p+0, false, false, 15758+ true, 15759+ 0x1.1p+0, false, false, 15760+ 0x1.1p+0, false, false, 15761+ 0x1.1p+0, false, false, 15762+ 0x1.1p+0, false, false, 15763+ true, 15764+ 0x1.1p+0, false, false, 15765+ 0x1.1p+0, false, false, 15766+ 0x1.1p+0, false, false, 15767+ 0x1.1p+0, false, false), 15768 TEST ("1.03125", 15769 true, 15770- 0x1.08p+0, false, 15771- 0x1.08p+0, false, 15772- 0x1.08p+0, false, 15773- 0x1.08p+0, false, 15774- true, 15775- 0x1.08p+0, false, 15776- 0x1.08p+0, false, 15777- 0x1.08p+0, false, 15778- 0x1.08p+0, false, 15779- true, 15780- 0x1.08p+0, false, 15781- 0x1.08p+0, false, 15782- 0x1.08p+0, false, 15783- 0x1.08p+0, false, 15784- true, 15785- 0x1.08p+0, false, 15786- 0x1.08p+0, false, 15787- 0x1.08p+0, false, 15788- 0x1.08p+0, false, 15789- true, 15790- 0x1.08p+0, false, 15791- 0x1.08p+0, false, 15792- 0x1.08p+0, false, 15793- 0x1.08p+0, false, 15794- true, 15795- 0x1.08p+0, false, 15796- 0x1.08p+0, false, 15797- 0x1.08p+0, false, 15798- 0x1.08p+0, false), 15799+ 0x1.08p+0, false, false, 15800+ 0x1.08p+0, false, false, 15801+ 0x1.08p+0, false, false, 15802+ 0x1.08p+0, false, false, 15803+ true, 15804+ 0x1.08p+0, false, false, 15805+ 0x1.08p+0, false, false, 15806+ 0x1.08p+0, false, false, 15807+ 0x1.08p+0, false, false, 15808+ true, 15809+ 0x1.08p+0, false, false, 15810+ 0x1.08p+0, false, false, 15811+ 0x1.08p+0, false, false, 15812+ 0x1.08p+0, false, false, 15813+ true, 15814+ 0x1.08p+0, false, false, 15815+ 0x1.08p+0, false, false, 15816+ 0x1.08p+0, false, false, 15817+ 0x1.08p+0, false, false, 15818+ true, 15819+ 0x1.08p+0, false, false, 15820+ 0x1.08p+0, false, false, 15821+ 0x1.08p+0, false, false, 15822+ 0x1.08p+0, false, false, 15823+ true, 15824+ 0x1.08p+0, false, false, 15825+ 0x1.08p+0, false, false, 15826+ 0x1.08p+0, false, false, 15827+ 0x1.08p+0, false, false), 15828 TEST ("1.015625", 15829 true, 15830- 0x1.04p+0, false, 15831- 0x1.04p+0, false, 15832- 0x1.04p+0, false, 15833- 0x1.04p+0, false, 15834- true, 15835- 0x1.04p+0, false, 15836- 0x1.04p+0, false, 15837- 0x1.04p+0, false, 15838- 0x1.04p+0, false, 15839- true, 15840- 0x1.04p+0, false, 15841- 0x1.04p+0, false, 15842- 0x1.04p+0, false, 15843- 0x1.04p+0, false, 15844- true, 15845- 0x1.04p+0, false, 15846- 0x1.04p+0, false, 15847- 0x1.04p+0, false, 15848- 0x1.04p+0, false, 15849- true, 15850- 0x1.04p+0, false, 15851- 0x1.04p+0, false, 15852- 0x1.04p+0, false, 15853- 0x1.04p+0, false, 15854- true, 15855- 0x1.04p+0, false, 15856- 0x1.04p+0, false, 15857- 0x1.04p+0, false, 15858- 0x1.04p+0, false), 15859+ 0x1.04p+0, false, false, 15860+ 0x1.04p+0, false, false, 15861+ 0x1.04p+0, false, false, 15862+ 0x1.04p+0, false, false, 15863+ true, 15864+ 0x1.04p+0, false, false, 15865+ 0x1.04p+0, false, false, 15866+ 0x1.04p+0, false, false, 15867+ 0x1.04p+0, false, false, 15868+ true, 15869+ 0x1.04p+0, false, false, 15870+ 0x1.04p+0, false, false, 15871+ 0x1.04p+0, false, false, 15872+ 0x1.04p+0, false, false, 15873+ true, 15874+ 0x1.04p+0, false, false, 15875+ 0x1.04p+0, false, false, 15876+ 0x1.04p+0, false, false, 15877+ 0x1.04p+0, false, false, 15878+ true, 15879+ 0x1.04p+0, false, false, 15880+ 0x1.04p+0, false, false, 15881+ 0x1.04p+0, false, false, 15882+ 0x1.04p+0, false, false, 15883+ true, 15884+ 0x1.04p+0, false, false, 15885+ 0x1.04p+0, false, false, 15886+ 0x1.04p+0, false, false, 15887+ 0x1.04p+0, false, false), 15888 TEST ("1.0078125", 15889 true, 15890- 0x1.02p+0, false, 15891- 0x1.02p+0, false, 15892- 0x1.02p+0, false, 15893- 0x1.02p+0, false, 15894- true, 15895- 0x1.02p+0, false, 15896- 0x1.02p+0, false, 15897- 0x1.02p+0, false, 15898- 0x1.02p+0, false, 15899- true, 15900- 0x1.02p+0, false, 15901- 0x1.02p+0, false, 15902- 0x1.02p+0, false, 15903- 0x1.02p+0, false, 15904- true, 15905- 0x1.02p+0, false, 15906- 0x1.02p+0, false, 15907- 0x1.02p+0, false, 15908- 0x1.02p+0, false, 15909- true, 15910- 0x1.02p+0, false, 15911- 0x1.02p+0, false, 15912- 0x1.02p+0, false, 15913- 0x1.02p+0, false, 15914- true, 15915- 0x1.02p+0, false, 15916- 0x1.02p+0, false, 15917- 0x1.02p+0, false, 15918- 0x1.02p+0, false), 15919+ 0x1.02p+0, false, false, 15920+ 0x1.02p+0, false, false, 15921+ 0x1.02p+0, false, false, 15922+ 0x1.02p+0, false, false, 15923+ true, 15924+ 0x1.02p+0, false, false, 15925+ 0x1.02p+0, false, false, 15926+ 0x1.02p+0, false, false, 15927+ 0x1.02p+0, false, false, 15928+ true, 15929+ 0x1.02p+0, false, false, 15930+ 0x1.02p+0, false, false, 15931+ 0x1.02p+0, false, false, 15932+ 0x1.02p+0, false, false, 15933+ true, 15934+ 0x1.02p+0, false, false, 15935+ 0x1.02p+0, false, false, 15936+ 0x1.02p+0, false, false, 15937+ 0x1.02p+0, false, false, 15938+ true, 15939+ 0x1.02p+0, false, false, 15940+ 0x1.02p+0, false, false, 15941+ 0x1.02p+0, false, false, 15942+ 0x1.02p+0, false, false, 15943+ true, 15944+ 0x1.02p+0, false, false, 15945+ 0x1.02p+0, false, false, 15946+ 0x1.02p+0, false, false, 15947+ 0x1.02p+0, false, false), 15948 TEST ("1.00390625", 15949 true, 15950- 0x1.01p+0, false, 15951- 0x1.01p+0, false, 15952- 0x1.01p+0, false, 15953- 0x1.01p+0, false, 15954- true, 15955- 0x1.01p+0, false, 15956- 0x1.01p+0, false, 15957- 0x1.01p+0, false, 15958- 0x1.01p+0, false, 15959- true, 15960- 0x1.01p+0, false, 15961- 0x1.01p+0, false, 15962- 0x1.01p+0, false, 15963- 0x1.01p+0, false, 15964- true, 15965- 0x1.01p+0, false, 15966- 0x1.01p+0, false, 15967- 0x1.01p+0, false, 15968- 0x1.01p+0, false, 15969- true, 15970- 0x1.01p+0, false, 15971- 0x1.01p+0, false, 15972- 0x1.01p+0, false, 15973- 0x1.01p+0, false, 15974- true, 15975- 0x1.01p+0, false, 15976- 0x1.01p+0, false, 15977- 0x1.01p+0, false, 15978- 0x1.01p+0, false), 15979+ 0x1.01p+0, false, false, 15980+ 0x1.01p+0, false, false, 15981+ 0x1.01p+0, false, false, 15982+ 0x1.01p+0, false, false, 15983+ true, 15984+ 0x1.01p+0, false, false, 15985+ 0x1.01p+0, false, false, 15986+ 0x1.01p+0, false, false, 15987+ 0x1.01p+0, false, false, 15988+ true, 15989+ 0x1.01p+0, false, false, 15990+ 0x1.01p+0, false, false, 15991+ 0x1.01p+0, false, false, 15992+ 0x1.01p+0, false, false, 15993+ true, 15994+ 0x1.01p+0, false, false, 15995+ 0x1.01p+0, false, false, 15996+ 0x1.01p+0, false, false, 15997+ 0x1.01p+0, false, false, 15998+ true, 15999+ 0x1.01p+0, false, false, 16000+ 0x1.01p+0, false, false, 16001+ 0x1.01p+0, false, false, 16002+ 0x1.01p+0, false, false, 16003+ true, 16004+ 0x1.01p+0, false, false, 16005+ 0x1.01p+0, false, false, 16006+ 0x1.01p+0, false, false, 16007+ 0x1.01p+0, false, false), 16008 TEST ("1.001953125", 16009 true, 16010- 0x1.008p+0, false, 16011- 0x1.008p+0, false, 16012- 0x1.008p+0, false, 16013- 0x1.008p+0, false, 16014- true, 16015- 0x1.008p+0, false, 16016- 0x1.008p+0, false, 16017- 0x1.008p+0, false, 16018- 0x1.008p+0, false, 16019- true, 16020- 0x1.008p+0, false, 16021- 0x1.008p+0, false, 16022- 0x1.008p+0, false, 16023- 0x1.008p+0, false, 16024- true, 16025- 0x1.008p+0, false, 16026- 0x1.008p+0, false, 16027- 0x1.008p+0, false, 16028- 0x1.008p+0, false, 16029- true, 16030- 0x1.008p+0, false, 16031- 0x1.008p+0, false, 16032- 0x1.008p+0, false, 16033- 0x1.008p+0, false, 16034- true, 16035- 0x1.008p+0, false, 16036- 0x1.008p+0, false, 16037- 0x1.008p+0, false, 16038- 0x1.008p+0, false), 16039+ 0x1.008p+0, false, false, 16040+ 0x1.008p+0, false, false, 16041+ 0x1.008p+0, false, false, 16042+ 0x1.008p+0, false, false, 16043+ true, 16044+ 0x1.008p+0, false, false, 16045+ 0x1.008p+0, false, false, 16046+ 0x1.008p+0, false, false, 16047+ 0x1.008p+0, false, false, 16048+ true, 16049+ 0x1.008p+0, false, false, 16050+ 0x1.008p+0, false, false, 16051+ 0x1.008p+0, false, false, 16052+ 0x1.008p+0, false, false, 16053+ true, 16054+ 0x1.008p+0, false, false, 16055+ 0x1.008p+0, false, false, 16056+ 0x1.008p+0, false, false, 16057+ 0x1.008p+0, false, false, 16058+ true, 16059+ 0x1.008p+0, false, false, 16060+ 0x1.008p+0, false, false, 16061+ 0x1.008p+0, false, false, 16062+ 0x1.008p+0, false, false, 16063+ true, 16064+ 0x1.008p+0, false, false, 16065+ 0x1.008p+0, false, false, 16066+ 0x1.008p+0, false, false, 16067+ 0x1.008p+0, false, false), 16068 TEST ("1.0009765625", 16069 true, 16070- 0x1.004p+0, false, 16071- 0x1.004p+0, false, 16072- 0x1.004p+0, false, 16073- 0x1.004p+0, false, 16074- true, 16075- 0x1.004p+0, false, 16076- 0x1.004p+0, false, 16077- 0x1.004p+0, false, 16078- 0x1.004p+0, false, 16079- true, 16080- 0x1.004p+0, false, 16081- 0x1.004p+0, false, 16082- 0x1.004p+0, false, 16083- 0x1.004p+0, false, 16084- true, 16085- 0x1.004p+0, false, 16086- 0x1.004p+0, false, 16087- 0x1.004p+0, false, 16088- 0x1.004p+0, false, 16089- true, 16090- 0x1.004p+0, false, 16091- 0x1.004p+0, false, 16092- 0x1.004p+0, false, 16093- 0x1.004p+0, false, 16094- true, 16095- 0x1.004p+0, false, 16096- 0x1.004p+0, false, 16097- 0x1.004p+0, false, 16098- 0x1.004p+0, false), 16099+ 0x1.004p+0, false, false, 16100+ 0x1.004p+0, false, false, 16101+ 0x1.004p+0, false, false, 16102+ 0x1.004p+0, false, false, 16103+ true, 16104+ 0x1.004p+0, false, false, 16105+ 0x1.004p+0, false, false, 16106+ 0x1.004p+0, false, false, 16107+ 0x1.004p+0, false, false, 16108+ true, 16109+ 0x1.004p+0, false, false, 16110+ 0x1.004p+0, false, false, 16111+ 0x1.004p+0, false, false, 16112+ 0x1.004p+0, false, false, 16113+ true, 16114+ 0x1.004p+0, false, false, 16115+ 0x1.004p+0, false, false, 16116+ 0x1.004p+0, false, false, 16117+ 0x1.004p+0, false, false, 16118+ true, 16119+ 0x1.004p+0, false, false, 16120+ 0x1.004p+0, false, false, 16121+ 0x1.004p+0, false, false, 16122+ 0x1.004p+0, false, false, 16123+ true, 16124+ 0x1.004p+0, false, false, 16125+ 0x1.004p+0, false, false, 16126+ 0x1.004p+0, false, false, 16127+ 0x1.004p+0, false, false), 16128 TEST ("1.00048828125", 16129 true, 16130- 0x1.002p+0, false, 16131- 0x1.002p+0, false, 16132- 0x1.002p+0, false, 16133- 0x1.002p+0, false, 16134- true, 16135- 0x1.002p+0, false, 16136- 0x1.002p+0, false, 16137- 0x1.002p+0, false, 16138- 0x1.002p+0, false, 16139- true, 16140- 0x1.002p+0, false, 16141- 0x1.002p+0, false, 16142- 0x1.002p+0, false, 16143- 0x1.002p+0, false, 16144- true, 16145- 0x1.002p+0, false, 16146- 0x1.002p+0, false, 16147- 0x1.002p+0, false, 16148- 0x1.002p+0, false, 16149- true, 16150- 0x1.002p+0, false, 16151- 0x1.002p+0, false, 16152- 0x1.002p+0, false, 16153- 0x1.002p+0, false, 16154- true, 16155- 0x1.002p+0, false, 16156- 0x1.002p+0, false, 16157- 0x1.002p+0, false, 16158- 0x1.002p+0, false), 16159+ 0x1.002p+0, false, false, 16160+ 0x1.002p+0, false, false, 16161+ 0x1.002p+0, false, false, 16162+ 0x1.002p+0, false, false, 16163+ true, 16164+ 0x1.002p+0, false, false, 16165+ 0x1.002p+0, false, false, 16166+ 0x1.002p+0, false, false, 16167+ 0x1.002p+0, false, false, 16168+ true, 16169+ 0x1.002p+0, false, false, 16170+ 0x1.002p+0, false, false, 16171+ 0x1.002p+0, false, false, 16172+ 0x1.002p+0, false, false, 16173+ true, 16174+ 0x1.002p+0, false, false, 16175+ 0x1.002p+0, false, false, 16176+ 0x1.002p+0, false, false, 16177+ 0x1.002p+0, false, false, 16178+ true, 16179+ 0x1.002p+0, false, false, 16180+ 0x1.002p+0, false, false, 16181+ 0x1.002p+0, false, false, 16182+ 0x1.002p+0, false, false, 16183+ true, 16184+ 0x1.002p+0, false, false, 16185+ 0x1.002p+0, false, false, 16186+ 0x1.002p+0, false, false, 16187+ 0x1.002p+0, false, false), 16188 TEST ("1.000244140625", 16189 true, 16190- 0x1.001p+0, false, 16191- 0x1.001p+0, false, 16192- 0x1.001p+0, false, 16193- 0x1.001p+0, false, 16194- true, 16195- 0x1.001p+0, false, 16196- 0x1.001p+0, false, 16197- 0x1.001p+0, false, 16198- 0x1.001p+0, false, 16199- true, 16200- 0x1.001p+0, false, 16201- 0x1.001p+0, false, 16202- 0x1.001p+0, false, 16203- 0x1.001p+0, false, 16204- true, 16205- 0x1.001p+0, false, 16206- 0x1.001p+0, false, 16207- 0x1.001p+0, false, 16208- 0x1.001p+0, false, 16209- true, 16210- 0x1.001p+0, false, 16211- 0x1.001p+0, false, 16212- 0x1.001p+0, false, 16213- 0x1.001p+0, false, 16214- true, 16215- 0x1.001p+0, false, 16216- 0x1.001p+0, false, 16217- 0x1.001p+0, false, 16218- 0x1.001p+0, false), 16219+ 0x1.001p+0, false, false, 16220+ 0x1.001p+0, false, false, 16221+ 0x1.001p+0, false, false, 16222+ 0x1.001p+0, false, false, 16223+ true, 16224+ 0x1.001p+0, false, false, 16225+ 0x1.001p+0, false, false, 16226+ 0x1.001p+0, false, false, 16227+ 0x1.001p+0, false, false, 16228+ true, 16229+ 0x1.001p+0, false, false, 16230+ 0x1.001p+0, false, false, 16231+ 0x1.001p+0, false, false, 16232+ 0x1.001p+0, false, false, 16233+ true, 16234+ 0x1.001p+0, false, false, 16235+ 0x1.001p+0, false, false, 16236+ 0x1.001p+0, false, false, 16237+ 0x1.001p+0, false, false, 16238+ true, 16239+ 0x1.001p+0, false, false, 16240+ 0x1.001p+0, false, false, 16241+ 0x1.001p+0, false, false, 16242+ 0x1.001p+0, false, false, 16243+ true, 16244+ 0x1.001p+0, false, false, 16245+ 0x1.001p+0, false, false, 16246+ 0x1.001p+0, false, false, 16247+ 0x1.001p+0, false, false), 16248 TEST ("1.0001220703125", 16249 true, 16250- 0x1.0008p+0, false, 16251- 0x1.0008p+0, false, 16252- 0x1.0008p+0, false, 16253- 0x1.0008p+0, false, 16254- true, 16255- 0x1.0008p+0, false, 16256- 0x1.0008p+0, false, 16257- 0x1.0008p+0, false, 16258- 0x1.0008p+0, false, 16259- true, 16260- 0x1.0008p+0, false, 16261- 0x1.0008p+0, false, 16262- 0x1.0008p+0, false, 16263- 0x1.0008p+0, false, 16264- true, 16265- 0x1.0008p+0, false, 16266- 0x1.0008p+0, false, 16267- 0x1.0008p+0, false, 16268- 0x1.0008p+0, false, 16269- true, 16270- 0x1.0008p+0, false, 16271- 0x1.0008p+0, false, 16272- 0x1.0008p+0, false, 16273- 0x1.0008p+0, false, 16274- true, 16275- 0x1.0008p+0, false, 16276- 0x1.0008p+0, false, 16277- 0x1.0008p+0, false, 16278- 0x1.0008p+0, false), 16279+ 0x1.0008p+0, false, false, 16280+ 0x1.0008p+0, false, false, 16281+ 0x1.0008p+0, false, false, 16282+ 0x1.0008p+0, false, false, 16283+ true, 16284+ 0x1.0008p+0, false, false, 16285+ 0x1.0008p+0, false, false, 16286+ 0x1.0008p+0, false, false, 16287+ 0x1.0008p+0, false, false, 16288+ true, 16289+ 0x1.0008p+0, false, false, 16290+ 0x1.0008p+0, false, false, 16291+ 0x1.0008p+0, false, false, 16292+ 0x1.0008p+0, false, false, 16293+ true, 16294+ 0x1.0008p+0, false, false, 16295+ 0x1.0008p+0, false, false, 16296+ 0x1.0008p+0, false, false, 16297+ 0x1.0008p+0, false, false, 16298+ true, 16299+ 0x1.0008p+0, false, false, 16300+ 0x1.0008p+0, false, false, 16301+ 0x1.0008p+0, false, false, 16302+ 0x1.0008p+0, false, false, 16303+ true, 16304+ 0x1.0008p+0, false, false, 16305+ 0x1.0008p+0, false, false, 16306+ 0x1.0008p+0, false, false, 16307+ 0x1.0008p+0, false, false), 16308 TEST ("1.00006103515625", 16309 true, 16310- 0x1.0004p+0, false, 16311- 0x1.0004p+0, false, 16312- 0x1.0004p+0, false, 16313- 0x1.0004p+0, false, 16314- true, 16315- 0x1.0004p+0, false, 16316- 0x1.0004p+0, false, 16317- 0x1.0004p+0, false, 16318- 0x1.0004p+0, false, 16319- true, 16320- 0x1.0004p+0, false, 16321- 0x1.0004p+0, false, 16322- 0x1.0004p+0, false, 16323- 0x1.0004p+0, false, 16324- true, 16325- 0x1.0004p+0, false, 16326- 0x1.0004p+0, false, 16327- 0x1.0004p+0, false, 16328- 0x1.0004p+0, false, 16329- true, 16330- 0x1.0004p+0, false, 16331- 0x1.0004p+0, false, 16332- 0x1.0004p+0, false, 16333- 0x1.0004p+0, false, 16334- true, 16335- 0x1.0004p+0, false, 16336- 0x1.0004p+0, false, 16337- 0x1.0004p+0, false, 16338- 0x1.0004p+0, false), 16339+ 0x1.0004p+0, false, false, 16340+ 0x1.0004p+0, false, false, 16341+ 0x1.0004p+0, false, false, 16342+ 0x1.0004p+0, false, false, 16343+ true, 16344+ 0x1.0004p+0, false, false, 16345+ 0x1.0004p+0, false, false, 16346+ 0x1.0004p+0, false, false, 16347+ 0x1.0004p+0, false, false, 16348+ true, 16349+ 0x1.0004p+0, false, false, 16350+ 0x1.0004p+0, false, false, 16351+ 0x1.0004p+0, false, false, 16352+ 0x1.0004p+0, false, false, 16353+ true, 16354+ 0x1.0004p+0, false, false, 16355+ 0x1.0004p+0, false, false, 16356+ 0x1.0004p+0, false, false, 16357+ 0x1.0004p+0, false, false, 16358+ true, 16359+ 0x1.0004p+0, false, false, 16360+ 0x1.0004p+0, false, false, 16361+ 0x1.0004p+0, false, false, 16362+ 0x1.0004p+0, false, false, 16363+ true, 16364+ 0x1.0004p+0, false, false, 16365+ 0x1.0004p+0, false, false, 16366+ 0x1.0004p+0, false, false, 16367+ 0x1.0004p+0, false, false), 16368 TEST ("1.000030517578125", 16369 true, 16370- 0x1.0002p+0, false, 16371- 0x1.0002p+0, false, 16372- 0x1.0002p+0, false, 16373- 0x1.0002p+0, false, 16374- true, 16375- 0x1.0002p+0, false, 16376- 0x1.0002p+0, false, 16377- 0x1.0002p+0, false, 16378- 0x1.0002p+0, false, 16379- true, 16380- 0x1.0002p+0, false, 16381- 0x1.0002p+0, false, 16382- 0x1.0002p+0, false, 16383- 0x1.0002p+0, false, 16384- true, 16385- 0x1.0002p+0, false, 16386- 0x1.0002p+0, false, 16387- 0x1.0002p+0, false, 16388- 0x1.0002p+0, false, 16389- true, 16390- 0x1.0002p+0, false, 16391- 0x1.0002p+0, false, 16392- 0x1.0002p+0, false, 16393- 0x1.0002p+0, false, 16394- true, 16395- 0x1.0002p+0, false, 16396- 0x1.0002p+0, false, 16397- 0x1.0002p+0, false, 16398- 0x1.0002p+0, false), 16399+ 0x1.0002p+0, false, false, 16400+ 0x1.0002p+0, false, false, 16401+ 0x1.0002p+0, false, false, 16402+ 0x1.0002p+0, false, false, 16403+ true, 16404+ 0x1.0002p+0, false, false, 16405+ 0x1.0002p+0, false, false, 16406+ 0x1.0002p+0, false, false, 16407+ 0x1.0002p+0, false, false, 16408+ true, 16409+ 0x1.0002p+0, false, false, 16410+ 0x1.0002p+0, false, false, 16411+ 0x1.0002p+0, false, false, 16412+ 0x1.0002p+0, false, false, 16413+ true, 16414+ 0x1.0002p+0, false, false, 16415+ 0x1.0002p+0, false, false, 16416+ 0x1.0002p+0, false, false, 16417+ 0x1.0002p+0, false, false, 16418+ true, 16419+ 0x1.0002p+0, false, false, 16420+ 0x1.0002p+0, false, false, 16421+ 0x1.0002p+0, false, false, 16422+ 0x1.0002p+0, false, false, 16423+ true, 16424+ 0x1.0002p+0, false, false, 16425+ 0x1.0002p+0, false, false, 16426+ 0x1.0002p+0, false, false, 16427+ 0x1.0002p+0, false, false), 16428 TEST ("1.0000152587890625", 16429 true, 16430- 0x1.0001p+0, false, 16431- 0x1.0001p+0, false, 16432- 0x1.0001p+0, false, 16433- 0x1.0001p+0, false, 16434- true, 16435- 0x1.0001p+0, false, 16436- 0x1.0001p+0, false, 16437- 0x1.0001p+0, false, 16438- 0x1.0001p+0, false, 16439- true, 16440- 0x1.0001p+0, false, 16441- 0x1.0001p+0, false, 16442- 0x1.0001p+0, false, 16443- 0x1.0001p+0, false, 16444- true, 16445- 0x1.0001p+0, false, 16446- 0x1.0001p+0, false, 16447- 0x1.0001p+0, false, 16448- 0x1.0001p+0, false, 16449- true, 16450- 0x1.0001p+0, false, 16451- 0x1.0001p+0, false, 16452- 0x1.0001p+0, false, 16453- 0x1.0001p+0, false, 16454- true, 16455- 0x1.0001p+0, false, 16456- 0x1.0001p+0, false, 16457- 0x1.0001p+0, false, 16458- 0x1.0001p+0, false), 16459+ 0x1.0001p+0, false, false, 16460+ 0x1.0001p+0, false, false, 16461+ 0x1.0001p+0, false, false, 16462+ 0x1.0001p+0, false, false, 16463+ true, 16464+ 0x1.0001p+0, false, false, 16465+ 0x1.0001p+0, false, false, 16466+ 0x1.0001p+0, false, false, 16467+ 0x1.0001p+0, false, false, 16468+ true, 16469+ 0x1.0001p+0, false, false, 16470+ 0x1.0001p+0, false, false, 16471+ 0x1.0001p+0, false, false, 16472+ 0x1.0001p+0, false, false, 16473+ true, 16474+ 0x1.0001p+0, false, false, 16475+ 0x1.0001p+0, false, false, 16476+ 0x1.0001p+0, false, false, 16477+ 0x1.0001p+0, false, false, 16478+ true, 16479+ 0x1.0001p+0, false, false, 16480+ 0x1.0001p+0, false, false, 16481+ 0x1.0001p+0, false, false, 16482+ 0x1.0001p+0, false, false, 16483+ true, 16484+ 0x1.0001p+0, false, false, 16485+ 0x1.0001p+0, false, false, 16486+ 0x1.0001p+0, false, false, 16487+ 0x1.0001p+0, false, false), 16488 TEST ("1.00000762939453125", 16489 true, 16490- 0x1.00008p+0, false, 16491- 0x1.00008p+0, false, 16492- 0x1.00008p+0, false, 16493- 0x1.00008p+0, false, 16494- true, 16495- 0x1.00008p+0, false, 16496- 0x1.00008p+0, false, 16497- 0x1.00008p+0, false, 16498- 0x1.00008p+0, false, 16499- true, 16500- 0x1.00008p+0, false, 16501- 0x1.00008p+0, false, 16502- 0x1.00008p+0, false, 16503- 0x1.00008p+0, false, 16504- true, 16505- 0x1.00008p+0, false, 16506- 0x1.00008p+0, false, 16507- 0x1.00008p+0, false, 16508- 0x1.00008p+0, false, 16509- true, 16510- 0x1.00008p+0, false, 16511- 0x1.00008p+0, false, 16512- 0x1.00008p+0, false, 16513- 0x1.00008p+0, false, 16514- true, 16515- 0x1.00008p+0, false, 16516- 0x1.00008p+0, false, 16517- 0x1.00008p+0, false, 16518- 0x1.00008p+0, false), 16519+ 0x1.00008p+0, false, false, 16520+ 0x1.00008p+0, false, false, 16521+ 0x1.00008p+0, false, false, 16522+ 0x1.00008p+0, false, false, 16523+ true, 16524+ 0x1.00008p+0, false, false, 16525+ 0x1.00008p+0, false, false, 16526+ 0x1.00008p+0, false, false, 16527+ 0x1.00008p+0, false, false, 16528+ true, 16529+ 0x1.00008p+0, false, false, 16530+ 0x1.00008p+0, false, false, 16531+ 0x1.00008p+0, false, false, 16532+ 0x1.00008p+0, false, false, 16533+ true, 16534+ 0x1.00008p+0, false, false, 16535+ 0x1.00008p+0, false, false, 16536+ 0x1.00008p+0, false, false, 16537+ 0x1.00008p+0, false, false, 16538+ true, 16539+ 0x1.00008p+0, false, false, 16540+ 0x1.00008p+0, false, false, 16541+ 0x1.00008p+0, false, false, 16542+ 0x1.00008p+0, false, false, 16543+ true, 16544+ 0x1.00008p+0, false, false, 16545+ 0x1.00008p+0, false, false, 16546+ 0x1.00008p+0, false, false, 16547+ 0x1.00008p+0, false, false), 16548 TEST ("1.000003814697265625", 16549 true, 16550- 0x1.00004p+0, false, 16551- 0x1.00004p+0, false, 16552- 0x1.00004p+0, false, 16553- 0x1.00004p+0, false, 16554- true, 16555- 0x1.00004p+0, false, 16556- 0x1.00004p+0, false, 16557- 0x1.00004p+0, false, 16558- 0x1.00004p+0, false, 16559- true, 16560- 0x1.00004p+0, false, 16561- 0x1.00004p+0, false, 16562- 0x1.00004p+0, false, 16563- 0x1.00004p+0, false, 16564- true, 16565- 0x1.00004p+0, false, 16566- 0x1.00004p+0, false, 16567- 0x1.00004p+0, false, 16568- 0x1.00004p+0, false, 16569- true, 16570- 0x1.00004p+0, false, 16571- 0x1.00004p+0, false, 16572- 0x1.00004p+0, false, 16573- 0x1.00004p+0, false, 16574- true, 16575- 0x1.00004p+0, false, 16576- 0x1.00004p+0, false, 16577- 0x1.00004p+0, false, 16578- 0x1.00004p+0, false), 16579+ 0x1.00004p+0, false, false, 16580+ 0x1.00004p+0, false, false, 16581+ 0x1.00004p+0, false, false, 16582+ 0x1.00004p+0, false, false, 16583+ true, 16584+ 0x1.00004p+0, false, false, 16585+ 0x1.00004p+0, false, false, 16586+ 0x1.00004p+0, false, false, 16587+ 0x1.00004p+0, false, false, 16588+ true, 16589+ 0x1.00004p+0, false, false, 16590+ 0x1.00004p+0, false, false, 16591+ 0x1.00004p+0, false, false, 16592+ 0x1.00004p+0, false, false, 16593+ true, 16594+ 0x1.00004p+0, false, false, 16595+ 0x1.00004p+0, false, false, 16596+ 0x1.00004p+0, false, false, 16597+ 0x1.00004p+0, false, false, 16598+ true, 16599+ 0x1.00004p+0, false, false, 16600+ 0x1.00004p+0, false, false, 16601+ 0x1.00004p+0, false, false, 16602+ 0x1.00004p+0, false, false, 16603+ true, 16604+ 0x1.00004p+0, false, false, 16605+ 0x1.00004p+0, false, false, 16606+ 0x1.00004p+0, false, false, 16607+ 0x1.00004p+0, false, false), 16608 TEST ("1.0000019073486328125", 16609 true, 16610- 0x1.00002p+0, false, 16611- 0x1.00002p+0, false, 16612- 0x1.00002p+0, false, 16613- 0x1.00002p+0, false, 16614- true, 16615- 0x1.00002p+0, false, 16616- 0x1.00002p+0, false, 16617- 0x1.00002p+0, false, 16618- 0x1.00002p+0, false, 16619- true, 16620- 0x1.00002p+0, false, 16621- 0x1.00002p+0, false, 16622- 0x1.00002p+0, false, 16623- 0x1.00002p+0, false, 16624- true, 16625- 0x1.00002p+0, false, 16626- 0x1.00002p+0, false, 16627- 0x1.00002p+0, false, 16628- 0x1.00002p+0, false, 16629- true, 16630- 0x1.00002p+0, false, 16631- 0x1.00002p+0, false, 16632- 0x1.00002p+0, false, 16633- 0x1.00002p+0, false, 16634- true, 16635- 0x1.00002p+0, false, 16636- 0x1.00002p+0, false, 16637- 0x1.00002p+0, false, 16638- 0x1.00002p+0, false), 16639+ 0x1.00002p+0, false, false, 16640+ 0x1.00002p+0, false, false, 16641+ 0x1.00002p+0, false, false, 16642+ 0x1.00002p+0, false, false, 16643+ true, 16644+ 0x1.00002p+0, false, false, 16645+ 0x1.00002p+0, false, false, 16646+ 0x1.00002p+0, false, false, 16647+ 0x1.00002p+0, false, false, 16648+ true, 16649+ 0x1.00002p+0, false, false, 16650+ 0x1.00002p+0, false, false, 16651+ 0x1.00002p+0, false, false, 16652+ 0x1.00002p+0, false, false, 16653+ true, 16654+ 0x1.00002p+0, false, false, 16655+ 0x1.00002p+0, false, false, 16656+ 0x1.00002p+0, false, false, 16657+ 0x1.00002p+0, false, false, 16658+ true, 16659+ 0x1.00002p+0, false, false, 16660+ 0x1.00002p+0, false, false, 16661+ 0x1.00002p+0, false, false, 16662+ 0x1.00002p+0, false, false, 16663+ true, 16664+ 0x1.00002p+0, false, false, 16665+ 0x1.00002p+0, false, false, 16666+ 0x1.00002p+0, false, false, 16667+ 0x1.00002p+0, false, false), 16668 TEST ("1.00000095367431640625", 16669 true, 16670- 0x1.00001p+0, false, 16671- 0x1.00001p+0, false, 16672- 0x1.00001p+0, false, 16673- 0x1.00001p+0, false, 16674- true, 16675- 0x1.00001p+0, false, 16676- 0x1.00001p+0, false, 16677- 0x1.00001p+0, false, 16678- 0x1.00001p+0, false, 16679- true, 16680- 0x1.00001p+0, false, 16681- 0x1.00001p+0, false, 16682- 0x1.00001p+0, false, 16683- 0x1.00001p+0, false, 16684- true, 16685- 0x1.00001p+0, false, 16686- 0x1.00001p+0, false, 16687- 0x1.00001p+0, false, 16688- 0x1.00001p+0, false, 16689- true, 16690- 0x1.00001p+0, false, 16691- 0x1.00001p+0, false, 16692- 0x1.00001p+0, false, 16693- 0x1.00001p+0, false, 16694- true, 16695- 0x1.00001p+0, false, 16696- 0x1.00001p+0, false, 16697- 0x1.00001p+0, false, 16698- 0x1.00001p+0, false), 16699+ 0x1.00001p+0, false, false, 16700+ 0x1.00001p+0, false, false, 16701+ 0x1.00001p+0, false, false, 16702+ 0x1.00001p+0, false, false, 16703+ true, 16704+ 0x1.00001p+0, false, false, 16705+ 0x1.00001p+0, false, false, 16706+ 0x1.00001p+0, false, false, 16707+ 0x1.00001p+0, false, false, 16708+ true, 16709+ 0x1.00001p+0, false, false, 16710+ 0x1.00001p+0, false, false, 16711+ 0x1.00001p+0, false, false, 16712+ 0x1.00001p+0, false, false, 16713+ true, 16714+ 0x1.00001p+0, false, false, 16715+ 0x1.00001p+0, false, false, 16716+ 0x1.00001p+0, false, false, 16717+ 0x1.00001p+0, false, false, 16718+ true, 16719+ 0x1.00001p+0, false, false, 16720+ 0x1.00001p+0, false, false, 16721+ 0x1.00001p+0, false, false, 16722+ 0x1.00001p+0, false, false, 16723+ true, 16724+ 0x1.00001p+0, false, false, 16725+ 0x1.00001p+0, false, false, 16726+ 0x1.00001p+0, false, false, 16727+ 0x1.00001p+0, false, false), 16728 TEST ("1.000000476837158203125", 16729 true, 16730- 0x1.000008p+0, false, 16731- 0x1.000008p+0, false, 16732- 0x1.000008p+0, false, 16733- 0x1.000008p+0, false, 16734- true, 16735- 0x1.000008p+0, false, 16736- 0x1.000008p+0, false, 16737- 0x1.000008p+0, false, 16738- 0x1.000008p+0, false, 16739- true, 16740- 0x1.000008p+0, false, 16741- 0x1.000008p+0, false, 16742- 0x1.000008p+0, false, 16743- 0x1.000008p+0, false, 16744- true, 16745- 0x1.000008p+0, false, 16746- 0x1.000008p+0, false, 16747- 0x1.000008p+0, false, 16748- 0x1.000008p+0, false, 16749- true, 16750- 0x1.000008p+0, false, 16751- 0x1.000008p+0, false, 16752- 0x1.000008p+0, false, 16753- 0x1.000008p+0, false, 16754- true, 16755- 0x1.000008p+0, false, 16756- 0x1.000008p+0, false, 16757- 0x1.000008p+0, false, 16758- 0x1.000008p+0, false), 16759+ 0x1.000008p+0, false, false, 16760+ 0x1.000008p+0, false, false, 16761+ 0x1.000008p+0, false, false, 16762+ 0x1.000008p+0, false, false, 16763+ true, 16764+ 0x1.000008p+0, false, false, 16765+ 0x1.000008p+0, false, false, 16766+ 0x1.000008p+0, false, false, 16767+ 0x1.000008p+0, false, false, 16768+ true, 16769+ 0x1.000008p+0, false, false, 16770+ 0x1.000008p+0, false, false, 16771+ 0x1.000008p+0, false, false, 16772+ 0x1.000008p+0, false, false, 16773+ true, 16774+ 0x1.000008p+0, false, false, 16775+ 0x1.000008p+0, false, false, 16776+ 0x1.000008p+0, false, false, 16777+ 0x1.000008p+0, false, false, 16778+ true, 16779+ 0x1.000008p+0, false, false, 16780+ 0x1.000008p+0, false, false, 16781+ 0x1.000008p+0, false, false, 16782+ 0x1.000008p+0, false, false, 16783+ true, 16784+ 0x1.000008p+0, false, false, 16785+ 0x1.000008p+0, false, false, 16786+ 0x1.000008p+0, false, false, 16787+ 0x1.000008p+0, false, false), 16788 TEST ("1.0000000298023223876953125", 16789 false, 16790- 0x1p+0, false, 16791- 0x1p+0, false, 16792- 0x1p+0, false, 16793- 0x1.000002p+0, false, 16794- true, 16795- 0x1.0000008p+0, false, 16796- 0x1.0000008p+0, false, 16797- 0x1.0000008p+0, false, 16798- 0x1.0000008p+0, false, 16799- true, 16800- 0x1.0000008p+0, false, 16801- 0x1.0000008p+0, false, 16802- 0x1.0000008p+0, false, 16803- 0x1.0000008p+0, false, 16804- true, 16805- 0x1.0000008p+0, false, 16806- 0x1.0000008p+0, false, 16807- 0x1.0000008p+0, false, 16808- 0x1.0000008p+0, false, 16809- true, 16810- 0x1.0000008p+0, false, 16811- 0x1.0000008p+0, false, 16812- 0x1.0000008p+0, false, 16813- 0x1.0000008p+0, false, 16814- true, 16815- 0x1.0000008p+0, false, 16816- 0x1.0000008p+0, false, 16817- 0x1.0000008p+0, false, 16818- 0x1.0000008p+0, false), 16819+ 0x1p+0, false, false, 16820+ 0x1p+0, false, false, 16821+ 0x1p+0, false, false, 16822+ 0x1.000002p+0, false, false, 16823+ true, 16824+ 0x1.0000008p+0, false, false, 16825+ 0x1.0000008p+0, false, false, 16826+ 0x1.0000008p+0, false, false, 16827+ 0x1.0000008p+0, false, false, 16828+ true, 16829+ 0x1.0000008p+0, false, false, 16830+ 0x1.0000008p+0, false, false, 16831+ 0x1.0000008p+0, false, false, 16832+ 0x1.0000008p+0, false, false, 16833+ true, 16834+ 0x1.0000008p+0, false, false, 16835+ 0x1.0000008p+0, false, false, 16836+ 0x1.0000008p+0, false, false, 16837+ 0x1.0000008p+0, false, false, 16838+ true, 16839+ 0x1.0000008p+0, false, false, 16840+ 0x1.0000008p+0, false, false, 16841+ 0x1.0000008p+0, false, false, 16842+ 0x1.0000008p+0, false, false, 16843+ true, 16844+ 0x1.0000008p+0, false, false, 16845+ 0x1.0000008p+0, false, false, 16846+ 0x1.0000008p+0, false, false, 16847+ 0x1.0000008p+0, false, false), 16848 TEST ("1.00000001490116119384765625", 16849 false, 16850- 0x1p+0, false, 16851- 0x1p+0, false, 16852- 0x1p+0, false, 16853- 0x1.000002p+0, false, 16854- true, 16855- 0x1.0000004p+0, false, 16856- 0x1.0000004p+0, false, 16857- 0x1.0000004p+0, false, 16858- 0x1.0000004p+0, false, 16859- true, 16860- 0x1.0000004p+0, false, 16861- 0x1.0000004p+0, false, 16862- 0x1.0000004p+0, false, 16863- 0x1.0000004p+0, false, 16864- true, 16865- 0x1.0000004p+0, false, 16866- 0x1.0000004p+0, false, 16867- 0x1.0000004p+0, false, 16868- 0x1.0000004p+0, false, 16869- true, 16870- 0x1.0000004p+0, false, 16871- 0x1.0000004p+0, false, 16872- 0x1.0000004p+0, false, 16873- 0x1.0000004p+0, false, 16874- true, 16875- 0x1.0000004p+0, false, 16876- 0x1.0000004p+0, false, 16877- 0x1.0000004p+0, false, 16878- 0x1.0000004p+0, false), 16879+ 0x1p+0, false, false, 16880+ 0x1p+0, false, false, 16881+ 0x1p+0, false, false, 16882+ 0x1.000002p+0, false, false, 16883+ true, 16884+ 0x1.0000004p+0, false, false, 16885+ 0x1.0000004p+0, false, false, 16886+ 0x1.0000004p+0, false, false, 16887+ 0x1.0000004p+0, false, false, 16888+ true, 16889+ 0x1.0000004p+0, false, false, 16890+ 0x1.0000004p+0, false, false, 16891+ 0x1.0000004p+0, false, false, 16892+ 0x1.0000004p+0, false, false, 16893+ true, 16894+ 0x1.0000004p+0, false, false, 16895+ 0x1.0000004p+0, false, false, 16896+ 0x1.0000004p+0, false, false, 16897+ 0x1.0000004p+0, false, false, 16898+ true, 16899+ 0x1.0000004p+0, false, false, 16900+ 0x1.0000004p+0, false, false, 16901+ 0x1.0000004p+0, false, false, 16902+ 0x1.0000004p+0, false, false, 16903+ true, 16904+ 0x1.0000004p+0, false, false, 16905+ 0x1.0000004p+0, false, false, 16906+ 0x1.0000004p+0, false, false, 16907+ 0x1.0000004p+0, false, false), 16908 TEST ("1.000000007450580596923828125", 16909 false, 16910- 0x1p+0, false, 16911- 0x1p+0, false, 16912- 0x1p+0, false, 16913- 0x1.000002p+0, false, 16914- true, 16915- 0x1.0000002p+0, false, 16916- 0x1.0000002p+0, false, 16917- 0x1.0000002p+0, false, 16918- 0x1.0000002p+0, false, 16919- true, 16920- 0x1.0000002p+0, false, 16921- 0x1.0000002p+0, false, 16922- 0x1.0000002p+0, false, 16923- 0x1.0000002p+0, false, 16924- true, 16925- 0x1.0000002p+0, false, 16926- 0x1.0000002p+0, false, 16927- 0x1.0000002p+0, false, 16928- 0x1.0000002p+0, false, 16929- true, 16930- 0x1.0000002p+0, false, 16931- 0x1.0000002p+0, false, 16932- 0x1.0000002p+0, false, 16933- 0x1.0000002p+0, false, 16934- true, 16935- 0x1.0000002p+0, false, 16936- 0x1.0000002p+0, false, 16937- 0x1.0000002p+0, false, 16938- 0x1.0000002p+0, false), 16939+ 0x1p+0, false, false, 16940+ 0x1p+0, false, false, 16941+ 0x1p+0, false, false, 16942+ 0x1.000002p+0, false, false, 16943+ true, 16944+ 0x1.0000002p+0, false, false, 16945+ 0x1.0000002p+0, false, false, 16946+ 0x1.0000002p+0, false, false, 16947+ 0x1.0000002p+0, false, false, 16948+ true, 16949+ 0x1.0000002p+0, false, false, 16950+ 0x1.0000002p+0, false, false, 16951+ 0x1.0000002p+0, false, false, 16952+ 0x1.0000002p+0, false, false, 16953+ true, 16954+ 0x1.0000002p+0, false, false, 16955+ 0x1.0000002p+0, false, false, 16956+ 0x1.0000002p+0, false, false, 16957+ 0x1.0000002p+0, false, false, 16958+ true, 16959+ 0x1.0000002p+0, false, false, 16960+ 0x1.0000002p+0, false, false, 16961+ 0x1.0000002p+0, false, false, 16962+ 0x1.0000002p+0, false, false, 16963+ true, 16964+ 0x1.0000002p+0, false, false, 16965+ 0x1.0000002p+0, false, false, 16966+ 0x1.0000002p+0, false, false, 16967+ 0x1.0000002p+0, false, false), 16968 TEST ("1.0000000037252902984619140625", 16969 false, 16970- 0x1p+0, false, 16971- 0x1p+0, false, 16972- 0x1p+0, false, 16973- 0x1.000002p+0, false, 16974- true, 16975- 0x1.0000001p+0, false, 16976- 0x1.0000001p+0, false, 16977- 0x1.0000001p+0, false, 16978- 0x1.0000001p+0, false, 16979- true, 16980- 0x1.0000001p+0, false, 16981- 0x1.0000001p+0, false, 16982- 0x1.0000001p+0, false, 16983- 0x1.0000001p+0, false, 16984- true, 16985- 0x1.0000001p+0, false, 16986- 0x1.0000001p+0, false, 16987- 0x1.0000001p+0, false, 16988- 0x1.0000001p+0, false, 16989- true, 16990- 0x1.0000001p+0, false, 16991- 0x1.0000001p+0, false, 16992- 0x1.0000001p+0, false, 16993- 0x1.0000001p+0, false, 16994- true, 16995- 0x1.0000001p+0, false, 16996- 0x1.0000001p+0, false, 16997- 0x1.0000001p+0, false, 16998- 0x1.0000001p+0, false), 16999+ 0x1p+0, false, false, 17000+ 0x1p+0, false, false, 17001+ 0x1p+0, false, false, 17002+ 0x1.000002p+0, false, false, 17003+ true, 17004+ 0x1.0000001p+0, false, false, 17005+ 0x1.0000001p+0, false, false, 17006+ 0x1.0000001p+0, false, false, 17007+ 0x1.0000001p+0, false, false, 17008+ true, 17009+ 0x1.0000001p+0, false, false, 17010+ 0x1.0000001p+0, false, false, 17011+ 0x1.0000001p+0, false, false, 17012+ 0x1.0000001p+0, false, false, 17013+ true, 17014+ 0x1.0000001p+0, false, false, 17015+ 0x1.0000001p+0, false, false, 17016+ 0x1.0000001p+0, false, false, 17017+ 0x1.0000001p+0, false, false, 17018+ true, 17019+ 0x1.0000001p+0, false, false, 17020+ 0x1.0000001p+0, false, false, 17021+ 0x1.0000001p+0, false, false, 17022+ 0x1.0000001p+0, false, false, 17023+ true, 17024+ 0x1.0000001p+0, false, false, 17025+ 0x1.0000001p+0, false, false, 17026+ 0x1.0000001p+0, false, false, 17027+ 0x1.0000001p+0, false, false), 17028 TEST ("1.00000000186264514923095703125", 17029 false, 17030- 0x1p+0, false, 17031- 0x1p+0, false, 17032- 0x1p+0, false, 17033- 0x1.000002p+0, false, 17034- true, 17035- 0x1.00000008p+0, false, 17036- 0x1.00000008p+0, false, 17037- 0x1.00000008p+0, false, 17038- 0x1.00000008p+0, false, 17039- true, 17040- 0x1.00000008p+0, false, 17041- 0x1.00000008p+0, false, 17042- 0x1.00000008p+0, false, 17043- 0x1.00000008p+0, false, 17044- true, 17045- 0x1.00000008p+0, false, 17046- 0x1.00000008p+0, false, 17047- 0x1.00000008p+0, false, 17048- 0x1.00000008p+0, false, 17049- true, 17050- 0x1.00000008p+0, false, 17051- 0x1.00000008p+0, false, 17052- 0x1.00000008p+0, false, 17053- 0x1.00000008p+0, false, 17054- true, 17055- 0x1.00000008p+0, false, 17056- 0x1.00000008p+0, false, 17057- 0x1.00000008p+0, false, 17058- 0x1.00000008p+0, false), 17059+ 0x1p+0, false, false, 17060+ 0x1p+0, false, false, 17061+ 0x1p+0, false, false, 17062+ 0x1.000002p+0, false, false, 17063+ true, 17064+ 0x1.00000008p+0, false, false, 17065+ 0x1.00000008p+0, false, false, 17066+ 0x1.00000008p+0, false, false, 17067+ 0x1.00000008p+0, false, false, 17068+ true, 17069+ 0x1.00000008p+0, false, false, 17070+ 0x1.00000008p+0, false, false, 17071+ 0x1.00000008p+0, false, false, 17072+ 0x1.00000008p+0, false, false, 17073+ true, 17074+ 0x1.00000008p+0, false, false, 17075+ 0x1.00000008p+0, false, false, 17076+ 0x1.00000008p+0, false, false, 17077+ 0x1.00000008p+0, false, false, 17078+ true, 17079+ 0x1.00000008p+0, false, false, 17080+ 0x1.00000008p+0, false, false, 17081+ 0x1.00000008p+0, false, false, 17082+ 0x1.00000008p+0, false, false, 17083+ true, 17084+ 0x1.00000008p+0, false, false, 17085+ 0x1.00000008p+0, false, false, 17086+ 0x1.00000008p+0, false, false, 17087+ 0x1.00000008p+0, false, false), 17088 TEST ("1.000000000931322574615478515625", 17089 false, 17090- 0x1p+0, false, 17091- 0x1p+0, false, 17092- 0x1p+0, false, 17093- 0x1.000002p+0, false, 17094- true, 17095- 0x1.00000004p+0, false, 17096- 0x1.00000004p+0, false, 17097- 0x1.00000004p+0, false, 17098- 0x1.00000004p+0, false, 17099- true, 17100- 0x1.00000004p+0, false, 17101- 0x1.00000004p+0, false, 17102- 0x1.00000004p+0, false, 17103- 0x1.00000004p+0, false, 17104- true, 17105- 0x1.00000004p+0, false, 17106- 0x1.00000004p+0, false, 17107- 0x1.00000004p+0, false, 17108- 0x1.00000004p+0, false, 17109- true, 17110- 0x1.00000004p+0, false, 17111- 0x1.00000004p+0, false, 17112- 0x1.00000004p+0, false, 17113- 0x1.00000004p+0, false, 17114- true, 17115- 0x1.00000004p+0, false, 17116- 0x1.00000004p+0, false, 17117- 0x1.00000004p+0, false, 17118- 0x1.00000004p+0, false), 17119+ 0x1p+0, false, false, 17120+ 0x1p+0, false, false, 17121+ 0x1p+0, false, false, 17122+ 0x1.000002p+0, false, false, 17123+ true, 17124+ 0x1.00000004p+0, false, false, 17125+ 0x1.00000004p+0, false, false, 17126+ 0x1.00000004p+0, false, false, 17127+ 0x1.00000004p+0, false, false, 17128+ true, 17129+ 0x1.00000004p+0, false, false, 17130+ 0x1.00000004p+0, false, false, 17131+ 0x1.00000004p+0, false, false, 17132+ 0x1.00000004p+0, false, false, 17133+ true, 17134+ 0x1.00000004p+0, false, false, 17135+ 0x1.00000004p+0, false, false, 17136+ 0x1.00000004p+0, false, false, 17137+ 0x1.00000004p+0, false, false, 17138+ true, 17139+ 0x1.00000004p+0, false, false, 17140+ 0x1.00000004p+0, false, false, 17141+ 0x1.00000004p+0, false, false, 17142+ 0x1.00000004p+0, false, false, 17143+ true, 17144+ 0x1.00000004p+0, false, false, 17145+ 0x1.00000004p+0, false, false, 17146+ 0x1.00000004p+0, false, false, 17147+ 0x1.00000004p+0, false, false), 17148 TEST ("1.0000000004656612873077392578125", 17149 false, 17150- 0x1p+0, false, 17151- 0x1p+0, false, 17152- 0x1p+0, false, 17153- 0x1.000002p+0, false, 17154- true, 17155- 0x1.00000002p+0, false, 17156- 0x1.00000002p+0, false, 17157- 0x1.00000002p+0, false, 17158- 0x1.00000002p+0, false, 17159- true, 17160- 0x1.00000002p+0, false, 17161- 0x1.00000002p+0, false, 17162- 0x1.00000002p+0, false, 17163- 0x1.00000002p+0, false, 17164- true, 17165- 0x1.00000002p+0, false, 17166- 0x1.00000002p+0, false, 17167- 0x1.00000002p+0, false, 17168- 0x1.00000002p+0, false, 17169- true, 17170- 0x1.00000002p+0, false, 17171- 0x1.00000002p+0, false, 17172- 0x1.00000002p+0, false, 17173- 0x1.00000002p+0, false, 17174- true, 17175- 0x1.00000002p+0, false, 17176- 0x1.00000002p+0, false, 17177- 0x1.00000002p+0, false, 17178- 0x1.00000002p+0, false), 17179+ 0x1p+0, false, false, 17180+ 0x1p+0, false, false, 17181+ 0x1p+0, false, false, 17182+ 0x1.000002p+0, false, false, 17183+ true, 17184+ 0x1.00000002p+0, false, false, 17185+ 0x1.00000002p+0, false, false, 17186+ 0x1.00000002p+0, false, false, 17187+ 0x1.00000002p+0, false, false, 17188+ true, 17189+ 0x1.00000002p+0, false, false, 17190+ 0x1.00000002p+0, false, false, 17191+ 0x1.00000002p+0, false, false, 17192+ 0x1.00000002p+0, false, false, 17193+ true, 17194+ 0x1.00000002p+0, false, false, 17195+ 0x1.00000002p+0, false, false, 17196+ 0x1.00000002p+0, false, false, 17197+ 0x1.00000002p+0, false, false, 17198+ true, 17199+ 0x1.00000002p+0, false, false, 17200+ 0x1.00000002p+0, false, false, 17201+ 0x1.00000002p+0, false, false, 17202+ 0x1.00000002p+0, false, false, 17203+ true, 17204+ 0x1.00000002p+0, false, false, 17205+ 0x1.00000002p+0, false, false, 17206+ 0x1.00000002p+0, false, false, 17207+ 0x1.00000002p+0, false, false), 17208 TEST ("1.00000000023283064365386962890625", 17209 false, 17210- 0x1p+0, false, 17211- 0x1p+0, false, 17212- 0x1p+0, false, 17213- 0x1.000002p+0, false, 17214- true, 17215- 0x1.00000001p+0, false, 17216- 0x1.00000001p+0, false, 17217- 0x1.00000001p+0, false, 17218- 0x1.00000001p+0, false, 17219- true, 17220- 0x1.00000001p+0, false, 17221- 0x1.00000001p+0, false, 17222- 0x1.00000001p+0, false, 17223- 0x1.00000001p+0, false, 17224- true, 17225- 0x1.00000001p+0, false, 17226- 0x1.00000001p+0, false, 17227- 0x1.00000001p+0, false, 17228- 0x1.00000001p+0, false, 17229- true, 17230- 0x1.00000001p+0, false, 17231- 0x1.00000001p+0, false, 17232- 0x1.00000001p+0, false, 17233- 0x1.00000001p+0, false, 17234- true, 17235- 0x1.00000001p+0, false, 17236- 0x1.00000001p+0, false, 17237- 0x1.00000001p+0, false, 17238- 0x1.00000001p+0, false), 17239+ 0x1p+0, false, false, 17240+ 0x1p+0, false, false, 17241+ 0x1p+0, false, false, 17242+ 0x1.000002p+0, false, false, 17243+ true, 17244+ 0x1.00000001p+0, false, false, 17245+ 0x1.00000001p+0, false, false, 17246+ 0x1.00000001p+0, false, false, 17247+ 0x1.00000001p+0, false, false, 17248+ true, 17249+ 0x1.00000001p+0, false, false, 17250+ 0x1.00000001p+0, false, false, 17251+ 0x1.00000001p+0, false, false, 17252+ 0x1.00000001p+0, false, false, 17253+ true, 17254+ 0x1.00000001p+0, false, false, 17255+ 0x1.00000001p+0, false, false, 17256+ 0x1.00000001p+0, false, false, 17257+ 0x1.00000001p+0, false, false, 17258+ true, 17259+ 0x1.00000001p+0, false, false, 17260+ 0x1.00000001p+0, false, false, 17261+ 0x1.00000001p+0, false, false, 17262+ 0x1.00000001p+0, false, false, 17263+ true, 17264+ 0x1.00000001p+0, false, false, 17265+ 0x1.00000001p+0, false, false, 17266+ 0x1.00000001p+0, false, false, 17267+ 0x1.00000001p+0, false, false), 17268 TEST ("1.000000000116415321826934814453125", 17269 false, 17270- 0x1p+0, false, 17271- 0x1p+0, false, 17272- 0x1p+0, false, 17273- 0x1.000002p+0, false, 17274- true, 17275- 0x1.000000008p+0, false, 17276- 0x1.000000008p+0, false, 17277- 0x1.000000008p+0, false, 17278- 0x1.000000008p+0, false, 17279- true, 17280- 0x1.000000008p+0, false, 17281- 0x1.000000008p+0, false, 17282- 0x1.000000008p+0, false, 17283- 0x1.000000008p+0, false, 17284- true, 17285- 0x1.000000008p+0, false, 17286- 0x1.000000008p+0, false, 17287- 0x1.000000008p+0, false, 17288- 0x1.000000008p+0, false, 17289- true, 17290- 0x1.000000008p+0, false, 17291- 0x1.000000008p+0, false, 17292- 0x1.000000008p+0, false, 17293- 0x1.000000008p+0, false, 17294- true, 17295- 0x1.000000008p+0, false, 17296- 0x1.000000008p+0, false, 17297- 0x1.000000008p+0, false, 17298- 0x1.000000008p+0, false), 17299+ 0x1p+0, false, false, 17300+ 0x1p+0, false, false, 17301+ 0x1p+0, false, false, 17302+ 0x1.000002p+0, false, false, 17303+ true, 17304+ 0x1.000000008p+0, false, false, 17305+ 0x1.000000008p+0, false, false, 17306+ 0x1.000000008p+0, false, false, 17307+ 0x1.000000008p+0, false, false, 17308+ true, 17309+ 0x1.000000008p+0, false, false, 17310+ 0x1.000000008p+0, false, false, 17311+ 0x1.000000008p+0, false, false, 17312+ 0x1.000000008p+0, false, false, 17313+ true, 17314+ 0x1.000000008p+0, false, false, 17315+ 0x1.000000008p+0, false, false, 17316+ 0x1.000000008p+0, false, false, 17317+ 0x1.000000008p+0, false, false, 17318+ true, 17319+ 0x1.000000008p+0, false, false, 17320+ 0x1.000000008p+0, false, false, 17321+ 0x1.000000008p+0, false, false, 17322+ 0x1.000000008p+0, false, false, 17323+ true, 17324+ 0x1.000000008p+0, false, false, 17325+ 0x1.000000008p+0, false, false, 17326+ 0x1.000000008p+0, false, false, 17327+ 0x1.000000008p+0, false, false), 17328 TEST ("1.0000000000582076609134674072265625", 17329 false, 17330- 0x1p+0, false, 17331- 0x1p+0, false, 17332- 0x1p+0, false, 17333- 0x1.000002p+0, false, 17334- true, 17335- 0x1.000000004p+0, false, 17336- 0x1.000000004p+0, false, 17337- 0x1.000000004p+0, false, 17338- 0x1.000000004p+0, false, 17339- true, 17340- 0x1.000000004p+0, false, 17341- 0x1.000000004p+0, false, 17342- 0x1.000000004p+0, false, 17343- 0x1.000000004p+0, false, 17344- true, 17345- 0x1.000000004p+0, false, 17346- 0x1.000000004p+0, false, 17347- 0x1.000000004p+0, false, 17348- 0x1.000000004p+0, false, 17349- true, 17350- 0x1.000000004p+0, false, 17351- 0x1.000000004p+0, false, 17352- 0x1.000000004p+0, false, 17353- 0x1.000000004p+0, false, 17354- true, 17355- 0x1.000000004p+0, false, 17356- 0x1.000000004p+0, false, 17357- 0x1.000000004p+0, false, 17358- 0x1.000000004p+0, false), 17359+ 0x1p+0, false, false, 17360+ 0x1p+0, false, false, 17361+ 0x1p+0, false, false, 17362+ 0x1.000002p+0, false, false, 17363+ true, 17364+ 0x1.000000004p+0, false, false, 17365+ 0x1.000000004p+0, false, false, 17366+ 0x1.000000004p+0, false, false, 17367+ 0x1.000000004p+0, false, false, 17368+ true, 17369+ 0x1.000000004p+0, false, false, 17370+ 0x1.000000004p+0, false, false, 17371+ 0x1.000000004p+0, false, false, 17372+ 0x1.000000004p+0, false, false, 17373+ true, 17374+ 0x1.000000004p+0, false, false, 17375+ 0x1.000000004p+0, false, false, 17376+ 0x1.000000004p+0, false, false, 17377+ 0x1.000000004p+0, false, false, 17378+ true, 17379+ 0x1.000000004p+0, false, false, 17380+ 0x1.000000004p+0, false, false, 17381+ 0x1.000000004p+0, false, false, 17382+ 0x1.000000004p+0, false, false, 17383+ true, 17384+ 0x1.000000004p+0, false, false, 17385+ 0x1.000000004p+0, false, false, 17386+ 0x1.000000004p+0, false, false, 17387+ 0x1.000000004p+0, false, false), 17388 TEST ("1.00000000002910383045673370361328125", 17389 false, 17390- 0x1p+0, false, 17391- 0x1p+0, false, 17392- 0x1p+0, false, 17393- 0x1.000002p+0, false, 17394- true, 17395- 0x1.000000002p+0, false, 17396- 0x1.000000002p+0, false, 17397- 0x1.000000002p+0, false, 17398- 0x1.000000002p+0, false, 17399- true, 17400- 0x1.000000002p+0, false, 17401- 0x1.000000002p+0, false, 17402- 0x1.000000002p+0, false, 17403- 0x1.000000002p+0, false, 17404- true, 17405- 0x1.000000002p+0, false, 17406- 0x1.000000002p+0, false, 17407- 0x1.000000002p+0, false, 17408- 0x1.000000002p+0, false, 17409- true, 17410- 0x1.000000002p+0, false, 17411- 0x1.000000002p+0, false, 17412- 0x1.000000002p+0, false, 17413- 0x1.000000002p+0, false, 17414- true, 17415- 0x1.000000002p+0, false, 17416- 0x1.000000002p+0, false, 17417- 0x1.000000002p+0, false, 17418- 0x1.000000002p+0, false), 17419+ 0x1p+0, false, false, 17420+ 0x1p+0, false, false, 17421+ 0x1p+0, false, false, 17422+ 0x1.000002p+0, false, false, 17423+ true, 17424+ 0x1.000000002p+0, false, false, 17425+ 0x1.000000002p+0, false, false, 17426+ 0x1.000000002p+0, false, false, 17427+ 0x1.000000002p+0, false, false, 17428+ true, 17429+ 0x1.000000002p+0, false, false, 17430+ 0x1.000000002p+0, false, false, 17431+ 0x1.000000002p+0, false, false, 17432+ 0x1.000000002p+0, false, false, 17433+ true, 17434+ 0x1.000000002p+0, false, false, 17435+ 0x1.000000002p+0, false, false, 17436+ 0x1.000000002p+0, false, false, 17437+ 0x1.000000002p+0, false, false, 17438+ true, 17439+ 0x1.000000002p+0, false, false, 17440+ 0x1.000000002p+0, false, false, 17441+ 0x1.000000002p+0, false, false, 17442+ 0x1.000000002p+0, false, false, 17443+ true, 17444+ 0x1.000000002p+0, false, false, 17445+ 0x1.000000002p+0, false, false, 17446+ 0x1.000000002p+0, false, false, 17447+ 0x1.000000002p+0, false, false), 17448 TEST ("1.000000000014551915228366851806640625", 17449 false, 17450- 0x1p+0, false, 17451- 0x1p+0, false, 17452- 0x1p+0, false, 17453- 0x1.000002p+0, false, 17454- true, 17455- 0x1.000000001p+0, false, 17456- 0x1.000000001p+0, false, 17457- 0x1.000000001p+0, false, 17458- 0x1.000000001p+0, false, 17459- true, 17460- 0x1.000000001p+0, false, 17461- 0x1.000000001p+0, false, 17462- 0x1.000000001p+0, false, 17463- 0x1.000000001p+0, false, 17464- true, 17465- 0x1.000000001p+0, false, 17466- 0x1.000000001p+0, false, 17467- 0x1.000000001p+0, false, 17468- 0x1.000000001p+0, false, 17469- true, 17470- 0x1.000000001p+0, false, 17471- 0x1.000000001p+0, false, 17472- 0x1.000000001p+0, false, 17473- 0x1.000000001p+0, false, 17474- true, 17475- 0x1.000000001p+0, false, 17476- 0x1.000000001p+0, false, 17477- 0x1.000000001p+0, false, 17478- 0x1.000000001p+0, false), 17479+ 0x1p+0, false, false, 17480+ 0x1p+0, false, false, 17481+ 0x1p+0, false, false, 17482+ 0x1.000002p+0, false, false, 17483+ true, 17484+ 0x1.000000001p+0, false, false, 17485+ 0x1.000000001p+0, false, false, 17486+ 0x1.000000001p+0, false, false, 17487+ 0x1.000000001p+0, false, false, 17488+ true, 17489+ 0x1.000000001p+0, false, false, 17490+ 0x1.000000001p+0, false, false, 17491+ 0x1.000000001p+0, false, false, 17492+ 0x1.000000001p+0, false, false, 17493+ true, 17494+ 0x1.000000001p+0, false, false, 17495+ 0x1.000000001p+0, false, false, 17496+ 0x1.000000001p+0, false, false, 17497+ 0x1.000000001p+0, false, false, 17498+ true, 17499+ 0x1.000000001p+0, false, false, 17500+ 0x1.000000001p+0, false, false, 17501+ 0x1.000000001p+0, false, false, 17502+ 0x1.000000001p+0, false, false, 17503+ true, 17504+ 0x1.000000001p+0, false, false, 17505+ 0x1.000000001p+0, false, false, 17506+ 0x1.000000001p+0, false, false, 17507+ 0x1.000000001p+0, false, false), 17508 TEST ("1.0000000000072759576141834259033203125", 17509 false, 17510- 0x1p+0, false, 17511- 0x1p+0, false, 17512- 0x1p+0, false, 17513- 0x1.000002p+0, false, 17514- true, 17515- 0x1.0000000008p+0, false, 17516- 0x1.0000000008p+0, false, 17517- 0x1.0000000008p+0, false, 17518- 0x1.0000000008p+0, false, 17519- true, 17520- 0x1.0000000008p+0, false, 17521- 0x1.0000000008p+0, false, 17522- 0x1.0000000008p+0, false, 17523- 0x1.0000000008p+0, false, 17524- true, 17525- 0x1.0000000008p+0, false, 17526- 0x1.0000000008p+0, false, 17527- 0x1.0000000008p+0, false, 17528- 0x1.0000000008p+0, false, 17529- true, 17530- 0x1.0000000008p+0, false, 17531- 0x1.0000000008p+0, false, 17532- 0x1.0000000008p+0, false, 17533- 0x1.0000000008p+0, false, 17534- true, 17535- 0x1.0000000008p+0, false, 17536- 0x1.0000000008p+0, false, 17537- 0x1.0000000008p+0, false, 17538- 0x1.0000000008p+0, false), 17539+ 0x1p+0, false, false, 17540+ 0x1p+0, false, false, 17541+ 0x1p+0, false, false, 17542+ 0x1.000002p+0, false, false, 17543+ true, 17544+ 0x1.0000000008p+0, false, false, 17545+ 0x1.0000000008p+0, false, false, 17546+ 0x1.0000000008p+0, false, false, 17547+ 0x1.0000000008p+0, false, false, 17548+ true, 17549+ 0x1.0000000008p+0, false, false, 17550+ 0x1.0000000008p+0, false, false, 17551+ 0x1.0000000008p+0, false, false, 17552+ 0x1.0000000008p+0, false, false, 17553+ true, 17554+ 0x1.0000000008p+0, false, false, 17555+ 0x1.0000000008p+0, false, false, 17556+ 0x1.0000000008p+0, false, false, 17557+ 0x1.0000000008p+0, false, false, 17558+ true, 17559+ 0x1.0000000008p+0, false, false, 17560+ 0x1.0000000008p+0, false, false, 17561+ 0x1.0000000008p+0, false, false, 17562+ 0x1.0000000008p+0, false, false, 17563+ true, 17564+ 0x1.0000000008p+0, false, false, 17565+ 0x1.0000000008p+0, false, false, 17566+ 0x1.0000000008p+0, false, false, 17567+ 0x1.0000000008p+0, false, false), 17568 TEST ("1.00000000000363797880709171295166015625", 17569 false, 17570- 0x1p+0, false, 17571- 0x1p+0, false, 17572- 0x1p+0, false, 17573- 0x1.000002p+0, false, 17574- true, 17575- 0x1.0000000004p+0, false, 17576- 0x1.0000000004p+0, false, 17577- 0x1.0000000004p+0, false, 17578- 0x1.0000000004p+0, false, 17579- true, 17580- 0x1.0000000004p+0, false, 17581- 0x1.0000000004p+0, false, 17582- 0x1.0000000004p+0, false, 17583- 0x1.0000000004p+0, false, 17584- true, 17585- 0x1.0000000004p+0, false, 17586- 0x1.0000000004p+0, false, 17587- 0x1.0000000004p+0, false, 17588- 0x1.0000000004p+0, false, 17589- true, 17590- 0x1.0000000004p+0, false, 17591- 0x1.0000000004p+0, false, 17592- 0x1.0000000004p+0, false, 17593- 0x1.0000000004p+0, false, 17594- true, 17595- 0x1.0000000004p+0, false, 17596- 0x1.0000000004p+0, false, 17597- 0x1.0000000004p+0, false, 17598- 0x1.0000000004p+0, false), 17599+ 0x1p+0, false, false, 17600+ 0x1p+0, false, false, 17601+ 0x1p+0, false, false, 17602+ 0x1.000002p+0, false, false, 17603+ true, 17604+ 0x1.0000000004p+0, false, false, 17605+ 0x1.0000000004p+0, false, false, 17606+ 0x1.0000000004p+0, false, false, 17607+ 0x1.0000000004p+0, false, false, 17608+ true, 17609+ 0x1.0000000004p+0, false, false, 17610+ 0x1.0000000004p+0, false, false, 17611+ 0x1.0000000004p+0, false, false, 17612+ 0x1.0000000004p+0, false, false, 17613+ true, 17614+ 0x1.0000000004p+0, false, false, 17615+ 0x1.0000000004p+0, false, false, 17616+ 0x1.0000000004p+0, false, false, 17617+ 0x1.0000000004p+0, false, false, 17618+ true, 17619+ 0x1.0000000004p+0, false, false, 17620+ 0x1.0000000004p+0, false, false, 17621+ 0x1.0000000004p+0, false, false, 17622+ 0x1.0000000004p+0, false, false, 17623+ true, 17624+ 0x1.0000000004p+0, false, false, 17625+ 0x1.0000000004p+0, false, false, 17626+ 0x1.0000000004p+0, false, false, 17627+ 0x1.0000000004p+0, false, false), 17628 TEST ("1.000000000001818989403545856475830078125", 17629 false, 17630- 0x1p+0, false, 17631- 0x1p+0, false, 17632- 0x1p+0, false, 17633- 0x1.000002p+0, false, 17634- true, 17635- 0x1.0000000002p+0, false, 17636- 0x1.0000000002p+0, false, 17637- 0x1.0000000002p+0, false, 17638- 0x1.0000000002p+0, false, 17639- true, 17640- 0x1.0000000002p+0, false, 17641- 0x1.0000000002p+0, false, 17642- 0x1.0000000002p+0, false, 17643- 0x1.0000000002p+0, false, 17644- true, 17645- 0x1.0000000002p+0, false, 17646- 0x1.0000000002p+0, false, 17647- 0x1.0000000002p+0, false, 17648- 0x1.0000000002p+0, false, 17649- true, 17650- 0x1.0000000002p+0, false, 17651- 0x1.0000000002p+0, false, 17652- 0x1.0000000002p+0, false, 17653- 0x1.0000000002p+0, false, 17654- true, 17655- 0x1.0000000002p+0, false, 17656- 0x1.0000000002p+0, false, 17657- 0x1.0000000002p+0, false, 17658- 0x1.0000000002p+0, false), 17659+ 0x1p+0, false, false, 17660+ 0x1p+0, false, false, 17661+ 0x1p+0, false, false, 17662+ 0x1.000002p+0, false, false, 17663+ true, 17664+ 0x1.0000000002p+0, false, false, 17665+ 0x1.0000000002p+0, false, false, 17666+ 0x1.0000000002p+0, false, false, 17667+ 0x1.0000000002p+0, false, false, 17668+ true, 17669+ 0x1.0000000002p+0, false, false, 17670+ 0x1.0000000002p+0, false, false, 17671+ 0x1.0000000002p+0, false, false, 17672+ 0x1.0000000002p+0, false, false, 17673+ true, 17674+ 0x1.0000000002p+0, false, false, 17675+ 0x1.0000000002p+0, false, false, 17676+ 0x1.0000000002p+0, false, false, 17677+ 0x1.0000000002p+0, false, false, 17678+ true, 17679+ 0x1.0000000002p+0, false, false, 17680+ 0x1.0000000002p+0, false, false, 17681+ 0x1.0000000002p+0, false, false, 17682+ 0x1.0000000002p+0, false, false, 17683+ true, 17684+ 0x1.0000000002p+0, false, false, 17685+ 0x1.0000000002p+0, false, false, 17686+ 0x1.0000000002p+0, false, false, 17687+ 0x1.0000000002p+0, false, false), 17688 TEST ("1.0000000000009094947017729282379150390625", 17689 false, 17690- 0x1p+0, false, 17691- 0x1p+0, false, 17692- 0x1p+0, false, 17693- 0x1.000002p+0, false, 17694- true, 17695- 0x1.0000000001p+0, false, 17696- 0x1.0000000001p+0, false, 17697- 0x1.0000000001p+0, false, 17698- 0x1.0000000001p+0, false, 17699- true, 17700- 0x1.0000000001p+0, false, 17701- 0x1.0000000001p+0, false, 17702- 0x1.0000000001p+0, false, 17703- 0x1.0000000001p+0, false, 17704- true, 17705- 0x1.0000000001p+0, false, 17706- 0x1.0000000001p+0, false, 17707- 0x1.0000000001p+0, false, 17708- 0x1.0000000001p+0, false, 17709- true, 17710- 0x1.0000000001p+0, false, 17711- 0x1.0000000001p+0, false, 17712- 0x1.0000000001p+0, false, 17713- 0x1.0000000001p+0, false, 17714- true, 17715- 0x1.0000000001p+0, false, 17716- 0x1.0000000001p+0, false, 17717- 0x1.0000000001p+0, false, 17718- 0x1.0000000001p+0, false), 17719+ 0x1p+0, false, false, 17720+ 0x1p+0, false, false, 17721+ 0x1p+0, false, false, 17722+ 0x1.000002p+0, false, false, 17723+ true, 17724+ 0x1.0000000001p+0, false, false, 17725+ 0x1.0000000001p+0, false, false, 17726+ 0x1.0000000001p+0, false, false, 17727+ 0x1.0000000001p+0, false, false, 17728+ true, 17729+ 0x1.0000000001p+0, false, false, 17730+ 0x1.0000000001p+0, false, false, 17731+ 0x1.0000000001p+0, false, false, 17732+ 0x1.0000000001p+0, false, false, 17733+ true, 17734+ 0x1.0000000001p+0, false, false, 17735+ 0x1.0000000001p+0, false, false, 17736+ 0x1.0000000001p+0, false, false, 17737+ 0x1.0000000001p+0, false, false, 17738+ true, 17739+ 0x1.0000000001p+0, false, false, 17740+ 0x1.0000000001p+0, false, false, 17741+ 0x1.0000000001p+0, false, false, 17742+ 0x1.0000000001p+0, false, false, 17743+ true, 17744+ 0x1.0000000001p+0, false, false, 17745+ 0x1.0000000001p+0, false, false, 17746+ 0x1.0000000001p+0, false, false, 17747+ 0x1.0000000001p+0, false, false), 17748 TEST ("1.00000000000045474735088646411895751953125", 17749 false, 17750- 0x1p+0, false, 17751- 0x1p+0, false, 17752- 0x1p+0, false, 17753- 0x1.000002p+0, false, 17754- true, 17755- 0x1.00000000008p+0, false, 17756- 0x1.00000000008p+0, false, 17757- 0x1.00000000008p+0, false, 17758- 0x1.00000000008p+0, false, 17759- true, 17760- 0x1.00000000008p+0, false, 17761- 0x1.00000000008p+0, false, 17762- 0x1.00000000008p+0, false, 17763- 0x1.00000000008p+0, false, 17764- true, 17765- 0x1.00000000008p+0, false, 17766- 0x1.00000000008p+0, false, 17767- 0x1.00000000008p+0, false, 17768- 0x1.00000000008p+0, false, 17769- true, 17770- 0x1.00000000008p+0, false, 17771- 0x1.00000000008p+0, false, 17772- 0x1.00000000008p+0, false, 17773- 0x1.00000000008p+0, false, 17774- true, 17775- 0x1.00000000008p+0, false, 17776- 0x1.00000000008p+0, false, 17777- 0x1.00000000008p+0, false, 17778- 0x1.00000000008p+0, false), 17779+ 0x1p+0, false, false, 17780+ 0x1p+0, false, false, 17781+ 0x1p+0, false, false, 17782+ 0x1.000002p+0, false, false, 17783+ true, 17784+ 0x1.00000000008p+0, false, false, 17785+ 0x1.00000000008p+0, false, false, 17786+ 0x1.00000000008p+0, false, false, 17787+ 0x1.00000000008p+0, false, false, 17788+ true, 17789+ 0x1.00000000008p+0, false, false, 17790+ 0x1.00000000008p+0, false, false, 17791+ 0x1.00000000008p+0, false, false, 17792+ 0x1.00000000008p+0, false, false, 17793+ true, 17794+ 0x1.00000000008p+0, false, false, 17795+ 0x1.00000000008p+0, false, false, 17796+ 0x1.00000000008p+0, false, false, 17797+ 0x1.00000000008p+0, false, false, 17798+ true, 17799+ 0x1.00000000008p+0, false, false, 17800+ 0x1.00000000008p+0, false, false, 17801+ 0x1.00000000008p+0, false, false, 17802+ 0x1.00000000008p+0, false, false, 17803+ true, 17804+ 0x1.00000000008p+0, false, false, 17805+ 0x1.00000000008p+0, false, false, 17806+ 0x1.00000000008p+0, false, false, 17807+ 0x1.00000000008p+0, false, false), 17808 TEST ("1.000000000000227373675443232059478759765625", 17809 false, 17810- 0x1p+0, false, 17811- 0x1p+0, false, 17812- 0x1p+0, false, 17813- 0x1.000002p+0, false, 17814- true, 17815- 0x1.00000000004p+0, false, 17816- 0x1.00000000004p+0, false, 17817- 0x1.00000000004p+0, false, 17818- 0x1.00000000004p+0, false, 17819- true, 17820- 0x1.00000000004p+0, false, 17821- 0x1.00000000004p+0, false, 17822- 0x1.00000000004p+0, false, 17823- 0x1.00000000004p+0, false, 17824- true, 17825- 0x1.00000000004p+0, false, 17826- 0x1.00000000004p+0, false, 17827- 0x1.00000000004p+0, false, 17828- 0x1.00000000004p+0, false, 17829- true, 17830- 0x1.00000000004p+0, false, 17831- 0x1.00000000004p+0, false, 17832- 0x1.00000000004p+0, false, 17833- 0x1.00000000004p+0, false, 17834- true, 17835- 0x1.00000000004p+0, false, 17836- 0x1.00000000004p+0, false, 17837- 0x1.00000000004p+0, false, 17838- 0x1.00000000004p+0, false), 17839+ 0x1p+0, false, false, 17840+ 0x1p+0, false, false, 17841+ 0x1p+0, false, false, 17842+ 0x1.000002p+0, false, false, 17843+ true, 17844+ 0x1.00000000004p+0, false, false, 17845+ 0x1.00000000004p+0, false, false, 17846+ 0x1.00000000004p+0, false, false, 17847+ 0x1.00000000004p+0, false, false, 17848+ true, 17849+ 0x1.00000000004p+0, false, false, 17850+ 0x1.00000000004p+0, false, false, 17851+ 0x1.00000000004p+0, false, false, 17852+ 0x1.00000000004p+0, false, false, 17853+ true, 17854+ 0x1.00000000004p+0, false, false, 17855+ 0x1.00000000004p+0, false, false, 17856+ 0x1.00000000004p+0, false, false, 17857+ 0x1.00000000004p+0, false, false, 17858+ true, 17859+ 0x1.00000000004p+0, false, false, 17860+ 0x1.00000000004p+0, false, false, 17861+ 0x1.00000000004p+0, false, false, 17862+ 0x1.00000000004p+0, false, false, 17863+ true, 17864+ 0x1.00000000004p+0, false, false, 17865+ 0x1.00000000004p+0, false, false, 17866+ 0x1.00000000004p+0, false, false, 17867+ 0x1.00000000004p+0, false, false), 17868 TEST ("1.0000000000001136868377216160297393798828125", 17869 false, 17870- 0x1p+0, false, 17871- 0x1p+0, false, 17872- 0x1p+0, false, 17873- 0x1.000002p+0, false, 17874- true, 17875- 0x1.00000000002p+0, false, 17876- 0x1.00000000002p+0, false, 17877- 0x1.00000000002p+0, false, 17878- 0x1.00000000002p+0, false, 17879- true, 17880- 0x1.00000000002p+0, false, 17881- 0x1.00000000002p+0, false, 17882- 0x1.00000000002p+0, false, 17883- 0x1.00000000002p+0, false, 17884- true, 17885- 0x1.00000000002p+0, false, 17886- 0x1.00000000002p+0, false, 17887- 0x1.00000000002p+0, false, 17888- 0x1.00000000002p+0, false, 17889- true, 17890- 0x1.00000000002p+0, false, 17891- 0x1.00000000002p+0, false, 17892- 0x1.00000000002p+0, false, 17893- 0x1.00000000002p+0, false, 17894- true, 17895- 0x1.00000000002p+0, false, 17896- 0x1.00000000002p+0, false, 17897- 0x1.00000000002p+0, false, 17898- 0x1.00000000002p+0, false), 17899+ 0x1p+0, false, false, 17900+ 0x1p+0, false, false, 17901+ 0x1p+0, false, false, 17902+ 0x1.000002p+0, false, false, 17903+ true, 17904+ 0x1.00000000002p+0, false, false, 17905+ 0x1.00000000002p+0, false, false, 17906+ 0x1.00000000002p+0, false, false, 17907+ 0x1.00000000002p+0, false, false, 17908+ true, 17909+ 0x1.00000000002p+0, false, false, 17910+ 0x1.00000000002p+0, false, false, 17911+ 0x1.00000000002p+0, false, false, 17912+ 0x1.00000000002p+0, false, false, 17913+ true, 17914+ 0x1.00000000002p+0, false, false, 17915+ 0x1.00000000002p+0, false, false, 17916+ 0x1.00000000002p+0, false, false, 17917+ 0x1.00000000002p+0, false, false, 17918+ true, 17919+ 0x1.00000000002p+0, false, false, 17920+ 0x1.00000000002p+0, false, false, 17921+ 0x1.00000000002p+0, false, false, 17922+ 0x1.00000000002p+0, false, false, 17923+ true, 17924+ 0x1.00000000002p+0, false, false, 17925+ 0x1.00000000002p+0, false, false, 17926+ 0x1.00000000002p+0, false, false, 17927+ 0x1.00000000002p+0, false, false), 17928 TEST ("1.00000000000005684341886080801486968994140625", 17929 false, 17930- 0x1p+0, false, 17931- 0x1p+0, false, 17932- 0x1p+0, false, 17933- 0x1.000002p+0, false, 17934- true, 17935- 0x1.00000000001p+0, false, 17936- 0x1.00000000001p+0, false, 17937- 0x1.00000000001p+0, false, 17938- 0x1.00000000001p+0, false, 17939- true, 17940- 0x1.00000000001p+0, false, 17941- 0x1.00000000001p+0, false, 17942- 0x1.00000000001p+0, false, 17943- 0x1.00000000001p+0, false, 17944- true, 17945- 0x1.00000000001p+0, false, 17946- 0x1.00000000001p+0, false, 17947- 0x1.00000000001p+0, false, 17948- 0x1.00000000001p+0, false, 17949- true, 17950- 0x1.00000000001p+0, false, 17951- 0x1.00000000001p+0, false, 17952- 0x1.00000000001p+0, false, 17953- 0x1.00000000001p+0, false, 17954- true, 17955- 0x1.00000000001p+0, false, 17956- 0x1.00000000001p+0, false, 17957- 0x1.00000000001p+0, false, 17958- 0x1.00000000001p+0, false), 17959+ 0x1p+0, false, false, 17960+ 0x1p+0, false, false, 17961+ 0x1p+0, false, false, 17962+ 0x1.000002p+0, false, false, 17963+ true, 17964+ 0x1.00000000001p+0, false, false, 17965+ 0x1.00000000001p+0, false, false, 17966+ 0x1.00000000001p+0, false, false, 17967+ 0x1.00000000001p+0, false, false, 17968+ true, 17969+ 0x1.00000000001p+0, false, false, 17970+ 0x1.00000000001p+0, false, false, 17971+ 0x1.00000000001p+0, false, false, 17972+ 0x1.00000000001p+0, false, false, 17973+ true, 17974+ 0x1.00000000001p+0, false, false, 17975+ 0x1.00000000001p+0, false, false, 17976+ 0x1.00000000001p+0, false, false, 17977+ 0x1.00000000001p+0, false, false, 17978+ true, 17979+ 0x1.00000000001p+0, false, false, 17980+ 0x1.00000000001p+0, false, false, 17981+ 0x1.00000000001p+0, false, false, 17982+ 0x1.00000000001p+0, false, false, 17983+ true, 17984+ 0x1.00000000001p+0, false, false, 17985+ 0x1.00000000001p+0, false, false, 17986+ 0x1.00000000001p+0, false, false, 17987+ 0x1.00000000001p+0, false, false), 17988 TEST ("1.000000000000028421709430404007434844970703125", 17989 false, 17990- 0x1p+0, false, 17991- 0x1p+0, false, 17992- 0x1p+0, false, 17993- 0x1.000002p+0, false, 17994- true, 17995- 0x1.000000000008p+0, false, 17996- 0x1.000000000008p+0, false, 17997- 0x1.000000000008p+0, false, 17998- 0x1.000000000008p+0, false, 17999- true, 18000- 0x1.000000000008p+0, false, 18001- 0x1.000000000008p+0, false, 18002- 0x1.000000000008p+0, false, 18003- 0x1.000000000008p+0, false, 18004- true, 18005- 0x1.000000000008p+0, false, 18006- 0x1.000000000008p+0, false, 18007- 0x1.000000000008p+0, false, 18008- 0x1.000000000008p+0, false, 18009- true, 18010- 0x1.000000000008p+0, false, 18011- 0x1.000000000008p+0, false, 18012- 0x1.000000000008p+0, false, 18013- 0x1.000000000008p+0, false, 18014- true, 18015- 0x1.000000000008p+0, false, 18016- 0x1.000000000008p+0, false, 18017- 0x1.000000000008p+0, false, 18018- 0x1.000000000008p+0, false), 18019+ 0x1p+0, false, false, 18020+ 0x1p+0, false, false, 18021+ 0x1p+0, false, false, 18022+ 0x1.000002p+0, false, false, 18023+ true, 18024+ 0x1.000000000008p+0, false, false, 18025+ 0x1.000000000008p+0, false, false, 18026+ 0x1.000000000008p+0, false, false, 18027+ 0x1.000000000008p+0, false, false, 18028+ true, 18029+ 0x1.000000000008p+0, false, false, 18030+ 0x1.000000000008p+0, false, false, 18031+ 0x1.000000000008p+0, false, false, 18032+ 0x1.000000000008p+0, false, false, 18033+ true, 18034+ 0x1.000000000008p+0, false, false, 18035+ 0x1.000000000008p+0, false, false, 18036+ 0x1.000000000008p+0, false, false, 18037+ 0x1.000000000008p+0, false, false, 18038+ true, 18039+ 0x1.000000000008p+0, false, false, 18040+ 0x1.000000000008p+0, false, false, 18041+ 0x1.000000000008p+0, false, false, 18042+ 0x1.000000000008p+0, false, false, 18043+ true, 18044+ 0x1.000000000008p+0, false, false, 18045+ 0x1.000000000008p+0, false, false, 18046+ 0x1.000000000008p+0, false, false, 18047+ 0x1.000000000008p+0, false, false), 18048 TEST ("1.0000000000000142108547152020037174224853515625", 18049 false, 18050- 0x1p+0, false, 18051- 0x1p+0, false, 18052- 0x1p+0, false, 18053- 0x1.000002p+0, false, 18054- true, 18055- 0x1.000000000004p+0, false, 18056- 0x1.000000000004p+0, false, 18057- 0x1.000000000004p+0, false, 18058- 0x1.000000000004p+0, false, 18059- true, 18060- 0x1.000000000004p+0, false, 18061- 0x1.000000000004p+0, false, 18062- 0x1.000000000004p+0, false, 18063- 0x1.000000000004p+0, false, 18064- true, 18065- 0x1.000000000004p+0, false, 18066- 0x1.000000000004p+0, false, 18067- 0x1.000000000004p+0, false, 18068- 0x1.000000000004p+0, false, 18069- true, 18070- 0x1.000000000004p+0, false, 18071- 0x1.000000000004p+0, false, 18072- 0x1.000000000004p+0, false, 18073- 0x1.000000000004p+0, false, 18074- true, 18075- 0x1.000000000004p+0, false, 18076- 0x1.000000000004p+0, false, 18077- 0x1.000000000004p+0, false, 18078- 0x1.000000000004p+0, false), 18079+ 0x1p+0, false, false, 18080+ 0x1p+0, false, false, 18081+ 0x1p+0, false, false, 18082+ 0x1.000002p+0, false, false, 18083+ true, 18084+ 0x1.000000000004p+0, false, false, 18085+ 0x1.000000000004p+0, false, false, 18086+ 0x1.000000000004p+0, false, false, 18087+ 0x1.000000000004p+0, false, false, 18088+ true, 18089+ 0x1.000000000004p+0, false, false, 18090+ 0x1.000000000004p+0, false, false, 18091+ 0x1.000000000004p+0, false, false, 18092+ 0x1.000000000004p+0, false, false, 18093+ true, 18094+ 0x1.000000000004p+0, false, false, 18095+ 0x1.000000000004p+0, false, false, 18096+ 0x1.000000000004p+0, false, false, 18097+ 0x1.000000000004p+0, false, false, 18098+ true, 18099+ 0x1.000000000004p+0, false, false, 18100+ 0x1.000000000004p+0, false, false, 18101+ 0x1.000000000004p+0, false, false, 18102+ 0x1.000000000004p+0, false, false, 18103+ true, 18104+ 0x1.000000000004p+0, false, false, 18105+ 0x1.000000000004p+0, false, false, 18106+ 0x1.000000000004p+0, false, false, 18107+ 0x1.000000000004p+0, false, false), 18108 TEST ("1.00000000000000710542735760100185871124267578125", 18109 false, 18110- 0x1p+0, false, 18111- 0x1p+0, false, 18112- 0x1p+0, false, 18113- 0x1.000002p+0, false, 18114- true, 18115- 0x1.000000000002p+0, false, 18116- 0x1.000000000002p+0, false, 18117- 0x1.000000000002p+0, false, 18118- 0x1.000000000002p+0, false, 18119- true, 18120- 0x1.000000000002p+0, false, 18121- 0x1.000000000002p+0, false, 18122- 0x1.000000000002p+0, false, 18123- 0x1.000000000002p+0, false, 18124- true, 18125- 0x1.000000000002p+0, false, 18126- 0x1.000000000002p+0, false, 18127- 0x1.000000000002p+0, false, 18128- 0x1.000000000002p+0, false, 18129- true, 18130- 0x1.000000000002p+0, false, 18131- 0x1.000000000002p+0, false, 18132- 0x1.000000000002p+0, false, 18133- 0x1.000000000002p+0, false, 18134- true, 18135- 0x1.000000000002p+0, false, 18136- 0x1.000000000002p+0, false, 18137- 0x1.000000000002p+0, false, 18138- 0x1.000000000002p+0, false), 18139+ 0x1p+0, false, false, 18140+ 0x1p+0, false, false, 18141+ 0x1p+0, false, false, 18142+ 0x1.000002p+0, false, false, 18143+ true, 18144+ 0x1.000000000002p+0, false, false, 18145+ 0x1.000000000002p+0, false, false, 18146+ 0x1.000000000002p+0, false, false, 18147+ 0x1.000000000002p+0, false, false, 18148+ true, 18149+ 0x1.000000000002p+0, false, false, 18150+ 0x1.000000000002p+0, false, false, 18151+ 0x1.000000000002p+0, false, false, 18152+ 0x1.000000000002p+0, false, false, 18153+ true, 18154+ 0x1.000000000002p+0, false, false, 18155+ 0x1.000000000002p+0, false, false, 18156+ 0x1.000000000002p+0, false, false, 18157+ 0x1.000000000002p+0, false, false, 18158+ true, 18159+ 0x1.000000000002p+0, false, false, 18160+ 0x1.000000000002p+0, false, false, 18161+ 0x1.000000000002p+0, false, false, 18162+ 0x1.000000000002p+0, false, false, 18163+ true, 18164+ 0x1.000000000002p+0, false, false, 18165+ 0x1.000000000002p+0, false, false, 18166+ 0x1.000000000002p+0, false, false, 18167+ 0x1.000000000002p+0, false, false), 18168 TEST ("1.000000000000003552713678800500929355621337890625", 18169 false, 18170- 0x1p+0, false, 18171- 0x1p+0, false, 18172- 0x1p+0, false, 18173- 0x1.000002p+0, false, 18174- true, 18175- 0x1.000000000001p+0, false, 18176- 0x1.000000000001p+0, false, 18177- 0x1.000000000001p+0, false, 18178- 0x1.000000000001p+0, false, 18179- true, 18180- 0x1.000000000001p+0, false, 18181- 0x1.000000000001p+0, false, 18182- 0x1.000000000001p+0, false, 18183- 0x1.000000000001p+0, false, 18184- true, 18185- 0x1.000000000001p+0, false, 18186- 0x1.000000000001p+0, false, 18187- 0x1.000000000001p+0, false, 18188- 0x1.000000000001p+0, false, 18189- true, 18190- 0x1.000000000001p+0, false, 18191- 0x1.000000000001p+0, false, 18192- 0x1.000000000001p+0, false, 18193- 0x1.000000000001p+0, false, 18194- true, 18195- 0x1.000000000001p+0, false, 18196- 0x1.000000000001p+0, false, 18197- 0x1.000000000001p+0, false, 18198- 0x1.000000000001p+0, false), 18199+ 0x1p+0, false, false, 18200+ 0x1p+0, false, false, 18201+ 0x1p+0, false, false, 18202+ 0x1.000002p+0, false, false, 18203+ true, 18204+ 0x1.000000000001p+0, false, false, 18205+ 0x1.000000000001p+0, false, false, 18206+ 0x1.000000000001p+0, false, false, 18207+ 0x1.000000000001p+0, false, false, 18208+ true, 18209+ 0x1.000000000001p+0, false, false, 18210+ 0x1.000000000001p+0, false, false, 18211+ 0x1.000000000001p+0, false, false, 18212+ 0x1.000000000001p+0, false, false, 18213+ true, 18214+ 0x1.000000000001p+0, false, false, 18215+ 0x1.000000000001p+0, false, false, 18216+ 0x1.000000000001p+0, false, false, 18217+ 0x1.000000000001p+0, false, false, 18218+ true, 18219+ 0x1.000000000001p+0, false, false, 18220+ 0x1.000000000001p+0, false, false, 18221+ 0x1.000000000001p+0, false, false, 18222+ 0x1.000000000001p+0, false, false, 18223+ true, 18224+ 0x1.000000000001p+0, false, false, 18225+ 0x1.000000000001p+0, false, false, 18226+ 0x1.000000000001p+0, false, false, 18227+ 0x1.000000000001p+0, false, false), 18228 TEST ("1.0000000000000017763568394002504646778106689453125", 18229 false, 18230- 0x1p+0, false, 18231- 0x1p+0, false, 18232- 0x1p+0, false, 18233- 0x1.000002p+0, false, 18234- true, 18235- 0x1.0000000000008p+0, false, 18236- 0x1.0000000000008p+0, false, 18237- 0x1.0000000000008p+0, false, 18238- 0x1.0000000000008p+0, false, 18239- true, 18240- 0x1.0000000000008p+0, false, 18241- 0x1.0000000000008p+0, false, 18242- 0x1.0000000000008p+0, false, 18243- 0x1.0000000000008p+0, false, 18244- true, 18245- 0x1.0000000000008p+0, false, 18246- 0x1.0000000000008p+0, false, 18247- 0x1.0000000000008p+0, false, 18248- 0x1.0000000000008p+0, false, 18249- true, 18250- 0x1.0000000000008p+0, false, 18251- 0x1.0000000000008p+0, false, 18252- 0x1.0000000000008p+0, false, 18253- 0x1.0000000000008p+0, false, 18254- true, 18255- 0x1.0000000000008p+0, false, 18256- 0x1.0000000000008p+0, false, 18257- 0x1.0000000000008p+0, false, 18258- 0x1.0000000000008p+0, false), 18259+ 0x1p+0, false, false, 18260+ 0x1p+0, false, false, 18261+ 0x1p+0, false, false, 18262+ 0x1.000002p+0, false, false, 18263+ true, 18264+ 0x1.0000000000008p+0, false, false, 18265+ 0x1.0000000000008p+0, false, false, 18266+ 0x1.0000000000008p+0, false, false, 18267+ 0x1.0000000000008p+0, false, false, 18268+ true, 18269+ 0x1.0000000000008p+0, false, false, 18270+ 0x1.0000000000008p+0, false, false, 18271+ 0x1.0000000000008p+0, false, false, 18272+ 0x1.0000000000008p+0, false, false, 18273+ true, 18274+ 0x1.0000000000008p+0, false, false, 18275+ 0x1.0000000000008p+0, false, false, 18276+ 0x1.0000000000008p+0, false, false, 18277+ 0x1.0000000000008p+0, false, false, 18278+ true, 18279+ 0x1.0000000000008p+0, false, false, 18280+ 0x1.0000000000008p+0, false, false, 18281+ 0x1.0000000000008p+0, false, false, 18282+ 0x1.0000000000008p+0, false, false, 18283+ true, 18284+ 0x1.0000000000008p+0, false, false, 18285+ 0x1.0000000000008p+0, false, false, 18286+ 0x1.0000000000008p+0, false, false, 18287+ 0x1.0000000000008p+0, false, false), 18288 TEST ("1.00000000000000088817841970012523233890533447265625", 18289 false, 18290- 0x1p+0, false, 18291- 0x1p+0, false, 18292- 0x1p+0, false, 18293- 0x1.000002p+0, false, 18294- true, 18295- 0x1.0000000000004p+0, false, 18296- 0x1.0000000000004p+0, false, 18297- 0x1.0000000000004p+0, false, 18298- 0x1.0000000000004p+0, false, 18299- true, 18300- 0x1.0000000000004p+0, false, 18301- 0x1.0000000000004p+0, false, 18302- 0x1.0000000000004p+0, false, 18303- 0x1.0000000000004p+0, false, 18304- true, 18305- 0x1.0000000000004p+0, false, 18306- 0x1.0000000000004p+0, false, 18307- 0x1.0000000000004p+0, false, 18308- 0x1.0000000000004p+0, false, 18309- true, 18310- 0x1.0000000000004p+0, false, 18311- 0x1.0000000000004p+0, false, 18312- 0x1.0000000000004p+0, false, 18313- 0x1.0000000000004p+0, false, 18314- true, 18315- 0x1.0000000000004p+0, false, 18316- 0x1.0000000000004p+0, false, 18317- 0x1.0000000000004p+0, false, 18318- 0x1.0000000000004p+0, false), 18319+ 0x1p+0, false, false, 18320+ 0x1p+0, false, false, 18321+ 0x1p+0, false, false, 18322+ 0x1.000002p+0, false, false, 18323+ true, 18324+ 0x1.0000000000004p+0, false, false, 18325+ 0x1.0000000000004p+0, false, false, 18326+ 0x1.0000000000004p+0, false, false, 18327+ 0x1.0000000000004p+0, false, false, 18328+ true, 18329+ 0x1.0000000000004p+0, false, false, 18330+ 0x1.0000000000004p+0, false, false, 18331+ 0x1.0000000000004p+0, false, false, 18332+ 0x1.0000000000004p+0, false, false, 18333+ true, 18334+ 0x1.0000000000004p+0, false, false, 18335+ 0x1.0000000000004p+0, false, false, 18336+ 0x1.0000000000004p+0, false, false, 18337+ 0x1.0000000000004p+0, false, false, 18338+ true, 18339+ 0x1.0000000000004p+0, false, false, 18340+ 0x1.0000000000004p+0, false, false, 18341+ 0x1.0000000000004p+0, false, false, 18342+ 0x1.0000000000004p+0, false, false, 18343+ true, 18344+ 0x1.0000000000004p+0, false, false, 18345+ 0x1.0000000000004p+0, false, false, 18346+ 0x1.0000000000004p+0, false, false, 18347+ 0x1.0000000000004p+0, false, false), 18348 TEST ("1.000000000000000444089209850062616169452667236328125", 18349 false, 18350- 0x1p+0, false, 18351- 0x1p+0, false, 18352- 0x1p+0, false, 18353- 0x1.000002p+0, false, 18354- true, 18355- 0x1.0000000000002p+0, false, 18356- 0x1.0000000000002p+0, false, 18357- 0x1.0000000000002p+0, false, 18358- 0x1.0000000000002p+0, false, 18359- true, 18360- 0x1.0000000000002p+0, false, 18361- 0x1.0000000000002p+0, false, 18362- 0x1.0000000000002p+0, false, 18363- 0x1.0000000000002p+0, false, 18364- true, 18365- 0x1.0000000000002p+0, false, 18366- 0x1.0000000000002p+0, false, 18367- 0x1.0000000000002p+0, false, 18368- 0x1.0000000000002p+0, false, 18369- true, 18370- 0x1.0000000000002p+0, false, 18371- 0x1.0000000000002p+0, false, 18372- 0x1.0000000000002p+0, false, 18373- 0x1.0000000000002p+0, false, 18374- true, 18375- 0x1.0000000000002p+0, false, 18376- 0x1.0000000000002p+0, false, 18377- 0x1.0000000000002p+0, false, 18378- 0x1.0000000000002p+0, false), 18379+ 0x1p+0, false, false, 18380+ 0x1p+0, false, false, 18381+ 0x1p+0, false, false, 18382+ 0x1.000002p+0, false, false, 18383+ true, 18384+ 0x1.0000000000002p+0, false, false, 18385+ 0x1.0000000000002p+0, false, false, 18386+ 0x1.0000000000002p+0, false, false, 18387+ 0x1.0000000000002p+0, false, false, 18388+ true, 18389+ 0x1.0000000000002p+0, false, false, 18390+ 0x1.0000000000002p+0, false, false, 18391+ 0x1.0000000000002p+0, false, false, 18392+ 0x1.0000000000002p+0, false, false, 18393+ true, 18394+ 0x1.0000000000002p+0, false, false, 18395+ 0x1.0000000000002p+0, false, false, 18396+ 0x1.0000000000002p+0, false, false, 18397+ 0x1.0000000000002p+0, false, false, 18398+ true, 18399+ 0x1.0000000000002p+0, false, false, 18400+ 0x1.0000000000002p+0, false, false, 18401+ 0x1.0000000000002p+0, false, false, 18402+ 0x1.0000000000002p+0, false, false, 18403+ true, 18404+ 0x1.0000000000002p+0, false, false, 18405+ 0x1.0000000000002p+0, false, false, 18406+ 0x1.0000000000002p+0, false, false, 18407+ 0x1.0000000000002p+0, false, false), 18408 TEST ("1.0000000000000002220446049250313080847263336181640625", 18409 false, 18410- 0x1p+0, false, 18411- 0x1p+0, false, 18412- 0x1p+0, false, 18413- 0x1.000002p+0, false, 18414- true, 18415- 0x1.0000000000001p+0, false, 18416- 0x1.0000000000001p+0, false, 18417- 0x1.0000000000001p+0, false, 18418- 0x1.0000000000001p+0, false, 18419- true, 18420- 0x1.0000000000001p+0, false, 18421- 0x1.0000000000001p+0, false, 18422- 0x1.0000000000001p+0, false, 18423- 0x1.0000000000001p+0, false, 18424- true, 18425- 0x1.0000000000001p+0, false, 18426- 0x1.0000000000001p+0, false, 18427- 0x1.0000000000001p+0, false, 18428- 0x1.0000000000001p+0, false, 18429- true, 18430- 0x1.0000000000001p+0, false, 18431- 0x1.0000000000001p+0, false, 18432- 0x1.0000000000001p+0, false, 18433- 0x1.0000000000001p+0, false, 18434- true, 18435- 0x1.0000000000001p+0, false, 18436- 0x1.0000000000001p+0, false, 18437- 0x1.0000000000001p+0, false, 18438- 0x1.0000000000001p+0, false), 18439+ 0x1p+0, false, false, 18440+ 0x1p+0, false, false, 18441+ 0x1p+0, false, false, 18442+ 0x1.000002p+0, false, false, 18443+ true, 18444+ 0x1.0000000000001p+0, false, false, 18445+ 0x1.0000000000001p+0, false, false, 18446+ 0x1.0000000000001p+0, false, false, 18447+ 0x1.0000000000001p+0, false, false, 18448+ true, 18449+ 0x1.0000000000001p+0, false, false, 18450+ 0x1.0000000000001p+0, false, false, 18451+ 0x1.0000000000001p+0, false, false, 18452+ 0x1.0000000000001p+0, false, false, 18453+ true, 18454+ 0x1.0000000000001p+0, false, false, 18455+ 0x1.0000000000001p+0, false, false, 18456+ 0x1.0000000000001p+0, false, false, 18457+ 0x1.0000000000001p+0, false, false, 18458+ true, 18459+ 0x1.0000000000001p+0, false, false, 18460+ 0x1.0000000000001p+0, false, false, 18461+ 0x1.0000000000001p+0, false, false, 18462+ 0x1.0000000000001p+0, false, false, 18463+ true, 18464+ 0x1.0000000000001p+0, false, false, 18465+ 0x1.0000000000001p+0, false, false, 18466+ 0x1.0000000000001p+0, false, false, 18467+ 0x1.0000000000001p+0, false, false), 18468 TEST ("1.00000000000000011102230246251565404236316680908203125", 18469 false, 18470- 0x1p+0, false, 18471- 0x1p+0, false, 18472- 0x1p+0, false, 18473- 0x1.000002p+0, false, 18474- false, 18475- 0x1p+0, false, 18476- 0x1p+0, false, 18477- 0x1p+0, false, 18478- 0x1.0000000000001p+0, false, 18479- true, 18480- 0x1.00000000000008p+0, false, 18481- 0x1.00000000000008p+0, false, 18482- 0x1.00000000000008p+0, false, 18483- 0x1.00000000000008p+0, false, 18484- true, 18485- 0x1.00000000000008p+0, false, 18486- 0x1.00000000000008p+0, false, 18487- 0x1.00000000000008p+0, false, 18488- 0x1.00000000000008p+0, false, 18489- true, 18490- 0x1.00000000000008p+0, false, 18491- 0x1.00000000000008p+0, false, 18492- 0x1.00000000000008p+0, false, 18493- 0x1.00000000000008p+0, false, 18494- true, 18495- 0x1.00000000000008p+0, false, 18496- 0x1.00000000000008p+0, false, 18497- 0x1.00000000000008p+0, false, 18498- 0x1.00000000000008p+0, false), 18499+ 0x1p+0, false, false, 18500+ 0x1p+0, false, false, 18501+ 0x1p+0, false, false, 18502+ 0x1.000002p+0, false, false, 18503+ false, 18504+ 0x1p+0, false, false, 18505+ 0x1p+0, false, false, 18506+ 0x1p+0, false, false, 18507+ 0x1.0000000000001p+0, false, false, 18508+ true, 18509+ 0x1.00000000000008p+0, false, false, 18510+ 0x1.00000000000008p+0, false, false, 18511+ 0x1.00000000000008p+0, false, false, 18512+ 0x1.00000000000008p+0, false, false, 18513+ true, 18514+ 0x1.00000000000008p+0, false, false, 18515+ 0x1.00000000000008p+0, false, false, 18516+ 0x1.00000000000008p+0, false, false, 18517+ 0x1.00000000000008p+0, false, false, 18518+ true, 18519+ 0x1.00000000000008p+0, false, false, 18520+ 0x1.00000000000008p+0, false, false, 18521+ 0x1.00000000000008p+0, false, false, 18522+ 0x1.00000000000008p+0, false, false, 18523+ true, 18524+ 0x1.00000000000008p+0, false, false, 18525+ 0x1.00000000000008p+0, false, false, 18526+ 0x1.00000000000008p+0, false, false, 18527+ 0x1.00000000000008p+0, false, false), 18528 TEST ("1.000000000000000055511151231257827021181583404541015625", 18529 false, 18530- 0x1p+0, false, 18531- 0x1p+0, false, 18532- 0x1p+0, false, 18533- 0x1.000002p+0, false, 18534- false, 18535- 0x1p+0, false, 18536- 0x1p+0, false, 18537- 0x1p+0, false, 18538- 0x1.0000000000001p+0, false, 18539- true, 18540- 0x1.00000000000004p+0, false, 18541- 0x1.00000000000004p+0, false, 18542- 0x1.00000000000004p+0, false, 18543- 0x1.00000000000004p+0, false, 18544- true, 18545- 0x1.00000000000004p+0, false, 18546- 0x1.00000000000004p+0, false, 18547- 0x1.00000000000004p+0, false, 18548- 0x1.00000000000004p+0, false, 18549- true, 18550- 0x1.00000000000004p+0, false, 18551- 0x1.00000000000004p+0, false, 18552- 0x1.00000000000004p+0, false, 18553- 0x1.00000000000004p+0, false, 18554- true, 18555- 0x1.00000000000004p+0, false, 18556- 0x1.00000000000004p+0, false, 18557- 0x1.00000000000004p+0, false, 18558- 0x1.00000000000004p+0, false), 18559+ 0x1p+0, false, false, 18560+ 0x1p+0, false, false, 18561+ 0x1p+0, false, false, 18562+ 0x1.000002p+0, false, false, 18563+ false, 18564+ 0x1p+0, false, false, 18565+ 0x1p+0, false, false, 18566+ 0x1p+0, false, false, 18567+ 0x1.0000000000001p+0, false, false, 18568+ true, 18569+ 0x1.00000000000004p+0, false, false, 18570+ 0x1.00000000000004p+0, false, false, 18571+ 0x1.00000000000004p+0, false, false, 18572+ 0x1.00000000000004p+0, false, false, 18573+ true, 18574+ 0x1.00000000000004p+0, false, false, 18575+ 0x1.00000000000004p+0, false, false, 18576+ 0x1.00000000000004p+0, false, false, 18577+ 0x1.00000000000004p+0, false, false, 18578+ true, 18579+ 0x1.00000000000004p+0, false, false, 18580+ 0x1.00000000000004p+0, false, false, 18581+ 0x1.00000000000004p+0, false, false, 18582+ 0x1.00000000000004p+0, false, false, 18583+ true, 18584+ 0x1.00000000000004p+0, false, false, 18585+ 0x1.00000000000004p+0, false, false, 18586+ 0x1.00000000000004p+0, false, false, 18587+ 0x1.00000000000004p+0, false, false), 18588 TEST ("1.0000000000000000277555756156289135105907917022705078125", 18589 false, 18590- 0x1p+0, false, 18591- 0x1p+0, false, 18592- 0x1p+0, false, 18593- 0x1.000002p+0, false, 18594- false, 18595- 0x1p+0, false, 18596- 0x1p+0, false, 18597- 0x1p+0, false, 18598- 0x1.0000000000001p+0, false, 18599- true, 18600- 0x1.00000000000002p+0, false, 18601- 0x1.00000000000002p+0, false, 18602- 0x1.00000000000002p+0, false, 18603- 0x1.00000000000002p+0, false, 18604- true, 18605- 0x1.00000000000002p+0, false, 18606- 0x1.00000000000002p+0, false, 18607- 0x1.00000000000002p+0, false, 18608- 0x1.00000000000002p+0, false, 18609- true, 18610- 0x1.00000000000002p+0, false, 18611- 0x1.00000000000002p+0, false, 18612- 0x1.00000000000002p+0, false, 18613- 0x1.00000000000002p+0, false, 18614- true, 18615- 0x1.00000000000002p+0, false, 18616- 0x1.00000000000002p+0, false, 18617- 0x1.00000000000002p+0, false, 18618- 0x1.00000000000002p+0, false), 18619+ 0x1p+0, false, false, 18620+ 0x1p+0, false, false, 18621+ 0x1p+0, false, false, 18622+ 0x1.000002p+0, false, false, 18623+ false, 18624+ 0x1p+0, false, false, 18625+ 0x1p+0, false, false, 18626+ 0x1p+0, false, false, 18627+ 0x1.0000000000001p+0, false, false, 18628+ true, 18629+ 0x1.00000000000002p+0, false, false, 18630+ 0x1.00000000000002p+0, false, false, 18631+ 0x1.00000000000002p+0, false, false, 18632+ 0x1.00000000000002p+0, false, false, 18633+ true, 18634+ 0x1.00000000000002p+0, false, false, 18635+ 0x1.00000000000002p+0, false, false, 18636+ 0x1.00000000000002p+0, false, false, 18637+ 0x1.00000000000002p+0, false, false, 18638+ true, 18639+ 0x1.00000000000002p+0, false, false, 18640+ 0x1.00000000000002p+0, false, false, 18641+ 0x1.00000000000002p+0, false, false, 18642+ 0x1.00000000000002p+0, false, false, 18643+ true, 18644+ 0x1.00000000000002p+0, false, false, 18645+ 0x1.00000000000002p+0, false, false, 18646+ 0x1.00000000000002p+0, false, false, 18647+ 0x1.00000000000002p+0, false, false), 18648 TEST ("1.00000000000000001387778780781445675529539585113525390625", 18649 false, 18650- 0x1p+0, false, 18651- 0x1p+0, false, 18652- 0x1p+0, false, 18653- 0x1.000002p+0, false, 18654- false, 18655- 0x1p+0, false, 18656- 0x1p+0, false, 18657- 0x1p+0, false, 18658- 0x1.0000000000001p+0, false, 18659- true, 18660- 0x1.00000000000001p+0, false, 18661- 0x1.00000000000001p+0, false, 18662- 0x1.00000000000001p+0, false, 18663- 0x1.00000000000001p+0, false, 18664- true, 18665- 0x1.00000000000001p+0, false, 18666- 0x1.00000000000001p+0, false, 18667- 0x1.00000000000001p+0, false, 18668- 0x1.00000000000001p+0, false, 18669- true, 18670- 0x1.00000000000001p+0, false, 18671- 0x1.00000000000001p+0, false, 18672- 0x1.00000000000001p+0, false, 18673- 0x1.00000000000001p+0, false, 18674- true, 18675- 0x1.00000000000001p+0, false, 18676- 0x1.00000000000001p+0, false, 18677- 0x1.00000000000001p+0, false, 18678- 0x1.00000000000001p+0, false), 18679+ 0x1p+0, false, false, 18680+ 0x1p+0, false, false, 18681+ 0x1p+0, false, false, 18682+ 0x1.000002p+0, false, false, 18683+ false, 18684+ 0x1p+0, false, false, 18685+ 0x1p+0, false, false, 18686+ 0x1p+0, false, false, 18687+ 0x1.0000000000001p+0, false, false, 18688+ true, 18689+ 0x1.00000000000001p+0, false, false, 18690+ 0x1.00000000000001p+0, false, false, 18691+ 0x1.00000000000001p+0, false, false, 18692+ 0x1.00000000000001p+0, false, false, 18693+ true, 18694+ 0x1.00000000000001p+0, false, false, 18695+ 0x1.00000000000001p+0, false, false, 18696+ 0x1.00000000000001p+0, false, false, 18697+ 0x1.00000000000001p+0, false, false, 18698+ true, 18699+ 0x1.00000000000001p+0, false, false, 18700+ 0x1.00000000000001p+0, false, false, 18701+ 0x1.00000000000001p+0, false, false, 18702+ 0x1.00000000000001p+0, false, false, 18703+ true, 18704+ 0x1.00000000000001p+0, false, false, 18705+ 0x1.00000000000001p+0, false, false, 18706+ 0x1.00000000000001p+0, false, false, 18707+ 0x1.00000000000001p+0, false, false), 18708 TEST ("1.000000000000000006938893903907228377647697925567626953125", 18709 false, 18710- 0x1p+0, false, 18711- 0x1p+0, false, 18712- 0x1p+0, false, 18713- 0x1.000002p+0, false, 18714- false, 18715- 0x1p+0, false, 18716- 0x1p+0, false, 18717- 0x1p+0, false, 18718- 0x1.0000000000001p+0, false, 18719- true, 18720- 0x1.000000000000008p+0, false, 18721- 0x1.000000000000008p+0, false, 18722- 0x1.000000000000008p+0, false, 18723- 0x1.000000000000008p+0, false, 18724- true, 18725- 0x1.000000000000008p+0, false, 18726- 0x1.000000000000008p+0, false, 18727- 0x1.000000000000008p+0, false, 18728- 0x1.000000000000008p+0, false, 18729- true, 18730- 0x1.000000000000008p+0, false, 18731- 0x1.000000000000008p+0, false, 18732- 0x1.000000000000008p+0, false, 18733- 0x1.000000000000008p+0, false, 18734- true, 18735- 0x1.000000000000008p+0, false, 18736- 0x1.000000000000008p+0, false, 18737- 0x1.000000000000008p+0, false, 18738- 0x1.000000000000008p+0, false), 18739+ 0x1p+0, false, false, 18740+ 0x1p+0, false, false, 18741+ 0x1p+0, false, false, 18742+ 0x1.000002p+0, false, false, 18743+ false, 18744+ 0x1p+0, false, false, 18745+ 0x1p+0, false, false, 18746+ 0x1p+0, false, false, 18747+ 0x1.0000000000001p+0, false, false, 18748+ true, 18749+ 0x1.000000000000008p+0, false, false, 18750+ 0x1.000000000000008p+0, false, false, 18751+ 0x1.000000000000008p+0, false, false, 18752+ 0x1.000000000000008p+0, false, false, 18753+ true, 18754+ 0x1.000000000000008p+0, false, false, 18755+ 0x1.000000000000008p+0, false, false, 18756+ 0x1.000000000000008p+0, false, false, 18757+ 0x1.000000000000008p+0, false, false, 18758+ true, 18759+ 0x1.000000000000008p+0, false, false, 18760+ 0x1.000000000000008p+0, false, false, 18761+ 0x1.000000000000008p+0, false, false, 18762+ 0x1.000000000000008p+0, false, false, 18763+ true, 18764+ 0x1.000000000000008p+0, false, false, 18765+ 0x1.000000000000008p+0, false, false, 18766+ 0x1.000000000000008p+0, false, false, 18767+ 0x1.000000000000008p+0, false, false), 18768 TEST ("1.0000000000000000034694469519536141888238489627838134765625", 18769 false, 18770- 0x1p+0, false, 18771- 0x1p+0, false, 18772- 0x1p+0, false, 18773- 0x1.000002p+0, false, 18774- false, 18775- 0x1p+0, false, 18776- 0x1p+0, false, 18777- 0x1p+0, false, 18778- 0x1.0000000000001p+0, false, 18779- true, 18780- 0x1.000000000000004p+0, false, 18781- 0x1.000000000000004p+0, false, 18782- 0x1.000000000000004p+0, false, 18783- 0x1.000000000000004p+0, false, 18784- true, 18785- 0x1.000000000000004p+0, false, 18786- 0x1.000000000000004p+0, false, 18787- 0x1.000000000000004p+0, false, 18788- 0x1.000000000000004p+0, false, 18789- true, 18790- 0x1.000000000000004p+0, false, 18791- 0x1.000000000000004p+0, false, 18792- 0x1.000000000000004p+0, false, 18793- 0x1.000000000000004p+0, false, 18794- true, 18795- 0x1.000000000000004p+0, false, 18796- 0x1.000000000000004p+0, false, 18797- 0x1.000000000000004p+0, false, 18798- 0x1.000000000000004p+0, false), 18799+ 0x1p+0, false, false, 18800+ 0x1p+0, false, false, 18801+ 0x1p+0, false, false, 18802+ 0x1.000002p+0, false, false, 18803+ false, 18804+ 0x1p+0, false, false, 18805+ 0x1p+0, false, false, 18806+ 0x1p+0, false, false, 18807+ 0x1.0000000000001p+0, false, false, 18808+ true, 18809+ 0x1.000000000000004p+0, false, false, 18810+ 0x1.000000000000004p+0, false, false, 18811+ 0x1.000000000000004p+0, false, false, 18812+ 0x1.000000000000004p+0, false, false, 18813+ true, 18814+ 0x1.000000000000004p+0, false, false, 18815+ 0x1.000000000000004p+0, false, false, 18816+ 0x1.000000000000004p+0, false, false, 18817+ 0x1.000000000000004p+0, false, false, 18818+ true, 18819+ 0x1.000000000000004p+0, false, false, 18820+ 0x1.000000000000004p+0, false, false, 18821+ 0x1.000000000000004p+0, false, false, 18822+ 0x1.000000000000004p+0, false, false, 18823+ true, 18824+ 0x1.000000000000004p+0, false, false, 18825+ 0x1.000000000000004p+0, false, false, 18826+ 0x1.000000000000004p+0, false, false, 18827+ 0x1.000000000000004p+0, false, false), 18828 TEST ("1.0000000000000000017347234759768070944119244813919067382812" 18829 "5", 18830 false, 18831- 0x1p+0, false, 18832- 0x1p+0, false, 18833- 0x1p+0, false, 18834- 0x1.000002p+0, false, 18835- false, 18836- 0x1p+0, false, 18837- 0x1p+0, false, 18838- 0x1p+0, false, 18839- 0x1.0000000000001p+0, false, 18840- true, 18841- 0x1.000000000000002p+0, false, 18842- 0x1.000000000000002p+0, false, 18843- 0x1.000000000000002p+0, false, 18844- 0x1.000000000000002p+0, false, 18845- true, 18846- 0x1.000000000000002p+0, false, 18847- 0x1.000000000000002p+0, false, 18848- 0x1.000000000000002p+0, false, 18849- 0x1.000000000000002p+0, false, 18850- true, 18851- 0x1.000000000000002p+0, false, 18852- 0x1.000000000000002p+0, false, 18853- 0x1.000000000000002p+0, false, 18854- 0x1.000000000000002p+0, false, 18855- true, 18856- 0x1.000000000000002p+0, false, 18857- 0x1.000000000000002p+0, false, 18858- 0x1.000000000000002p+0, false, 18859- 0x1.000000000000002p+0, false), 18860+ 0x1p+0, false, false, 18861+ 0x1p+0, false, false, 18862+ 0x1p+0, false, false, 18863+ 0x1.000002p+0, false, false, 18864+ false, 18865+ 0x1p+0, false, false, 18866+ 0x1p+0, false, false, 18867+ 0x1p+0, false, false, 18868+ 0x1.0000000000001p+0, false, false, 18869+ true, 18870+ 0x1.000000000000002p+0, false, false, 18871+ 0x1.000000000000002p+0, false, false, 18872+ 0x1.000000000000002p+0, false, false, 18873+ 0x1.000000000000002p+0, false, false, 18874+ true, 18875+ 0x1.000000000000002p+0, false, false, 18876+ 0x1.000000000000002p+0, false, false, 18877+ 0x1.000000000000002p+0, false, false, 18878+ 0x1.000000000000002p+0, false, false, 18879+ true, 18880+ 0x1.000000000000002p+0, false, false, 18881+ 0x1.000000000000002p+0, false, false, 18882+ 0x1.000000000000002p+0, false, false, 18883+ 0x1.000000000000002p+0, false, false, 18884+ true, 18885+ 0x1.000000000000002p+0, false, false, 18886+ 0x1.000000000000002p+0, false, false, 18887+ 0x1.000000000000002p+0, false, false, 18888+ 0x1.000000000000002p+0, false, false), 18889 TEST ("1.0000000000000000008673617379884035472059622406959533691406" 18890 "25", 18891 false, 18892- 0x1p+0, false, 18893- 0x1p+0, false, 18894- 0x1p+0, false, 18895- 0x1.000002p+0, false, 18896- false, 18897- 0x1p+0, false, 18898- 0x1p+0, false, 18899- 0x1p+0, false, 18900- 0x1.0000000000001p+0, false, 18901- true, 18902- 0x1.000000000000001p+0, false, 18903- 0x1.000000000000001p+0, false, 18904- 0x1.000000000000001p+0, false, 18905- 0x1.000000000000001p+0, false, 18906- true, 18907- 0x1.000000000000001p+0, false, 18908- 0x1.000000000000001p+0, false, 18909- 0x1.000000000000001p+0, false, 18910- 0x1.000000000000001p+0, false, 18911- true, 18912- 0x1.000000000000001p+0, false, 18913- 0x1.000000000000001p+0, false, 18914- 0x1.000000000000001p+0, false, 18915- 0x1.000000000000001p+0, false, 18916- true, 18917- 0x1.000000000000001p+0, false, 18918- 0x1.000000000000001p+0, false, 18919- 0x1.000000000000001p+0, false, 18920- 0x1.000000000000001p+0, false), 18921+ 0x1p+0, false, false, 18922+ 0x1p+0, false, false, 18923+ 0x1p+0, false, false, 18924+ 0x1.000002p+0, false, false, 18925+ false, 18926+ 0x1p+0, false, false, 18927+ 0x1p+0, false, false, 18928+ 0x1p+0, false, false, 18929+ 0x1.0000000000001p+0, false, false, 18930+ true, 18931+ 0x1.000000000000001p+0, false, false, 18932+ 0x1.000000000000001p+0, false, false, 18933+ 0x1.000000000000001p+0, false, false, 18934+ 0x1.000000000000001p+0, false, false, 18935+ true, 18936+ 0x1.000000000000001p+0, false, false, 18937+ 0x1.000000000000001p+0, false, false, 18938+ 0x1.000000000000001p+0, false, false, 18939+ 0x1.000000000000001p+0, false, false, 18940+ true, 18941+ 0x1.000000000000001p+0, false, false, 18942+ 0x1.000000000000001p+0, false, false, 18943+ 0x1.000000000000001p+0, false, false, 18944+ 0x1.000000000000001p+0, false, false, 18945+ true, 18946+ 0x1.000000000000001p+0, false, false, 18947+ 0x1.000000000000001p+0, false, false, 18948+ 0x1.000000000000001p+0, false, false, 18949+ 0x1.000000000000001p+0, false, false), 18950 TEST ("1.0000000000000000004336808689942017736029811203479766845703" 18951 "125", 18952 false, 18953- 0x1p+0, false, 18954- 0x1p+0, false, 18955- 0x1p+0, false, 18956- 0x1.000002p+0, false, 18957- false, 18958- 0x1p+0, false, 18959- 0x1p+0, false, 18960- 0x1p+0, false, 18961- 0x1.0000000000001p+0, false, 18962- true, 18963- 0x1.0000000000000008p+0, false, 18964- 0x1.0000000000000008p+0, false, 18965- 0x1.0000000000000008p+0, false, 18966- 0x1.0000000000000008p+0, false, 18967- true, 18968- 0x1.0000000000000008p+0, false, 18969- 0x1.0000000000000008p+0, false, 18970- 0x1.0000000000000008p+0, false, 18971- 0x1.0000000000000008p+0, false, 18972- true, 18973- 0x1.0000000000000008p+0, false, 18974- 0x1.0000000000000008p+0, false, 18975- 0x1.0000000000000008p+0, false, 18976- 0x1.0000000000000008p+0, false, 18977- true, 18978- 0x1.0000000000000008p+0, false, 18979- 0x1.0000000000000008p+0, false, 18980- 0x1.0000000000000008p+0, false, 18981- 0x1.0000000000000008p+0, false), 18982+ 0x1p+0, false, false, 18983+ 0x1p+0, false, false, 18984+ 0x1p+0, false, false, 18985+ 0x1.000002p+0, false, false, 18986+ false, 18987+ 0x1p+0, false, false, 18988+ 0x1p+0, false, false, 18989+ 0x1p+0, false, false, 18990+ 0x1.0000000000001p+0, false, false, 18991+ true, 18992+ 0x1.0000000000000008p+0, false, false, 18993+ 0x1.0000000000000008p+0, false, false, 18994+ 0x1.0000000000000008p+0, false, false, 18995+ 0x1.0000000000000008p+0, false, false, 18996+ true, 18997+ 0x1.0000000000000008p+0, false, false, 18998+ 0x1.0000000000000008p+0, false, false, 18999+ 0x1.0000000000000008p+0, false, false, 19000+ 0x1.0000000000000008p+0, false, false, 19001+ true, 19002+ 0x1.0000000000000008p+0, false, false, 19003+ 0x1.0000000000000008p+0, false, false, 19004+ 0x1.0000000000000008p+0, false, false, 19005+ 0x1.0000000000000008p+0, false, false, 19006+ true, 19007+ 0x1.0000000000000008p+0, false, false, 19008+ 0x1.0000000000000008p+0, false, false, 19009+ 0x1.0000000000000008p+0, false, false, 19010+ 0x1.0000000000000008p+0, false, false), 19011 TEST ("1.0000000000000000002168404344971008868014905601739883422851" 19012 "5625", 19013 false, 19014- 0x1p+0, false, 19015- 0x1p+0, false, 19016- 0x1p+0, false, 19017- 0x1.000002p+0, false, 19018- false, 19019- 0x1p+0, false, 19020- 0x1p+0, false, 19021- 0x1p+0, false, 19022- 0x1.0000000000001p+0, false, 19023- true, 19024- 0x1.0000000000000004p+0, false, 19025- 0x1.0000000000000004p+0, false, 19026- 0x1.0000000000000004p+0, false, 19027- 0x1.0000000000000004p+0, false, 19028- true, 19029- 0x1.0000000000000004p+0, false, 19030- 0x1.0000000000000004p+0, false, 19031- 0x1.0000000000000004p+0, false, 19032- 0x1.0000000000000004p+0, false, 19033- true, 19034- 0x1.0000000000000004p+0, false, 19035- 0x1.0000000000000004p+0, false, 19036- 0x1.0000000000000004p+0, false, 19037- 0x1.0000000000000004p+0, false, 19038- true, 19039- 0x1.0000000000000004p+0, false, 19040- 0x1.0000000000000004p+0, false, 19041- 0x1.0000000000000004p+0, false, 19042- 0x1.0000000000000004p+0, false), 19043+ 0x1p+0, false, false, 19044+ 0x1p+0, false, false, 19045+ 0x1p+0, false, false, 19046+ 0x1.000002p+0, false, false, 19047+ false, 19048+ 0x1p+0, false, false, 19049+ 0x1p+0, false, false, 19050+ 0x1p+0, false, false, 19051+ 0x1.0000000000001p+0, false, false, 19052+ true, 19053+ 0x1.0000000000000004p+0, false, false, 19054+ 0x1.0000000000000004p+0, false, false, 19055+ 0x1.0000000000000004p+0, false, false, 19056+ 0x1.0000000000000004p+0, false, false, 19057+ true, 19058+ 0x1.0000000000000004p+0, false, false, 19059+ 0x1.0000000000000004p+0, false, false, 19060+ 0x1.0000000000000004p+0, false, false, 19061+ 0x1.0000000000000004p+0, false, false, 19062+ true, 19063+ 0x1.0000000000000004p+0, false, false, 19064+ 0x1.0000000000000004p+0, false, false, 19065+ 0x1.0000000000000004p+0, false, false, 19066+ 0x1.0000000000000004p+0, false, false, 19067+ true, 19068+ 0x1.0000000000000004p+0, false, false, 19069+ 0x1.0000000000000004p+0, false, false, 19070+ 0x1.0000000000000004p+0, false, false, 19071+ 0x1.0000000000000004p+0, false, false), 19072 TEST ("1.0000000000000000001084202172485504434007452800869941711425" 19073 "78125", 19074 false, 19075- 0x1p+0, false, 19076- 0x1p+0, false, 19077- 0x1p+0, false, 19078- 0x1.000002p+0, false, 19079- false, 19080- 0x1p+0, false, 19081- 0x1p+0, false, 19082- 0x1p+0, false, 19083- 0x1.0000000000001p+0, false, 19084- true, 19085- 0x1.0000000000000002p+0, false, 19086- 0x1.0000000000000002p+0, false, 19087- 0x1.0000000000000002p+0, false, 19088- 0x1.0000000000000002p+0, false, 19089- true, 19090- 0x1.0000000000000002p+0, false, 19091- 0x1.0000000000000002p+0, false, 19092- 0x1.0000000000000002p+0, false, 19093- 0x1.0000000000000002p+0, false, 19094- true, 19095- 0x1.0000000000000002p+0, false, 19096- 0x1.0000000000000002p+0, false, 19097- 0x1.0000000000000002p+0, false, 19098- 0x1.0000000000000002p+0, false, 19099- true, 19100- 0x1.0000000000000002p+0, false, 19101- 0x1.0000000000000002p+0, false, 19102- 0x1.0000000000000002p+0, false, 19103- 0x1.0000000000000002p+0, false), 19104+ 0x1p+0, false, false, 19105+ 0x1p+0, false, false, 19106+ 0x1p+0, false, false, 19107+ 0x1.000002p+0, false, false, 19108+ false, 19109+ 0x1p+0, false, false, 19110+ 0x1p+0, false, false, 19111+ 0x1p+0, false, false, 19112+ 0x1.0000000000001p+0, false, false, 19113+ true, 19114+ 0x1.0000000000000002p+0, false, false, 19115+ 0x1.0000000000000002p+0, false, false, 19116+ 0x1.0000000000000002p+0, false, false, 19117+ 0x1.0000000000000002p+0, false, false, 19118+ true, 19119+ 0x1.0000000000000002p+0, false, false, 19120+ 0x1.0000000000000002p+0, false, false, 19121+ 0x1.0000000000000002p+0, false, false, 19122+ 0x1.0000000000000002p+0, false, false, 19123+ true, 19124+ 0x1.0000000000000002p+0, false, false, 19125+ 0x1.0000000000000002p+0, false, false, 19126+ 0x1.0000000000000002p+0, false, false, 19127+ 0x1.0000000000000002p+0, false, false, 19128+ true, 19129+ 0x1.0000000000000002p+0, false, false, 19130+ 0x1.0000000000000002p+0, false, false, 19131+ 0x1.0000000000000002p+0, false, false, 19132+ 0x1.0000000000000002p+0, false, false), 19133 TEST ("1.0000000000000000000542101086242752217003726400434970855712" 19134 "890625", 19135 false, 19136- 0x1p+0, false, 19137- 0x1p+0, false, 19138- 0x1p+0, false, 19139- 0x1.000002p+0, false, 19140- false, 19141- 0x1p+0, false, 19142- 0x1p+0, false, 19143- 0x1p+0, false, 19144- 0x1.0000000000001p+0, false, 19145- false, 19146- 0x1p+0, false, 19147- 0x1p+0, false, 19148- 0x1p+0, false, 19149- 0x1.0000000000000002p+0, false, 19150- false, 19151- 0x1p+0, false, 19152- 0x1p+0, false, 19153- 0x1p+0, false, 19154- 0x1.0000000000000002p+0, false, 19155- true, 19156- 0x1.0000000000000001p+0, false, 19157- 0x1.0000000000000001p+0, false, 19158- 0x1.0000000000000001p+0, false, 19159- 0x1.0000000000000001p+0, false, 19160- true, 19161- 0x1.0000000000000001p+0, false, 19162- 0x1.0000000000000001p+0, false, 19163- 0x1.0000000000000001p+0, false, 19164- 0x1.0000000000000001p+0, false), 19165+ 0x1p+0, false, false, 19166+ 0x1p+0, false, false, 19167+ 0x1p+0, false, false, 19168+ 0x1.000002p+0, false, false, 19169+ false, 19170+ 0x1p+0, false, false, 19171+ 0x1p+0, false, false, 19172+ 0x1p+0, false, false, 19173+ 0x1.0000000000001p+0, false, false, 19174+ false, 19175+ 0x1p+0, false, false, 19176+ 0x1p+0, false, false, 19177+ 0x1p+0, false, false, 19178+ 0x1.0000000000000002p+0, false, false, 19179+ false, 19180+ 0x1p+0, false, false, 19181+ 0x1p+0, false, false, 19182+ 0x1p+0, false, false, 19183+ 0x1.0000000000000002p+0, false, false, 19184+ true, 19185+ 0x1.0000000000000001p+0, false, false, 19186+ 0x1.0000000000000001p+0, false, false, 19187+ 0x1.0000000000000001p+0, false, false, 19188+ 0x1.0000000000000001p+0, false, false, 19189+ true, 19190+ 0x1.0000000000000001p+0, false, false, 19191+ 0x1.0000000000000001p+0, false, false, 19192+ 0x1.0000000000000001p+0, false, false, 19193+ 0x1.0000000000000001p+0, false, false), 19194 TEST ("1.0000000000000000000271050543121376108501863200217485427856" 19195 "4453125", 19196 false, 19197- 0x1p+0, false, 19198- 0x1p+0, false, 19199- 0x1p+0, false, 19200- 0x1.000002p+0, false, 19201- false, 19202- 0x1p+0, false, 19203- 0x1p+0, false, 19204- 0x1p+0, false, 19205- 0x1.0000000000001p+0, false, 19206- false, 19207- 0x1p+0, false, 19208- 0x1p+0, false, 19209- 0x1p+0, false, 19210- 0x1.0000000000000002p+0, false, 19211- false, 19212- 0x1p+0, false, 19213- 0x1p+0, false, 19214- 0x1p+0, false, 19215- 0x1.0000000000000002p+0, false, 19216- true, 19217- 0x1.00000000000000008p+0, false, 19218- 0x1.00000000000000008p+0, false, 19219- 0x1.00000000000000008p+0, false, 19220- 0x1.00000000000000008p+0, false, 19221- true, 19222- 0x1.00000000000000008p+0, false, 19223- 0x1.00000000000000008p+0, false, 19224- 0x1.00000000000000008p+0, false, 19225- 0x1.00000000000000008p+0, false), 19226+ 0x1p+0, false, false, 19227+ 0x1p+0, false, false, 19228+ 0x1p+0, false, false, 19229+ 0x1.000002p+0, false, false, 19230+ false, 19231+ 0x1p+0, false, false, 19232+ 0x1p+0, false, false, 19233+ 0x1p+0, false, false, 19234+ 0x1.0000000000001p+0, false, false, 19235+ false, 19236+ 0x1p+0, false, false, 19237+ 0x1p+0, false, false, 19238+ 0x1p+0, false, false, 19239+ 0x1.0000000000000002p+0, false, false, 19240+ false, 19241+ 0x1p+0, false, false, 19242+ 0x1p+0, false, false, 19243+ 0x1p+0, false, false, 19244+ 0x1.0000000000000002p+0, false, false, 19245+ true, 19246+ 0x1.00000000000000008p+0, false, false, 19247+ 0x1.00000000000000008p+0, false, false, 19248+ 0x1.00000000000000008p+0, false, false, 19249+ 0x1.00000000000000008p+0, false, false, 19250+ true, 19251+ 0x1.00000000000000008p+0, false, false, 19252+ 0x1.00000000000000008p+0, false, false, 19253+ 0x1.00000000000000008p+0, false, false, 19254+ 0x1.00000000000000008p+0, false, false), 19255 TEST ("1.0000000000000000000135525271560688054250931600108742713928" 19256 "22265625", 19257 false, 19258- 0x1p+0, false, 19259- 0x1p+0, false, 19260- 0x1p+0, false, 19261- 0x1.000002p+0, false, 19262- false, 19263- 0x1p+0, false, 19264- 0x1p+0, false, 19265- 0x1p+0, false, 19266- 0x1.0000000000001p+0, false, 19267- false, 19268- 0x1p+0, false, 19269- 0x1p+0, false, 19270- 0x1p+0, false, 19271- 0x1.0000000000000002p+0, false, 19272- false, 19273- 0x1p+0, false, 19274- 0x1p+0, false, 19275- 0x1p+0, false, 19276- 0x1.0000000000000002p+0, false, 19277- true, 19278- 0x1.00000000000000004p+0, false, 19279- 0x1.00000000000000004p+0, false, 19280- 0x1.00000000000000004p+0, false, 19281- 0x1.00000000000000004p+0, false, 19282- true, 19283- 0x1.00000000000000004p+0, false, 19284- 0x1.00000000000000004p+0, false, 19285- 0x1.00000000000000004p+0, false, 19286- 0x1.00000000000000004p+0, false), 19287+ 0x1p+0, false, false, 19288+ 0x1p+0, false, false, 19289+ 0x1p+0, false, false, 19290+ 0x1.000002p+0, false, false, 19291+ false, 19292+ 0x1p+0, false, false, 19293+ 0x1p+0, false, false, 19294+ 0x1p+0, false, false, 19295+ 0x1.0000000000001p+0, false, false, 19296+ false, 19297+ 0x1p+0, false, false, 19298+ 0x1p+0, false, false, 19299+ 0x1p+0, false, false, 19300+ 0x1.0000000000000002p+0, false, false, 19301+ false, 19302+ 0x1p+0, false, false, 19303+ 0x1p+0, false, false, 19304+ 0x1p+0, false, false, 19305+ 0x1.0000000000000002p+0, false, false, 19306+ true, 19307+ 0x1.00000000000000004p+0, false, false, 19308+ 0x1.00000000000000004p+0, false, false, 19309+ 0x1.00000000000000004p+0, false, false, 19310+ 0x1.00000000000000004p+0, false, false, 19311+ true, 19312+ 0x1.00000000000000004p+0, false, false, 19313+ 0x1.00000000000000004p+0, false, false, 19314+ 0x1.00000000000000004p+0, false, false, 19315+ 0x1.00000000000000004p+0, false, false), 19316 TEST ("1.0000000000000000000067762635780344027125465800054371356964" 19317 "111328125", 19318 false, 19319- 0x1p+0, false, 19320- 0x1p+0, false, 19321- 0x1p+0, false, 19322- 0x1.000002p+0, false, 19323- false, 19324- 0x1p+0, false, 19325- 0x1p+0, false, 19326- 0x1p+0, false, 19327- 0x1.0000000000001p+0, false, 19328- false, 19329- 0x1p+0, false, 19330- 0x1p+0, false, 19331- 0x1p+0, false, 19332- 0x1.0000000000000002p+0, false, 19333- false, 19334- 0x1p+0, false, 19335- 0x1p+0, false, 19336- 0x1p+0, false, 19337- 0x1.0000000000000002p+0, false, 19338- true, 19339- 0x1.00000000000000002p+0, false, 19340- 0x1.00000000000000002p+0, false, 19341- 0x1.00000000000000002p+0, false, 19342- 0x1.00000000000000002p+0, false, 19343- true, 19344- 0x1.00000000000000002p+0, false, 19345- 0x1.00000000000000002p+0, false, 19346- 0x1.00000000000000002p+0, false, 19347- 0x1.00000000000000002p+0, false), 19348+ 0x1p+0, false, false, 19349+ 0x1p+0, false, false, 19350+ 0x1p+0, false, false, 19351+ 0x1.000002p+0, false, false, 19352+ false, 19353+ 0x1p+0, false, false, 19354+ 0x1p+0, false, false, 19355+ 0x1p+0, false, false, 19356+ 0x1.0000000000001p+0, false, false, 19357+ false, 19358+ 0x1p+0, false, false, 19359+ 0x1p+0, false, false, 19360+ 0x1p+0, false, false, 19361+ 0x1.0000000000000002p+0, false, false, 19362+ false, 19363+ 0x1p+0, false, false, 19364+ 0x1p+0, false, false, 19365+ 0x1p+0, false, false, 19366+ 0x1.0000000000000002p+0, false, false, 19367+ true, 19368+ 0x1.00000000000000002p+0, false, false, 19369+ 0x1.00000000000000002p+0, false, false, 19370+ 0x1.00000000000000002p+0, false, false, 19371+ 0x1.00000000000000002p+0, false, false, 19372+ true, 19373+ 0x1.00000000000000002p+0, false, false, 19374+ 0x1.00000000000000002p+0, false, false, 19375+ 0x1.00000000000000002p+0, false, false, 19376+ 0x1.00000000000000002p+0, false, false), 19377 TEST ("1.0000000000000000000033881317890172013562732900027185678482" 19378 "0556640625", 19379 false, 19380- 0x1p+0, false, 19381- 0x1p+0, false, 19382- 0x1p+0, false, 19383- 0x1.000002p+0, false, 19384- false, 19385- 0x1p+0, false, 19386- 0x1p+0, false, 19387- 0x1p+0, false, 19388- 0x1.0000000000001p+0, false, 19389- false, 19390- 0x1p+0, false, 19391- 0x1p+0, false, 19392- 0x1p+0, false, 19393- 0x1.0000000000000002p+0, false, 19394- false, 19395- 0x1p+0, false, 19396- 0x1p+0, false, 19397- 0x1p+0, false, 19398- 0x1.0000000000000002p+0, false, 19399- true, 19400- 0x1.00000000000000001p+0, false, 19401- 0x1.00000000000000001p+0, false, 19402- 0x1.00000000000000001p+0, false, 19403- 0x1.00000000000000001p+0, false, 19404- true, 19405- 0x1.00000000000000001p+0, false, 19406- 0x1.00000000000000001p+0, false, 19407- 0x1.00000000000000001p+0, false, 19408- 0x1.00000000000000001p+0, false), 19409+ 0x1p+0, false, false, 19410+ 0x1p+0, false, false, 19411+ 0x1p+0, false, false, 19412+ 0x1.000002p+0, false, false, 19413+ false, 19414+ 0x1p+0, false, false, 19415+ 0x1p+0, false, false, 19416+ 0x1p+0, false, false, 19417+ 0x1.0000000000001p+0, false, false, 19418+ false, 19419+ 0x1p+0, false, false, 19420+ 0x1p+0, false, false, 19421+ 0x1p+0, false, false, 19422+ 0x1.0000000000000002p+0, false, false, 19423+ false, 19424+ 0x1p+0, false, false, 19425+ 0x1p+0, false, false, 19426+ 0x1p+0, false, false, 19427+ 0x1.0000000000000002p+0, false, false, 19428+ true, 19429+ 0x1.00000000000000001p+0, false, false, 19430+ 0x1.00000000000000001p+0, false, false, 19431+ 0x1.00000000000000001p+0, false, false, 19432+ 0x1.00000000000000001p+0, false, false, 19433+ true, 19434+ 0x1.00000000000000001p+0, false, false, 19435+ 0x1.00000000000000001p+0, false, false, 19436+ 0x1.00000000000000001p+0, false, false, 19437+ 0x1.00000000000000001p+0, false, false), 19438 TEST ("1.0000000000000000000016940658945086006781366450013592839241" 19439 "02783203125", 19440 false, 19441- 0x1p+0, false, 19442- 0x1p+0, false, 19443- 0x1p+0, false, 19444- 0x1.000002p+0, false, 19445- false, 19446- 0x1p+0, false, 19447- 0x1p+0, false, 19448- 0x1p+0, false, 19449- 0x1.0000000000001p+0, false, 19450- false, 19451- 0x1p+0, false, 19452- 0x1p+0, false, 19453- 0x1p+0, false, 19454- 0x1.0000000000000002p+0, false, 19455- false, 19456- 0x1p+0, false, 19457- 0x1p+0, false, 19458- 0x1p+0, false, 19459- 0x1.0000000000000002p+0, false, 19460- true, 19461- 0x1.000000000000000008p+0, false, 19462- 0x1.000000000000000008p+0, false, 19463- 0x1.000000000000000008p+0, false, 19464- 0x1.000000000000000008p+0, false, 19465- true, 19466- 0x1.000000000000000008p+0, false, 19467- 0x1.000000000000000008p+0, false, 19468- 0x1.000000000000000008p+0, false, 19469- 0x1.000000000000000008p+0, false), 19470+ 0x1p+0, false, false, 19471+ 0x1p+0, false, false, 19472+ 0x1p+0, false, false, 19473+ 0x1.000002p+0, false, false, 19474+ false, 19475+ 0x1p+0, false, false, 19476+ 0x1p+0, false, false, 19477+ 0x1p+0, false, false, 19478+ 0x1.0000000000001p+0, false, false, 19479+ false, 19480+ 0x1p+0, false, false, 19481+ 0x1p+0, false, false, 19482+ 0x1p+0, false, false, 19483+ 0x1.0000000000000002p+0, false, false, 19484+ false, 19485+ 0x1p+0, false, false, 19486+ 0x1p+0, false, false, 19487+ 0x1p+0, false, false, 19488+ 0x1.0000000000000002p+0, false, false, 19489+ true, 19490+ 0x1.000000000000000008p+0, false, false, 19491+ 0x1.000000000000000008p+0, false, false, 19492+ 0x1.000000000000000008p+0, false, false, 19493+ 0x1.000000000000000008p+0, false, false, 19494+ true, 19495+ 0x1.000000000000000008p+0, false, false, 19496+ 0x1.000000000000000008p+0, false, false, 19497+ 0x1.000000000000000008p+0, false, false, 19498+ 0x1.000000000000000008p+0, false, false), 19499 TEST ("1.0000000000000000000008470329472543003390683225006796419620" 19500 "513916015625", 19501 false, 19502- 0x1p+0, false, 19503- 0x1p+0, false, 19504- 0x1p+0, false, 19505- 0x1.000002p+0, false, 19506- false, 19507- 0x1p+0, false, 19508- 0x1p+0, false, 19509- 0x1p+0, false, 19510- 0x1.0000000000001p+0, false, 19511- false, 19512- 0x1p+0, false, 19513- 0x1p+0, false, 19514- 0x1p+0, false, 19515- 0x1.0000000000000002p+0, false, 19516- false, 19517- 0x1p+0, false, 19518- 0x1p+0, false, 19519- 0x1p+0, false, 19520- 0x1.0000000000000002p+0, false, 19521- true, 19522- 0x1.000000000000000004p+0, false, 19523- 0x1.000000000000000004p+0, false, 19524- 0x1.000000000000000004p+0, false, 19525- 0x1.000000000000000004p+0, false, 19526- true, 19527- 0x1.000000000000000004p+0, false, 19528- 0x1.000000000000000004p+0, false, 19529- 0x1.000000000000000004p+0, false, 19530- 0x1.000000000000000004p+0, false), 19531+ 0x1p+0, false, false, 19532+ 0x1p+0, false, false, 19533+ 0x1p+0, false, false, 19534+ 0x1.000002p+0, false, false, 19535+ false, 19536+ 0x1p+0, false, false, 19537+ 0x1p+0, false, false, 19538+ 0x1p+0, false, false, 19539+ 0x1.0000000000001p+0, false, false, 19540+ false, 19541+ 0x1p+0, false, false, 19542+ 0x1p+0, false, false, 19543+ 0x1p+0, false, false, 19544+ 0x1.0000000000000002p+0, false, false, 19545+ false, 19546+ 0x1p+0, false, false, 19547+ 0x1p+0, false, false, 19548+ 0x1p+0, false, false, 19549+ 0x1.0000000000000002p+0, false, false, 19550+ true, 19551+ 0x1.000000000000000004p+0, false, false, 19552+ 0x1.000000000000000004p+0, false, false, 19553+ 0x1.000000000000000004p+0, false, false, 19554+ 0x1.000000000000000004p+0, false, false, 19555+ true, 19556+ 0x1.000000000000000004p+0, false, false, 19557+ 0x1.000000000000000004p+0, false, false, 19558+ 0x1.000000000000000004p+0, false, false, 19559+ 0x1.000000000000000004p+0, false, false), 19560 TEST ("1.0000000000000000000004235164736271501695341612503398209810" 19561 "2569580078125", 19562 false, 19563- 0x1p+0, false, 19564- 0x1p+0, false, 19565- 0x1p+0, false, 19566- 0x1.000002p+0, false, 19567- false, 19568- 0x1p+0, false, 19569- 0x1p+0, false, 19570- 0x1p+0, false, 19571- 0x1.0000000000001p+0, false, 19572- false, 19573- 0x1p+0, false, 19574- 0x1p+0, false, 19575- 0x1p+0, false, 19576- 0x1.0000000000000002p+0, false, 19577- false, 19578- 0x1p+0, false, 19579- 0x1p+0, false, 19580- 0x1p+0, false, 19581- 0x1.0000000000000002p+0, false, 19582- true, 19583- 0x1.000000000000000002p+0, false, 19584- 0x1.000000000000000002p+0, false, 19585- 0x1.000000000000000002p+0, false, 19586- 0x1.000000000000000002p+0, false, 19587- true, 19588- 0x1.000000000000000002p+0, false, 19589- 0x1.000000000000000002p+0, false, 19590- 0x1.000000000000000002p+0, false, 19591- 0x1.000000000000000002p+0, false), 19592+ 0x1p+0, false, false, 19593+ 0x1p+0, false, false, 19594+ 0x1p+0, false, false, 19595+ 0x1.000002p+0, false, false, 19596+ false, 19597+ 0x1p+0, false, false, 19598+ 0x1p+0, false, false, 19599+ 0x1p+0, false, false, 19600+ 0x1.0000000000001p+0, false, false, 19601+ false, 19602+ 0x1p+0, false, false, 19603+ 0x1p+0, false, false, 19604+ 0x1p+0, false, false, 19605+ 0x1.0000000000000002p+0, false, false, 19606+ false, 19607+ 0x1p+0, false, false, 19608+ 0x1p+0, false, false, 19609+ 0x1p+0, false, false, 19610+ 0x1.0000000000000002p+0, false, false, 19611+ true, 19612+ 0x1.000000000000000002p+0, false, false, 19613+ 0x1.000000000000000002p+0, false, false, 19614+ 0x1.000000000000000002p+0, false, false, 19615+ 0x1.000000000000000002p+0, false, false, 19616+ true, 19617+ 0x1.000000000000000002p+0, false, false, 19618+ 0x1.000000000000000002p+0, false, false, 19619+ 0x1.000000000000000002p+0, false, false, 19620+ 0x1.000000000000000002p+0, false, false), 19621 TEST ("1.0000000000000000000002117582368135750847670806251699104905" 19622 "12847900390625", 19623 false, 19624- 0x1p+0, false, 19625- 0x1p+0, false, 19626- 0x1p+0, false, 19627- 0x1.000002p+0, false, 19628- false, 19629- 0x1p+0, false, 19630- 0x1p+0, false, 19631- 0x1p+0, false, 19632- 0x1.0000000000001p+0, false, 19633- false, 19634- 0x1p+0, false, 19635- 0x1p+0, false, 19636- 0x1p+0, false, 19637- 0x1.0000000000000002p+0, false, 19638- false, 19639- 0x1p+0, false, 19640- 0x1p+0, false, 19641- 0x1p+0, false, 19642- 0x1.0000000000000002p+0, false, 19643- true, 19644- 0x1.000000000000000001p+0, false, 19645- 0x1.000000000000000001p+0, false, 19646- 0x1.000000000000000001p+0, false, 19647- 0x1.000000000000000001p+0, false, 19648- true, 19649- 0x1.000000000000000001p+0, false, 19650- 0x1.000000000000000001p+0, false, 19651- 0x1.000000000000000001p+0, false, 19652- 0x1.000000000000000001p+0, false), 19653+ 0x1p+0, false, false, 19654+ 0x1p+0, false, false, 19655+ 0x1p+0, false, false, 19656+ 0x1.000002p+0, false, false, 19657+ false, 19658+ 0x1p+0, false, false, 19659+ 0x1p+0, false, false, 19660+ 0x1p+0, false, false, 19661+ 0x1.0000000000001p+0, false, false, 19662+ false, 19663+ 0x1p+0, false, false, 19664+ 0x1p+0, false, false, 19665+ 0x1p+0, false, false, 19666+ 0x1.0000000000000002p+0, false, false, 19667+ false, 19668+ 0x1p+0, false, false, 19669+ 0x1p+0, false, false, 19670+ 0x1p+0, false, false, 19671+ 0x1.0000000000000002p+0, false, false, 19672+ true, 19673+ 0x1.000000000000000001p+0, false, false, 19674+ 0x1.000000000000000001p+0, false, false, 19675+ 0x1.000000000000000001p+0, false, false, 19676+ 0x1.000000000000000001p+0, false, false, 19677+ true, 19678+ 0x1.000000000000000001p+0, false, false, 19679+ 0x1.000000000000000001p+0, false, false, 19680+ 0x1.000000000000000001p+0, false, false, 19681+ 0x1.000000000000000001p+0, false, false), 19682 TEST ("1.0000000000000000000001058791184067875423835403125849552452" 19683 "564239501953125", 19684 false, 19685- 0x1p+0, false, 19686- 0x1p+0, false, 19687- 0x1p+0, false, 19688- 0x1.000002p+0, false, 19689- false, 19690- 0x1p+0, false, 19691- 0x1p+0, false, 19692- 0x1p+0, false, 19693- 0x1.0000000000001p+0, false, 19694- false, 19695- 0x1p+0, false, 19696- 0x1p+0, false, 19697- 0x1p+0, false, 19698- 0x1.0000000000000002p+0, false, 19699- false, 19700- 0x1p+0, false, 19701- 0x1p+0, false, 19702- 0x1p+0, false, 19703- 0x1.0000000000000002p+0, false, 19704- true, 19705- 0x1.0000000000000000008p+0, false, 19706- 0x1.0000000000000000008p+0, false, 19707- 0x1.0000000000000000008p+0, false, 19708- 0x1.0000000000000000008p+0, false, 19709- true, 19710- 0x1.0000000000000000008p+0, false, 19711- 0x1.0000000000000000008p+0, false, 19712- 0x1.0000000000000000008p+0, false, 19713- 0x1.0000000000000000008p+0, false), 19714+ 0x1p+0, false, false, 19715+ 0x1p+0, false, false, 19716+ 0x1p+0, false, false, 19717+ 0x1.000002p+0, false, false, 19718+ false, 19719+ 0x1p+0, false, false, 19720+ 0x1p+0, false, false, 19721+ 0x1p+0, false, false, 19722+ 0x1.0000000000001p+0, false, false, 19723+ false, 19724+ 0x1p+0, false, false, 19725+ 0x1p+0, false, false, 19726+ 0x1p+0, false, false, 19727+ 0x1.0000000000000002p+0, false, false, 19728+ false, 19729+ 0x1p+0, false, false, 19730+ 0x1p+0, false, false, 19731+ 0x1p+0, false, false, 19732+ 0x1.0000000000000002p+0, false, false, 19733+ true, 19734+ 0x1.0000000000000000008p+0, false, false, 19735+ 0x1.0000000000000000008p+0, false, false, 19736+ 0x1.0000000000000000008p+0, false, false, 19737+ 0x1.0000000000000000008p+0, false, false, 19738+ true, 19739+ 0x1.0000000000000000008p+0, false, false, 19740+ 0x1.0000000000000000008p+0, false, false, 19741+ 0x1.0000000000000000008p+0, false, false, 19742+ 0x1.0000000000000000008p+0, false, false), 19743 TEST ("1.0000000000000000000000529395592033937711917701562924776226" 19744 "2821197509765625", 19745 false, 19746- 0x1p+0, false, 19747- 0x1p+0, false, 19748- 0x1p+0, false, 19749- 0x1.000002p+0, false, 19750- false, 19751- 0x1p+0, false, 19752- 0x1p+0, false, 19753- 0x1p+0, false, 19754- 0x1.0000000000001p+0, false, 19755- false, 19756- 0x1p+0, false, 19757- 0x1p+0, false, 19758- 0x1p+0, false, 19759- 0x1.0000000000000002p+0, false, 19760- false, 19761- 0x1p+0, false, 19762- 0x1p+0, false, 19763- 0x1p+0, false, 19764- 0x1.0000000000000002p+0, false, 19765- true, 19766- 0x1.0000000000000000004p+0, false, 19767- 0x1.0000000000000000004p+0, false, 19768- 0x1.0000000000000000004p+0, false, 19769- 0x1.0000000000000000004p+0, false, 19770- true, 19771- 0x1.0000000000000000004p+0, false, 19772- 0x1.0000000000000000004p+0, false, 19773- 0x1.0000000000000000004p+0, false, 19774- 0x1.0000000000000000004p+0, false), 19775+ 0x1p+0, false, false, 19776+ 0x1p+0, false, false, 19777+ 0x1p+0, false, false, 19778+ 0x1.000002p+0, false, false, 19779+ false, 19780+ 0x1p+0, false, false, 19781+ 0x1p+0, false, false, 19782+ 0x1p+0, false, false, 19783+ 0x1.0000000000001p+0, false, false, 19784+ false, 19785+ 0x1p+0, false, false, 19786+ 0x1p+0, false, false, 19787+ 0x1p+0, false, false, 19788+ 0x1.0000000000000002p+0, false, false, 19789+ false, 19790+ 0x1p+0, false, false, 19791+ 0x1p+0, false, false, 19792+ 0x1p+0, false, false, 19793+ 0x1.0000000000000002p+0, false, false, 19794+ true, 19795+ 0x1.0000000000000000004p+0, false, false, 19796+ 0x1.0000000000000000004p+0, false, false, 19797+ 0x1.0000000000000000004p+0, false, false, 19798+ 0x1.0000000000000000004p+0, false, false, 19799+ true, 19800+ 0x1.0000000000000000004p+0, false, false, 19801+ 0x1.0000000000000000004p+0, false, false, 19802+ 0x1.0000000000000000004p+0, false, false, 19803+ 0x1.0000000000000000004p+0, false, false), 19804 TEST ("1.0000000000000000000000264697796016968855958850781462388113" 19805 "14105987548828125", 19806 false, 19807- 0x1p+0, false, 19808- 0x1p+0, false, 19809- 0x1p+0, false, 19810- 0x1.000002p+0, false, 19811- false, 19812- 0x1p+0, false, 19813- 0x1p+0, false, 19814- 0x1p+0, false, 19815- 0x1.0000000000001p+0, false, 19816- false, 19817- 0x1p+0, false, 19818- 0x1p+0, false, 19819- 0x1p+0, false, 19820- 0x1.0000000000000002p+0, false, 19821- false, 19822- 0x1p+0, false, 19823- 0x1p+0, false, 19824- 0x1p+0, false, 19825- 0x1.0000000000000002p+0, false, 19826- true, 19827- 0x1.0000000000000000002p+0, false, 19828- 0x1.0000000000000000002p+0, false, 19829- 0x1.0000000000000000002p+0, false, 19830- 0x1.0000000000000000002p+0, false, 19831- true, 19832- 0x1.0000000000000000002p+0, false, 19833- 0x1.0000000000000000002p+0, false, 19834- 0x1.0000000000000000002p+0, false, 19835- 0x1.0000000000000000002p+0, false), 19836+ 0x1p+0, false, false, 19837+ 0x1p+0, false, false, 19838+ 0x1p+0, false, false, 19839+ 0x1.000002p+0, false, false, 19840+ false, 19841+ 0x1p+0, false, false, 19842+ 0x1p+0, false, false, 19843+ 0x1p+0, false, false, 19844+ 0x1.0000000000001p+0, false, false, 19845+ false, 19846+ 0x1p+0, false, false, 19847+ 0x1p+0, false, false, 19848+ 0x1p+0, false, false, 19849+ 0x1.0000000000000002p+0, false, false, 19850+ false, 19851+ 0x1p+0, false, false, 19852+ 0x1p+0, false, false, 19853+ 0x1p+0, false, false, 19854+ 0x1.0000000000000002p+0, false, false, 19855+ true, 19856+ 0x1.0000000000000000002p+0, false, false, 19857+ 0x1.0000000000000000002p+0, false, false, 19858+ 0x1.0000000000000000002p+0, false, false, 19859+ 0x1.0000000000000000002p+0, false, false, 19860+ true, 19861+ 0x1.0000000000000000002p+0, false, false, 19862+ 0x1.0000000000000000002p+0, false, false, 19863+ 0x1.0000000000000000002p+0, false, false, 19864+ 0x1.0000000000000000002p+0, false, false), 19865 TEST ("1.0000000000000000000000132348898008484427979425390731194056" 19866 "570529937744140625", 19867 false, 19868- 0x1p+0, false, 19869- 0x1p+0, false, 19870- 0x1p+0, false, 19871- 0x1.000002p+0, false, 19872- false, 19873- 0x1p+0, false, 19874- 0x1p+0, false, 19875- 0x1p+0, false, 19876- 0x1.0000000000001p+0, false, 19877- false, 19878- 0x1p+0, false, 19879- 0x1p+0, false, 19880- 0x1p+0, false, 19881- 0x1.0000000000000002p+0, false, 19882- false, 19883- 0x1p+0, false, 19884- 0x1p+0, false, 19885- 0x1p+0, false, 19886- 0x1.0000000000000002p+0, false, 19887- true, 19888- 0x1.0000000000000000001p+0, false, 19889- 0x1.0000000000000000001p+0, false, 19890- 0x1.0000000000000000001p+0, false, 19891- 0x1.0000000000000000001p+0, false, 19892- true, 19893- 0x1.0000000000000000001p+0, false, 19894- 0x1.0000000000000000001p+0, false, 19895- 0x1.0000000000000000001p+0, false, 19896- 0x1.0000000000000000001p+0, false), 19897+ 0x1p+0, false, false, 19898+ 0x1p+0, false, false, 19899+ 0x1p+0, false, false, 19900+ 0x1.000002p+0, false, false, 19901+ false, 19902+ 0x1p+0, false, false, 19903+ 0x1p+0, false, false, 19904+ 0x1p+0, false, false, 19905+ 0x1.0000000000001p+0, false, false, 19906+ false, 19907+ 0x1p+0, false, false, 19908+ 0x1p+0, false, false, 19909+ 0x1p+0, false, false, 19910+ 0x1.0000000000000002p+0, false, false, 19911+ false, 19912+ 0x1p+0, false, false, 19913+ 0x1p+0, false, false, 19914+ 0x1p+0, false, false, 19915+ 0x1.0000000000000002p+0, false, false, 19916+ true, 19917+ 0x1.0000000000000000001p+0, false, false, 19918+ 0x1.0000000000000000001p+0, false, false, 19919+ 0x1.0000000000000000001p+0, false, false, 19920+ 0x1.0000000000000000001p+0, false, false, 19921+ true, 19922+ 0x1.0000000000000000001p+0, false, false, 19923+ 0x1.0000000000000000001p+0, false, false, 19924+ 0x1.0000000000000000001p+0, false, false, 19925+ 0x1.0000000000000000001p+0, false, false), 19926 TEST ("1.0000000000000000000000066174449004242213989712695365597028" 19927 "2852649688720703125", 19928 false, 19929- 0x1p+0, false, 19930- 0x1p+0, false, 19931- 0x1p+0, false, 19932- 0x1.000002p+0, false, 19933- false, 19934- 0x1p+0, false, 19935- 0x1p+0, false, 19936- 0x1p+0, false, 19937- 0x1.0000000000001p+0, false, 19938- false, 19939- 0x1p+0, false, 19940- 0x1p+0, false, 19941- 0x1p+0, false, 19942- 0x1.0000000000000002p+0, false, 19943- false, 19944- 0x1p+0, false, 19945- 0x1p+0, false, 19946- 0x1p+0, false, 19947- 0x1.0000000000000002p+0, false, 19948- true, 19949- 0x1.00000000000000000008p+0, false, 19950- 0x1.00000000000000000008p+0, false, 19951- 0x1.00000000000000000008p+0, false, 19952- 0x1.00000000000000000008p+0, false, 19953- true, 19954- 0x1.00000000000000000008p+0, false, 19955- 0x1.00000000000000000008p+0, false, 19956- 0x1.00000000000000000008p+0, false, 19957- 0x1.00000000000000000008p+0, false), 19958+ 0x1p+0, false, false, 19959+ 0x1p+0, false, false, 19960+ 0x1p+0, false, false, 19961+ 0x1.000002p+0, false, false, 19962+ false, 19963+ 0x1p+0, false, false, 19964+ 0x1p+0, false, false, 19965+ 0x1p+0, false, false, 19966+ 0x1.0000000000001p+0, false, false, 19967+ false, 19968+ 0x1p+0, false, false, 19969+ 0x1p+0, false, false, 19970+ 0x1p+0, false, false, 19971+ 0x1.0000000000000002p+0, false, false, 19972+ false, 19973+ 0x1p+0, false, false, 19974+ 0x1p+0, false, false, 19975+ 0x1p+0, false, false, 19976+ 0x1.0000000000000002p+0, false, false, 19977+ true, 19978+ 0x1.00000000000000000008p+0, false, false, 19979+ 0x1.00000000000000000008p+0, false, false, 19980+ 0x1.00000000000000000008p+0, false, false, 19981+ 0x1.00000000000000000008p+0, false, false, 19982+ true, 19983+ 0x1.00000000000000000008p+0, false, false, 19984+ 0x1.00000000000000000008p+0, false, false, 19985+ 0x1.00000000000000000008p+0, false, false, 19986+ 0x1.00000000000000000008p+0, false, false), 19987 TEST ("1.0000000000000000000000033087224502121106994856347682798514" 19988 "14263248443603515625", 19989 false, 19990- 0x1p+0, false, 19991- 0x1p+0, false, 19992- 0x1p+0, false, 19993- 0x1.000002p+0, false, 19994- false, 19995- 0x1p+0, false, 19996- 0x1p+0, false, 19997- 0x1p+0, false, 19998- 0x1.0000000000001p+0, false, 19999- false, 20000- 0x1p+0, false, 20001- 0x1p+0, false, 20002- 0x1p+0, false, 20003- 0x1.0000000000000002p+0, false, 20004- false, 20005- 0x1p+0, false, 20006- 0x1p+0, false, 20007- 0x1p+0, false, 20008- 0x1.0000000000000002p+0, false, 20009- true, 20010- 0x1.00000000000000000004p+0, false, 20011- 0x1.00000000000000000004p+0, false, 20012- 0x1.00000000000000000004p+0, false, 20013- 0x1.00000000000000000004p+0, false, 20014- true, 20015- 0x1.00000000000000000004p+0, false, 20016- 0x1.00000000000000000004p+0, false, 20017- 0x1.00000000000000000004p+0, false, 20018- 0x1.00000000000000000004p+0, false), 20019+ 0x1p+0, false, false, 20020+ 0x1p+0, false, false, 20021+ 0x1p+0, false, false, 20022+ 0x1.000002p+0, false, false, 20023+ false, 20024+ 0x1p+0, false, false, 20025+ 0x1p+0, false, false, 20026+ 0x1p+0, false, false, 20027+ 0x1.0000000000001p+0, false, false, 20028+ false, 20029+ 0x1p+0, false, false, 20030+ 0x1p+0, false, false, 20031+ 0x1p+0, false, false, 20032+ 0x1.0000000000000002p+0, false, false, 20033+ false, 20034+ 0x1p+0, false, false, 20035+ 0x1p+0, false, false, 20036+ 0x1p+0, false, false, 20037+ 0x1.0000000000000002p+0, false, false, 20038+ true, 20039+ 0x1.00000000000000000004p+0, false, false, 20040+ 0x1.00000000000000000004p+0, false, false, 20041+ 0x1.00000000000000000004p+0, false, false, 20042+ 0x1.00000000000000000004p+0, false, false, 20043+ true, 20044+ 0x1.00000000000000000004p+0, false, false, 20045+ 0x1.00000000000000000004p+0, false, false, 20046+ 0x1.00000000000000000004p+0, false, false, 20047+ 0x1.00000000000000000004p+0, false, false), 20048 TEST ("1.0000000000000000000000016543612251060553497428173841399257" 20049 "071316242218017578125", 20050 false, 20051- 0x1p+0, false, 20052- 0x1p+0, false, 20053- 0x1p+0, false, 20054- 0x1.000002p+0, false, 20055- false, 20056- 0x1p+0, false, 20057- 0x1p+0, false, 20058- 0x1p+0, false, 20059- 0x1.0000000000001p+0, false, 20060- false, 20061- 0x1p+0, false, 20062- 0x1p+0, false, 20063- 0x1p+0, false, 20064- 0x1.0000000000000002p+0, false, 20065- false, 20066- 0x1p+0, false, 20067- 0x1p+0, false, 20068- 0x1p+0, false, 20069- 0x1.0000000000000002p+0, false, 20070- true, 20071- 0x1.00000000000000000002p+0, false, 20072- 0x1.00000000000000000002p+0, false, 20073- 0x1.00000000000000000002p+0, false, 20074- 0x1.00000000000000000002p+0, false, 20075- true, 20076- 0x1.00000000000000000002p+0, false, 20077- 0x1.00000000000000000002p+0, false, 20078- 0x1.00000000000000000002p+0, false, 20079- 0x1.00000000000000000002p+0, false), 20080+ 0x1p+0, false, false, 20081+ 0x1p+0, false, false, 20082+ 0x1p+0, false, false, 20083+ 0x1.000002p+0, false, false, 20084+ false, 20085+ 0x1p+0, false, false, 20086+ 0x1p+0, false, false, 20087+ 0x1p+0, false, false, 20088+ 0x1.0000000000001p+0, false, false, 20089+ false, 20090+ 0x1p+0, false, false, 20091+ 0x1p+0, false, false, 20092+ 0x1p+0, false, false, 20093+ 0x1.0000000000000002p+0, false, false, 20094+ false, 20095+ 0x1p+0, false, false, 20096+ 0x1p+0, false, false, 20097+ 0x1p+0, false, false, 20098+ 0x1.0000000000000002p+0, false, false, 20099+ true, 20100+ 0x1.00000000000000000002p+0, false, false, 20101+ 0x1.00000000000000000002p+0, false, false, 20102+ 0x1.00000000000000000002p+0, false, false, 20103+ 0x1.00000000000000000002p+0, false, false, 20104+ true, 20105+ 0x1.00000000000000000002p+0, false, false, 20106+ 0x1.00000000000000000002p+0, false, false, 20107+ 0x1.00000000000000000002p+0, false, false, 20108+ 0x1.00000000000000000002p+0, false, false), 20109 TEST ("1.0000000000000000000000008271806125530276748714086920699628" 20110 "5356581211090087890625", 20111 false, 20112- 0x1p+0, false, 20113- 0x1p+0, false, 20114- 0x1p+0, false, 20115- 0x1.000002p+0, false, 20116- false, 20117- 0x1p+0, false, 20118- 0x1p+0, false, 20119- 0x1p+0, false, 20120- 0x1.0000000000001p+0, false, 20121- false, 20122- 0x1p+0, false, 20123- 0x1p+0, false, 20124- 0x1p+0, false, 20125- 0x1.0000000000000002p+0, false, 20126- false, 20127- 0x1p+0, false, 20128- 0x1p+0, false, 20129- 0x1p+0, false, 20130- 0x1.0000000000000002p+0, false, 20131- true, 20132- 0x1.00000000000000000001p+0, false, 20133- 0x1.00000000000000000001p+0, false, 20134- 0x1.00000000000000000001p+0, false, 20135- 0x1.00000000000000000001p+0, false, 20136- true, 20137- 0x1.00000000000000000001p+0, false, 20138- 0x1.00000000000000000001p+0, false, 20139- 0x1.00000000000000000001p+0, false, 20140- 0x1.00000000000000000001p+0, false), 20141+ 0x1p+0, false, false, 20142+ 0x1p+0, false, false, 20143+ 0x1p+0, false, false, 20144+ 0x1.000002p+0, false, false, 20145+ false, 20146+ 0x1p+0, false, false, 20147+ 0x1p+0, false, false, 20148+ 0x1p+0, false, false, 20149+ 0x1.0000000000001p+0, false, false, 20150+ false, 20151+ 0x1p+0, false, false, 20152+ 0x1p+0, false, false, 20153+ 0x1p+0, false, false, 20154+ 0x1.0000000000000002p+0, false, false, 20155+ false, 20156+ 0x1p+0, false, false, 20157+ 0x1p+0, false, false, 20158+ 0x1p+0, false, false, 20159+ 0x1.0000000000000002p+0, false, false, 20160+ true, 20161+ 0x1.00000000000000000001p+0, false, false, 20162+ 0x1.00000000000000000001p+0, false, false, 20163+ 0x1.00000000000000000001p+0, false, false, 20164+ 0x1.00000000000000000001p+0, false, false, 20165+ true, 20166+ 0x1.00000000000000000001p+0, false, false, 20167+ 0x1.00000000000000000001p+0, false, false, 20168+ 0x1.00000000000000000001p+0, false, false, 20169+ 0x1.00000000000000000001p+0, false, false), 20170 TEST ("1.0000000000000000000000004135903062765138374357043460349814" 20171 "26782906055450439453125", 20172 false, 20173- 0x1p+0, false, 20174- 0x1p+0, false, 20175- 0x1p+0, false, 20176- 0x1.000002p+0, false, 20177- false, 20178- 0x1p+0, false, 20179- 0x1p+0, false, 20180- 0x1p+0, false, 20181- 0x1.0000000000001p+0, false, 20182- false, 20183- 0x1p+0, false, 20184- 0x1p+0, false, 20185- 0x1p+0, false, 20186- 0x1.0000000000000002p+0, false, 20187- false, 20188- 0x1p+0, false, 20189- 0x1p+0, false, 20190- 0x1p+0, false, 20191- 0x1.0000000000000002p+0, false, 20192- true, 20193- 0x1.000000000000000000008p+0, false, 20194- 0x1.000000000000000000008p+0, false, 20195- 0x1.000000000000000000008p+0, false, 20196- 0x1.000000000000000000008p+0, false, 20197- true, 20198- 0x1.000000000000000000008p+0, false, 20199- 0x1.000000000000000000008p+0, false, 20200- 0x1.000000000000000000008p+0, false, 20201- 0x1.000000000000000000008p+0, false), 20202+ 0x1p+0, false, false, 20203+ 0x1p+0, false, false, 20204+ 0x1p+0, false, false, 20205+ 0x1.000002p+0, false, false, 20206+ false, 20207+ 0x1p+0, false, false, 20208+ 0x1p+0, false, false, 20209+ 0x1p+0, false, false, 20210+ 0x1.0000000000001p+0, false, false, 20211+ false, 20212+ 0x1p+0, false, false, 20213+ 0x1p+0, false, false, 20214+ 0x1p+0, false, false, 20215+ 0x1.0000000000000002p+0, false, false, 20216+ false, 20217+ 0x1p+0, false, false, 20218+ 0x1p+0, false, false, 20219+ 0x1p+0, false, false, 20220+ 0x1.0000000000000002p+0, false, false, 20221+ true, 20222+ 0x1.000000000000000000008p+0, false, false, 20223+ 0x1.000000000000000000008p+0, false, false, 20224+ 0x1.000000000000000000008p+0, false, false, 20225+ 0x1.000000000000000000008p+0, false, false, 20226+ true, 20227+ 0x1.000000000000000000008p+0, false, false, 20228+ 0x1.000000000000000000008p+0, false, false, 20229+ 0x1.000000000000000000008p+0, false, false, 20230+ 0x1.000000000000000000008p+0, false, false), 20231 TEST ("1.0000000000000000000000002067951531382569187178521730174907" 20232 "133914530277252197265625", 20233 false, 20234- 0x1p+0, false, 20235- 0x1p+0, false, 20236- 0x1p+0, false, 20237- 0x1.000002p+0, false, 20238- false, 20239- 0x1p+0, false, 20240- 0x1p+0, false, 20241- 0x1p+0, false, 20242- 0x1.0000000000001p+0, false, 20243- false, 20244- 0x1p+0, false, 20245- 0x1p+0, false, 20246- 0x1p+0, false, 20247- 0x1.0000000000000002p+0, false, 20248- false, 20249- 0x1p+0, false, 20250- 0x1p+0, false, 20251- 0x1p+0, false, 20252- 0x1.0000000000000002p+0, false, 20253- true, 20254- 0x1.000000000000000000004p+0, false, 20255- 0x1.000000000000000000004p+0, false, 20256- 0x1.000000000000000000004p+0, false, 20257- 0x1.000000000000000000004p+0, false, 20258- true, 20259- 0x1.000000000000000000004p+0, false, 20260- 0x1.000000000000000000004p+0, false, 20261- 0x1.000000000000000000004p+0, false, 20262- 0x1.000000000000000000004p+0, false), 20263+ 0x1p+0, false, false, 20264+ 0x1p+0, false, false, 20265+ 0x1p+0, false, false, 20266+ 0x1.000002p+0, false, false, 20267+ false, 20268+ 0x1p+0, false, false, 20269+ 0x1p+0, false, false, 20270+ 0x1p+0, false, false, 20271+ 0x1.0000000000001p+0, false, false, 20272+ false, 20273+ 0x1p+0, false, false, 20274+ 0x1p+0, false, false, 20275+ 0x1p+0, false, false, 20276+ 0x1.0000000000000002p+0, false, false, 20277+ false, 20278+ 0x1p+0, false, false, 20279+ 0x1p+0, false, false, 20280+ 0x1p+0, false, false, 20281+ 0x1.0000000000000002p+0, false, false, 20282+ true, 20283+ 0x1.000000000000000000004p+0, false, false, 20284+ 0x1.000000000000000000004p+0, false, false, 20285+ 0x1.000000000000000000004p+0, false, false, 20286+ 0x1.000000000000000000004p+0, false, false, 20287+ true, 20288+ 0x1.000000000000000000004p+0, false, false, 20289+ 0x1.000000000000000000004p+0, false, false, 20290+ 0x1.000000000000000000004p+0, false, false, 20291+ 0x1.000000000000000000004p+0, false, false), 20292 TEST ("1.0000000000000000000000001033975765691284593589260865087453" 20293 "5669572651386260986328125", 20294 false, 20295- 0x1p+0, false, 20296- 0x1p+0, false, 20297- 0x1p+0, false, 20298- 0x1.000002p+0, false, 20299- false, 20300- 0x1p+0, false, 20301- 0x1p+0, false, 20302- 0x1p+0, false, 20303- 0x1.0000000000001p+0, false, 20304- false, 20305- 0x1p+0, false, 20306- 0x1p+0, false, 20307- 0x1p+0, false, 20308- 0x1.0000000000000002p+0, false, 20309- false, 20310- 0x1p+0, false, 20311- 0x1p+0, false, 20312- 0x1p+0, false, 20313- 0x1.0000000000000002p+0, false, 20314- true, 20315- 0x1.000000000000000000002p+0, false, 20316- 0x1.000000000000000000002p+0, false, 20317- 0x1.000000000000000000002p+0, false, 20318- 0x1.000000000000000000002p+0, false, 20319- true, 20320- 0x1.000000000000000000002p+0, false, 20321- 0x1.000000000000000000002p+0, false, 20322- 0x1.000000000000000000002p+0, false, 20323- 0x1.000000000000000000002p+0, false), 20324+ 0x1p+0, false, false, 20325+ 0x1p+0, false, false, 20326+ 0x1p+0, false, false, 20327+ 0x1.000002p+0, false, false, 20328+ false, 20329+ 0x1p+0, false, false, 20330+ 0x1p+0, false, false, 20331+ 0x1p+0, false, false, 20332+ 0x1.0000000000001p+0, false, false, 20333+ false, 20334+ 0x1p+0, false, false, 20335+ 0x1p+0, false, false, 20336+ 0x1p+0, false, false, 20337+ 0x1.0000000000000002p+0, false, false, 20338+ false, 20339+ 0x1p+0, false, false, 20340+ 0x1p+0, false, false, 20341+ 0x1p+0, false, false, 20342+ 0x1.0000000000000002p+0, false, false, 20343+ true, 20344+ 0x1.000000000000000000002p+0, false, false, 20345+ 0x1.000000000000000000002p+0, false, false, 20346+ 0x1.000000000000000000002p+0, false, false, 20347+ 0x1.000000000000000000002p+0, false, false, 20348+ true, 20349+ 0x1.000000000000000000002p+0, false, false, 20350+ 0x1.000000000000000000002p+0, false, false, 20351+ 0x1.000000000000000000002p+0, false, false, 20352+ 0x1.000000000000000000002p+0, false, false), 20353 TEST ("1.0000000000000000000000000516987882845642296794630432543726" 20354 "78347863256931304931640625", 20355 false, 20356- 0x1p+0, false, 20357- 0x1p+0, false, 20358- 0x1p+0, false, 20359- 0x1.000002p+0, false, 20360- false, 20361- 0x1p+0, false, 20362- 0x1p+0, false, 20363- 0x1p+0, false, 20364- 0x1.0000000000001p+0, false, 20365- false, 20366- 0x1p+0, false, 20367- 0x1p+0, false, 20368- 0x1p+0, false, 20369- 0x1.0000000000000002p+0, false, 20370- false, 20371- 0x1p+0, false, 20372- 0x1p+0, false, 20373- 0x1p+0, false, 20374- 0x1.0000000000000002p+0, false, 20375- true, 20376- 0x1.000000000000000000001p+0, false, 20377- 0x1.000000000000000000001p+0, false, 20378- 0x1.000000000000000000001p+0, false, 20379- 0x1.000000000000000000001p+0, false, 20380- true, 20381- 0x1.000000000000000000001p+0, false, 20382- 0x1.000000000000000000001p+0, false, 20383- 0x1.000000000000000000001p+0, false, 20384- 0x1.000000000000000000001p+0, false), 20385+ 0x1p+0, false, false, 20386+ 0x1p+0, false, false, 20387+ 0x1p+0, false, false, 20388+ 0x1.000002p+0, false, false, 20389+ false, 20390+ 0x1p+0, false, false, 20391+ 0x1p+0, false, false, 20392+ 0x1p+0, false, false, 20393+ 0x1.0000000000001p+0, false, false, 20394+ false, 20395+ 0x1p+0, false, false, 20396+ 0x1p+0, false, false, 20397+ 0x1p+0, false, false, 20398+ 0x1.0000000000000002p+0, false, false, 20399+ false, 20400+ 0x1p+0, false, false, 20401+ 0x1p+0, false, false, 20402+ 0x1p+0, false, false, 20403+ 0x1.0000000000000002p+0, false, false, 20404+ true, 20405+ 0x1.000000000000000000001p+0, false, false, 20406+ 0x1.000000000000000000001p+0, false, false, 20407+ 0x1.000000000000000000001p+0, false, false, 20408+ 0x1.000000000000000000001p+0, false, false, 20409+ true, 20410+ 0x1.000000000000000000001p+0, false, false, 20411+ 0x1.000000000000000000001p+0, false, false, 20412+ 0x1.000000000000000000001p+0, false, false, 20413+ 0x1.000000000000000000001p+0, false, false), 20414 TEST ("1.0000000000000000000000000258493941422821148397315216271863" 20415 "391739316284656524658203125", 20416 false, 20417- 0x1p+0, false, 20418- 0x1p+0, false, 20419- 0x1p+0, false, 20420- 0x1.000002p+0, false, 20421- false, 20422- 0x1p+0, false, 20423- 0x1p+0, false, 20424- 0x1p+0, false, 20425- 0x1.0000000000001p+0, false, 20426- false, 20427- 0x1p+0, false, 20428- 0x1p+0, false, 20429- 0x1p+0, false, 20430- 0x1.0000000000000002p+0, false, 20431- false, 20432- 0x1p+0, false, 20433- 0x1p+0, false, 20434- 0x1p+0, false, 20435- 0x1.0000000000000002p+0, false, 20436- true, 20437- 0x1.0000000000000000000008p+0, false, 20438- 0x1.0000000000000000000008p+0, false, 20439- 0x1.0000000000000000000008p+0, false, 20440- 0x1.0000000000000000000008p+0, false, 20441- true, 20442- 0x1.0000000000000000000008p+0, false, 20443- 0x1.0000000000000000000008p+0, false, 20444- 0x1.0000000000000000000008p+0, false, 20445- 0x1.0000000000000000000008p+0, false), 20446+ 0x1p+0, false, false, 20447+ 0x1p+0, false, false, 20448+ 0x1p+0, false, false, 20449+ 0x1.000002p+0, false, false, 20450+ false, 20451+ 0x1p+0, false, false, 20452+ 0x1p+0, false, false, 20453+ 0x1p+0, false, false, 20454+ 0x1.0000000000001p+0, false, false, 20455+ false, 20456+ 0x1p+0, false, false, 20457+ 0x1p+0, false, false, 20458+ 0x1p+0, false, false, 20459+ 0x1.0000000000000002p+0, false, false, 20460+ false, 20461+ 0x1p+0, false, false, 20462+ 0x1p+0, false, false, 20463+ 0x1p+0, false, false, 20464+ 0x1.0000000000000002p+0, false, false, 20465+ true, 20466+ 0x1.0000000000000000000008p+0, false, false, 20467+ 0x1.0000000000000000000008p+0, false, false, 20468+ 0x1.0000000000000000000008p+0, false, false, 20469+ 0x1.0000000000000000000008p+0, false, false, 20470+ true, 20471+ 0x1.0000000000000000000008p+0, false, false, 20472+ 0x1.0000000000000000000008p+0, false, false, 20473+ 0x1.0000000000000000000008p+0, false, false, 20474+ 0x1.0000000000000000000008p+0, false, false), 20475 TEST ("1.0000000000000000000000000129246970711410574198657608135931" 20476 "6958696581423282623291015625", 20477 false, 20478- 0x1p+0, false, 20479- 0x1p+0, false, 20480- 0x1p+0, false, 20481- 0x1.000002p+0, false, 20482- false, 20483- 0x1p+0, false, 20484- 0x1p+0, false, 20485- 0x1p+0, false, 20486- 0x1.0000000000001p+0, false, 20487- false, 20488- 0x1p+0, false, 20489- 0x1p+0, false, 20490- 0x1p+0, false, 20491- 0x1.0000000000000002p+0, false, 20492- false, 20493- 0x1p+0, false, 20494- 0x1p+0, false, 20495- 0x1p+0, false, 20496- 0x1.0000000000000002p+0, false, 20497- true, 20498- 0x1.0000000000000000000004p+0, false, 20499- 0x1.0000000000000000000004p+0, false, 20500- 0x1.0000000000000000000004p+0, false, 20501- 0x1.0000000000000000000004p+0, false, 20502- true, 20503- 0x1.0000000000000000000004p+0, false, 20504- 0x1.0000000000000000000004p+0, false, 20505- 0x1.0000000000000000000004p+0, false, 20506- 0x1.0000000000000000000004p+0, false), 20507+ 0x1p+0, false, false, 20508+ 0x1p+0, false, false, 20509+ 0x1p+0, false, false, 20510+ 0x1.000002p+0, false, false, 20511+ false, 20512+ 0x1p+0, false, false, 20513+ 0x1p+0, false, false, 20514+ 0x1p+0, false, false, 20515+ 0x1.0000000000001p+0, false, false, 20516+ false, 20517+ 0x1p+0, false, false, 20518+ 0x1p+0, false, false, 20519+ 0x1p+0, false, false, 20520+ 0x1.0000000000000002p+0, false, false, 20521+ false, 20522+ 0x1p+0, false, false, 20523+ 0x1p+0, false, false, 20524+ 0x1p+0, false, false, 20525+ 0x1.0000000000000002p+0, false, false, 20526+ true, 20527+ 0x1.0000000000000000000004p+0, false, false, 20528+ 0x1.0000000000000000000004p+0, false, false, 20529+ 0x1.0000000000000000000004p+0, false, false, 20530+ 0x1.0000000000000000000004p+0, false, false, 20531+ true, 20532+ 0x1.0000000000000000000004p+0, false, false, 20533+ 0x1.0000000000000000000004p+0, false, false, 20534+ 0x1.0000000000000000000004p+0, false, false, 20535+ 0x1.0000000000000000000004p+0, false, false), 20536 TEST ("1.0000000000000000000000000064623485355705287099328804067965" 20537 "84793482907116413116455078125", 20538 false, 20539- 0x1p+0, false, 20540- 0x1p+0, false, 20541- 0x1p+0, false, 20542- 0x1.000002p+0, false, 20543- false, 20544- 0x1p+0, false, 20545- 0x1p+0, false, 20546- 0x1p+0, false, 20547- 0x1.0000000000001p+0, false, 20548- false, 20549- 0x1p+0, false, 20550- 0x1p+0, false, 20551- 0x1p+0, false, 20552- 0x1.0000000000000002p+0, false, 20553- false, 20554- 0x1p+0, false, 20555- 0x1p+0, false, 20556- 0x1p+0, false, 20557- 0x1.0000000000000002p+0, false, 20558- true, 20559- 0x1.0000000000000000000002p+0, false, 20560- 0x1.0000000000000000000002p+0, false, 20561- 0x1.0000000000000000000002p+0, false, 20562- 0x1.0000000000000000000002p+0, false, 20563- true, 20564- 0x1.0000000000000000000002p+0, false, 20565- 0x1.0000000000000000000002p+0, false, 20566- 0x1.0000000000000000000002p+0, false, 20567- 0x1.0000000000000000000002p+0, false), 20568+ 0x1p+0, false, false, 20569+ 0x1p+0, false, false, 20570+ 0x1p+0, false, false, 20571+ 0x1.000002p+0, false, false, 20572+ false, 20573+ 0x1p+0, false, false, 20574+ 0x1p+0, false, false, 20575+ 0x1p+0, false, false, 20576+ 0x1.0000000000001p+0, false, false, 20577+ false, 20578+ 0x1p+0, false, false, 20579+ 0x1p+0, false, false, 20580+ 0x1p+0, false, false, 20581+ 0x1.0000000000000002p+0, false, false, 20582+ false, 20583+ 0x1p+0, false, false, 20584+ 0x1p+0, false, false, 20585+ 0x1p+0, false, false, 20586+ 0x1.0000000000000002p+0, false, false, 20587+ true, 20588+ 0x1.0000000000000000000002p+0, false, false, 20589+ 0x1.0000000000000000000002p+0, false, false, 20590+ 0x1.0000000000000000000002p+0, false, false, 20591+ 0x1.0000000000000000000002p+0, false, false, 20592+ true, 20593+ 0x1.0000000000000000000002p+0, false, false, 20594+ 0x1.0000000000000000000002p+0, false, false, 20595+ 0x1.0000000000000000000002p+0, false, false, 20596+ 0x1.0000000000000000000002p+0, false, false), 20597 TEST ("1.0000000000000000000000000032311742677852643549664402033982" 20598 "923967414535582065582275390625", 20599 false, 20600- 0x1p+0, false, 20601- 0x1p+0, false, 20602- 0x1p+0, false, 20603- 0x1.000002p+0, false, 20604- false, 20605- 0x1p+0, false, 20606- 0x1p+0, false, 20607- 0x1p+0, false, 20608- 0x1.0000000000001p+0, false, 20609- false, 20610- 0x1p+0, false, 20611- 0x1p+0, false, 20612- 0x1p+0, false, 20613- 0x1.0000000000000002p+0, false, 20614- false, 20615- 0x1p+0, false, 20616- 0x1p+0, false, 20617- 0x1p+0, false, 20618- 0x1.0000000000000002p+0, false, 20619- true, 20620- 0x1.0000000000000000000001p+0, false, 20621- 0x1.0000000000000000000001p+0, false, 20622- 0x1.0000000000000000000001p+0, false, 20623- 0x1.0000000000000000000001p+0, false, 20624- true, 20625- 0x1.0000000000000000000001p+0, false, 20626- 0x1.0000000000000000000001p+0, false, 20627- 0x1.0000000000000000000001p+0, false, 20628- 0x1.0000000000000000000001p+0, false), 20629+ 0x1p+0, false, false, 20630+ 0x1p+0, false, false, 20631+ 0x1p+0, false, false, 20632+ 0x1.000002p+0, false, false, 20633+ false, 20634+ 0x1p+0, false, false, 20635+ 0x1p+0, false, false, 20636+ 0x1p+0, false, false, 20637+ 0x1.0000000000001p+0, false, false, 20638+ false, 20639+ 0x1p+0, false, false, 20640+ 0x1p+0, false, false, 20641+ 0x1p+0, false, false, 20642+ 0x1.0000000000000002p+0, false, false, 20643+ false, 20644+ 0x1p+0, false, false, 20645+ 0x1p+0, false, false, 20646+ 0x1p+0, false, false, 20647+ 0x1.0000000000000002p+0, false, false, 20648+ true, 20649+ 0x1.0000000000000000000001p+0, false, false, 20650+ 0x1.0000000000000000000001p+0, false, false, 20651+ 0x1.0000000000000000000001p+0, false, false, 20652+ 0x1.0000000000000000000001p+0, false, false, 20653+ true, 20654+ 0x1.0000000000000000000001p+0, false, false, 20655+ 0x1.0000000000000000000001p+0, false, false, 20656+ 0x1.0000000000000000000001p+0, false, false, 20657+ 0x1.0000000000000000000001p+0, false, false), 20658 TEST ("1.0000000000000000000000000016155871338926321774832201016991" 20659 "4619837072677910327911376953125", 20660 false, 20661- 0x1p+0, false, 20662- 0x1p+0, false, 20663- 0x1p+0, false, 20664- 0x1.000002p+0, false, 20665- false, 20666- 0x1p+0, false, 20667- 0x1p+0, false, 20668- 0x1p+0, false, 20669- 0x1.0000000000001p+0, false, 20670- false, 20671- 0x1p+0, false, 20672- 0x1p+0, false, 20673- 0x1p+0, false, 20674- 0x1.0000000000000002p+0, false, 20675- false, 20676- 0x1p+0, false, 20677- 0x1p+0, false, 20678- 0x1p+0, false, 20679- 0x1.0000000000000002p+0, false, 20680- true, 20681- 0x1.00000000000000000000008p+0, false, 20682- 0x1.00000000000000000000008p+0, false, 20683- 0x1.00000000000000000000008p+0, false, 20684- 0x1.00000000000000000000008p+0, false, 20685- true, 20686- 0x1.00000000000000000000008p+0, false, 20687- 0x1.00000000000000000000008p+0, false, 20688- 0x1.00000000000000000000008p+0, false, 20689- 0x1.00000000000000000000008p+0, false), 20690+ 0x1p+0, false, false, 20691+ 0x1p+0, false, false, 20692+ 0x1p+0, false, false, 20693+ 0x1.000002p+0, false, false, 20694+ false, 20695+ 0x1p+0, false, false, 20696+ 0x1p+0, false, false, 20697+ 0x1p+0, false, false, 20698+ 0x1.0000000000001p+0, false, false, 20699+ false, 20700+ 0x1p+0, false, false, 20701+ 0x1p+0, false, false, 20702+ 0x1p+0, false, false, 20703+ 0x1.0000000000000002p+0, false, false, 20704+ false, 20705+ 0x1p+0, false, false, 20706+ 0x1p+0, false, false, 20707+ 0x1p+0, false, false, 20708+ 0x1.0000000000000002p+0, false, false, 20709+ true, 20710+ 0x1.00000000000000000000008p+0, false, false, 20711+ 0x1.00000000000000000000008p+0, false, false, 20712+ 0x1.00000000000000000000008p+0, false, false, 20713+ 0x1.00000000000000000000008p+0, false, false, 20714+ true, 20715+ 0x1.00000000000000000000008p+0, false, false, 20716+ 0x1.00000000000000000000008p+0, false, false, 20717+ 0x1.00000000000000000000008p+0, false, false, 20718+ 0x1.00000000000000000000008p+0, false, false), 20719 TEST ("1.0000000000000000000000000008077935669463160887416100508495" 20720 "73099185363389551639556884765625", 20721 false, 20722- 0x1p+0, false, 20723- 0x1p+0, false, 20724- 0x1p+0, false, 20725- 0x1.000002p+0, false, 20726- false, 20727- 0x1p+0, false, 20728- 0x1p+0, false, 20729- 0x1p+0, false, 20730- 0x1.0000000000001p+0, false, 20731- false, 20732- 0x1p+0, false, 20733- 0x1p+0, false, 20734- 0x1p+0, false, 20735- 0x1.0000000000000002p+0, false, 20736- false, 20737- 0x1p+0, false, 20738- 0x1p+0, false, 20739- 0x1p+0, false, 20740- 0x1.0000000000000002p+0, false, 20741- true, 20742- 0x1.00000000000000000000004p+0, false, 20743- 0x1.00000000000000000000004p+0, false, 20744- 0x1.00000000000000000000004p+0, false, 20745- 0x1.00000000000000000000004p+0, false, 20746- true, 20747- 0x1.00000000000000000000004p+0, false, 20748- 0x1.00000000000000000000004p+0, false, 20749- 0x1.00000000000000000000004p+0, false, 20750- 0x1.00000000000000000000004p+0, false), 20751+ 0x1p+0, false, false, 20752+ 0x1p+0, false, false, 20753+ 0x1p+0, false, false, 20754+ 0x1.000002p+0, false, false, 20755+ false, 20756+ 0x1p+0, false, false, 20757+ 0x1p+0, false, false, 20758+ 0x1p+0, false, false, 20759+ 0x1.0000000000001p+0, false, false, 20760+ false, 20761+ 0x1p+0, false, false, 20762+ 0x1p+0, false, false, 20763+ 0x1p+0, false, false, 20764+ 0x1.0000000000000002p+0, false, false, 20765+ false, 20766+ 0x1p+0, false, false, 20767+ 0x1p+0, false, false, 20768+ 0x1p+0, false, false, 20769+ 0x1.0000000000000002p+0, false, false, 20770+ true, 20771+ 0x1.00000000000000000000004p+0, false, false, 20772+ 0x1.00000000000000000000004p+0, false, false, 20773+ 0x1.00000000000000000000004p+0, false, false, 20774+ 0x1.00000000000000000000004p+0, false, false, 20775+ true, 20776+ 0x1.00000000000000000000004p+0, false, false, 20777+ 0x1.00000000000000000000004p+0, false, false, 20778+ 0x1.00000000000000000000004p+0, false, false, 20779+ 0x1.00000000000000000000004p+0, false, false), 20780 TEST ("1.0000000000000000000000000004038967834731580443708050254247" 20781 "865495926816947758197784423828125", 20782 false, 20783- 0x1p+0, false, 20784- 0x1p+0, false, 20785- 0x1p+0, false, 20786- 0x1.000002p+0, false, 20787- false, 20788- 0x1p+0, false, 20789- 0x1p+0, false, 20790- 0x1p+0, false, 20791- 0x1.0000000000001p+0, false, 20792- false, 20793- 0x1p+0, false, 20794- 0x1p+0, false, 20795- 0x1p+0, false, 20796- 0x1.0000000000000002p+0, false, 20797- false, 20798- 0x1p+0, false, 20799- 0x1p+0, false, 20800- 0x1p+0, false, 20801- 0x1.0000000000000002p+0, false, 20802- true, 20803- 0x1.00000000000000000000002p+0, false, 20804- 0x1.00000000000000000000002p+0, false, 20805- 0x1.00000000000000000000002p+0, false, 20806- 0x1.00000000000000000000002p+0, false, 20807- true, 20808- 0x1.00000000000000000000002p+0, false, 20809- 0x1.00000000000000000000002p+0, false, 20810- 0x1.00000000000000000000002p+0, false, 20811- 0x1.00000000000000000000002p+0, false), 20812+ 0x1p+0, false, false, 20813+ 0x1p+0, false, false, 20814+ 0x1p+0, false, false, 20815+ 0x1.000002p+0, false, false, 20816+ false, 20817+ 0x1p+0, false, false, 20818+ 0x1p+0, false, false, 20819+ 0x1p+0, false, false, 20820+ 0x1.0000000000001p+0, false, false, 20821+ false, 20822+ 0x1p+0, false, false, 20823+ 0x1p+0, false, false, 20824+ 0x1p+0, false, false, 20825+ 0x1.0000000000000002p+0, false, false, 20826+ false, 20827+ 0x1p+0, false, false, 20828+ 0x1p+0, false, false, 20829+ 0x1p+0, false, false, 20830+ 0x1.0000000000000002p+0, false, false, 20831+ true, 20832+ 0x1.00000000000000000000002p+0, false, false, 20833+ 0x1.00000000000000000000002p+0, false, false, 20834+ 0x1.00000000000000000000002p+0, false, false, 20835+ 0x1.00000000000000000000002p+0, false, false, 20836+ true, 20837+ 0x1.00000000000000000000002p+0, false, false, 20838+ 0x1.00000000000000000000002p+0, false, false, 20839+ 0x1.00000000000000000000002p+0, false, false, 20840+ 0x1.00000000000000000000002p+0, false, false), 20841 TEST ("1.0000000000000000000000000002019483917365790221854025127123" 20842 "9327479634084738790988922119140625", 20843 false, 20844- 0x1p+0, false, 20845- 0x1p+0, false, 20846- 0x1p+0, false, 20847- 0x1.000002p+0, false, 20848- false, 20849- 0x1p+0, false, 20850- 0x1p+0, false, 20851- 0x1p+0, false, 20852- 0x1.0000000000001p+0, false, 20853- false, 20854- 0x1p+0, false, 20855- 0x1p+0, false, 20856- 0x1p+0, false, 20857- 0x1.0000000000000002p+0, false, 20858- false, 20859- 0x1p+0, false, 20860- 0x1p+0, false, 20861- 0x1p+0, false, 20862- 0x1.0000000000000002p+0, false, 20863- true, 20864- 0x1.00000000000000000000001p+0, false, 20865- 0x1.00000000000000000000001p+0, false, 20866- 0x1.00000000000000000000001p+0, false, 20867- 0x1.00000000000000000000001p+0, false, 20868- true, 20869- 0x1.00000000000000000000001p+0, false, 20870- 0x1.00000000000000000000001p+0, false, 20871- 0x1.00000000000000000000001p+0, false, 20872- 0x1.00000000000000000000001p+0, false), 20873+ 0x1p+0, false, false, 20874+ 0x1p+0, false, false, 20875+ 0x1p+0, false, false, 20876+ 0x1.000002p+0, false, false, 20877+ false, 20878+ 0x1p+0, false, false, 20879+ 0x1p+0, false, false, 20880+ 0x1p+0, false, false, 20881+ 0x1.0000000000001p+0, false, false, 20882+ false, 20883+ 0x1p+0, false, false, 20884+ 0x1p+0, false, false, 20885+ 0x1p+0, false, false, 20886+ 0x1.0000000000000002p+0, false, false, 20887+ false, 20888+ 0x1p+0, false, false, 20889+ 0x1p+0, false, false, 20890+ 0x1p+0, false, false, 20891+ 0x1.0000000000000002p+0, false, false, 20892+ true, 20893+ 0x1.00000000000000000000001p+0, false, false, 20894+ 0x1.00000000000000000000001p+0, false, false, 20895+ 0x1.00000000000000000000001p+0, false, false, 20896+ 0x1.00000000000000000000001p+0, false, false, 20897+ true, 20898+ 0x1.00000000000000000000001p+0, false, false, 20899+ 0x1.00000000000000000000001p+0, false, false, 20900+ 0x1.00000000000000000000001p+0, false, false, 20901+ 0x1.00000000000000000000001p+0, false, false), 20902 TEST ("1.0000000000000000000000000001009741958682895110927012563561" 20903 "96637398170423693954944610595703125", 20904 false, 20905- 0x1p+0, false, 20906- 0x1p+0, false, 20907- 0x1p+0, false, 20908- 0x1.000002p+0, false, 20909- false, 20910- 0x1p+0, false, 20911- 0x1p+0, false, 20912- 0x1p+0, false, 20913- 0x1.0000000000001p+0, false, 20914- false, 20915- 0x1p+0, false, 20916- 0x1p+0, false, 20917- 0x1p+0, false, 20918- 0x1.0000000000000002p+0, false, 20919- false, 20920- 0x1p+0, false, 20921- 0x1p+0, false, 20922- 0x1p+0, false, 20923- 0x1.0000000000000002p+0, false, 20924- true, 20925- 0x1.000000000000000000000008p+0, false, 20926- 0x1.000000000000000000000008p+0, false, 20927- 0x1.000000000000000000000008p+0, false, 20928- 0x1.000000000000000000000008p+0, false, 20929- true, 20930- 0x1.000000000000000000000008p+0, false, 20931- 0x1.000000000000000000000008p+0, false, 20932- 0x1.000000000000000000000008p+0, false, 20933- 0x1.000000000000000000000008p+0, false), 20934+ 0x1p+0, false, false, 20935+ 0x1p+0, false, false, 20936+ 0x1p+0, false, false, 20937+ 0x1.000002p+0, false, false, 20938+ false, 20939+ 0x1p+0, false, false, 20940+ 0x1p+0, false, false, 20941+ 0x1p+0, false, false, 20942+ 0x1.0000000000001p+0, false, false, 20943+ false, 20944+ 0x1p+0, false, false, 20945+ 0x1p+0, false, false, 20946+ 0x1p+0, false, false, 20947+ 0x1.0000000000000002p+0, false, false, 20948+ false, 20949+ 0x1p+0, false, false, 20950+ 0x1p+0, false, false, 20951+ 0x1p+0, false, false, 20952+ 0x1.0000000000000002p+0, false, false, 20953+ true, 20954+ 0x1.000000000000000000000008p+0, false, false, 20955+ 0x1.000000000000000000000008p+0, false, false, 20956+ 0x1.000000000000000000000008p+0, false, false, 20957+ 0x1.000000000000000000000008p+0, false, false, 20958+ true, 20959+ 0x1.000000000000000000000008p+0, false, false, 20960+ 0x1.000000000000000000000008p+0, false, false, 20961+ 0x1.000000000000000000000008p+0, false, false, 20962+ 0x1.000000000000000000000008p+0, false, false), 20963 TEST ("1.0000000000000000000000000000504870979341447555463506281780" 20964 "983186990852118469774723052978515625", 20965 false, 20966- 0x1p+0, false, 20967- 0x1p+0, false, 20968- 0x1p+0, false, 20969- 0x1.000002p+0, false, 20970- false, 20971- 0x1p+0, false, 20972- 0x1p+0, false, 20973- 0x1p+0, false, 20974- 0x1.0000000000001p+0, false, 20975- false, 20976- 0x1p+0, false, 20977- 0x1p+0, false, 20978- 0x1p+0, false, 20979- 0x1.0000000000000002p+0, false, 20980- false, 20981- 0x1p+0, false, 20982- 0x1p+0, false, 20983- 0x1p+0, false, 20984- 0x1.0000000000000002p+0, false, 20985- true, 20986- 0x1.000000000000000000000004p+0, false, 20987- 0x1.000000000000000000000004p+0, false, 20988- 0x1.000000000000000000000004p+0, false, 20989- 0x1.000000000000000000000004p+0, false, 20990- true, 20991- 0x1.000000000000000000000004p+0, false, 20992- 0x1.000000000000000000000004p+0, false, 20993- 0x1.000000000000000000000004p+0, false, 20994- 0x1.000000000000000000000004p+0, false), 20995+ 0x1p+0, false, false, 20996+ 0x1p+0, false, false, 20997+ 0x1p+0, false, false, 20998+ 0x1.000002p+0, false, false, 20999+ false, 21000+ 0x1p+0, false, false, 21001+ 0x1p+0, false, false, 21002+ 0x1p+0, false, false, 21003+ 0x1.0000000000001p+0, false, false, 21004+ false, 21005+ 0x1p+0, false, false, 21006+ 0x1p+0, false, false, 21007+ 0x1p+0, false, false, 21008+ 0x1.0000000000000002p+0, false, false, 21009+ false, 21010+ 0x1p+0, false, false, 21011+ 0x1p+0, false, false, 21012+ 0x1p+0, false, false, 21013+ 0x1.0000000000000002p+0, false, false, 21014+ true, 21015+ 0x1.000000000000000000000004p+0, false, false, 21016+ 0x1.000000000000000000000004p+0, false, false, 21017+ 0x1.000000000000000000000004p+0, false, false, 21018+ 0x1.000000000000000000000004p+0, false, false, 21019+ true, 21020+ 0x1.000000000000000000000004p+0, false, false, 21021+ 0x1.000000000000000000000004p+0, false, false, 21022+ 0x1.000000000000000000000004p+0, false, false, 21023+ 0x1.000000000000000000000004p+0, false, false), 21024 TEST ("1.0000000000000000000000000000252435489670723777731753140890" 21025 "4915934954260592348873615264892578125", 21026 false, 21027- 0x1p+0, false, 21028- 0x1p+0, false, 21029- 0x1p+0, false, 21030- 0x1.000002p+0, false, 21031- false, 21032- 0x1p+0, false, 21033- 0x1p+0, false, 21034- 0x1p+0, false, 21035- 0x1.0000000000001p+0, false, 21036- false, 21037- 0x1p+0, false, 21038- 0x1p+0, false, 21039- 0x1p+0, false, 21040- 0x1.0000000000000002p+0, false, 21041- false, 21042- 0x1p+0, false, 21043- 0x1p+0, false, 21044- 0x1p+0, false, 21045- 0x1.0000000000000002p+0, false, 21046- true, 21047- 0x1.000000000000000000000002p+0, false, 21048- 0x1.000000000000000000000002p+0, false, 21049- 0x1.000000000000000000000002p+0, false, 21050- 0x1.000000000000000000000002p+0, false, 21051- true, 21052- 0x1.000000000000000000000002p+0, false, 21053- 0x1.000000000000000000000002p+0, false, 21054- 0x1.000000000000000000000002p+0, false, 21055- 0x1.000000000000000000000002p+0, false), 21056+ 0x1p+0, false, false, 21057+ 0x1p+0, false, false, 21058+ 0x1p+0, false, false, 21059+ 0x1.000002p+0, false, false, 21060+ false, 21061+ 0x1p+0, false, false, 21062+ 0x1p+0, false, false, 21063+ 0x1p+0, false, false, 21064+ 0x1.0000000000001p+0, false, false, 21065+ false, 21066+ 0x1p+0, false, false, 21067+ 0x1p+0, false, false, 21068+ 0x1p+0, false, false, 21069+ 0x1.0000000000000002p+0, false, false, 21070+ false, 21071+ 0x1p+0, false, false, 21072+ 0x1p+0, false, false, 21073+ 0x1p+0, false, false, 21074+ 0x1.0000000000000002p+0, false, false, 21075+ true, 21076+ 0x1.000000000000000000000002p+0, false, false, 21077+ 0x1.000000000000000000000002p+0, false, false, 21078+ 0x1.000000000000000000000002p+0, false, false, 21079+ 0x1.000000000000000000000002p+0, false, false, 21080+ true, 21081+ 0x1.000000000000000000000002p+0, false, false, 21082+ 0x1.000000000000000000000002p+0, false, false, 21083+ 0x1.000000000000000000000002p+0, false, false, 21084+ 0x1.000000000000000000000002p+0, false, false), 21085 TEST ("1.0000000000000000000000000000126217744835361888865876570445" 21086 "24579674771302961744368076324462890625", 21087 false, 21088- 0x1p+0, false, 21089- 0x1p+0, false, 21090- 0x1p+0, false, 21091- 0x1.000002p+0, false, 21092- false, 21093- 0x1p+0, false, 21094- 0x1p+0, false, 21095- 0x1p+0, false, 21096- 0x1.0000000000001p+0, false, 21097- false, 21098- 0x1p+0, false, 21099- 0x1p+0, false, 21100- 0x1p+0, false, 21101- 0x1.0000000000000002p+0, false, 21102- false, 21103- 0x1p+0, false, 21104- 0x1p+0, false, 21105- 0x1p+0, false, 21106- 0x1.0000000000000002p+0, false, 21107- true, 21108- 0x1.000000000000000000000001p+0, false, 21109- 0x1.000000000000000000000001p+0, false, 21110- 0x1.000000000000000000000001p+0, false, 21111- 0x1.000000000000000000000001p+0, false, 21112- true, 21113- 0x1.000000000000000000000001p+0, false, 21114- 0x1.000000000000000000000001p+0, false, 21115- 0x1.000000000000000000000001p+0, false, 21116- 0x1.000000000000000000000001p+0, false), 21117+ 0x1p+0, false, false, 21118+ 0x1p+0, false, false, 21119+ 0x1p+0, false, false, 21120+ 0x1.000002p+0, false, false, 21121+ false, 21122+ 0x1p+0, false, false, 21123+ 0x1p+0, false, false, 21124+ 0x1p+0, false, false, 21125+ 0x1.0000000000001p+0, false, false, 21126+ false, 21127+ 0x1p+0, false, false, 21128+ 0x1p+0, false, false, 21129+ 0x1p+0, false, false, 21130+ 0x1.0000000000000002p+0, false, false, 21131+ false, 21132+ 0x1p+0, false, false, 21133+ 0x1p+0, false, false, 21134+ 0x1p+0, false, false, 21135+ 0x1.0000000000000002p+0, false, false, 21136+ true, 21137+ 0x1.000000000000000000000001p+0, false, false, 21138+ 0x1.000000000000000000000001p+0, false, false, 21139+ 0x1.000000000000000000000001p+0, false, false, 21140+ 0x1.000000000000000000000001p+0, false, false, 21141+ true, 21142+ 0x1.000000000000000000000001p+0, false, false, 21143+ 0x1.000000000000000000000001p+0, false, false, 21144+ 0x1.000000000000000000000001p+0, false, false, 21145+ 0x1.000000000000000000000001p+0, false, false), 21146 TEST ("1.0000000000000000000000000000063108872417680944432938285222" 21147 "622898373856514808721840381622314453125", 21148 false, 21149- 0x1p+0, false, 21150- 0x1p+0, false, 21151- 0x1p+0, false, 21152- 0x1.000002p+0, false, 21153- false, 21154- 0x1p+0, false, 21155- 0x1p+0, false, 21156- 0x1p+0, false, 21157- 0x1.0000000000001p+0, false, 21158- false, 21159- 0x1p+0, false, 21160- 0x1p+0, false, 21161- 0x1p+0, false, 21162- 0x1.0000000000000002p+0, false, 21163- false, 21164- 0x1p+0, false, 21165- 0x1p+0, false, 21166- 0x1p+0, false, 21167- 0x1.0000000000000002p+0, false, 21168- true, 21169- 0x1.0000000000000000000000008p+0, false, 21170- 0x1.0000000000000000000000008p+0, false, 21171- 0x1.0000000000000000000000008p+0, false, 21172- 0x1.0000000000000000000000008p+0, false, 21173- true, 21174- 0x1.0000000000000000000000008p+0, false, 21175- 0x1.0000000000000000000000008p+0, false, 21176- 0x1.0000000000000000000000008p+0, false, 21177- 0x1.0000000000000000000000008p+0, false), 21178+ 0x1p+0, false, false, 21179+ 0x1p+0, false, false, 21180+ 0x1p+0, false, false, 21181+ 0x1.000002p+0, false, false, 21182+ false, 21183+ 0x1p+0, false, false, 21184+ 0x1p+0, false, false, 21185+ 0x1p+0, false, false, 21186+ 0x1.0000000000001p+0, false, false, 21187+ false, 21188+ 0x1p+0, false, false, 21189+ 0x1p+0, false, false, 21190+ 0x1p+0, false, false, 21191+ 0x1.0000000000000002p+0, false, false, 21192+ false, 21193+ 0x1p+0, false, false, 21194+ 0x1p+0, false, false, 21195+ 0x1p+0, false, false, 21196+ 0x1.0000000000000002p+0, false, false, 21197+ true, 21198+ 0x1.0000000000000000000000008p+0, false, false, 21199+ 0x1.0000000000000000000000008p+0, false, false, 21200+ 0x1.0000000000000000000000008p+0, false, false, 21201+ 0x1.0000000000000000000000008p+0, false, false, 21202+ true, 21203+ 0x1.0000000000000000000000008p+0, false, false, 21204+ 0x1.0000000000000000000000008p+0, false, false, 21205+ 0x1.0000000000000000000000008p+0, false, false, 21206+ 0x1.0000000000000000000000008p+0, false, false), 21207 TEST ("1.0000000000000000000000000000031554436208840472216469142611" 21208 "3114491869282574043609201908111572265625", 21209 false, 21210- 0x1p+0, false, 21211- 0x1p+0, false, 21212- 0x1p+0, false, 21213- 0x1.000002p+0, false, 21214- false, 21215- 0x1p+0, false, 21216- 0x1p+0, false, 21217- 0x1p+0, false, 21218- 0x1.0000000000001p+0, false, 21219- false, 21220- 0x1p+0, false, 21221- 0x1p+0, false, 21222- 0x1p+0, false, 21223- 0x1.0000000000000002p+0, false, 21224- false, 21225- 0x1p+0, false, 21226- 0x1p+0, false, 21227- 0x1p+0, false, 21228- 0x1.0000000000000002p+0, false, 21229- true, 21230- 0x1.0000000000000000000000004p+0, false, 21231- 0x1.0000000000000000000000004p+0, false, 21232- 0x1.0000000000000000000000004p+0, false, 21233- 0x1.0000000000000000000000004p+0, false, 21234- true, 21235- 0x1.0000000000000000000000004p+0, false, 21236- 0x1.0000000000000000000000004p+0, false, 21237- 0x1.0000000000000000000000004p+0, false, 21238- 0x1.0000000000000000000000004p+0, false), 21239+ 0x1p+0, false, false, 21240+ 0x1p+0, false, false, 21241+ 0x1p+0, false, false, 21242+ 0x1.000002p+0, false, false, 21243+ false, 21244+ 0x1p+0, false, false, 21245+ 0x1p+0, false, false, 21246+ 0x1p+0, false, false, 21247+ 0x1.0000000000001p+0, false, false, 21248+ false, 21249+ 0x1p+0, false, false, 21250+ 0x1p+0, false, false, 21251+ 0x1p+0, false, false, 21252+ 0x1.0000000000000002p+0, false, false, 21253+ false, 21254+ 0x1p+0, false, false, 21255+ 0x1p+0, false, false, 21256+ 0x1p+0, false, false, 21257+ 0x1.0000000000000002p+0, false, false, 21258+ true, 21259+ 0x1.0000000000000000000000004p+0, false, false, 21260+ 0x1.0000000000000000000000004p+0, false, false, 21261+ 0x1.0000000000000000000000004p+0, false, false, 21262+ 0x1.0000000000000000000000004p+0, false, false, 21263+ true, 21264+ 0x1.0000000000000000000000004p+0, false, false, 21265+ 0x1.0000000000000000000000004p+0, false, false, 21266+ 0x1.0000000000000000000000004p+0, false, false, 21267+ 0x1.0000000000000000000000004p+0, false, false), 21268 TEST ("1.0000000000000000000000000000015777218104420236108234571305" 21269 "65572459346412870218046009540557861328125", 21270 false, 21271- 0x1p+0, false, 21272- 0x1p+0, false, 21273- 0x1p+0, false, 21274- 0x1.000002p+0, false, 21275- false, 21276- 0x1p+0, false, 21277- 0x1p+0, false, 21278- 0x1p+0, false, 21279- 0x1.0000000000001p+0, false, 21280- false, 21281- 0x1p+0, false, 21282- 0x1p+0, false, 21283- 0x1p+0, false, 21284- 0x1.0000000000000002p+0, false, 21285- false, 21286- 0x1p+0, false, 21287- 0x1p+0, false, 21288- 0x1p+0, false, 21289- 0x1.0000000000000002p+0, false, 21290- true, 21291- 0x1.0000000000000000000000002p+0, false, 21292- 0x1.0000000000000000000000002p+0, false, 21293- 0x1.0000000000000000000000002p+0, false, 21294- 0x1.0000000000000000000000002p+0, false, 21295- true, 21296- 0x1.0000000000000000000000002p+0, false, 21297- 0x1.0000000000000000000000002p+0, false, 21298- 0x1.0000000000000000000000002p+0, false, 21299- 0x1.0000000000000000000000002p+0, false), 21300+ 0x1p+0, false, false, 21301+ 0x1p+0, false, false, 21302+ 0x1p+0, false, false, 21303+ 0x1.000002p+0, false, false, 21304+ false, 21305+ 0x1p+0, false, false, 21306+ 0x1p+0, false, false, 21307+ 0x1p+0, false, false, 21308+ 0x1.0000000000001p+0, false, false, 21309+ false, 21310+ 0x1p+0, false, false, 21311+ 0x1p+0, false, false, 21312+ 0x1p+0, false, false, 21313+ 0x1.0000000000000002p+0, false, false, 21314+ false, 21315+ 0x1p+0, false, false, 21316+ 0x1p+0, false, false, 21317+ 0x1p+0, false, false, 21318+ 0x1.0000000000000002p+0, false, false, 21319+ true, 21320+ 0x1.0000000000000000000000002p+0, false, false, 21321+ 0x1.0000000000000000000000002p+0, false, false, 21322+ 0x1.0000000000000000000000002p+0, false, false, 21323+ 0x1.0000000000000000000000002p+0, false, false, 21324+ true, 21325+ 0x1.0000000000000000000000002p+0, false, false, 21326+ 0x1.0000000000000000000000002p+0, false, false, 21327+ 0x1.0000000000000000000000002p+0, false, false, 21328+ 0x1.0000000000000000000000002p+0, false, false), 21329 TEST ("1.0000000000000000000000000000007888609052210118054117285652" 21330 "827862296732064351090230047702789306640625", 21331 false, 21332- 0x1p+0, false, 21333- 0x1p+0, false, 21334- 0x1p+0, false, 21335- 0x1.000002p+0, false, 21336- false, 21337- 0x1p+0, false, 21338- 0x1p+0, false, 21339- 0x1p+0, false, 21340- 0x1.0000000000001p+0, false, 21341- false, 21342- 0x1p+0, false, 21343- 0x1p+0, false, 21344- 0x1p+0, false, 21345- 0x1.0000000000000002p+0, false, 21346- false, 21347- 0x1p+0, false, 21348- 0x1p+0, false, 21349- 0x1p+0, false, 21350- 0x1.0000000000000002p+0, false, 21351- true, 21352- 0x1.0000000000000000000000001p+0, false, 21353- 0x1.0000000000000000000000001p+0, false, 21354- 0x1.0000000000000000000000001p+0, false, 21355- 0x1.0000000000000000000000001p+0, false, 21356- true, 21357- 0x1.0000000000000000000000001p+0, false, 21358- 0x1.0000000000000000000000001p+0, false, 21359- 0x1.0000000000000000000000001p+0, false, 21360- 0x1.0000000000000000000000001p+0, false), 21361+ 0x1p+0, false, false, 21362+ 0x1p+0, false, false, 21363+ 0x1p+0, false, false, 21364+ 0x1.000002p+0, false, false, 21365+ false, 21366+ 0x1p+0, false, false, 21367+ 0x1p+0, false, false, 21368+ 0x1p+0, false, false, 21369+ 0x1.0000000000001p+0, false, false, 21370+ false, 21371+ 0x1p+0, false, false, 21372+ 0x1p+0, false, false, 21373+ 0x1p+0, false, false, 21374+ 0x1.0000000000000002p+0, false, false, 21375+ false, 21376+ 0x1p+0, false, false, 21377+ 0x1p+0, false, false, 21378+ 0x1p+0, false, false, 21379+ 0x1.0000000000000002p+0, false, false, 21380+ true, 21381+ 0x1.0000000000000000000000001p+0, false, false, 21382+ 0x1.0000000000000000000000001p+0, false, false, 21383+ 0x1.0000000000000000000000001p+0, false, false, 21384+ 0x1.0000000000000000000000001p+0, false, false, 21385+ true, 21386+ 0x1.0000000000000000000000001p+0, false, false, 21387+ 0x1.0000000000000000000000001p+0, false, false, 21388+ 0x1.0000000000000000000000001p+0, false, false, 21389+ 0x1.0000000000000000000000001p+0, false, false), 21390 TEST ("1.0000000000000000000000000000003944304526105059027058642826" 21391 "4139311483660321755451150238513946533203125", 21392 false, 21393- 0x1p+0, false, 21394- 0x1p+0, false, 21395- 0x1p+0, false, 21396- 0x1.000002p+0, false, 21397- false, 21398- 0x1p+0, false, 21399- 0x1p+0, false, 21400- 0x1p+0, false, 21401- 0x1.0000000000001p+0, false, 21402- false, 21403- 0x1p+0, false, 21404- 0x1p+0, false, 21405- 0x1p+0, false, 21406- 0x1.0000000000000002p+0, false, 21407- false, 21408- 0x1p+0, false, 21409- 0x1p+0, false, 21410- 0x1p+0, false, 21411- 0x1.0000000000000002p+0, false, 21412- true, 21413- 0x1.00000000000000000000000008p+0, false, 21414- 0x1.00000000000000000000000008p+0, false, 21415- 0x1.00000000000000000000000008p+0, false, 21416- 0x1.00000000000000000000000008p+0, false, 21417- true, 21418- 0x1.00000000000000000000000008p+0, false, 21419- 0x1.00000000000000000000000008p+0, false, 21420- 0x1.00000000000000000000000008p+0, false, 21421- 0x1.00000000000000000000000008p+0, false), 21422+ 0x1p+0, false, false, 21423+ 0x1p+0, false, false, 21424+ 0x1p+0, false, false, 21425+ 0x1.000002p+0, false, false, 21426+ false, 21427+ 0x1p+0, false, false, 21428+ 0x1p+0, false, false, 21429+ 0x1p+0, false, false, 21430+ 0x1.0000000000001p+0, false, false, 21431+ false, 21432+ 0x1p+0, false, false, 21433+ 0x1p+0, false, false, 21434+ 0x1p+0, false, false, 21435+ 0x1.0000000000000002p+0, false, false, 21436+ false, 21437+ 0x1p+0, false, false, 21438+ 0x1p+0, false, false, 21439+ 0x1p+0, false, false, 21440+ 0x1.0000000000000002p+0, false, false, 21441+ true, 21442+ 0x1.00000000000000000000000008p+0, false, false, 21443+ 0x1.00000000000000000000000008p+0, false, false, 21444+ 0x1.00000000000000000000000008p+0, false, false, 21445+ 0x1.00000000000000000000000008p+0, false, false, 21446+ true, 21447+ 0x1.00000000000000000000000008p+0, false, false, 21448+ 0x1.00000000000000000000000008p+0, false, false, 21449+ 0x1.00000000000000000000000008p+0, false, false, 21450+ 0x1.00000000000000000000000008p+0, false, false), 21451 TEST ("1.0000000000000000000000000000001972152263052529513529321413" 21452 "20696557418301608777255751192569732666015625", 21453 false, 21454- 0x1p+0, false, 21455- 0x1p+0, false, 21456- 0x1p+0, false, 21457- 0x1.000002p+0, false, 21458- false, 21459- 0x1p+0, false, 21460- 0x1p+0, false, 21461- 0x1p+0, false, 21462- 0x1.0000000000001p+0, false, 21463- false, 21464- 0x1p+0, false, 21465- 0x1p+0, false, 21466- 0x1p+0, false, 21467- 0x1.0000000000000002p+0, false, 21468- false, 21469- 0x1p+0, false, 21470- 0x1p+0, false, 21471- 0x1p+0, false, 21472- 0x1.0000000000000002p+0, false, 21473- true, 21474- 0x1.00000000000000000000000004p+0, false, 21475- 0x1.00000000000000000000000004p+0, false, 21476- 0x1.00000000000000000000000004p+0, false, 21477- 0x1.00000000000000000000000004p+0, false, 21478- true, 21479- 0x1.00000000000000000000000004p+0, false, 21480- 0x1.00000000000000000000000004p+0, false, 21481- 0x1.00000000000000000000000004p+0, false, 21482- 0x1.00000000000000000000000004p+0, false), 21483+ 0x1p+0, false, false, 21484+ 0x1p+0, false, false, 21485+ 0x1p+0, false, false, 21486+ 0x1.000002p+0, false, false, 21487+ false, 21488+ 0x1p+0, false, false, 21489+ 0x1p+0, false, false, 21490+ 0x1p+0, false, false, 21491+ 0x1.0000000000001p+0, false, false, 21492+ false, 21493+ 0x1p+0, false, false, 21494+ 0x1p+0, false, false, 21495+ 0x1p+0, false, false, 21496+ 0x1.0000000000000002p+0, false, false, 21497+ false, 21498+ 0x1p+0, false, false, 21499+ 0x1p+0, false, false, 21500+ 0x1p+0, false, false, 21501+ 0x1.0000000000000002p+0, false, false, 21502+ true, 21503+ 0x1.00000000000000000000000004p+0, false, false, 21504+ 0x1.00000000000000000000000004p+0, false, false, 21505+ 0x1.00000000000000000000000004p+0, false, false, 21506+ 0x1.00000000000000000000000004p+0, false, false, 21507+ true, 21508+ 0x1.00000000000000000000000004p+0, false, false, 21509+ 0x1.00000000000000000000000004p+0, false, false, 21510+ 0x1.00000000000000000000000004p+0, false, false, 21511+ 0x1.00000000000000000000000004p+0, false, false), 21512 TEST ("1.0000000000000000000000000000000986076131526264756764660706" 21513 "603482787091508043886278755962848663330078125", 21514 false, 21515- 0x1p+0, false, 21516- 0x1p+0, false, 21517- 0x1p+0, false, 21518- 0x1.000002p+0, false, 21519- false, 21520- 0x1p+0, false, 21521- 0x1p+0, false, 21522- 0x1p+0, false, 21523- 0x1.0000000000001p+0, false, 21524- false, 21525- 0x1p+0, false, 21526- 0x1p+0, false, 21527- 0x1p+0, false, 21528- 0x1.0000000000000002p+0, false, 21529- false, 21530- 0x1p+0, false, 21531- 0x1p+0, false, 21532- 0x1p+0, false, 21533- 0x1.0000000000000002p+0, false, 21534- true, 21535- 0x1.00000000000000000000000002p+0, false, 21536- 0x1.00000000000000000000000002p+0, false, 21537- 0x1.00000000000000000000000002p+0, false, 21538- 0x1.00000000000000000000000002p+0, false, 21539- true, 21540- 0x1.00000000000000000000000002p+0, false, 21541- 0x1.00000000000000000000000002p+0, false, 21542- 0x1.00000000000000000000000002p+0, false, 21543- 0x1.00000000000000000000000002p+0, false), 21544+ 0x1p+0, false, false, 21545+ 0x1p+0, false, false, 21546+ 0x1p+0, false, false, 21547+ 0x1.000002p+0, false, false, 21548+ false, 21549+ 0x1p+0, false, false, 21550+ 0x1p+0, false, false, 21551+ 0x1p+0, false, false, 21552+ 0x1.0000000000001p+0, false, false, 21553+ false, 21554+ 0x1p+0, false, false, 21555+ 0x1p+0, false, false, 21556+ 0x1p+0, false, false, 21557+ 0x1.0000000000000002p+0, false, false, 21558+ false, 21559+ 0x1p+0, false, false, 21560+ 0x1p+0, false, false, 21561+ 0x1p+0, false, false, 21562+ 0x1.0000000000000002p+0, false, false, 21563+ true, 21564+ 0x1.00000000000000000000000002p+0, false, false, 21565+ 0x1.00000000000000000000000002p+0, false, false, 21566+ 0x1.00000000000000000000000002p+0, false, false, 21567+ 0x1.00000000000000000000000002p+0, false, false, 21568+ true, 21569+ 0x1.00000000000000000000000002p+0, false, false, 21570+ 0x1.00000000000000000000000002p+0, false, false, 21571+ 0x1.00000000000000000000000002p+0, false, false, 21572+ 0x1.00000000000000000000000002p+0, false, false), 21573 TEST ("1.0000000000000000000000000000000493038065763132378382330353" 21574 "3017413935457540219431393779814243316650390625", 21575 false, 21576- 0x1p+0, false, 21577- 0x1p+0, false, 21578- 0x1p+0, false, 21579- 0x1.000002p+0, false, 21580- false, 21581- 0x1p+0, false, 21582- 0x1p+0, false, 21583- 0x1p+0, false, 21584- 0x1.0000000000001p+0, false, 21585- false, 21586- 0x1p+0, false, 21587- 0x1p+0, false, 21588- 0x1p+0, false, 21589- 0x1.0000000000000002p+0, false, 21590- false, 21591- 0x1p+0, false, 21592- 0x1p+0, false, 21593- 0x1p+0, false, 21594- 0x1.0000000000000002p+0, false, 21595- true, 21596- 0x1.00000000000000000000000001p+0, false, 21597- 0x1.00000000000000000000000001p+0, false, 21598- 0x1.00000000000000000000000001p+0, false, 21599- 0x1.00000000000000000000000001p+0, false, 21600- true, 21601- 0x1.00000000000000000000000001p+0, false, 21602- 0x1.00000000000000000000000001p+0, false, 21603- 0x1.00000000000000000000000001p+0, false, 21604- 0x1.00000000000000000000000001p+0, false), 21605+ 0x1p+0, false, false, 21606+ 0x1p+0, false, false, 21607+ 0x1p+0, false, false, 21608+ 0x1.000002p+0, false, false, 21609+ false, 21610+ 0x1p+0, false, false, 21611+ 0x1p+0, false, false, 21612+ 0x1p+0, false, false, 21613+ 0x1.0000000000001p+0, false, false, 21614+ false, 21615+ 0x1p+0, false, false, 21616+ 0x1p+0, false, false, 21617+ 0x1p+0, false, false, 21618+ 0x1.0000000000000002p+0, false, false, 21619+ false, 21620+ 0x1p+0, false, false, 21621+ 0x1p+0, false, false, 21622+ 0x1p+0, false, false, 21623+ 0x1.0000000000000002p+0, false, false, 21624+ true, 21625+ 0x1.00000000000000000000000001p+0, false, false, 21626+ 0x1.00000000000000000000000001p+0, false, false, 21627+ 0x1.00000000000000000000000001p+0, false, false, 21628+ 0x1.00000000000000000000000001p+0, false, false, 21629+ true, 21630+ 0x1.00000000000000000000000001p+0, false, false, 21631+ 0x1.00000000000000000000000001p+0, false, false, 21632+ 0x1.00000000000000000000000001p+0, false, false, 21633+ 0x1.00000000000000000000000001p+0, false, false), 21634 TEST ("1.0000000000000000000000000000000246519032881566189191165176" 21635 "65087069677287701097156968899071216583251953125", 21636 false, 21637- 0x1p+0, false, 21638- 0x1p+0, false, 21639- 0x1p+0, false, 21640- 0x1.000002p+0, false, 21641- false, 21642- 0x1p+0, false, 21643- 0x1p+0, false, 21644- 0x1p+0, false, 21645- 0x1.0000000000001p+0, false, 21646- false, 21647- 0x1p+0, false, 21648- 0x1p+0, false, 21649- 0x1p+0, false, 21650- 0x1.0000000000000002p+0, false, 21651- false, 21652- 0x1p+0, false, 21653- 0x1p+0, false, 21654- 0x1p+0, false, 21655- 0x1.0000000000000002p+0, false, 21656- true, 21657- 0x1.000000000000000000000000008p+0, false, 21658- 0x1.000000000000000000000000008p+0, false, 21659- 0x1.000000000000000000000000008p+0, false, 21660- 0x1.000000000000000000000000008p+0, false, 21661- true, 21662- 0x1.000000000000000000000000008p+0, false, 21663- 0x1.000000000000000000000000008p+0, false, 21664- 0x1.000000000000000000000000008p+0, false, 21665- 0x1.000000000000000000000000008p+0, false), 21666+ 0x1p+0, false, false, 21667+ 0x1p+0, false, false, 21668+ 0x1p+0, false, false, 21669+ 0x1.000002p+0, false, false, 21670+ false, 21671+ 0x1p+0, false, false, 21672+ 0x1p+0, false, false, 21673+ 0x1p+0, false, false, 21674+ 0x1.0000000000001p+0, false, false, 21675+ false, 21676+ 0x1p+0, false, false, 21677+ 0x1p+0, false, false, 21678+ 0x1p+0, false, false, 21679+ 0x1.0000000000000002p+0, false, false, 21680+ false, 21681+ 0x1p+0, false, false, 21682+ 0x1p+0, false, false, 21683+ 0x1p+0, false, false, 21684+ 0x1.0000000000000002p+0, false, false, 21685+ true, 21686+ 0x1.000000000000000000000000008p+0, false, false, 21687+ 0x1.000000000000000000000000008p+0, false, false, 21688+ 0x1.000000000000000000000000008p+0, false, false, 21689+ 0x1.000000000000000000000000008p+0, false, false, 21690+ true, 21691+ 0x1.000000000000000000000000008p+0, false, false, 21692+ 0x1.000000000000000000000000008p+0, false, false, 21693+ 0x1.000000000000000000000000008p+0, false, false, 21694+ 0x1.000000000000000000000000008p+0, false, false), 21695 TEST ("1.0000000000000000000000000000000123259516440783094595582588" 21696 "325435348386438505485784844495356082916259765625", 21697 false, 21698- 0x1p+0, false, 21699- 0x1p+0, false, 21700- 0x1p+0, false, 21701- 0x1.000002p+0, false, 21702- false, 21703- 0x1p+0, false, 21704- 0x1p+0, false, 21705- 0x1p+0, false, 21706- 0x1.0000000000001p+0, false, 21707- false, 21708- 0x1p+0, false, 21709- 0x1p+0, false, 21710- 0x1p+0, false, 21711- 0x1.0000000000000002p+0, false, 21712- false, 21713- 0x1p+0, false, 21714- 0x1p+0, false, 21715- 0x1p+0, false, 21716- 0x1.0000000000000002p+0, false, 21717- false, 21718- 0x1p+0, false, 21719- 0x1p+0, false, 21720- 0x1p+0, false, 21721- 0x1.000000000000000000000000008p+0, false, 21722- true, 21723- 0x1.000000000000000000000000004p+0, false, 21724- 0x1.000000000000000000000000004p+0, false, 21725- 0x1.000000000000000000000000004p+0, false, 21726- 0x1.000000000000000000000000004p+0, false), 21727+ 0x1p+0, false, false, 21728+ 0x1p+0, false, false, 21729+ 0x1p+0, false, false, 21730+ 0x1.000002p+0, false, false, 21731+ false, 21732+ 0x1p+0, false, false, 21733+ 0x1p+0, false, false, 21734+ 0x1p+0, false, false, 21735+ 0x1.0000000000001p+0, false, false, 21736+ false, 21737+ 0x1p+0, false, false, 21738+ 0x1p+0, false, false, 21739+ 0x1p+0, false, false, 21740+ 0x1.0000000000000002p+0, false, false, 21741+ false, 21742+ 0x1p+0, false, false, 21743+ 0x1p+0, false, false, 21744+ 0x1p+0, false, false, 21745+ 0x1.0000000000000002p+0, false, false, 21746+ false, 21747+ 0x1p+0, false, false, 21748+ 0x1p+0, false, false, 21749+ 0x1p+0, false, false, 21750+ 0x1.000000000000000000000000008p+0, false, false, 21751+ true, 21752+ 0x1.000000000000000000000000004p+0, false, false, 21753+ 0x1.000000000000000000000000004p+0, false, false, 21754+ 0x1.000000000000000000000000004p+0, false, false, 21755+ 0x1.000000000000000000000000004p+0, false, false), 21756 TEST ("1.0000000000000000000000000000000061629758220391547297791294" 21757 "1627176741932192527428924222476780414581298828125", 21758 false, 21759- 0x1p+0, false, 21760- 0x1p+0, false, 21761- 0x1p+0, false, 21762- 0x1.000002p+0, false, 21763- false, 21764- 0x1p+0, false, 21765- 0x1p+0, false, 21766- 0x1p+0, false, 21767- 0x1.0000000000001p+0, false, 21768- false, 21769- 0x1p+0, false, 21770- 0x1p+0, false, 21771- 0x1p+0, false, 21772- 0x1.0000000000000002p+0, false, 21773- false, 21774- 0x1p+0, false, 21775- 0x1p+0, false, 21776- 0x1p+0, false, 21777- 0x1.0000000000000002p+0, false, 21778- false, 21779- 0x1p+0, false, 21780- 0x1p+0, false, 21781- 0x1p+0, false, 21782- 0x1.000000000000000000000000008p+0, false, 21783- true, 21784- 0x1.000000000000000000000000002p+0, false, 21785- 0x1.000000000000000000000000002p+0, false, 21786- 0x1.000000000000000000000000002p+0, false, 21787- 0x1.000000000000000000000000002p+0, false), 21788+ 0x1p+0, false, false, 21789+ 0x1p+0, false, false, 21790+ 0x1p+0, false, false, 21791+ 0x1.000002p+0, false, false, 21792+ false, 21793+ 0x1p+0, false, false, 21794+ 0x1p+0, false, false, 21795+ 0x1p+0, false, false, 21796+ 0x1.0000000000001p+0, false, false, 21797+ false, 21798+ 0x1p+0, false, false, 21799+ 0x1p+0, false, false, 21800+ 0x1p+0, false, false, 21801+ 0x1.0000000000000002p+0, false, false, 21802+ false, 21803+ 0x1p+0, false, false, 21804+ 0x1p+0, false, false, 21805+ 0x1p+0, false, false, 21806+ 0x1.0000000000000002p+0, false, false, 21807+ false, 21808+ 0x1p+0, false, false, 21809+ 0x1p+0, false, false, 21810+ 0x1p+0, false, false, 21811+ 0x1.000000000000000000000000008p+0, false, false, 21812+ true, 21813+ 0x1.000000000000000000000000002p+0, false, false, 21814+ 0x1.000000000000000000000000002p+0, false, false, 21815+ 0x1.000000000000000000000000002p+0, false, false, 21816+ 0x1.000000000000000000000000002p+0, false, false), 21817 TEST ("1.0000000000000000000000000000000030814879110195773648895647" 21818 "08135883709660962637144621112383902072906494140625", 21819 false, 21820- 0x1p+0, false, 21821- 0x1p+0, false, 21822- 0x1p+0, false, 21823- 0x1.000002p+0, false, 21824- false, 21825- 0x1p+0, false, 21826- 0x1p+0, false, 21827- 0x1p+0, false, 21828- 0x1.0000000000001p+0, false, 21829- false, 21830- 0x1p+0, false, 21831- 0x1p+0, false, 21832- 0x1p+0, false, 21833- 0x1.0000000000000002p+0, false, 21834- false, 21835- 0x1p+0, false, 21836- 0x1p+0, false, 21837- 0x1p+0, false, 21838- 0x1.0000000000000002p+0, false, 21839- false, 21840- 0x1p+0, false, 21841- 0x1p+0, false, 21842- 0x1p+0, false, 21843- 0x1.000000000000000000000000008p+0, false, 21844- true, 21845- 0x1.000000000000000000000000001p+0, false, 21846- 0x1.000000000000000000000000001p+0, false, 21847- 0x1.000000000000000000000000001p+0, false, 21848- 0x1.000000000000000000000000001p+0, false), 21849+ 0x1p+0, false, false, 21850+ 0x1p+0, false, false, 21851+ 0x1p+0, false, false, 21852+ 0x1.000002p+0, false, false, 21853+ false, 21854+ 0x1p+0, false, false, 21855+ 0x1p+0, false, false, 21856+ 0x1p+0, false, false, 21857+ 0x1.0000000000001p+0, false, false, 21858+ false, 21859+ 0x1p+0, false, false, 21860+ 0x1p+0, false, false, 21861+ 0x1p+0, false, false, 21862+ 0x1.0000000000000002p+0, false, false, 21863+ false, 21864+ 0x1p+0, false, false, 21865+ 0x1p+0, false, false, 21866+ 0x1p+0, false, false, 21867+ 0x1.0000000000000002p+0, false, false, 21868+ false, 21869+ 0x1p+0, false, false, 21870+ 0x1p+0, false, false, 21871+ 0x1p+0, false, false, 21872+ 0x1.000000000000000000000000008p+0, false, false, 21873+ true, 21874+ 0x1.000000000000000000000000001p+0, false, false, 21875+ 0x1.000000000000000000000000001p+0, false, false, 21876+ 0x1.000000000000000000000000001p+0, false, false, 21877+ 0x1.000000000000000000000000001p+0, false, false), 21878 TEST ("1.0000000000000000000000000000000015407439555097886824447823" 21879 "540679418548304813185723105561919510364532470703125", 21880 false, 21881- 0x1p+0, false, 21882- 0x1p+0, false, 21883- 0x1p+0, false, 21884- 0x1.000002p+0, false, 21885- false, 21886- 0x1p+0, false, 21887- 0x1p+0, false, 21888- 0x1p+0, false, 21889- 0x1.0000000000001p+0, false, 21890- false, 21891- 0x1p+0, false, 21892- 0x1p+0, false, 21893- 0x1p+0, false, 21894- 0x1.0000000000000002p+0, false, 21895- false, 21896- 0x1p+0, false, 21897- 0x1p+0, false, 21898- 0x1p+0, false, 21899- 0x1.0000000000000002p+0, false, 21900- false, 21901- 0x1p+0, false, 21902- 0x1p+0, false, 21903- 0x1p+0, false, 21904- 0x1.000000000000000000000000008p+0, false, 21905- true, 21906- 0x1.0000000000000000000000000008p+0, false, 21907- 0x1.0000000000000000000000000008p+0, false, 21908- 0x1.0000000000000000000000000008p+0, false, 21909- 0x1.0000000000000000000000000008p+0, false), 21910+ 0x1p+0, false, false, 21911+ 0x1p+0, false, false, 21912+ 0x1p+0, false, false, 21913+ 0x1.000002p+0, false, false, 21914+ false, 21915+ 0x1p+0, false, false, 21916+ 0x1p+0, false, false, 21917+ 0x1p+0, false, false, 21918+ 0x1.0000000000001p+0, false, false, 21919+ false, 21920+ 0x1p+0, false, false, 21921+ 0x1p+0, false, false, 21922+ 0x1p+0, false, false, 21923+ 0x1.0000000000000002p+0, false, false, 21924+ false, 21925+ 0x1p+0, false, false, 21926+ 0x1p+0, false, false, 21927+ 0x1p+0, false, false, 21928+ 0x1.0000000000000002p+0, false, false, 21929+ false, 21930+ 0x1p+0, false, false, 21931+ 0x1p+0, false, false, 21932+ 0x1p+0, false, false, 21933+ 0x1.000000000000000000000000008p+0, false, false, 21934+ true, 21935+ 0x1.0000000000000000000000000008p+0, false, false, 21936+ 0x1.0000000000000000000000000008p+0, false, false, 21937+ 0x1.0000000000000000000000000008p+0, false, false, 21938+ 0x1.0000000000000000000000000008p+0, false, false), 21939 TEST ("1.0000000000000000000000000000000007703719777548943412223911" 21940 "7703397092741524065928615527809597551822662353515625", 21941 false, 21942- 0x1p+0, false, 21943- 0x1p+0, false, 21944- 0x1p+0, false, 21945- 0x1.000002p+0, false, 21946- false, 21947- 0x1p+0, false, 21948- 0x1p+0, false, 21949- 0x1p+0, false, 21950- 0x1.0000000000001p+0, false, 21951- false, 21952- 0x1p+0, false, 21953- 0x1p+0, false, 21954- 0x1p+0, false, 21955- 0x1.0000000000000002p+0, false, 21956- false, 21957- 0x1p+0, false, 21958- 0x1p+0, false, 21959- 0x1p+0, false, 21960- 0x1.0000000000000002p+0, false, 21961- false, 21962- 0x1p+0, false, 21963- 0x1p+0, false, 21964- 0x1p+0, false, 21965- 0x1.000000000000000000000000008p+0, false, 21966- true, 21967- 0x1.0000000000000000000000000004p+0, false, 21968- 0x1.0000000000000000000000000004p+0, false, 21969- 0x1.0000000000000000000000000004p+0, false, 21970- 0x1.0000000000000000000000000004p+0, false), 21971+ 0x1p+0, false, false, 21972+ 0x1p+0, false, false, 21973+ 0x1p+0, false, false, 21974+ 0x1.000002p+0, false, false, 21975+ false, 21976+ 0x1p+0, false, false, 21977+ 0x1p+0, false, false, 21978+ 0x1p+0, false, false, 21979+ 0x1.0000000000001p+0, false, false, 21980+ false, 21981+ 0x1p+0, false, false, 21982+ 0x1p+0, false, false, 21983+ 0x1p+0, false, false, 21984+ 0x1.0000000000000002p+0, false, false, 21985+ false, 21986+ 0x1p+0, false, false, 21987+ 0x1p+0, false, false, 21988+ 0x1p+0, false, false, 21989+ 0x1.0000000000000002p+0, false, false, 21990+ false, 21991+ 0x1p+0, false, false, 21992+ 0x1p+0, false, false, 21993+ 0x1p+0, false, false, 21994+ 0x1.000000000000000000000000008p+0, false, false, 21995+ true, 21996+ 0x1.0000000000000000000000000004p+0, false, false, 21997+ 0x1.0000000000000000000000000004p+0, false, false, 21998+ 0x1.0000000000000000000000000004p+0, false, false, 21999+ 0x1.0000000000000000000000000004p+0, false, false), 22000 TEST ("1.0000000000000000000000000000000003851859888774471706111955" 22001 "88516985463707620329643077639047987759113311767578125", 22002 false, 22003- 0x1p+0, false, 22004- 0x1p+0, false, 22005- 0x1p+0, false, 22006- 0x1.000002p+0, false, 22007- false, 22008- 0x1p+0, false, 22009- 0x1p+0, false, 22010- 0x1p+0, false, 22011- 0x1.0000000000001p+0, false, 22012- false, 22013- 0x1p+0, false, 22014- 0x1p+0, false, 22015- 0x1p+0, false, 22016- 0x1.0000000000000002p+0, false, 22017- false, 22018- 0x1p+0, false, 22019- 0x1p+0, false, 22020- 0x1p+0, false, 22021- 0x1.0000000000000002p+0, false, 22022- false, 22023- 0x1p+0, false, 22024- 0x1p+0, false, 22025- 0x1p+0, false, 22026- 0x1.000000000000000000000000008p+0, false, 22027- true, 22028- 0x1.0000000000000000000000000002p+0, false, 22029- 0x1.0000000000000000000000000002p+0, false, 22030- 0x1.0000000000000000000000000002p+0, false, 22031- 0x1.0000000000000000000000000002p+0, false), 22032+ 0x1p+0, false, false, 22033+ 0x1p+0, false, false, 22034+ 0x1p+0, false, false, 22035+ 0x1.000002p+0, false, false, 22036+ false, 22037+ 0x1p+0, false, false, 22038+ 0x1p+0, false, false, 22039+ 0x1p+0, false, false, 22040+ 0x1.0000000000001p+0, false, false, 22041+ false, 22042+ 0x1p+0, false, false, 22043+ 0x1p+0, false, false, 22044+ 0x1p+0, false, false, 22045+ 0x1.0000000000000002p+0, false, false, 22046+ false, 22047+ 0x1p+0, false, false, 22048+ 0x1p+0, false, false, 22049+ 0x1p+0, false, false, 22050+ 0x1.0000000000000002p+0, false, false, 22051+ false, 22052+ 0x1p+0, false, false, 22053+ 0x1p+0, false, false, 22054+ 0x1p+0, false, false, 22055+ 0x1.000000000000000000000000008p+0, false, false, 22056+ true, 22057+ 0x1.0000000000000000000000000002p+0, false, false, 22058+ 0x1.0000000000000000000000000002p+0, false, false, 22059+ 0x1.0000000000000000000000000002p+0, false, false, 22060+ 0x1.0000000000000000000000000002p+0, false, false), 22061 TEST ("1.0000000000000000000000000000000001925929944387235853055977" 22062 "942584927318538101648215388195239938795566558837890625", 22063 false, 22064- 0x1p+0, false, 22065- 0x1p+0, false, 22066- 0x1p+0, false, 22067- 0x1.000002p+0, false, 22068- false, 22069- 0x1p+0, false, 22070- 0x1p+0, false, 22071- 0x1p+0, false, 22072- 0x1.0000000000001p+0, false, 22073- false, 22074- 0x1p+0, false, 22075- 0x1p+0, false, 22076- 0x1p+0, false, 22077- 0x1.0000000000000002p+0, false, 22078- false, 22079- 0x1p+0, false, 22080- 0x1p+0, false, 22081- 0x1p+0, false, 22082- 0x1.0000000000000002p+0, false, 22083- false, 22084- 0x1p+0, false, 22085- 0x1p+0, false, 22086- 0x1p+0, false, 22087- 0x1.000000000000000000000000008p+0, false, 22088- true, 22089- 0x1.0000000000000000000000000001p+0, false, 22090- 0x1.0000000000000000000000000001p+0, false, 22091- 0x1.0000000000000000000000000001p+0, false, 22092- 0x1.0000000000000000000000000001p+0, false), 22093+ 0x1p+0, false, false, 22094+ 0x1p+0, false, false, 22095+ 0x1p+0, false, false, 22096+ 0x1.000002p+0, false, false, 22097+ false, 22098+ 0x1p+0, false, false, 22099+ 0x1p+0, false, false, 22100+ 0x1p+0, false, false, 22101+ 0x1.0000000000001p+0, false, false, 22102+ false, 22103+ 0x1p+0, false, false, 22104+ 0x1p+0, false, false, 22105+ 0x1p+0, false, false, 22106+ 0x1.0000000000000002p+0, false, false, 22107+ false, 22108+ 0x1p+0, false, false, 22109+ 0x1p+0, false, false, 22110+ 0x1p+0, false, false, 22111+ 0x1.0000000000000002p+0, false, false, 22112+ false, 22113+ 0x1p+0, false, false, 22114+ 0x1p+0, false, false, 22115+ 0x1p+0, false, false, 22116+ 0x1.000000000000000000000000008p+0, false, false, 22117+ true, 22118+ 0x1.0000000000000000000000000001p+0, false, false, 22119+ 0x1.0000000000000000000000000001p+0, false, false, 22120+ 0x1.0000000000000000000000000001p+0, false, false, 22121+ 0x1.0000000000000000000000000001p+0, false, false), 22122 TEST ("1.0000000000000000000000000000000000962964972193617926527988" 22123 "9712924636592690508241076940976199693977832794189453125", 22124 false, 22125- 0x1p+0, false, 22126- 0x1p+0, false, 22127- 0x1p+0, false, 22128- 0x1.000002p+0, false, 22129- false, 22130- 0x1p+0, false, 22131- 0x1p+0, false, 22132- 0x1p+0, false, 22133- 0x1.0000000000001p+0, false, 22134- false, 22135- 0x1p+0, false, 22136- 0x1p+0, false, 22137- 0x1p+0, false, 22138- 0x1.0000000000000002p+0, false, 22139- false, 22140- 0x1p+0, false, 22141- 0x1p+0, false, 22142- 0x1p+0, false, 22143- 0x1.0000000000000002p+0, false, 22144- false, 22145- 0x1p+0, false, 22146- 0x1p+0, false, 22147- 0x1p+0, false, 22148- 0x1.000000000000000000000000008p+0, false, 22149- false, 22150- 0x1p+0, false, 22151- 0x1p+0, false, 22152- 0x1p+0, false, 22153- 0x1.0000000000000000000000000001p+0, false), 22154+ 0x1p+0, false, false, 22155+ 0x1p+0, false, false, 22156+ 0x1p+0, false, false, 22157+ 0x1.000002p+0, false, false, 22158+ false, 22159+ 0x1p+0, false, false, 22160+ 0x1p+0, false, false, 22161+ 0x1p+0, false, false, 22162+ 0x1.0000000000001p+0, false, false, 22163+ false, 22164+ 0x1p+0, false, false, 22165+ 0x1p+0, false, false, 22166+ 0x1p+0, false, false, 22167+ 0x1.0000000000000002p+0, false, false, 22168+ false, 22169+ 0x1p+0, false, false, 22170+ 0x1p+0, false, false, 22171+ 0x1p+0, false, false, 22172+ 0x1.0000000000000002p+0, false, false, 22173+ false, 22174+ 0x1p+0, false, false, 22175+ 0x1p+0, false, false, 22176+ 0x1p+0, false, false, 22177+ 0x1.000000000000000000000000008p+0, false, false, 22178+ false, 22179+ 0x1p+0, false, false, 22180+ 0x1p+0, false, false, 22181+ 0x1p+0, false, false, 22182+ 0x1.0000000000000000000000000001p+0, false, false), 22183 }; 22184diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c 22185index c3cc0201d4..be081ba416 100644 22186--- a/stdlib/tst-strtod-round-skeleton.c 22187+++ b/stdlib/tst-strtod-round-skeleton.c 22188@@ -30,6 +30,7 @@ 22189 #include <stdlib.h> 22190 #include <string.h> 22191 #include <math-tests.h> 22192+#include <tininess.h> 22193 22194 #include "tst-strtod.h" 22195 22196@@ -139,16 +140,26 @@ 22197 gen-tst-strtod-round utility to select the appropriately 22198 rounded long double value for a given format. */ 22199 #define TEST(s, \ 22200- fx, fd, fdo, fn, fno, fz, fzo, fu, fuo, \ 22201- dx, dd, ddo, dn, dno, dz, dzo, du, duo, \ 22202- ld64ix, ld64id, ld64ido, ld64in, ld64ino, \ 22203- ld64iz, ld64izo, ld64iu, ld64iuo, \ 22204- ld64mx, ld64md, ld64mdo, ld64mn, ld64mno, \ 22205- ld64mz, ld64mzo, ld64mu, ld64muo, \ 22206- ld106x, ld106d, ld106do, ld106n, ld106no, \ 22207- ld106z, ld106zo, ld106u, ld106uo, \ 22208- ld113x, ld113d, ld113do, ld113n, ld113no, \ 22209- ld113z, ld113zo, ld113u, ld113uo) \ 22210+ fx, fd, fdo, fdu, fn, fno, fnu, \ 22211+ fz, fzo, fzu, fu, fuo, fuu, \ 22212+ dx, dd, ddo, ddu, dn, dno, dnu, \ 22213+ dz, dzo, dzu, du, duo, duu, \ 22214+ ld64ix, ld64id, ld64ido, ld64idu, \ 22215+ ld64in, ld64ino, ld64inu, \ 22216+ ld64iz, ld64izo, ld64izu, \ 22217+ ld64iu, ld64iuo, ld64iuu, \ 22218+ ld64mx, ld64md, ld64mdo, ld64mdu, \ 22219+ ld64mn, ld64mno, ld64mnu, \ 22220+ ld64mz, ld64mzo, ld64mzu, \ 22221+ ld64mu, ld64muo, ld64muu, \ 22222+ ld106x, ld106d, ld106do, ld106du, \ 22223+ ld106n, ld106no, ld106nu, \ 22224+ ld106z, ld106zo, ld106zu, \ 22225+ ld106u, ld106uo, ld106uu, \ 22226+ ld113x, ld113d, ld113do, ld113du, \ 22227+ ld113n, ld113no, ld113nu, \ 22228+ ld113z, ld113zo, ld113zu, \ 22229+ ld113u, ld113uo, ld113uu) \ 22230 { \ 22231 L_ (s), \ 22232 { XNTRY (fx, dx, ld64ix, ld64mx, ld106x, ld113x) }, \ 22233@@ -163,6 +174,12 @@ 22234 { XNTRY (fdo, ddo, ld64ido, ld64mdo, ld106do, ld113do) }, \ 22235 { XNTRY (fzo, dzo, ld64izo, ld64mzo, ld106zo, ld113zo) }, \ 22236 { XNTRY (fuo, duo, ld64iuo, ld64muo, ld106uo, ld113uo) } \ 22237+ }, \ 22238+ { \ 22239+ { XNTRY (fnu, dnu, ld64inu, ld64mnu, ld106nu, ld113nu) }, \ 22240+ { XNTRY (fdu, ddu, ld64idu, ld64mdu, ld106du, ld113du) }, \ 22241+ { XNTRY (fzu, dzu, ld64izu, ld64mzu, ld106zu, ld113zu) }, \ 22242+ { XNTRY (fuu, duu, ld64iuu, ld64muu, ld106uu, ld113uu) } \ 22243 } \ 22244 } 22245 22246@@ -181,11 +198,17 @@ struct test_overflow 22247 STRUCT_FOREACH_FLOAT_BOOL 22248 }; 22249 22250+struct test_underflow 22251+ { 22252+ STRUCT_FOREACH_FLOAT_BOOL 22253+ }; 22254+ 22255 struct test { 22256 const CHAR *s; 22257 struct test_exactness exact; 22258 struct test_results r[4]; 22259 struct test_overflow o[4]; 22260+ struct test_underflow u[4]; 22261 }; 22262 22263 /* Include the generated test data. */ 22264@@ -203,10 +226,14 @@ struct test { 22265 # define FE_OVERFLOW 0 22266 #endif 22267 22268+#ifndef FE_UNDERFLOW 22269+# define FE_UNDERFLOW 0 22270+#endif 22271+ 22272 #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 22273 { \ 22274 feclearexcept (FE_ALL_EXCEPT); \ 22275- errno = 0; \ 22276+ errno = 12345; \ 22277 FTYPE f = STRTO (FSUF) (s, NULL); \ 22278 int new_errno = errno; \ 22279 if (f != expected->FSUF \ 22280@@ -265,6 +292,40 @@ struct test { 22281 s, new_errno, ERANGE); \ 22282 result = 1; \ 22283 } \ 22284+ if (FE_UNDERFLOW != 0) \ 22285+ { \ 22286+ bool underflow_raised \ 22287+ = fetestexcept (FE_UNDERFLOW) != 0; \ 22288+ if (underflow_raised != underflow->FSUF) \ 22289+ { \ 22290+ printf (FNPFXS "to" #FSUF \ 22291+ " (" STRM ") underflow %d " \ 22292+ "not %d\n", s, underflow_raised, \ 22293+ underflow->FSUF); \ 22294+ if (EXCEPTION_TESTS (FTYPE)) \ 22295+ result = 1; \ 22296+ else \ 22297+ printf ("ignoring this exception error\n"); \ 22298+ } \ 22299+ } \ 22300+ if (underflow->FSUF && new_errno != ERANGE) \ 22301+ { \ 22302+ printf (FNPFXS "to" #FSUF \ 22303+ " (" STRM ") left errno == %d," \ 22304+ " not %d (ERANGE)\n", \ 22305+ s, new_errno, ERANGE); \ 22306+ result = 1; \ 22307+ } \ 22308+ if (!overflow->FSUF \ 22309+ && !underflow->FSUF \ 22310+ && new_errno != 12345) \ 22311+ { \ 22312+ printf (FNPFXS "to" #FSUF \ 22313+ " (" STRM ") set errno == %d," \ 22314+ " should be unchanged\n", \ 22315+ s, new_errno); \ 22316+ result = 1; \ 22317+ } \ 22318 } \ 22319 } 22320 22321@@ -272,6 +333,7 @@ static int 22322 test_in_one_mode (const CHAR *s, const struct test_results *expected, 22323 const struct test_exactness *exact, 22324 const struct test_overflow *overflow, 22325+ const struct test_underflow *underflow, 22326 const char *mode_name, int rnd_mode) 22327 { 22328 int result = 0; 22329@@ -307,6 +369,7 @@ do_test (void) 22330 { 22331 result |= test_in_one_mode (tests[i].s, &tests[i].r[modes[0].rnd_i], 22332 &tests[i].exact, &tests[i].o[modes[0].rnd_i], 22333+ &tests[i].u[modes[0].rnd_i], 22334 modes[0].mode_name, modes[0].rnd_mode); 22335 for (const struct fetestmodes *m = &modes[1]; m->mode_name != NULL; m++) 22336 { 22337@@ -314,7 +377,9 @@ do_test (void) 22338 { 22339 result |= test_in_one_mode (tests[i].s, &tests[i].r[m->rnd_i], 22340 &tests[i].exact, 22341- &tests[i].o[m->rnd_i], m->mode_name, 22342+ &tests[i].o[m->rnd_i], 22343+ &tests[i].u[m->rnd_i], 22344+ m->mode_name, 22345 m->rnd_mode); 22346 fesetround (save_round_mode); 22347 } 22348 22349commit d0c1792ad269566f877208ffda91c21dcd1a72e6 22350Author: Joseph Myers <josmyers@redhat.com> 22351Date: Tue Aug 27 12:41:02 2024 +0000 22352 22353 Fix strtod subnormal rounding (bug 30220) 22354 22355 As reported in bug 30220, the implementation of strtod-family 22356 functions has a bug in the following case: the input string would, 22357 with infinite exponent range, take one more bit to represent than is 22358 available in the normal precision of the return type; the value 22359 represented is in the subnormal range; and there are no nonzero bits 22360 in the value, below those that can be represented in subnormal 22361 precision, other than the least significant bit and possibly the 22362 0.5ulp bit. In this case, round_and_return ends up discarding the 22363 least significant bit. 22364 22365 Fix by saving that bit to merge into more_bits (it can't be merged in 22366 at the time it's computed, because more_bits mustn't include this bit 22367 in the case of after-rounding tininess detection checking if the 22368 result is still subnormal when rounded to normal precision, so merging 22369 this bit into more_bits needs to take place after that check). 22370 22371 Tested for x86_64. 22372 22373 (cherry picked from commit 457622c2fa8f9f7435822d5287a437bc8be8090d) 22374 22375diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c 22376index be515ce659..beb97b3d0c 100644 22377--- a/stdlib/strtod_l.c 22378+++ b/stdlib/strtod_l.c 22379@@ -222,6 +222,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, 22380 22381 mp_size_t shift = MIN_EXP - 1 - exponent; 22382 bool is_tiny = true; 22383+ bool old_half_bit = (round_limb & (((mp_limb_t) 1) << round_bit)) != 0; 22384 22385 more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0; 22386 if (shift == MANT_DIG) 22387@@ -292,6 +293,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, 22388 round_bit = shift - 1; 22389 (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift); 22390 } 22391+ more_bits |= old_half_bit; 22392 /* This is a hook for the m68k long double format, where the 22393 exponent bias is the same for normalized and denormalized 22394 numbers. */ 22395diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data 22396index 84ab705709..9489fbcc9c 100644 22397--- a/stdlib/tst-strtod-round-data 22398+++ b/stdlib/tst-strtod-round-data 22399@@ -265,3 +265,15 @@ 22400 1.000000000000000000000000000000000385185988877447170611195588516985463707620329643077639047987759113311767578125 22401 1.0000000000000000000000000000000001925929944387235853055977942584927318538101648215388195239938795566558837890625 22402 1.00000000000000000000000000000000009629649721936179265279889712924636592690508241076940976199693977832794189453125 22403+0x30000002222225p-1077 22404+0x0.7fffffffffffeap-1022 22405+0x0.7fffffffffffe9p-1022 22406+0x0.7ffffd4p-126 22407+0x0.7ffffffffffffffd4p-16382 22408+0x0.7ffffffffffffffd4p-16383 22409+0x0.7ffffffffffffffffffffffffffeap-16382 22410+0x0.7000004p-126 22411+0x0.70000000000002p-1022 22412+0x0.70000000000000004p-16382 22413+0x0.70000000000000004p-16383 22414+0x0.70000000000000000000000000002p-16382 22415diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h 22416index 13e62dd2b0..ed50eb2537 100644 22417--- a/stdlib/tst-strtod-round-data.h 22418+++ b/stdlib/tst-strtod-round-data.h 22419@@ -15437,4 +15437,376 @@ static const struct test tests[] = { 22420 0x1p+0, false, false, 22421 0x1p+0, false, false, 22422 0x1.0000000000000000000000000001p+0, false, false), 22423+ TEST ("0x30000002222225p-1077", 22424+ false, 22425+ 0x0p+0, false, true, 22426+ 0x0p+0, false, true, 22427+ 0x0p+0, false, true, 22428+ 0x8p-152, false, true, 22429+ false, 22430+ 0x1.800000111111p-1024, false, true, 22431+ 0x1.8000001111114p-1024, false, true, 22432+ 0x1.800000111111p-1024, false, true, 22433+ 0x1.8000001111114p-1024, false, true, 22434+ true, 22435+ 0x1.80000011111128p-1024, false, false, 22436+ 0x1.80000011111128p-1024, false, false, 22437+ 0x1.80000011111128p-1024, false, false, 22438+ 0x1.80000011111128p-1024, false, false, 22439+ true, 22440+ 0x1.80000011111128p-1024, false, false, 22441+ 0x1.80000011111128p-1024, false, false, 22442+ 0x1.80000011111128p-1024, false, false, 22443+ 0x1.80000011111128p-1024, false, false, 22444+ false, 22445+ 0x1.800000111111p-1024, false, true, 22446+ 0x1.8000001111114p-1024, false, true, 22447+ 0x1.800000111111p-1024, false, true, 22448+ 0x1.8000001111114p-1024, false, true, 22449+ true, 22450+ 0x1.80000011111128p-1024, false, false, 22451+ 0x1.80000011111128p-1024, false, false, 22452+ 0x1.80000011111128p-1024, false, false, 22453+ 0x1.80000011111128p-1024, false, false), 22454+ TEST ("0x0.7fffffffffffeap-1022", 22455+ false, 22456+ 0x0p+0, false, true, 22457+ 0x0p+0, false, true, 22458+ 0x0p+0, false, true, 22459+ 0x8p-152, false, true, 22460+ false, 22461+ 0x1.ffffffffffff8p-1024, false, true, 22462+ 0x1.ffffffffffffcp-1024, false, true, 22463+ 0x1.ffffffffffff8p-1024, false, true, 22464+ 0x1.ffffffffffffcp-1024, false, true, 22465+ true, 22466+ 0x1.ffffffffffffa8p-1024, false, false, 22467+ 0x1.ffffffffffffa8p-1024, false, false, 22468+ 0x1.ffffffffffffa8p-1024, false, false, 22469+ 0x1.ffffffffffffa8p-1024, false, false, 22470+ true, 22471+ 0x1.ffffffffffffa8p-1024, false, false, 22472+ 0x1.ffffffffffffa8p-1024, false, false, 22473+ 0x1.ffffffffffffa8p-1024, false, false, 22474+ 0x1.ffffffffffffa8p-1024, false, false, 22475+ false, 22476+ 0x1.ffffffffffff8p-1024, false, true, 22477+ 0x1.ffffffffffffcp-1024, false, true, 22478+ 0x1.ffffffffffff8p-1024, false, true, 22479+ 0x1.ffffffffffffcp-1024, false, true, 22480+ true, 22481+ 0x1.ffffffffffffa8p-1024, false, false, 22482+ 0x1.ffffffffffffa8p-1024, false, false, 22483+ 0x1.ffffffffffffa8p-1024, false, false, 22484+ 0x1.ffffffffffffa8p-1024, false, false), 22485+ TEST ("0x0.7fffffffffffe9p-1022", 22486+ false, 22487+ 0x0p+0, false, true, 22488+ 0x0p+0, false, true, 22489+ 0x0p+0, false, true, 22490+ 0x8p-152, false, true, 22491+ false, 22492+ 0x1.ffffffffffff8p-1024, false, true, 22493+ 0x1.ffffffffffffcp-1024, false, true, 22494+ 0x1.ffffffffffff8p-1024, false, true, 22495+ 0x1.ffffffffffffcp-1024, false, true, 22496+ true, 22497+ 0x1.ffffffffffffa4p-1024, false, false, 22498+ 0x1.ffffffffffffa4p-1024, false, false, 22499+ 0x1.ffffffffffffa4p-1024, false, false, 22500+ 0x1.ffffffffffffa4p-1024, false, false, 22501+ true, 22502+ 0x1.ffffffffffffa4p-1024, false, false, 22503+ 0x1.ffffffffffffa4p-1024, false, false, 22504+ 0x1.ffffffffffffa4p-1024, false, false, 22505+ 0x1.ffffffffffffa4p-1024, false, false, 22506+ false, 22507+ 0x1.ffffffffffff8p-1024, false, true, 22508+ 0x1.ffffffffffffcp-1024, false, true, 22509+ 0x1.ffffffffffff8p-1024, false, true, 22510+ 0x1.ffffffffffffcp-1024, false, true, 22511+ true, 22512+ 0x1.ffffffffffffa4p-1024, false, false, 22513+ 0x1.ffffffffffffa4p-1024, false, false, 22514+ 0x1.ffffffffffffa4p-1024, false, false, 22515+ 0x1.ffffffffffffa4p-1024, false, false), 22516+ TEST ("0x0.7ffffd4p-126", 22517+ false, 22518+ 0x1.fffffp-128, false, true, 22519+ 0x1.fffff8p-128, false, true, 22520+ 0x1.fffffp-128, false, true, 22521+ 0x1.fffff8p-128, false, true, 22522+ true, 22523+ 0x1.fffff5p-128, false, false, 22524+ 0x1.fffff5p-128, false, false, 22525+ 0x1.fffff5p-128, false, false, 22526+ 0x1.fffff5p-128, false, false, 22527+ true, 22528+ 0x1.fffff5p-128, false, false, 22529+ 0x1.fffff5p-128, false, false, 22530+ 0x1.fffff5p-128, false, false, 22531+ 0x1.fffff5p-128, false, false, 22532+ true, 22533+ 0x1.fffff5p-128, false, false, 22534+ 0x1.fffff5p-128, false, false, 22535+ 0x1.fffff5p-128, false, false, 22536+ 0x1.fffff5p-128, false, false, 22537+ true, 22538+ 0x1.fffff5p-128, false, false, 22539+ 0x1.fffff5p-128, false, false, 22540+ 0x1.fffff5p-128, false, false, 22541+ 0x1.fffff5p-128, false, false, 22542+ true, 22543+ 0x1.fffff5p-128, false, false, 22544+ 0x1.fffff5p-128, false, false, 22545+ 0x1.fffff5p-128, false, false, 22546+ 0x1.fffff5p-128, false, false), 22547+ TEST ("0x0.7ffffffffffffffd4p-16382", 22548+ false, 22549+ 0x0p+0, false, true, 22550+ 0x0p+0, false, true, 22551+ 0x0p+0, false, true, 22552+ 0x8p-152, false, true, 22553+ false, 22554+ 0x0p+0, false, true, 22555+ 0x0p+0, false, true, 22556+ 0x0p+0, false, true, 22557+ 0x4p-1076, false, true, 22558+ false, 22559+ 0x1.fffffffffffffffp-16384, false, true, 22560+ 0x1.fffffffffffffff8p-16384, false, true, 22561+ 0x1.fffffffffffffffp-16384, false, true, 22562+ 0x1.fffffffffffffff8p-16384, false, true, 22563+ false, 22564+ 0x1.fffffffffffffff4p-16384, false, true, 22565+ 0x1.fffffffffffffff4p-16384, false, true, 22566+ 0x1.fffffffffffffff4p-16384, false, true, 22567+ 0x1.fffffffffffffff8p-16384, false, true, 22568+ false, 22569+ 0x0p+0, false, true, 22570+ 0x0p+0, false, true, 22571+ 0x0p+0, false, true, 22572+ 0x4p-1076, false, true, 22573+ true, 22574+ 0x1.fffffffffffffff5p-16384, false, false, 22575+ 0x1.fffffffffffffff5p-16384, false, false, 22576+ 0x1.fffffffffffffff5p-16384, false, false, 22577+ 0x1.fffffffffffffff5p-16384, false, false), 22578+ TEST ("0x0.7ffffffffffffffd4p-16383", 22579+ false, 22580+ 0x0p+0, false, true, 22581+ 0x0p+0, false, true, 22582+ 0x0p+0, false, true, 22583+ 0x8p-152, false, true, 22584+ false, 22585+ 0x0p+0, false, true, 22586+ 0x0p+0, false, true, 22587+ 0x0p+0, false, true, 22588+ 0x4p-1076, false, true, 22589+ false, 22590+ 0xf.ffffffffffffff8p-16388, false, true, 22591+ 0xf.ffffffffffffff8p-16388, false, true, 22592+ 0xf.ffffffffffffff8p-16388, false, true, 22593+ 0x1p-16384, false, true, 22594+ false, 22595+ 0xf.ffffffffffffff8p-16388, false, true, 22596+ 0xf.ffffffffffffffcp-16388, false, true, 22597+ 0xf.ffffffffffffff8p-16388, false, true, 22598+ 0xf.ffffffffffffffcp-16388, false, true, 22599+ false, 22600+ 0x0p+0, false, true, 22601+ 0x0p+0, false, true, 22602+ 0x0p+0, false, true, 22603+ 0x4p-1076, false, true, 22604+ true, 22605+ 0xf.ffffffffffffffa8p-16388, false, false, 22606+ 0xf.ffffffffffffffa8p-16388, false, false, 22607+ 0xf.ffffffffffffffa8p-16388, false, false, 22608+ 0xf.ffffffffffffffa8p-16388, false, false), 22609+ TEST ("0x0.7ffffffffffffffffffffffffffeap-16382", 22610+ false, 22611+ 0x0p+0, false, true, 22612+ 0x0p+0, false, true, 22613+ 0x0p+0, false, true, 22614+ 0x8p-152, false, true, 22615+ false, 22616+ 0x0p+0, false, true, 22617+ 0x0p+0, false, true, 22618+ 0x0p+0, false, true, 22619+ 0x4p-1076, false, true, 22620+ false, 22621+ 0x1.fffffffffffffff8p-16384, false, true, 22622+ 0x2p-16384, false, true, 22623+ 0x1.fffffffffffffff8p-16384, false, true, 22624+ 0x2p-16384, false, true, 22625+ false, 22626+ 0x1.fffffffffffffffcp-16384, false, true, 22627+ 0x2p-16384, false, true, 22628+ 0x1.fffffffffffffffcp-16384, false, true, 22629+ 0x2p-16384, false, true, 22630+ false, 22631+ 0x0p+0, false, true, 22632+ 0x0p+0, false, true, 22633+ 0x0p+0, false, true, 22634+ 0x4p-1076, false, true, 22635+ false, 22636+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true, 22637+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true, 22638+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true, 22639+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true), 22640+ TEST ("0x0.7000004p-126", 22641+ false, 22642+ 0x1.cp-128, false, true, 22643+ 0x1.cp-128, false, true, 22644+ 0x1.cp-128, false, true, 22645+ 0x1.c00008p-128, false, true, 22646+ true, 22647+ 0x1.c00001p-128, false, false, 22648+ 0x1.c00001p-128, false, false, 22649+ 0x1.c00001p-128, false, false, 22650+ 0x1.c00001p-128, false, false, 22651+ true, 22652+ 0x1.c00001p-128, false, false, 22653+ 0x1.c00001p-128, false, false, 22654+ 0x1.c00001p-128, false, false, 22655+ 0x1.c00001p-128, false, false, 22656+ true, 22657+ 0x1.c00001p-128, false, false, 22658+ 0x1.c00001p-128, false, false, 22659+ 0x1.c00001p-128, false, false, 22660+ 0x1.c00001p-128, false, false, 22661+ true, 22662+ 0x1.c00001p-128, false, false, 22663+ 0x1.c00001p-128, false, false, 22664+ 0x1.c00001p-128, false, false, 22665+ 0x1.c00001p-128, false, false, 22666+ true, 22667+ 0x1.c00001p-128, false, false, 22668+ 0x1.c00001p-128, false, false, 22669+ 0x1.c00001p-128, false, false, 22670+ 0x1.c00001p-128, false, false), 22671+ TEST ("0x0.70000000000002p-1022", 22672+ false, 22673+ 0x0p+0, false, true, 22674+ 0x0p+0, false, true, 22675+ 0x0p+0, false, true, 22676+ 0x8p-152, false, true, 22677+ false, 22678+ 0x1.cp-1024, false, true, 22679+ 0x1.cp-1024, false, true, 22680+ 0x1.cp-1024, false, true, 22681+ 0x1.c000000000004p-1024, false, true, 22682+ true, 22683+ 0x1.c0000000000008p-1024, false, false, 22684+ 0x1.c0000000000008p-1024, false, false, 22685+ 0x1.c0000000000008p-1024, false, false, 22686+ 0x1.c0000000000008p-1024, false, false, 22687+ true, 22688+ 0x1.c0000000000008p-1024, false, false, 22689+ 0x1.c0000000000008p-1024, false, false, 22690+ 0x1.c0000000000008p-1024, false, false, 22691+ 0x1.c0000000000008p-1024, false, false, 22692+ false, 22693+ 0x1.cp-1024, false, true, 22694+ 0x1.cp-1024, false, true, 22695+ 0x1.cp-1024, false, true, 22696+ 0x1.c000000000004p-1024, false, true, 22697+ true, 22698+ 0x1.c0000000000008p-1024, false, false, 22699+ 0x1.c0000000000008p-1024, false, false, 22700+ 0x1.c0000000000008p-1024, false, false, 22701+ 0x1.c0000000000008p-1024, false, false), 22702+ TEST ("0x0.70000000000000004p-16382", 22703+ false, 22704+ 0x0p+0, false, true, 22705+ 0x0p+0, false, true, 22706+ 0x0p+0, false, true, 22707+ 0x8p-152, false, true, 22708+ false, 22709+ 0x0p+0, false, true, 22710+ 0x0p+0, false, true, 22711+ 0x0p+0, false, true, 22712+ 0x4p-1076, false, true, 22713+ false, 22714+ 0x1.cp-16384, false, true, 22715+ 0x1.cp-16384, false, true, 22716+ 0x1.cp-16384, false, true, 22717+ 0x1.c000000000000008p-16384, false, true, 22718+ false, 22719+ 0x1.cp-16384, false, true, 22720+ 0x1.cp-16384, false, true, 22721+ 0x1.cp-16384, false, true, 22722+ 0x1.c000000000000004p-16384, false, true, 22723+ false, 22724+ 0x0p+0, false, true, 22725+ 0x0p+0, false, true, 22726+ 0x0p+0, false, true, 22727+ 0x4p-1076, false, true, 22728+ true, 22729+ 0x1.c000000000000001p-16384, false, false, 22730+ 0x1.c000000000000001p-16384, false, false, 22731+ 0x1.c000000000000001p-16384, false, false, 22732+ 0x1.c000000000000001p-16384, false, false), 22733+ TEST ("0x0.70000000000000004p-16383", 22734+ false, 22735+ 0x0p+0, false, true, 22736+ 0x0p+0, false, true, 22737+ 0x0p+0, false, true, 22738+ 0x8p-152, false, true, 22739+ false, 22740+ 0x0p+0, false, true, 22741+ 0x0p+0, false, true, 22742+ 0x0p+0, false, true, 22743+ 0x4p-1076, false, true, 22744+ false, 22745+ 0xep-16388, false, true, 22746+ 0xep-16388, false, true, 22747+ 0xep-16388, false, true, 22748+ 0xe.000000000000008p-16388, false, true, 22749+ false, 22750+ 0xep-16388, false, true, 22751+ 0xep-16388, false, true, 22752+ 0xep-16388, false, true, 22753+ 0xe.000000000000004p-16388, false, true, 22754+ false, 22755+ 0x0p+0, false, true, 22756+ 0x0p+0, false, true, 22757+ 0x0p+0, false, true, 22758+ 0x4p-1076, false, true, 22759+ true, 22760+ 0xe.0000000000000008p-16388, false, false, 22761+ 0xe.0000000000000008p-16388, false, false, 22762+ 0xe.0000000000000008p-16388, false, false, 22763+ 0xe.0000000000000008p-16388, false, false), 22764+ TEST ("0x0.70000000000000000000000000002p-16382", 22765+ false, 22766+ 0x0p+0, false, true, 22767+ 0x0p+0, false, true, 22768+ 0x0p+0, false, true, 22769+ 0x8p-152, false, true, 22770+ false, 22771+ 0x0p+0, false, true, 22772+ 0x0p+0, false, true, 22773+ 0x0p+0, false, true, 22774+ 0x4p-1076, false, true, 22775+ false, 22776+ 0x1.cp-16384, false, true, 22777+ 0x1.cp-16384, false, true, 22778+ 0x1.cp-16384, false, true, 22779+ 0x1.c000000000000008p-16384, false, true, 22780+ false, 22781+ 0x1.cp-16384, false, true, 22782+ 0x1.cp-16384, false, true, 22783+ 0x1.cp-16384, false, true, 22784+ 0x1.c000000000000004p-16384, false, true, 22785+ false, 22786+ 0x0p+0, false, true, 22787+ 0x0p+0, false, true, 22788+ 0x0p+0, false, true, 22789+ 0x4p-1076, false, true, 22790+ false, 22791+ 0x1.cp-16384, false, true, 22792+ 0x1.cp-16384, false, true, 22793+ 0x1.cp-16384, false, true, 22794+ 0x1.c000000000000000000000000004p-16384, false, true), 22795 }; 22796 22797commit cac10d88c684c0171e549d813bfef7a31029f257 22798Author: Joseph Myers <josmyers@redhat.com> 22799Date: Tue Aug 27 20:41:54 2024 +0000 22800 22801 Make __strtod_internal tests type-generic 22802 22803 Some of the strtod tests use type-generic machinery in tst-strtod.h to 22804 test the strto* functions for all floating types, while others only 22805 test double even when the tests are in fact meaningful for all 22806 floating types. 22807 22808 Convert the tests of the internal __strtod_internal interface to cover 22809 all floating types. I haven't tried to convert them to use newer test 22810 interfaces in other ways, just made the changes necessary to use the 22811 type-generic machinery. As an internal interface, there are no 22812 aliases for different types with the same ABI (however, 22813 __strtold_internal is defined even if long double has the same ABI as 22814 double), so macros used by the type-generic testing code are redefined 22815 as needed to avoid expecting such aliases to be present. 22816 22817 Tested for x86_64. 22818 22819 (cherry picked from commit 3fc063dee01da4f80920a14b7db637c8501d6fd4) 22820 22821diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c 22822index 9d6bb760fb..44ae0264f4 100644 22823--- a/stdlib/tst-strtod1i.c 22824+++ b/stdlib/tst-strtod1i.c 22825@@ -25,60 +25,91 @@ 22826 #include <string.h> 22827 #include <math.h> 22828 22829-/* Perform a few tests in a locale with thousands separators. */ 22830-static int 22831-do_test (void) 22832-{ 22833- static const struct 22834- { 22835- const char *loc; 22836- const char *str; 22837- double exp; 22838- ptrdiff_t nread; 22839- } tests[] = 22840- { 22841- { "de_DE.UTF-8", "1,5", 1.5, 3 }, 22842- { "de_DE.UTF-8", "1.5", 1.0, 1 }, 22843- { "de_DE.UTF-8", "1.500", 1500.0, 5 }, 22844- { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 } 22845- }; 22846-#define ntests (sizeof (tests) / sizeof (tests[0])) 22847- size_t n; 22848- int result = 0; 22849- 22850- puts ("\nLocale tests"); 22851+#include "tst-strtod.h" 22852 22853- for (n = 0; n < ntests; ++n) 22854- { 22855- double d; 22856- char *endp; 22857+/* This tests internal interfaces, which are only defined for types 22858+ with distinct ABIs, so disable testing for types without distinct 22859+ ABIs. */ 22860+#undef IF_FLOAT32 22861+#define IF_FLOAT32(x) 22862+#undef IF_FLOAT64 22863+#define IF_FLOAT64(x) 22864+#undef IF_FLOAT32X 22865+#define IF_FLOAT32X(x) 22866+#undef IF_FLOAT64X 22867+#define IF_FLOAT64X(x) 22868+#if !__HAVE_DISTINCT_FLOAT128 22869+# undef IF_FLOAT128 22870+# define IF_FLOAT128(x) 22871+#endif 22872 22873- if (setlocale (LC_ALL, tests[n].loc) == NULL) 22874- { 22875- printf ("cannot set locale %s\n", tests[n].loc); 22876- result = 1; 22877- continue; 22878- } 22879+#define ntests (sizeof (tests) / sizeof (tests[0])) 22880 22881- d = __strtod_internal (tests[n].str, &endp, 1); 22882- if (d != tests[n].exp) 22883- { 22884- printf ("strtod(\"%s\") returns %g and not %g\n", 22885- tests[n].str, d, tests[n].exp); 22886- result = 1; 22887- } 22888- else if (endp - tests[n].str != tests[n].nread) 22889- { 22890- printf ("strtod(\"%s\") read %td bytes and not %td\n", 22891- tests[n].str, endp - tests[n].str, tests[n].nread); 22892- result = 1; 22893- } 22894- } 22895+/* Perform a few tests in a locale with thousands separators. */ 22896+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 22897+static int \ 22898+test_strto ## FSUF (void) \ 22899+{ \ 22900+ static const struct \ 22901+ { \ 22902+ const char *loc; \ 22903+ const char *str; \ 22904+ FTYPE exp; \ 22905+ ptrdiff_t nread; \ 22906+ } tests[] = \ 22907+ { \ 22908+ { "de_DE.UTF-8", "1,5", 1.5 ## LSUF, 3 }, \ 22909+ { "de_DE.UTF-8", "1.5", 1.0 ## LSUF, 1 }, \ 22910+ { "de_DE.UTF-8", "1.500", 1500.0 ## LSUF, 5 }, \ 22911+ { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65 ## LSUF, 26 } \ 22912+ }; \ 22913+ size_t n; \ 22914+ int result = 0; \ 22915+ \ 22916+ puts ("\nLocale tests"); \ 22917+ \ 22918+ for (n = 0; n < ntests; ++n) \ 22919+ { \ 22920+ FTYPE d; \ 22921+ char *endp; \ 22922+ \ 22923+ if (setlocale (LC_ALL, tests[n].loc) == NULL) \ 22924+ { \ 22925+ printf ("cannot set locale %s\n", tests[n].loc); \ 22926+ result = 1; \ 22927+ continue; \ 22928+ } \ 22929+ \ 22930+ d = __strto ## FSUF ## _internal (tests[n].str, &endp, 1); \ 22931+ if (d != tests[n].exp) \ 22932+ { \ 22933+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ 22934+ FTOSTR (buf1, sizeof (buf1), "%g", d); \ 22935+ FTOSTR (buf2, sizeof (buf2), "%g", tests[n].exp); \ 22936+ printf ("strto" # FSUF "(\"%s\") returns %s and not %s\n", \ 22937+ tests[n].str, buf1, buf2); \ 22938+ result = 1; \ 22939+ } \ 22940+ else if (endp - tests[n].str != tests[n].nread) \ 22941+ { \ 22942+ printf ("strto" # FSUF "(\"%s\") read %td bytes and not %td\n", \ 22943+ tests[n].str, endp - tests[n].str, tests[n].nread); \ 22944+ result = 1; \ 22945+ } \ 22946+ } \ 22947+ \ 22948+ if (result == 0) \ 22949+ puts ("all OK"); \ 22950+ \ 22951+ return result ? EXIT_FAILURE : EXIT_SUCCESS; \ 22952+} 22953 22954- if (result == 0) 22955- puts ("all OK"); 22956+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) 22957 22958- return result ? EXIT_FAILURE : EXIT_SUCCESS; 22959+static int 22960+do_test (void) 22961+{ 22962+ return STRTOD_TEST_FOREACH (test_strto); 22963 } 22964 22965 #include <support/test-driver.c> 22966diff --git a/stdlib/tst-strtod3.c b/stdlib/tst-strtod3.c 22967index 23abec1896..0d662d8be8 100644 22968--- a/stdlib/tst-strtod3.c 22969+++ b/stdlib/tst-strtod3.c 22970@@ -3,19 +3,73 @@ 22971 #include <stdlib.h> 22972 #include <string.h> 22973 22974-static const struct 22975-{ 22976- const char *in; 22977- const char *out; 22978- double expected; 22979-} tests[] = 22980- { 22981- { "000,,,e1", ",,,e1", 0.0 }, 22982- { "000e1", "", 0.0 }, 22983- { "000,1e1", ",1e1", 0.0 } 22984- }; 22985-#define NTESTS (sizeof (tests) / sizeof (tests[0])) 22986+#include "tst-strtod.h" 22987+ 22988+/* This tests internal interfaces, which are only defined for types 22989+ with distinct ABIs, so disable testing for types without distinct 22990+ ABIs. */ 22991+#undef IF_FLOAT32 22992+#define IF_FLOAT32(x) 22993+#undef IF_FLOAT64 22994+#define IF_FLOAT64(x) 22995+#undef IF_FLOAT32X 22996+#define IF_FLOAT32X(x) 22997+#undef IF_FLOAT64X 22998+#define IF_FLOAT64X(x) 22999+#if !__HAVE_DISTINCT_FLOAT128 23000+# undef IF_FLOAT128 23001+# define IF_FLOAT128(x) 23002+#endif 23003 23004+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 23005+static const struct \ 23006+{ \ 23007+ const char *in; \ 23008+ const char *out; \ 23009+ FTYPE expected; \ 23010+} tests_strto ## FSUF[] = \ 23011+ { \ 23012+ { "000,,,e1", ",,,e1", 0.0 ## LSUF }, \ 23013+ { "000e1", "", 0.0 ## LSUF }, \ 23014+ { "000,1e1", ",1e1", 0.0 ## LSUF } \ 23015+ }; \ 23016+ \ 23017+static int \ 23018+test_strto ## FSUF (void) \ 23019+{ \ 23020+ int status = 0; \ 23021+ \ 23022+ for (int i = 0; \ 23023+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ 23024+ ++i) \ 23025+ { \ 23026+ char *ep; \ 23027+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ 23028+ &ep, 1); \ 23029+ \ 23030+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \ 23031+ { \ 23032+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \ 23033+ i, ep, tests_strto ## FSUF[i].out); \ 23034+ status = 1; \ 23035+ } \ 23036+ \ 23037+ if (r != tests_strto ## FSUF[i].expected) \ 23038+ { \ 23039+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ 23040+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ 23041+ FTOSTR (buf2, sizeof (buf2), "%g", \ 23042+ tests_strto ## FSUF[i].expected); \ 23043+ printf ("%d: got wrong results %s, expected %s\n", \ 23044+ i, buf1, buf2); \ 23045+ status = 1; \ 23046+ } \ 23047+ } \ 23048+ \ 23049+ return status; \ 23050+} 23051+ 23052+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) 23053 23054 static int 23055 do_test (void) 23056@@ -26,29 +80,7 @@ do_test (void) 23057 return 1; 23058 } 23059 23060- int status = 0; 23061- 23062- for (int i = 0; i < NTESTS; ++i) 23063- { 23064- char *ep; 23065- double r = __strtod_internal (tests[i].in, &ep, 1); 23066- 23067- if (strcmp (ep, tests[i].out) != 0) 23068- { 23069- printf ("%d: got rest string \"%s\", expected \"%s\"\n", 23070- i, ep, tests[i].out); 23071- status = 1; 23072- } 23073- 23074- if (r != tests[i].expected) 23075- { 23076- printf ("%d: got wrong results %g, expected %g\n", 23077- i, r, tests[i].expected); 23078- status = 1; 23079- } 23080- } 23081- 23082- return status; 23083+ return STRTOD_TEST_FOREACH (test_strto); 23084 } 23085 23086 #define TEST_FUNCTION do_test () 23087diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c 23088index 6cc4e843c7..dfd3f05027 100644 23089--- a/stdlib/tst-strtod4.c 23090+++ b/stdlib/tst-strtod4.c 23091@@ -3,22 +3,76 @@ 23092 #include <stdlib.h> 23093 #include <string.h> 23094 23095+#include "tst-strtod.h" 23096+ 23097+/* This tests internal interfaces, which are only defined for types 23098+ with distinct ABIs, so disable testing for types without distinct 23099+ ABIs. */ 23100+#undef IF_FLOAT32 23101+#define IF_FLOAT32(x) 23102+#undef IF_FLOAT64 23103+#define IF_FLOAT64(x) 23104+#undef IF_FLOAT32X 23105+#define IF_FLOAT32X(x) 23106+#undef IF_FLOAT64X 23107+#define IF_FLOAT64X(x) 23108+#if !__HAVE_DISTINCT_FLOAT128 23109+# undef IF_FLOAT128 23110+# define IF_FLOAT128(x) 23111+#endif 23112+ 23113 #define NNBSP "\xe2\x80\xaf" 23114 23115-static const struct 23116-{ 23117- const char *in; 23118- const char *out; 23119- double expected; 23120-} tests[] = 23121- { 23122- { "000"NNBSP"000"NNBSP"000", "", 0.0 }, 23123- { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 }, 23124- /* Bug 30964 */ 23125- { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 } 23126- }; 23127-#define NTESTS (sizeof (tests) / sizeof (tests[0])) 23128+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 23129+static const struct \ 23130+{ \ 23131+ const char *in; \ 23132+ const char *out; \ 23133+ FTYPE expected; \ 23134+} tests_strto ## FSUF[] = \ 23135+ { \ 23136+ { "000"NNBSP"000"NNBSP"000", "", 0.0 ## LSUF }, \ 23137+ { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 ## LSUF }, \ 23138+ /* Bug 30964 */ \ 23139+ { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 ## LSUF } \ 23140+ }; \ 23141+ \ 23142+static int \ 23143+test_strto ## FSUF (void) \ 23144+{ \ 23145+ int status = 0; \ 23146+ \ 23147+ for (int i = 0; \ 23148+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ 23149+ ++i) \ 23150+ { \ 23151+ char *ep; \ 23152+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ 23153+ &ep, 1); \ 23154+ \ 23155+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \ 23156+ { \ 23157+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \ 23158+ i, ep, tests_strto ## FSUF[i].out); \ 23159+ status = 1; \ 23160+ } \ 23161+ \ 23162+ if (r != tests_strto ## FSUF[i].expected) \ 23163+ { \ 23164+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ 23165+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ 23166+ FTOSTR (buf2, sizeof (buf2), "%g", \ 23167+ tests_strto ## FSUF[i].expected); \ 23168+ printf ("%d: got wrong results %s, expected %s\n", \ 23169+ i, buf1, buf2); \ 23170+ status = 1; \ 23171+ } \ 23172+ } \ 23173+ \ 23174+ return status; \ 23175+} 23176 23177+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) 23178 23179 static int 23180 do_test (void) 23181@@ -29,29 +83,7 @@ do_test (void) 23182 return 1; 23183 } 23184 23185- int status = 0; 23186- 23187- for (int i = 0; i < NTESTS; ++i) 23188- { 23189- char *ep; 23190- double r = __strtod_internal (tests[i].in, &ep, 1); 23191- 23192- if (strcmp (ep, tests[i].out) != 0) 23193- { 23194- printf ("%d: got rest string \"%s\", expected \"%s\"\n", 23195- i, ep, tests[i].out); 23196- status = 1; 23197- } 23198- 23199- if (r != tests[i].expected) 23200- { 23201- printf ("%d: got wrong results %g, expected %g\n", 23202- i, r, tests[i].expected); 23203- status = 1; 23204- } 23205- } 23206- 23207- return status; 23208+ return STRTOD_TEST_FOREACH (test_strto); 23209 } 23210 23211 #define TEST_FUNCTION do_test () 23212diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c 23213index ee54e3404c..136aedea68 100644 23214--- a/stdlib/tst-strtod5i.c 23215+++ b/stdlib/tst-strtod5i.c 23216@@ -16,52 +16,112 @@ 23217 License along with the GNU C Library; if not, see 23218 <https://www.gnu.org/licenses/>. */ 23219 23220+/* Defining _LIBC_TEST ensures long double math functions are 23221+ declared in the headers. */ 23222+#define _LIBC_TEST 1 23223 #include <locale.h> 23224 #include <stdio.h> 23225 #include <stdlib.h> 23226 #include <string.h> 23227 #include <math.h> 23228 23229+#include "tst-strtod.h" 23230+ 23231+/* This tests internal interfaces, which are only defined for types 23232+ with distinct ABIs, so disable testing for types without distinct 23233+ ABIs. */ 23234+#undef IF_FLOAT32 23235+#define IF_FLOAT32(x) 23236+#undef IF_FLOAT64 23237+#define IF_FLOAT64(x) 23238+#undef IF_FLOAT32X 23239+#define IF_FLOAT32X(x) 23240+#undef IF_FLOAT64X 23241+#define IF_FLOAT64X(x) 23242+#if !__HAVE_DISTINCT_FLOAT128 23243+# undef IF_FLOAT128 23244+# define IF_FLOAT128(x) 23245+#endif 23246+ 23247 #define NNBSP "\xe2\x80\xaf" 23248 23249-static const struct 23250-{ 23251- const char *in; 23252- int group; 23253- double expected; 23254-} tests[] = 23255- { 23256- { "0", 0, 0.0 }, 23257- { "000", 0, 0.0 }, 23258- { "-0", 0, -0.0 }, 23259- { "-000", 0, -0.0 }, 23260- { "0,", 0, 0.0 }, 23261- { "-0,", 0, -0.0 }, 23262- { "0,0", 0, 0.0 }, 23263- { "-0,0", 0, -0.0 }, 23264- { "0e-10", 0, 0.0 }, 23265- { "-0e-10", 0, -0.0 }, 23266- { "0,e-10", 0, 0.0 }, 23267- { "-0,e-10", 0, -0.0 }, 23268- { "0,0e-10", 0, 0.0 }, 23269- { "-0,0e-10", 0, -0.0 }, 23270- { "0e-1000000", 0, 0.0 }, 23271- { "-0e-1000000", 0, -0.0 }, 23272- { "0,0e-1000000", 0, 0.0 }, 23273- { "-0,0e-1000000", 0, -0.0 }, 23274- { "0", 1, 0.0 }, 23275- { "000", 1, 0.0 }, 23276- { "-0", 1, -0.0 }, 23277- { "-000", 1, -0.0 }, 23278- { "0e-10", 1, 0.0 }, 23279- { "-0e-10", 1, -0.0 }, 23280- { "0e-1000000", 1, 0.0 }, 23281- { "-0e-1000000", 1, -0.0 }, 23282- { "000"NNBSP"000"NNBSP"000", 1, 0.0 }, 23283- { "-000"NNBSP"000"NNBSP"000", 1, -0.0 } 23284- }; 23285-#define NTESTS (sizeof (tests) / sizeof (tests[0])) 23286+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 23287+static const struct \ 23288+{ \ 23289+ const char *in; \ 23290+ int group; \ 23291+ FTYPE expected; \ 23292+} tests_strto ## FSUF[] = \ 23293+ { \ 23294+ { "0", 0, 0.0 ## LSUF }, \ 23295+ { "000", 0, 0.0 ## LSUF }, \ 23296+ { "-0", 0, -0.0 ## LSUF }, \ 23297+ { "-000", 0, -0.0 ## LSUF }, \ 23298+ { "0,", 0, 0.0 ## LSUF }, \ 23299+ { "-0,", 0, -0.0 ## LSUF }, \ 23300+ { "0,0", 0, 0.0 ## LSUF }, \ 23301+ { "-0,0", 0, -0.0 ## LSUF }, \ 23302+ { "0e-10", 0, 0.0 ## LSUF }, \ 23303+ { "-0e-10", 0, -0.0 ## LSUF }, \ 23304+ { "0,e-10", 0, 0.0 ## LSUF }, \ 23305+ { "-0,e-10", 0, -0.0 ## LSUF }, \ 23306+ { "0,0e-10", 0, 0.0 ## LSUF }, \ 23307+ { "-0,0e-10", 0, -0.0 ## LSUF }, \ 23308+ { "0e-1000000", 0, 0.0 ## LSUF }, \ 23309+ { "-0e-1000000", 0, -0.0 ## LSUF }, \ 23310+ { "0,0e-1000000", 0, 0.0 ## LSUF }, \ 23311+ { "-0,0e-1000000", 0, -0.0 ## LSUF }, \ 23312+ { "0", 1, 0.0 ## LSUF }, \ 23313+ { "000", 1, 0.0 ## LSUF }, \ 23314+ { "-0", 1, -0.0 ## LSUF }, \ 23315+ { "-000", 1, -0.0 ## LSUF }, \ 23316+ { "0e-10", 1, 0.0 ## LSUF }, \ 23317+ { "-0e-10", 1, -0.0 ## LSUF }, \ 23318+ { "0e-1000000", 1, 0.0 ## LSUF }, \ 23319+ { "-0e-1000000", 1, -0.0 ## LSUF }, \ 23320+ { "000"NNBSP"000"NNBSP"000", 1, 0.0 ## LSUF }, \ 23321+ { "-000"NNBSP"000"NNBSP"000", 1, -0.0 ## LSUF } \ 23322+ }; \ 23323+ \ 23324+static int \ 23325+test_strto ## FSUF (void) \ 23326+{ \ 23327+ int status = 0; \ 23328+ \ 23329+ for (int i = 0; \ 23330+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ 23331+ ++i) \ 23332+ { \ 23333+ char *ep; \ 23334+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ 23335+ &ep, \ 23336+ tests_strto ## FSUF[i].group); \ 23337+ \ 23338+ if (*ep != '\0') \ 23339+ { \ 23340+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \ 23341+ status = 1; \ 23342+ } \ 23343+ \ 23344+ if (r != tests_strto ## FSUF[i].expected \ 23345+ || (copysign ## CSUF (10.0 ## LSUF, r) \ 23346+ != copysign ## CSUF (10.0 ## LSUF, \ 23347+ tests_strto ## FSUF[i].expected))) \ 23348+ { \ 23349+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ 23350+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ 23351+ FTOSTR (buf2, sizeof (buf2), "%g", \ 23352+ tests_strto ## FSUF[i].expected); \ 23353+ printf ("%d: got wrong results %s, expected %s\n", \ 23354+ i, buf1, buf2); \ 23355+ status = 1; \ 23356+ } \ 23357+ } \ 23358+ \ 23359+ return status; \ 23360+} 23361 23362+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) 23363 23364 static int 23365 do_test (void) 23366@@ -72,29 +132,7 @@ do_test (void) 23367 return 1; 23368 } 23369 23370- int status = 0; 23371- 23372- for (int i = 0; i < NTESTS; ++i) 23373- { 23374- char *ep; 23375- double r = __strtod_internal (tests[i].in, &ep, tests[i].group); 23376- 23377- if (*ep != '\0') 23378- { 23379- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); 23380- status = 1; 23381- } 23382- 23383- if (r != tests[i].expected 23384- || copysign (10.0, r) != copysign (10.0, tests[i].expected)) 23385- { 23386- printf ("%d: got wrong results %g, expected %g\n", 23387- i, r, tests[i].expected); 23388- status = 1; 23389- } 23390- } 23391- 23392- return status; 23393+ return STRTOD_TEST_FOREACH (test_strto); 23394 } 23395 23396 #include <support/test-driver.c> 23397 23398commit ad93c2047d791044d45e8f65070d821b0b918993 23399Author: Joseph Myers <josmyers@redhat.com> 23400Date: Wed Sep 4 13:20:18 2024 +0000 23401 23402 Improve NaN payload testing 23403 23404 There are two separate sets of tests of NaN payloads in glibc: 23405 23406 * libm-test-{get,set}payload* verify that getpayload, setpayload, 23407 setpayloadsig and __builtin_nan functions are consistent in their 23408 payload handling. 23409 23410 * test-nan-payload verifies that strtod-family functions and the 23411 not-built-in nan functions are consistent in their payload handling. 23412 23413 Nothing, however, connects the two sets of functions (i.e., verifies 23414 that strtod / nan are consistent with getpayload / setpayload / 23415 __builtin_nan). 23416 23417 Improve test-nan-payload to check actual payload value with getpayload 23418 rather than just verifying that the strtod and nan functions produce 23419 the same NaN. Also check that the NaNs produced aren't signaling and 23420 extend the tests to cover _FloatN / _FloatNx. 23421 23422 Tested for x86_64. 23423 23424 (cherry picked from commit be77d5ae417236883c02d3d67c0716e3f669fa41) 23425 23426diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c 23427index 4a81dc348b..55c13de14e 100644 23428--- a/math/test-nan-payload.c 23429+++ b/math/test-nan-payload.c 23430@@ -16,6 +16,8 @@ 23431 License along with the GNU C Library; if not, see 23432 <https://www.gnu.org/licenses/>. */ 23433 23434+#define _LIBC_TEST 1 23435+#define __STDC_WANT_IEC_60559_TYPES_EXT__ 23436 #include <float.h> 23437 #include <math.h> 23438 #include <stdio.h> 23439@@ -31,7 +33,7 @@ 23440 #define CHECK_IS_NAN(TYPE, A) \ 23441 do \ 23442 { \ 23443- if (isnan (A)) \ 23444+ if (isnan (A) && !issignaling (A)) \ 23445 puts ("PASS: " #TYPE " " #A); \ 23446 else \ 23447 { \ 23448@@ -41,6 +43,19 @@ 23449 } \ 23450 while (0) 23451 23452+#define CHECK_PAYLOAD(TYPE, FUNC, A, P) \ 23453+ do \ 23454+ { \ 23455+ if (FUNC (&(A)) == (P)) \ 23456+ puts ("PASS: " #TYPE " payload " #A); \ 23457+ else \ 23458+ { \ 23459+ puts ("FAIL: " #TYPE " payload " #A); \ 23460+ result = 1; \ 23461+ } \ 23462+ } \ 23463+ while (0) 23464+ 23465 #define CHECK_SAME_NAN(TYPE, A, B) \ 23466 do \ 23467 { \ 23468@@ -71,7 +86,7 @@ 23469 bits. */ 23470 #define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106) 23471 23472-#define RUN_TESTS(TYPE, SFUNC, FUNC, MANT_DIG) \ 23473+#define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \ 23474 do \ 23475 { \ 23476 TYPE n123 = WRAP_NAN (FUNC, "123"); \ 23477@@ -82,6 +97,10 @@ 23478 CHECK_IS_NAN (TYPE, n456); \ 23479 TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \ 23480 CHECK_IS_NAN (TYPE, s456); \ 23481+ TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \ 23482+ CHECK_IS_NAN (TYPE, nh123); \ 23483+ TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \ 23484+ CHECK_IS_NAN (TYPE, sh123); \ 23485 TYPE n123x = WRAP_NAN (FUNC, "123)"); \ 23486 CHECK_IS_NAN (TYPE, n123x); \ 23487 TYPE nemp = WRAP_NAN (FUNC, ""); \ 23488@@ -92,8 +111,16 @@ 23489 CHECK_IS_NAN (TYPE, sx); \ 23490 if (CAN_TEST_EQ (MANT_DIG)) \ 23491 CHECK_SAME_NAN (TYPE, n123, s123); \ 23492+ CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \ 23493+ CHECK_PAYLOAD (TYPE, PLFUNC, s123, 123); \ 23494 if (CAN_TEST_EQ (MANT_DIG)) \ 23495 CHECK_SAME_NAN (TYPE, n456, s456); \ 23496+ CHECK_PAYLOAD (TYPE, PLFUNC, n456, 456); \ 23497+ CHECK_PAYLOAD (TYPE, PLFUNC, s456, 456); \ 23498+ if (CAN_TEST_EQ (MANT_DIG)) \ 23499+ CHECK_SAME_NAN (TYPE, nh123, sh123); \ 23500+ CHECK_PAYLOAD (TYPE, PLFUNC, nh123, 0x123); \ 23501+ CHECK_PAYLOAD (TYPE, PLFUNC, sh123, 0x123); \ 23502 if (CAN_TEST_EQ (MANT_DIG)) \ 23503 CHECK_SAME_NAN (TYPE, nemp, semp); \ 23504 if (CAN_TEST_EQ (MANT_DIG)) \ 23505@@ -110,9 +137,31 @@ static int 23506 do_test (void) 23507 { 23508 int result = 0; 23509- RUN_TESTS (float, strtof, nanf, FLT_MANT_DIG); 23510- RUN_TESTS (double, strtod, nan, DBL_MANT_DIG); 23511- RUN_TESTS (long double, strtold, nanl, LDBL_MANT_DIG); 23512+ RUN_TESTS (float, strtof, nanf, getpayloadf, FLT_MANT_DIG); 23513+ RUN_TESTS (double, strtod, nan, getpayload, DBL_MANT_DIG); 23514+ RUN_TESTS (long double, strtold, nanl, getpayloadl, LDBL_MANT_DIG); 23515+#if __HAVE_FLOAT16 23516+ RUN_TESTS (_Float16, strtof16, nanf16, getpayloadf16, FLT16_MANT_DIG); 23517+#endif 23518+#if __HAVE_FLOAT32 23519+ RUN_TESTS (_Float32, strtof32, nanf32, getpayloadf32, FLT32_MANT_DIG); 23520+#endif 23521+#if __HAVE_FLOAT64 23522+ RUN_TESTS (_Float64, strtof64, nanf64, getpayloadf64, FLT64_MANT_DIG); 23523+#endif 23524+#if __HAVE_FLOAT128 23525+ RUN_TESTS (_Float128, strtof128, nanf128, getpayloadf128, FLT128_MANT_DIG); 23526+#endif 23527+#if __HAVE_FLOAT32X 23528+ RUN_TESTS (_Float32x, strtof32x, nanf32x, getpayloadf32x, FLT32X_MANT_DIG); 23529+#endif 23530+#if __HAVE_FLOAT64X 23531+ RUN_TESTS (_Float64x, strtof64x, nanf64x, getpayloadf64x, FLT64X_MANT_DIG); 23532+#endif 23533+#if __HAVE_FLOAT128X 23534+ RUN_TESTS (_Float128x, strtof128x, nanf128x, getpayloadf128x, 23535+ FLT128X_MANT_DIG); 23536+#endif 23537 return result; 23538 } 23539 23540 23541commit c4cc72d2efc741872d65ae1fd77572e47042d179 23542Author: Joseph Myers <josmyers@redhat.com> 23543Date: Wed Sep 4 13:21:23 2024 +0000 23544 23545 Do not set errno for overflowing NaN payload in strtod/nan (bug 32045) 23546 23547 As reported in bug 32045, it's incorrect for strtod/nan functions to 23548 set errno based on overflowing payload (strtod should only set errno 23549 for overflow / underflow of its actual result, and potentially if 23550 nothing in the string can be parsed as a number at all; nan should be 23551 a pure function that never sets it). Save and restore errno around 23552 the internal strtoull call and add associated test coverage. 23553 23554 Tested for x86_64. 23555 23556 (cherry picked from commit 64f62c47e9c350f353336f2df6714e1d48ec50d8) 23557 23558diff --git a/math/Makefile b/math/Makefile 23559index f06d370383..b64c3eedd5 100644 23560--- a/math/Makefile 23561+++ b/math/Makefile 23562@@ -1077,6 +1077,7 @@ CFLAGS-test-flt-eval-method.c += -fexcess-precision=standard 23563 CFLAGS-test-fe-snans-always-signal.c += $(config-cflags-signaling-nans) 23564 23565 CFLAGS-test-nan-const.c += -fno-builtin 23566+CFLAGS-test-nan-payload.c += -fno-builtin 23567 23568 CFLAGS-test-ceil-except-2.c += -fno-builtin 23569 CFLAGS-test-floor-except-2.c += -fno-builtin 23570diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c 23571index 55c13de14e..413791e09f 100644 23572--- a/math/test-nan-payload.c 23573+++ b/math/test-nan-payload.c 23574@@ -18,6 +18,7 @@ 23575 23576 #define _LIBC_TEST 1 23577 #define __STDC_WANT_IEC_60559_TYPES_EXT__ 23578+#include <errno.h> 23579 #include <float.h> 23580 #include <math.h> 23581 #include <stdio.h> 23582@@ -82,6 +83,26 @@ 23583 } \ 23584 while (0) 23585 23586+#define CLEAR_ERRNO \ 23587+ do \ 23588+ { \ 23589+ errno = 12345; \ 23590+ } \ 23591+ while (0) 23592+ 23593+#define CHECK_ERRNO(TYPE, A) \ 23594+ do \ 23595+ { \ 23596+ if (errno == 12345) \ 23597+ puts ("PASS: " #TYPE " " #A " errno"); \ 23598+ else \ 23599+ { \ 23600+ puts ("FAIL: " #TYPE " " #A " errno"); \ 23601+ result = 1; \ 23602+ } \ 23603+ } \ 23604+ while (0) 23605+ 23606 /* Cannot test payloads by memcmp for formats where NaNs have padding 23607 bits. */ 23608 #define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106) 23609@@ -89,26 +110,58 @@ 23610 #define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \ 23611 do \ 23612 { \ 23613+ CLEAR_ERRNO; \ 23614 TYPE n123 = WRAP_NAN (FUNC, "123"); \ 23615+ CHECK_ERRNO (TYPE, n123); \ 23616 CHECK_IS_NAN (TYPE, n123); \ 23617+ CLEAR_ERRNO; \ 23618 TYPE s123 = WRAP_STRTO (SFUNC, "NAN(123)"); \ 23619+ CHECK_ERRNO (TYPE, s123); \ 23620 CHECK_IS_NAN (TYPE, s123); \ 23621+ CLEAR_ERRNO; \ 23622 TYPE n456 = WRAP_NAN (FUNC, "456"); \ 23623+ CHECK_ERRNO (TYPE, n456); \ 23624 CHECK_IS_NAN (TYPE, n456); \ 23625+ CLEAR_ERRNO; \ 23626 TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \ 23627+ CHECK_ERRNO (TYPE, s456); \ 23628 CHECK_IS_NAN (TYPE, s456); \ 23629+ CLEAR_ERRNO; \ 23630 TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \ 23631+ CHECK_ERRNO (TYPE, nh123); \ 23632 CHECK_IS_NAN (TYPE, nh123); \ 23633+ CLEAR_ERRNO; \ 23634 TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \ 23635+ CHECK_ERRNO (TYPE, sh123); \ 23636 CHECK_IS_NAN (TYPE, sh123); \ 23637+ CLEAR_ERRNO; \ 23638 TYPE n123x = WRAP_NAN (FUNC, "123)"); \ 23639+ CHECK_ERRNO (TYPE, n123x); \ 23640 CHECK_IS_NAN (TYPE, n123x); \ 23641+ CLEAR_ERRNO; \ 23642 TYPE nemp = WRAP_NAN (FUNC, ""); \ 23643+ CHECK_ERRNO (TYPE, nemp); \ 23644 CHECK_IS_NAN (TYPE, nemp); \ 23645+ CLEAR_ERRNO; \ 23646 TYPE semp = WRAP_STRTO (SFUNC, "NAN()"); \ 23647+ CHECK_ERRNO (TYPE, semp); \ 23648 CHECK_IS_NAN (TYPE, semp); \ 23649+ CLEAR_ERRNO; \ 23650 TYPE sx = WRAP_STRTO (SFUNC, "NAN"); \ 23651+ CHECK_ERRNO (TYPE, sx); \ 23652 CHECK_IS_NAN (TYPE, sx); \ 23653+ CLEAR_ERRNO; \ 23654+ TYPE novf = WRAP_NAN (FUNC, "9999999999" \ 23655+ "99999999999999999999" \ 23656+ "9999999999"); \ 23657+ CHECK_ERRNO (TYPE, novf); \ 23658+ CHECK_IS_NAN (TYPE, novf); \ 23659+ CLEAR_ERRNO; \ 23660+ TYPE sovf = WRAP_STRTO (SFUNC, "NAN(9999999999" \ 23661+ "99999999999999999999" \ 23662+ "9999999999)"); \ 23663+ CHECK_ERRNO (TYPE, sovf); \ 23664+ CHECK_IS_NAN (TYPE, sovf); \ 23665 if (CAN_TEST_EQ (MANT_DIG)) \ 23666 CHECK_SAME_NAN (TYPE, n123, s123); \ 23667 CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \ 23668diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c 23669index 4cb286d2b3..39fb7e9f75 100644 23670--- a/stdlib/strtod_nan_main.c 23671+++ b/stdlib/strtod_nan_main.c 23672@@ -16,6 +16,7 @@ 23673 License along with the GNU C Library; if not, see 23674 <https://www.gnu.org/licenses/>. */ 23675 23676+#include <errno.h> 23677 #include <ieee754.h> 23678 #include <locale.h> 23679 #include <math.h> 23680@@ -50,7 +51,9 @@ STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc) 23681 STRING_TYPE *endp; 23682 unsigned long long int mant; 23683 23684+ int save_errno = errno; 23685 mant = STRTOULL (str, &endp, 0); 23686+ __set_errno (save_errno); 23687 if (endp == cp) 23688 SET_NAN_PAYLOAD (retval, mant); 23689 23690 23691commit 5a10d05c39689dcf7ee694ec94cd2fd069c747ee 23692Author: Florian Weimer <fweimer@redhat.com> 23693Date: Thu Sep 5 21:18:23 2024 +0200 23694 23695 powerpc64le: Build new strtod tests with long double ABI flags (bug 32145) 23696 23697 This fixes several test failures: 23698 23699 =====FAIL: stdlib/tst-strtod1i.out===== 23700 Locale tests 23701 all OK 23702 Locale tests 23703 all OK 23704 Locale tests 23705 strtold("1,5") returns -6,38643e+367 and not 1,5 23706 strtold("1.5") returns 1,5 and not 1 23707 strtold("1.500") returns 1 and not 1500 23708 strtold("36.893.488.147.419.103.232") returns 1500 and not 3,68935e+19 23709 Locale tests 23710 all OK 23711 23712 =====FAIL: stdlib/tst-strtod3.out===== 23713 0: got wrong results -2.5937e+4826, expected 0 23714 23715 =====FAIL: stdlib/tst-strtod4.out===== 23716 0: got wrong results -6,38643e+367, expected 0 23717 1: got wrong results 0, expected 1e+06 23718 2: got wrong results 1e+06, expected 10 23719 23720 =====FAIL: stdlib/tst-strtod5i.out===== 23721 0: got wrong results -6,38643e+367, expected 0 23722 2: got wrong results 0, expected -0 23723 4: got wrong results -0, expected 0 23724 5: got wrong results 0, expected -0 23725 6: got wrong results -0, expected 0 23726 7: got wrong results 0, expected -0 23727 8: got wrong results -0, expected 0 23728 9: got wrong results 0, expected -0 23729 10: got wrong results -0, expected 0 23730 11: got wrong results 0, expected -0 23731 12: got wrong results -0, expected 0 23732 13: got wrong results 0, expected -0 23733 14: got wrong results -0, expected 0 23734 15: got wrong results 0, expected -0 23735 16: got wrong results -0, expected 0 23736 17: got wrong results 0, expected -0 23737 18: got wrong results -0, expected 0 23738 20: got wrong results 0, expected -0 23739 22: got wrong results -0, expected 0 23740 23: got wrong results 0, expected -0 23741 24: got wrong results -0, expected 0 23742 25: got wrong results 0, expected -0 23743 26: got wrong results -0, expected 0 23744 27: got wrong results 0, expected -0 23745 23746 Fixes commit 3fc063dee01da4f80920a14b7db637c8501d6fd4 23747 ("Make __strtod_internal tests type-generic"). 23748 23749 Suggested-by: Joseph Myers <josmyers@redhat.com> 23750 Reviewed-by: Carlos O'Donell <carlos@redhat.com> 23751 (cherry picked from commit cc3e743fc09ee6fca45767629df9cbcbe1feba82) 23752 23753diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile 23754index 9d568d4f44..b77775cf95 100644 23755--- a/sysdeps/powerpc/powerpc64/le/Makefile 23756+++ b/sysdeps/powerpc/powerpc64/le/Makefile 23757@@ -129,6 +129,10 @@ CFLAGS-tst-strtod-round.c += $(type-float128-CFLAGS) 23758 CFLAGS-tst-wcstod-round.c += $(type-float128-CFLAGS) 23759 CFLAGS-tst-strtod-nan-locale.c += $(type-float128-CFLAGS) 23760 CFLAGS-tst-wcstod-nan-locale.c += $(type-float128-CFLAGS) 23761+CFLAGS-tst-strtod1i.c += $(type-float128-CFLAGS) 23762+CFLAGS-tst-strtod3.c += $(type-float128-CFLAGS) 23763+CFLAGS-tst-strtod4.c += $(type-float128-CFLAGS) 23764+CFLAGS-tst-strtod5i.c += $(type-float128-CFLAGS) 23765 CFLAGS-tst-strtod6.c += $(type-float128-CFLAGS) 23766 CFLAGS-tst-strfrom.c += $(type-float128-CFLAGS) 23767 CFLAGS-tst-strfrom-locale.c += $(type-float128-CFLAGS) 23768 23769commit 4a9b6cdc88335e2a7291418563073a58fe97346e 23770Author: Joseph Myers <josmyers@redhat.com> 23771Date: Fri Sep 20 23:23:13 2024 +0000 23772 23773 Make tst-strtod2 and tst-strtod5 type-generic 23774 23775 Some of the strtod tests use type-generic machinery in tst-strtod.h to 23776 test the strto* functions for all floating types, while others only 23777 test double even when the tests are in fact meaningful for all 23778 floating types. 23779 23780 Convert tst-strtod2 and tst-strtod5 to use the type-generic machinery 23781 so they test all floating types. I haven't tried to convert them to 23782 use newer test interfaces in other ways, just made the changes 23783 necessary to use the type-generic machinery. 23784 23785 Tested for x86_64. 23786 23787 (cherry picked from commit 8de031bcb9adfa736c0caed2c79d10947b8d8f48) 23788 23789diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c 23790index a7df82ebbd..2cb0953fa9 100644 23791--- a/stdlib/tst-strtod2.c 23792+++ b/stdlib/tst-strtod2.c 23793@@ -1,43 +1,61 @@ 23794 #include <stdio.h> 23795 #include <stdlib.h> 23796 23797-struct test 23798-{ 23799- const char *str; 23800- double result; 23801- size_t offset; 23802-} tests[] = 23803-{ 23804- { "0xy", 0.0, 1 }, 23805- { "0x.y", 0.0, 1 }, 23806- { "0x0.y", 0.0, 4 }, 23807- { "0x.0y", 0.0, 4 }, 23808- { ".y", 0.0, 0 }, 23809- { "0.y", 0.0, 2 }, 23810- { ".0y", 0.0, 2 } 23811-}; 23812+#include "tst-strtod.h" 23813+ 23814+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 23815+struct test_strto ## FSUF \ 23816+{ \ 23817+ const char *str; \ 23818+ FTYPE result; \ 23819+ size_t offset; \ 23820+} tests_strto ## FSUF[] = \ 23821+{ \ 23822+ { "0xy", 0.0 ## LSUF, 1 }, \ 23823+ { "0x.y", 0.0 ## LSUF, 1 }, \ 23824+ { "0x0.y", 0.0 ## LSUF, 4 }, \ 23825+ { "0x.0y", 0.0 ## LSUF, 4 }, \ 23826+ { ".y", 0.0 ## LSUF, 0 }, \ 23827+ { "0.y", 0.0 ## LSUF, 2 }, \ 23828+ { ".0y", 0.0 ## LSUF, 2 } \ 23829+}; \ 23830+ \ 23831+static int \ 23832+test_strto ## FSUF (void) \ 23833+{ \ 23834+ int status = 0; \ 23835+ for (size_t i = 0; \ 23836+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ 23837+ ++i) \ 23838+ { \ 23839+ char *ep; \ 23840+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \ 23841+ if (r != tests_strto ## FSUF[i].result) \ 23842+ { \ 23843+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ 23844+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ 23845+ FTOSTR (buf2, sizeof (buf2), "%g", tests_strto ## FSUF[i].result); \ 23846+ printf ("test %zu r = %s, expect %s\n", i, buf1, buf2); \ 23847+ status = 1; \ 23848+ } \ 23849+ if (ep != tests_strto ## FSUF[i].str + tests_strto ## FSUF[i].offset) \ 23850+ { \ 23851+ printf ("test %zu strto" #FSUF \ 23852+ " parsed %tu characters, expected %zu\n", \ 23853+ i, ep - tests_strto ## FSUF[i].str, \ 23854+ tests_strto ## FSUF[i].offset); \ 23855+ status = 1; \ 23856+ } \ 23857+ } \ 23858+ return status; \ 23859+} 23860+ 23861+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) 23862 23863 static int 23864 do_test (void) 23865 { 23866- int status = 0; 23867- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i) 23868- { 23869- char *ep; 23870- double r = strtod (tests[i].str, &ep); 23871- if (r != tests[i].result) 23872- { 23873- printf ("test %zu r = %g, expect %g\n", i, r, tests[i].result); 23874- status = 1; 23875- } 23876- if (ep != tests[i].str + tests[i].offset) 23877- { 23878- printf ("test %zu strtod parsed %tu characters, expected %zu\n", 23879- i, ep - tests[i].str, tests[i].offset); 23880- status = 1; 23881- } 23882- } 23883- return status; 23884+ return STRTOD_TEST_FOREACH (test_strto); 23885 } 23886 23887 #define TEST_FUNCTION do_test () 23888diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5.c 23889index 29153ec005..7eb9b3a2d7 100644 23890--- a/stdlib/tst-strtod5.c 23891+++ b/stdlib/tst-strtod5.c 23892@@ -22,35 +22,75 @@ 23893 #include <string.h> 23894 #include <math.h> 23895 23896+#include "tst-strtod.h" 23897+ 23898 #define NBSP "\xc2\xa0" 23899 23900-static const struct 23901-{ 23902- const char *in; 23903- double expected; 23904-} tests[] = 23905- { 23906- { "0", 0.0 }, 23907- { "000", 0.0 }, 23908- { "-0", -0.0 }, 23909- { "-000", -0.0 }, 23910- { "0,", 0.0 }, 23911- { "-0,", -0.0 }, 23912- { "0,0", 0.0 }, 23913- { "-0,0", -0.0 }, 23914- { "0e-10", 0.0 }, 23915- { "-0e-10", -0.0 }, 23916- { "0,e-10", 0.0 }, 23917- { "-0,e-10", -0.0 }, 23918- { "0,0e-10", 0.0 }, 23919- { "-0,0e-10", -0.0 }, 23920- { "0e-1000000", 0.0 }, 23921- { "-0e-1000000", -0.0 }, 23922- { "0,0e-1000000", 0.0 }, 23923- { "-0,0e-1000000", -0.0 }, 23924- }; 23925-#define NTESTS (sizeof (tests) / sizeof (tests[0])) 23926+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 23927+static const struct \ 23928+{ \ 23929+ const char *in; \ 23930+ FTYPE expected; \ 23931+} tests_strto ## FSUF[] = \ 23932+ { \ 23933+ { "0", 0.0 ## LSUF }, \ 23934+ { "000", 0.0 ## LSUF }, \ 23935+ { "-0", -0.0 ## LSUF }, \ 23936+ { "-000", -0.0 ## LSUF }, \ 23937+ { "0,", 0.0 ## LSUF }, \ 23938+ { "-0,", -0.0 ## LSUF }, \ 23939+ { "0,0", 0.0 ## LSUF }, \ 23940+ { "-0,0", -0.0 ## LSUF }, \ 23941+ { "0e-10", 0.0 ## LSUF }, \ 23942+ { "-0e-10", -0.0 ## LSUF }, \ 23943+ { "0,e-10", 0.0 ## LSUF }, \ 23944+ { "-0,e-10", -0.0 ## LSUF }, \ 23945+ { "0,0e-10", 0.0 ## LSUF }, \ 23946+ { "-0,0e-10", -0.0 ## LSUF }, \ 23947+ { "0e-1000000", 0.0 ## LSUF }, \ 23948+ { "-0e-1000000", -0.0 ## LSUF }, \ 23949+ { "0,0e-1000000", 0.0 ## LSUF }, \ 23950+ { "-0,0e-1000000", -0.0 ## LSUF }, \ 23951+ }; \ 23952+ \ 23953+ \ 23954+static int \ 23955+test_strto ## FSUF (void) \ 23956+{ \ 23957+ int status = 0; \ 23958+ \ 23959+ for (int i = 0; \ 23960+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ 23961+ ++i) \ 23962+ { \ 23963+ char *ep; \ 23964+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].in, &ep); \ 23965+ \ 23966+ if (*ep != '\0') \ 23967+ { \ 23968+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \ 23969+ status = 1; \ 23970+ } \ 23971+ \ 23972+ if (r != tests_strto ## FSUF[i].expected \ 23973+ || (copysign ## CSUF (10.0 ## LSUF, r) \ 23974+ != copysign ## CSUF (10.0 ## LSUF, \ 23975+ tests_strto ## FSUF[i].expected))) \ 23976+ { \ 23977+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ 23978+ FTOSTR (buf1, sizeof (buf1), "%g", r); \ 23979+ FTOSTR (buf2, sizeof (buf2), "%g", \ 23980+ tests_strto ## FSUF[i].expected); \ 23981+ printf ("%d: got wrong results %s, expected %s\n", \ 23982+ i, buf1, buf2); \ 23983+ status = 1; \ 23984+ } \ 23985+ } \ 23986+ \ 23987+ return status; \ 23988+} 23989 23990+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) 23991 23992 static int 23993 do_test (void) 23994@@ -61,29 +101,7 @@ do_test (void) 23995 return 1; 23996 } 23997 23998- int status = 0; 23999- 24000- for (int i = 0; i < NTESTS; ++i) 24001- { 24002- char *ep; 24003- double r = strtod (tests[i].in, &ep); 24004- 24005- if (*ep != '\0') 24006- { 24007- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); 24008- status = 1; 24009- } 24010- 24011- if (r != tests[i].expected 24012- || copysign (10.0, r) != copysign (10.0, tests[i].expected)) 24013- { 24014- printf ("%d: got wrong results %g, expected %g\n", 24015- i, r, tests[i].expected); 24016- status = 1; 24017- } 24018- } 24019- 24020- return status; 24021+ return STRTOD_TEST_FOREACH (test_strto); 24022 } 24023 24024 #include <support/test-driver.c> 24025 24026commit 8f40dfbe2ad8a4a2d2fc3bbe01d289037d113ced 24027Author: Joseph Myers <josmyers@redhat.com> 24028Date: Fri Sep 20 23:24:02 2024 +0000 24029 24030 Add more tests of strtod end pointer 24031 24032 Although there are some tests in tst-strtod2 and tst-strtod3 for the 24033 end pointer provided by strtod when it doesn't parse the whole string, 24034 they aren't very thorough. Add tests of more such cases to 24035 tst-strtod2. 24036 24037 Tested for x86_64. 24038 24039 (cherry picked from commit b5d3737b305525315e0c7c93ca49eadc868eabd5) 24040 24041diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c 24042index 2cb0953fa9..c84bd792c1 100644 24043--- a/stdlib/tst-strtod2.c 24044+++ b/stdlib/tst-strtod2.c 24045@@ -1,3 +1,4 @@ 24046+#include <math.h> 24047 #include <stdio.h> 24048 #include <stdlib.h> 24049 24050@@ -17,10 +18,46 @@ struct test_strto ## FSUF \ 24051 { "0x.0y", 0.0 ## LSUF, 4 }, \ 24052 { ".y", 0.0 ## LSUF, 0 }, \ 24053 { "0.y", 0.0 ## LSUF, 2 }, \ 24054- { ".0y", 0.0 ## LSUF, 2 } \ 24055+ { ".0y", 0.0 ## LSUF, 2 }, \ 24056+ { "1.0e", 1.0 ## LSUF, 3 }, \ 24057+ { "1.0e+", 1.0 ## LSUF, 3 }, \ 24058+ { "1.0e-", 1.0 ## LSUF, 3 }, \ 24059+ { "1.0ex", 1.0 ## LSUF, 3 }, \ 24060+ { "1.0e+x", 1.0 ## LSUF, 3 }, \ 24061+ { "1.0e-x", 1.0 ## LSUF, 3 }, \ 24062+ { "0x1p", 1.0 ## LSUF, 3 }, \ 24063+ { "0x1p+", 1.0 ## LSUF, 3 }, \ 24064+ { "0x1p-", 1.0 ## LSUF, 3 }, \ 24065+ { "0x1px", 1.0 ## LSUF, 3 }, \ 24066+ { "0x1p+x", 1.0 ## LSUF, 3 }, \ 24067+ { "0x1p-x", 1.0 ## LSUF, 3 }, \ 24068+ { "INFx", INFINITY, 3 }, \ 24069+ { "infx", INFINITY, 3 }, \ 24070+ { "INFINITx", INFINITY, 3 }, \ 24071+ { "infinitx", INFINITY, 3 }, \ 24072+ { "INFINITYY", INFINITY, 8 }, \ 24073+ { "infinityy", INFINITY, 8 }, \ 24074+ { "NANx", NAN, 3 }, \ 24075+ { "nanx", NAN, 3 }, \ 24076+ { "NAN(", NAN, 3 }, \ 24077+ { "nan(", NAN, 3 }, \ 24078+ { "NAN(x", NAN, 3 }, \ 24079+ { "nan(x", NAN, 3 }, \ 24080+ { "NAN(x)y", NAN, 6 }, \ 24081+ { "nan(x)y", NAN, 6 }, \ 24082+ { "NAN(*)y", NAN, 3 }, \ 24083+ { "nan(*)y", NAN, 3 } \ 24084 }; \ 24085 \ 24086 static int \ 24087+compare_strto ## FSUF (FTYPE x, FTYPE y) \ 24088+{ \ 24089+ if (isnan (x) && isnan (y)) \ 24090+ return 1; \ 24091+ return x == y; \ 24092+} \ 24093+ \ 24094+static int \ 24095 test_strto ## FSUF (void) \ 24096 { \ 24097 int status = 0; \ 24098@@ -30,7 +67,7 @@ test_strto ## FSUF (void) \ 24099 { \ 24100 char *ep; \ 24101 FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \ 24102- if (r != tests_strto ## FSUF[i].result) \ 24103+ if (!compare_strto ## FSUF (r, tests_strto ## FSUF[i].result)) \ 24104 { \ 24105 char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ 24106 FTOSTR (buf1, sizeof (buf1), "%g", r); \ 24107 24108commit cc256952ecb07789c423dff9712eb7a38f80e963 24109Author: Joseph Myers <josmyers@redhat.com> 24110Date: Fri Sep 20 23:24:45 2024 +0000 24111 24112 Add tests of more strtod special cases 24113 24114 There is very little test coverage of inputs to strtod-family 24115 functions that don't contain anything that can be parsed as a number 24116 (one test of ".y" in tst-strtod2), and none that I can see of skipping 24117 initial whitespace. Add some tests of these things to tst-strtod2. 24118 24119 Tested for x86_64. 24120 24121 (cherry picked from commit 378039ca578c2ea93095a1e710d96f58c68a3997) 24122 24123diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c 24124index c84bd792c1..d00bc13323 100644 24125--- a/stdlib/tst-strtod2.c 24126+++ b/stdlib/tst-strtod2.c 24127@@ -31,6 +31,20 @@ struct test_strto ## FSUF \ 24128 { "0x1px", 1.0 ## LSUF, 3 }, \ 24129 { "0x1p+x", 1.0 ## LSUF, 3 }, \ 24130 { "0x1p-x", 1.0 ## LSUF, 3 }, \ 24131+ { "", 0.0 ## LSUF, 0 }, \ 24132+ { ".", 0.0 ## LSUF, 0 }, \ 24133+ { "-", 0.0 ## LSUF, 0 }, \ 24134+ { "-.", 0.0 ## LSUF, 0 }, \ 24135+ { ".e", 0.0 ## LSUF, 0 }, \ 24136+ { "-.e", 0.0 ## LSUF, 0 }, \ 24137+ { " \t", 0.0 ## LSUF, 0 }, \ 24138+ { " \t.", 0.0 ## LSUF, 0 }, \ 24139+ { " \t-", 0.0 ## LSUF, 0 }, \ 24140+ { " \t-.", 0.0 ## LSUF, 0 }, \ 24141+ { " \t.e", 0.0 ## LSUF, 0 }, \ 24142+ { " \t-.e", 0.0 ## LSUF, 0 }, \ 24143+ { " \t\f\r\n\v1", 1.0 ## LSUF, 7 }, \ 24144+ { " \t\f\r\n\v-1.5e2", -150.0 ## LSUF, 12 }, \ 24145 { "INFx", INFINITY, 3 }, \ 24146 { "infx", INFINITY, 3 }, \ 24147 { "INFINITx", INFINITY, 3 }, \ 24148 24149commit 5c06c6e0b5078ffb0aa0c09bac79f086145e0897 24150Author: H.J. Lu <hjl.tools@gmail.com> 24151Date: Sat Sep 7 08:32:32 2024 -0700 24152 24153 libio: Set _vtable_offset before calling _IO_link_in [BZ #32148] 24154 24155 Since _IO_vtable_offset is used to detect the old binaries, set it 24156 in _IO_old_file_init_internal before calling _IO_link_in which checks 24157 _IO_vtable_offset. Add a glibc 2.0 test with copy relocation on 24158 _IO_stderr_@GLIBC_2.0 to verify that fopen won't cause memory corruption. 24159 This fixes BZ #32148. 24160 24161 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> 24162 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com> 24163 (cherry picked from commit 9dfea3de7f690bff70e3c6eb346b9ad082bb2e35) 24164 24165diff --git a/libio/Makefile b/libio/Makefile 24166index 6a507b67ea..5292baa4e0 100644 24167--- a/libio/Makefile 24168+++ b/libio/Makefile 24169@@ -286,11 +286,18 @@ endif 24170 ifeq ($(build-shared),yes) 24171 aux += oldfileops oldstdfiles 24172 tests += \ 24173+ tst-fopen-compat \ 24174 tst-stderr-compat \ 24175 # tests 24176 tests-2.0 += \ 24177+ tst-fopen-compat \ 24178 tst-stderr-compat \ 24179 # tests-2.0 24180+ 24181+tst-fopen-compat-ARGS = tst-fopen-compat.c 24182+# Disable PIE to trigger copy relocation. 24183+CFLAGS-tst-fopen-compat.c += -fno-pie 24184+tst-fopen-compat-no-pie = yes 24185 endif 24186 24187 shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \ 24188diff --git a/libio/oldfileops.c b/libio/oldfileops.c 24189index 97148dba9b..8f775c9094 100644 24190--- a/libio/oldfileops.c 24191+++ b/libio/oldfileops.c 24192@@ -103,9 +103,11 @@ _IO_old_file_init_internal (struct _IO_FILE_plus *fp) 24193 fp->file._old_offset = _IO_pos_BAD; 24194 fp->file._flags |= CLOSED_FILEBUF_FLAGS; 24195 24196- _IO_link_in (fp); 24197+ /* NB: _vtable_offset must be set before calling _IO_link_in since 24198+ _IO_vtable_offset is used to detect the old binaries. */ 24199 fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE) 24200 - (int) sizeof (struct _IO_FILE_complete)); 24201+ _IO_link_in (fp); 24202 fp->file._fileno = -1; 24203 24204 if (&_IO_stdin_used != NULL || !_IO_legacy_file ((FILE *) fp)) 24205diff --git a/libio/tst-fopen-compat.c b/libio/tst-fopen-compat.c 24206new file mode 100644 24207index 0000000000..f241b61043 24208--- /dev/null 24209+++ b/libio/tst-fopen-compat.c 24210@@ -0,0 +1,85 @@ 24211+/* Verify that fopen works with copy relocation on _IO_stderr_ in binaries 24212+ linked with glibc 2.0. 24213+ Copyright (C) 2024 Free Software Foundation, Inc. 24214+ This file is part of the GNU C Library. 24215+ 24216+ The GNU C Library is free software; you can redistribute it and/or 24217+ modify it under the terms of the GNU Lesser General Public 24218+ License as published by the Free Software Foundation; either 24219+ version 2.1 of the License, or (at your option) any later version. 24220+ 24221+ The GNU C Library is distributed in the hope that it will be useful, 24222+ but WITHOUT ANY WARRANTY; without even the implied warranty of 24223+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 24224+ Lesser General Public License for more details. 24225+ 24226+ You should have received a copy of the GNU Lesser General Public 24227+ License along with the GNU C Library; if not, see 24228+ <https://www.gnu.org/licenses/>. */ 24229+ 24230+#include <shlib-compat.h> 24231+ 24232+#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) 24233+# define _LIBC 24234+# define _IO_USE_OLD_IO_FILE 24235+# include <stdio.h> 24236+# include <string.h> 24237+# include <unistd.h> 24238+# include <limits.h> 24239+# include <sys/stat.h> 24240+# include <support/check.h> 24241+ 24242+struct _IO_jump_t; 24243+ 24244+struct _IO_FILE_plus 24245+{ 24246+ FILE file; 24247+ const struct _IO_jump_t *vtable; 24248+}; 24249+ 24250+extern struct _IO_FILE_plus _IO_stderr_; 24251+compat_symbol_reference (libc, _IO_stderr_, _IO_stderr_, GLIBC_2_0); 24252+compat_symbol_reference (libc, fopen, fopen, GLIBC_2_0); 24253+compat_symbol_reference (libc, fclose, fclose, GLIBC_2_0); 24254+ 24255+static int 24256+do_test (int argc, char *argv[]) 24257+{ 24258+ static char filename[PATH_MAX + 1]; 24259+ struct stat st; 24260+ char *name = NULL; 24261+ int i; 24262+ 24263+ /* Try to trigger copy relocation. */ 24264+ TEST_VERIFY_EXIT (_IO_stderr_.file._fileno == STDERR_FILENO); 24265+ 24266+ for (i = 1; i < argc; i++) 24267+ { 24268+ name = argv[i]; 24269+ if (stat (name, &st) == 0) 24270+ { 24271+ TEST_VERIFY_EXIT (strlen (name) <= PATH_MAX); 24272+ break; 24273+ } 24274+ } 24275+ TEST_VERIFY_EXIT (name != NULL); 24276+ 24277+ strcpy (filename, name); 24278+ FILE *fp = fopen (filename, "r"); 24279+ TEST_VERIFY_EXIT (strcmp (filename, name) == 0); 24280+ TEST_VERIFY_EXIT (fp != NULL); 24281+ TEST_VERIFY_EXIT (fclose (fp) == 0); 24282+ return 0; 24283+} 24284+#else 24285+# include <support/test-driver.h> 24286+ 24287+static int 24288+do_test (int argc, char *argv[]) 24289+{ 24290+ return EXIT_UNSUPPORTED; 24291+} 24292+#endif 24293+ 24294+#define TEST_FUNCTION_ARGV do_test 24295+#include <support/test-driver.c> 24296 24297commit 85e5850f2f4ea5f304be5356ecb7a15998766a4e 24298Author: Joseph Myers <josmyers@redhat.com> 24299Date: Fri Sep 20 23:25:32 2024 +0000 24300 24301 Make tst-strtod-underflow type-generic 24302 24303 The test tst-strtod-underflow covers various edge cases close to the 24304 underflow threshold for strtod (especially cases where underflow on 24305 architectures with after-rounding tininess detection depends on the 24306 rounding mode). Make it use the type-generic machinery, with 24307 corresponding test inputs for each supported floating-point format, so 24308 that other functions in the strtod family are tested for underflow 24309 edge cases as well. 24310 24311 Tested for x86_64. 24312 24313 (cherry picked from commit 94ca2c0894f0e1b62625c369cc598a2b9236622c) 24314 24315diff --git a/stdlib/tst-strtod-underflow.c b/stdlib/tst-strtod-underflow.c 24316index a5ced18599..8598b95b6d 100644 24317--- a/stdlib/tst-strtod-underflow.c 24318+++ b/stdlib/tst-strtod-underflow.c 24319@@ -17,6 +17,10 @@ 24320 License along with the GNU C Library; if not, see 24321 <https://www.gnu.org/licenses/>. */ 24322 24323+/* Defining _LIBC_TEST ensures long double math functions are 24324+ declared in the headers. */ 24325+#define _LIBC_TEST 1 24326+#define __STDC_WANT_IEC_60559_TYPES_EXT__ 24327 #include <errno.h> 24328 #include <fenv.h> 24329 #include <float.h> 24330@@ -25,6 +29,60 @@ 24331 #include <stdlib.h> 24332 #include <tininess.h> 24333 24334+#include "tst-strtod.h" 24335+ 24336+/* Logic for selecting between tests for different formats is as in 24337+ tst-strtod-skeleton.c, but here it is selecting string inputs with 24338+ different underflow properties, rather than generated test 24339+ data. */ 24340+ 24341+#define _CONCAT(a, b) a ## b 24342+#define CONCAT(a, b) _CONCAT (a, b) 24343+ 24344+#define MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 24345+ const char *s_ ## FSUF; 24346+ 24347+#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 24348+# define CHOOSE_ld(f,d,...) d 24349+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381 24350+# define CHOOSE_ld(f,d,ld64i,...) ld64i 24351+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382 24352+# define CHOOSE_ld(f,d,ld64i,ld64m,...) ld64m 24353+#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024 24354+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,...) ld106 24355+#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 24356+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,ld113,...) ld113 24357+#else 24358+# error "unknown long double format" 24359+#endif 24360+ 24361+#define CHOOSE_f(f,...) f 24362+#define CHOOSE_f32(f,...) f 24363+#define CHOOSE_d(f,d,...) d 24364+#define CHOOSE_f64(f,d,...) d 24365+#define CHOOSE_f32x(f,d,...) d 24366+#define CHOOSE_f128(f,d,ld64i,ld64m,ld106,ld113,...) ld113 24367+ 24368+#if __HAVE_FLOAT64X 24369+# if FLT64X_MANT_DIG == 113 && FLT64X_MAX_EXP == 16384 24370+# define CHOOSE_f64x(f,d,ld64i,ld64m,ld106,ld113,...) ld113 24371+# elif (FLT64X_MANT_DIG == 64 \ 24372+ && FLT64X_MAX_EXP == 16384 \ 24373+ && FLT64X_MIN_EXP == -16381) 24374+# define CHOOSE_f64x(f,d,ld64i,...) ld64i 24375+# else 24376+# error "unknown _Float64x format" 24377+# endif 24378+#endif 24379+ 24380+#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \ 24381+ CHOOSE_ ## FSUF (__VA_ARGS__), 24382+#define XNTRY(...) \ 24383+ GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__) 24384+ 24385+#define TEST(f, d, ld64i, ld64m, ld106, ld113, u) \ 24386+ { XNTRY(f, d, ld64i, ld64m, ld106, ld113) u } 24387+ 24388 enum underflow_case 24389 { 24390 /* Result is exact or outside the subnormal range. */ 24391@@ -55,38 +113,194 @@ enum underflow_case 24392 24393 struct test 24394 { 24395- const char *s; 24396+ GEN_TEST_STRTOD_FOREACH (MEMBER) 24397 enum underflow_case c; 24398 }; 24399 24400 static const struct test tests[] = 24401 { 24402- { "0x1p-1022", UNDERFLOW_NONE }, 24403- { "-0x1p-1022", UNDERFLOW_NONE }, 24404- { "0x0p-10000000000000000000000000", UNDERFLOW_NONE }, 24405- { "-0x0p-10000000000000000000000000", UNDERFLOW_NONE }, 24406- { "0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS }, 24407- { "-0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS }, 24408- { "0x1.000000000000000000001p-1022", UNDERFLOW_NONE }, 24409- { "-0x1.000000000000000000001p-1022", UNDERFLOW_NONE }, 24410- { "0x1p-1075", UNDERFLOW_ALWAYS }, 24411- { "-0x1p-1075", UNDERFLOW_ALWAYS }, 24412- { "0x1p-1023", UNDERFLOW_NONE }, 24413- { "-0x1p-1023", UNDERFLOW_NONE }, 24414- { "0x1p-1074", UNDERFLOW_NONE }, 24415- { "-0x1p-1074", UNDERFLOW_NONE }, 24416- { "0x1.ffffffffffffep-1023", UNDERFLOW_NONE }, 24417- { "-0x1.ffffffffffffep-1023", UNDERFLOW_NONE }, 24418- { "0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS }, 24419- { "-0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS }, 24420- { "0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_UPWARD }, 24421- { "-0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_DOWNWARD }, 24422- { "0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_UPWARD }, 24423- { "-0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_DOWNWARD }, 24424- { "0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO }, 24425- { "-0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_UPWARD_ZERO }, 24426- { "0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO }, 24427- { "-0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_UPWARD_ZERO }, 24428+ TEST ("0x1p-126", 24429+ "0x1p-1022", 24430+ "0x1p-16382", 24431+ "0x1p-16383", 24432+ "0x1p-969", 24433+ "0x1p-16382", 24434+ UNDERFLOW_NONE), 24435+ TEST ("-0x1p-126", 24436+ "-0x1p-1022", 24437+ "-0x1p-16382", 24438+ "-0x1p-16383", 24439+ "-0x1p-969", 24440+ "-0x1p-16382", 24441+ UNDERFLOW_NONE), 24442+ TEST ("0x0p-10000000000000000000000000", 24443+ "0x0p-10000000000000000000000000", 24444+ "0x0p-10000000000000000000000000", 24445+ "0x0p-10000000000000000000000000", 24446+ "0x0p-10000000000000000000000000", 24447+ "0x0p-10000000000000000000000000", 24448+ UNDERFLOW_NONE), 24449+ TEST ("-0x0p-10000000000000000000000000", 24450+ "-0x0p-10000000000000000000000000", 24451+ "-0x0p-10000000000000000000000000", 24452+ "-0x0p-10000000000000000000000000", 24453+ "-0x0p-10000000000000000000000000", 24454+ "-0x0p-10000000000000000000000000", 24455+ UNDERFLOW_NONE), 24456+ TEST ("0x1p-10000000000000000000000000", 24457+ "0x1p-10000000000000000000000000", 24458+ "0x1p-10000000000000000000000000", 24459+ "0x1p-10000000000000000000000000", 24460+ "0x1p-10000000000000000000000000", 24461+ "0x1p-10000000000000000000000000", 24462+ UNDERFLOW_ALWAYS), 24463+ TEST ("-0x1p-10000000000000000000000000", 24464+ "-0x1p-10000000000000000000000000", 24465+ "-0x1p-10000000000000000000000000", 24466+ "-0x1p-10000000000000000000000000", 24467+ "-0x1p-10000000000000000000000000", 24468+ "-0x1p-10000000000000000000000000", 24469+ UNDERFLOW_ALWAYS), 24470+ TEST ("0x1.000000000000000000001p-126", 24471+ "0x1.000000000000000000001p-1022", 24472+ "0x1.000000000000000000001p-16382", 24473+ "0x1.000000000000000000001p-16383", 24474+ "0x1.000000000000000000001p-969", 24475+ "0x1.00000000000000000000000000000000000000001p-16382", 24476+ UNDERFLOW_NONE), 24477+ TEST ("-0x1.000000000000000000001p-126", 24478+ "-0x1.000000000000000000001p-1022", 24479+ "-0x1.000000000000000000001p-16382", 24480+ "-0x1.000000000000000000001p-16383", 24481+ "-0x1.000000000000000000001p-969", 24482+ "-0x1.00000000000000000000000000000000000000001p-16382", 24483+ UNDERFLOW_NONE), 24484+ TEST ("0x1p-150", 24485+ "0x1p-1075", 24486+ "0x1p-16446", 24487+ "0x1p-16447", 24488+ "0x1p-1075", 24489+ "0x1p-16495", 24490+ UNDERFLOW_ALWAYS), 24491+ TEST ("-0x1p-150", 24492+ "-0x1p-1075", 24493+ "-0x1p-16446", 24494+ "-0x1p-16447", 24495+ "-0x1p-1075", 24496+ "-0x1p-16495", 24497+ UNDERFLOW_ALWAYS), 24498+ TEST ("0x1p-127", 24499+ "0x1p-1023", 24500+ "0x1p-16383", 24501+ "0x1p-16384", 24502+ "0x1p-970", 24503+ "0x1p-16383", 24504+ UNDERFLOW_NONE), 24505+ TEST ("-0x1p-127", 24506+ "-0x1p-1023", 24507+ "-0x1p-16383", 24508+ "-0x1p-16384", 24509+ "-0x1p-970", 24510+ "-0x1p-16383", 24511+ UNDERFLOW_NONE), 24512+ TEST ("0x1p-149", 24513+ "0x1p-1074", 24514+ "0x1p-16445", 24515+ "0x1p-16446", 24516+ "0x1p-1074", 24517+ "0x1p-16494", 24518+ UNDERFLOW_NONE), 24519+ TEST ("-0x1p-149", 24520+ "-0x1p-1074", 24521+ "-0x1p-16445", 24522+ "-0x1p-16446", 24523+ "-0x1p-1074", 24524+ "-0x1p-16494", 24525+ UNDERFLOW_NONE), 24526+ TEST ("0x1.fffffcp-127", 24527+ "0x1.ffffffffffffep-1023", 24528+ "0x1.fffffffffffffffcp-16383", 24529+ "0x1.fffffffffffffffcp-16384", 24530+ "0x1.ffffffffffffffffffffffffffp-970", 24531+ "0x1.fffffffffffffffffffffffffffep-16383", 24532+ UNDERFLOW_NONE), 24533+ TEST ("-0x1.fffffcp-127", 24534+ "-0x1.ffffffffffffep-1023", 24535+ "-0x1.fffffffffffffffcp-16383", 24536+ "-0x1.fffffffffffffffcp-16384", 24537+ "-0x1.ffffffffffffffffffffffffffp-970", 24538+ "-0x1.fffffffffffffffffffffffffffep-16383", 24539+ UNDERFLOW_NONE), 24540+ TEST ("0x1.fffffep-127", 24541+ "0x1.fffffffffffffp-1023", 24542+ "0x1.fffffffffffffffep-16383", 24543+ "0x1.fffffffffffffffep-16384", 24544+ "0x1.ffffffffffffffffffffffffff8p-970", 24545+ "0x1.ffffffffffffffffffffffffffffp-16383", 24546+ UNDERFLOW_ALWAYS), 24547+ TEST ("-0x1.fffffep-127", 24548+ "-0x1.fffffffffffffp-1023", 24549+ "-0x1.fffffffffffffffep-16383", 24550+ "-0x1.fffffffffffffffep-16384", 24551+ "-0x1.ffffffffffffffffffffffffff8p-970", 24552+ "-0x1.ffffffffffffffffffffffffffffp-16383", 24553+ UNDERFLOW_ALWAYS), 24554+ TEST ("0x1.fffffe0001p-127", 24555+ "0x1.fffffffffffff0001p-1023", 24556+ "0x1.fffffffffffffffe0001p-16383", 24557+ "0x1.fffffffffffffffe0001p-16384", 24558+ "0x1.ffffffffffffffffffffffffff80001p-970", 24559+ "0x1.ffffffffffffffffffffffffffff0001p-16383", 24560+ UNDERFLOW_EXCEPT_UPWARD), 24561+ TEST ("-0x1.fffffe0001p-127", 24562+ "-0x1.fffffffffffff0001p-1023", 24563+ "-0x1.fffffffffffffffe0001p-16383", 24564+ "-0x1.fffffffffffffffe0001p-16384", 24565+ "-0x1.ffffffffffffffffffffffffff80001p-970", 24566+ "-0x1.ffffffffffffffffffffffffffff0001p-16383", 24567+ UNDERFLOW_EXCEPT_DOWNWARD), 24568+ TEST ("0x1.fffffeffffp-127", 24569+ "0x1.fffffffffffff7fffp-1023", 24570+ "0x1.fffffffffffffffeffffp-16383", 24571+ "0x1.fffffffffffffffeffffp-16384", 24572+ "0x1.ffffffffffffffffffffffffffbffffp-970", 24573+ "0x1.ffffffffffffffffffffffffffff7fffp-16383", 24574+ UNDERFLOW_EXCEPT_UPWARD), 24575+ TEST ("-0x1.fffffeffffp-127", 24576+ "-0x1.fffffffffffff7fffp-1023", 24577+ "-0x1.fffffffffffffffeffffp-16383", 24578+ "-0x1.fffffffffffffffeffffp-16384", 24579+ "-0x1.ffffffffffffffffffffffffffbffffp-970", 24580+ "-0x1.ffffffffffffffffffffffffffff7fffp-16383", 24581+ UNDERFLOW_EXCEPT_DOWNWARD), 24582+ TEST ("0x1.ffffffp-127", 24583+ "0x1.fffffffffffff8p-1023", 24584+ "0x1.ffffffffffffffffp-16383", 24585+ "0x1.ffffffffffffffffp-16384", 24586+ "0x1.ffffffffffffffffffffffffffcp-970", 24587+ "0x1.ffffffffffffffffffffffffffff8p-16383", 24588+ UNDERFLOW_ONLY_DOWNWARD_ZERO), 24589+ TEST ("-0x1.ffffffp-127", 24590+ "-0x1.fffffffffffff8p-1023", 24591+ "-0x1.ffffffffffffffffp-16383", 24592+ "-0x1.ffffffffffffffffp-16384", 24593+ "-0x1.ffffffffffffffffffffffffffcp-970", 24594+ "-0x1.ffffffffffffffffffffffffffff8p-16383", 24595+ UNDERFLOW_ONLY_UPWARD_ZERO), 24596+ TEST ("0x1.ffffffffffp-127", 24597+ "0x1.fffffffffffffffffp-1023", 24598+ "0x1.ffffffffffffffffffffp-16383", 24599+ "0x1.ffffffffffffffffffffp-16384", 24600+ "0x1.ffffffffffffffffffffffffffffffp-970", 24601+ "0x1.ffffffffffffffffffffffffffffffffp-16383", 24602+ UNDERFLOW_ONLY_DOWNWARD_ZERO), 24603+ TEST ("-0x1.ffffffffffp-127", 24604+ "-0x1.fffffffffffffffffp-1023", 24605+ "-0x1.ffffffffffffffffffffp-16383", 24606+ "-0x1.ffffffffffffffffffffp-16384", 24607+ "-0x1.ffffffffffffffffffffffffffffffp-970", 24608+ "-0x1.ffffffffffffffffffffffffffffffffp-16383", 24609+ UNDERFLOW_ONLY_UPWARD_ZERO), 24610 }; 24611 24612 /* Return whether to expect underflow from a particular testcase, in a 24613@@ -133,39 +347,62 @@ static bool support_underflow_exception = false; 24614 volatile double d = DBL_MIN; 24615 volatile double dd; 24616 24617-static int 24618-test_in_one_mode (const char *s, enum underflow_case c, int rm, 24619- const char *mode_name) 24620+static bool 24621+test_got_fe_underflow (void) 24622 { 24623- int result = 0; 24624- feclearexcept (FE_ALL_EXCEPT); 24625- errno = 0; 24626- double d = strtod (s, NULL); 24627- int got_errno = errno; 24628 #ifdef FE_UNDERFLOW 24629- bool got_fe_underflow = fetestexcept (FE_UNDERFLOW) != 0; 24630+ return fetestexcept (FE_UNDERFLOW) != 0; 24631 #else 24632- bool got_fe_underflow = false; 24633+ return false; 24634 #endif 24635- printf ("strtod (%s) (%s) returned %a, errno = %d, %sunderflow exception\n", 24636- s, mode_name, d, got_errno, got_fe_underflow ? "" : "no "); 24637- bool this_expect_underflow = expect_underflow (c, rm); 24638- if (got_errno != 0 && got_errno != ERANGE) 24639- { 24640- puts ("FAIL: errno neither 0 nor ERANGE"); 24641- result = 1; 24642- } 24643- else if (this_expect_underflow != (errno == ERANGE)) 24644- { 24645- puts ("FAIL: underflow from errno differs from expectations"); 24646- result = 1; 24647- } 24648- if (support_underflow_exception && got_fe_underflow != this_expect_underflow) 24649- { 24650- puts ("FAIL: underflow from exceptions differs from expectations"); 24651- result = 1; 24652- } 24653- return result; 24654+} 24655+ 24656+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ 24657+static int \ 24658+test_strto ## FSUF (int i, int rm, const char *mode_name) \ 24659+{ \ 24660+ const char *s = tests[i].s_ ## FSUF; \ 24661+ enum underflow_case c = tests[i].c; \ 24662+ int result = 0; \ 24663+ feclearexcept (FE_ALL_EXCEPT); \ 24664+ errno = 0; \ 24665+ FTYPE d = strto ## FSUF (s, NULL); \ 24666+ int got_errno = errno; \ 24667+ bool got_fe_underflow = test_got_fe_underflow (); \ 24668+ char buf[FSTRLENMAX]; \ 24669+ FTOSTR (buf, sizeof (buf), "%a", d); \ 24670+ printf ("strto" #FSUF \ 24671+ " (%s) (%s) returned %s, errno = %d, " \ 24672+ "%sunderflow exception\n", \ 24673+ s, mode_name, buf, got_errno, \ 24674+ got_fe_underflow ? "" : "no "); \ 24675+ bool this_expect_underflow = expect_underflow (c, rm); \ 24676+ if (got_errno != 0 && got_errno != ERANGE) \ 24677+ { \ 24678+ puts ("FAIL: errno neither 0 nor ERANGE"); \ 24679+ result = 1; \ 24680+ } \ 24681+ else if (this_expect_underflow != (errno == ERANGE)) \ 24682+ { \ 24683+ puts ("FAIL: underflow from errno differs from expectations"); \ 24684+ result = 1; \ 24685+ } \ 24686+ if (support_underflow_exception \ 24687+ && got_fe_underflow != this_expect_underflow) \ 24688+ { \ 24689+ puts ("FAIL: underflow from exceptions " \ 24690+ "differs from expectations"); \ 24691+ result = 1; \ 24692+ } \ 24693+ return result; \ 24694+} 24695+ 24696+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) 24697+ 24698+static int 24699+test_in_one_mode (size_t i, int rm, const char *mode_name) 24700+{ 24701+ return STRTOD_TEST_FOREACH (test_strto, i, rm, mode_name); 24702 } 24703 24704 static int 24705@@ -191,12 +428,12 @@ do_test (void) 24706 #endif 24707 for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) 24708 { 24709- result |= test_in_one_mode (tests[i].s, tests[i].c, fe_tonearest, 24710+ result |= test_in_one_mode (i, fe_tonearest, 24711 "default rounding mode"); 24712 #ifdef FE_DOWNWARD 24713 if (!fesetround (FE_DOWNWARD)) 24714 { 24715- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_DOWNWARD, 24716+ result |= test_in_one_mode (i, FE_DOWNWARD, 24717 "FE_DOWNWARD"); 24718 fesetround (save_round_mode); 24719 } 24720@@ -204,7 +441,7 @@ do_test (void) 24721 #ifdef FE_TOWARDZERO 24722 if (!fesetround (FE_TOWARDZERO)) 24723 { 24724- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_TOWARDZERO, 24725+ result |= test_in_one_mode (i, FE_TOWARDZERO, 24726 "FE_TOWARDZERO"); 24727 fesetround (save_round_mode); 24728 } 24729@@ -212,7 +449,7 @@ do_test (void) 24730 #ifdef FE_UPWARD 24731 if (!fesetround (FE_UPWARD)) 24732 { 24733- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_UPWARD, 24734+ result |= test_in_one_mode (i, FE_UPWARD, 24735 "FE_UPWARD"); 24736 fesetround (save_round_mode); 24737 } 24738 24739commit 3a34851103d554b2c9b269ecae111648f9d7bb6d 24740Author: Florian Weimer <fweimer@redhat.com> 24741Date: Mon Oct 28 14:45:30 2024 +0100 24742 24743 elf: Change ldconfig auxcache magic number (bug 32231) 24744 24745 In commit c628c2296392ed3bf2cb8d8470668e64fe53389f (elf: Remove 24746 ldconfig kernel version check), the layout of auxcache entries 24747 changed because the osversion field was removed from 24748 struct aux_cache_file_entry. However, AUX_CACHEMAGIC was not 24749 changed, so existing files are still used, potentially leading 24750 to unintended ldconfig behavior. This commit changes AUX_CACHEMAGIC, 24751 so that the file is regenerated. 24752 24753 Reported-by: DJ Delorie <dj@redhat.com> 24754 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> 24755 (cherry picked from commit 0a536f6e2f76e3ef581b3fd9af1e5cf4ddc7a5a2) 24756 24757diff --git a/NEWS b/NEWS 24758index 9033335db1..928c516bec 100644 24759--- a/NEWS 24760+++ b/NEWS 24761@@ -17,6 +17,7 @@ The following bugs are resolved with this release: 24762 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces 24763 [32052] Name space violation in fortify wrappers 24764 [32137] libio: Attempt wide backup free only for non-legacy code 24765+ [32231] elf: Change ldconfig auxcache magic number 24766 24767 Version 2.40 24768 24769diff --git a/elf/cache.c b/elf/cache.c 24770index 8a618e11fa..62d681df42 100644 24771--- a/elf/cache.c 24772+++ b/elf/cache.c 24773@@ -820,7 +820,7 @@ struct aux_cache_entry 24774 struct aux_cache_entry *next; 24775 }; 24776 24777-#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-1.0" 24778+#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-2.0" 24779 24780 struct aux_cache_file_entry 24781 { 24782 24783commit 234458024300f0b4b430785999f33eddf059af6a 24784Author: Michael Karcher <Michael.Karcher@fu-berlin.de> 24785Date: Sun Jul 28 15:30:57 2024 +0200 24786 24787 Mitigation for "clone on sparc might fail with -EFAULT for no valid reason" (bz 31394) 24788 24789 It seems the kernel can not deal with uncommitted stack space in the area intended 24790 for the register window when executing the clone() system call. So create a nested 24791 frame (proxy for the kernel frame) and flush it from the processor to memory to 24792 force committing pages to the stack before invoking the system call. 24793 24794 Bug: https://www.mail-archive.com/debian-glibc@lists.debian.org/msg62592.html 24795 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31394 24796 See-also: https://lore.kernel.org/sparclinux/62f9be9d-a086-4134-9a9f-5df8822708af@mkarcher.dialup.fu-berlin.de/ 24797 Signed-off-by: Michael Karcher <sourceware-bugzilla@mkarcher.dialup.fu-berlin.de> 24798 Reviewed-by: DJ Delorie <dj@redhat.com> 24799 (cherry picked from commit faeaa3bc9f76030b9882ccfdee232fc0ca6dcb06) 24800 24801diff --git a/NEWS b/NEWS 24802index 928c516bec..dc815fb6d3 100644 24803--- a/NEWS 24804+++ b/NEWS 24805@@ -11,6 +11,7 @@ The following bugs are resolved with this release: 24806 24807 [27821] ungetc: Fix backup buffer leak on program exit 24808 [30081] resolv: Do not wait for non-existing second DNS response after error 24809+ [31394] clone on sparc might fail with -EFAULT for no valid reason 24810 [31717] elf: Avoid re-initializing already allocated TLS in dlopen 24811 [31890] resolv: Allow short error responses to match any DNS query 24812 [31968] mremap implementation in C does not handle arguments correctly 24813diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 24814index 748d25fcfe..c9cf9bb055 100644 24815--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 24816+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 24817@@ -28,6 +28,9 @@ 24818 .text 24819 ENTRY (__clone) 24820 save %sp,-96,%sp 24821+ save %sp,-96,%sp 24822+ flushw 24823+ restore 24824 cfi_def_cfa_register(%fp) 24825 cfi_window_save 24826 cfi_register(%o7, %i7) 24827diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S 24828index e5ff2cf1a0..370d51fda2 100644 24829--- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S 24830+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S 24831@@ -32,6 +32,9 @@ 24832 24833 ENTRY (__clone) 24834 save %sp, -192, %sp 24835+ save %sp, -192, %sp 24836+ flushw 24837+ restore 24838 cfi_def_cfa_register(%fp) 24839 cfi_window_save 24840 cfi_register(%o7, %i7) 24841 24842commit efb710034e4c5e734d100cc4ef1b1e27d4315825 24843Author: Adhemerval Zanella <adhemerval.zanella@linaro.org> 24844Date: Mon Sep 2 16:58:51 2024 -0300 24845 24846 linux: sparc: Fix clone for LEON/sparcv8 (BZ 31394) 24847 24848 The sparc clone mitigation (faeaa3bc9f76030) added the use of 24849 flushw, which is not support by LEON/sparcv8. As discussed on 24850 the libc-alpha, 'ta 3' is a working alternative [1]. 24851 24852 [1] https://sourceware.org/pipermail/libc-alpha/2024-August/158905.html 24853 24854 Checked with a build for sparcv8-linux-gnu targetting leon. 24855 24856 Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> 24857 (cherry picked from commit 5e8cfc5d625e6dd000a0371d21d792836ea7951a) 24858 24859diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 24860index c9cf9bb055..c84244f56b 100644 24861--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 24862+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S 24863@@ -29,7 +29,11 @@ 24864 ENTRY (__clone) 24865 save %sp,-96,%sp 24866 save %sp,-96,%sp 24867+#ifdef __sparcv9 24868 flushw 24869+#else 24870+ ta 3 24871+#endif 24872 restore 24873 cfi_def_cfa_register(%fp) 24874 cfi_window_save 24875 24876commit 626c048f32a979f77662bdcb1cca477c11d3f9c1 24877Author: Aurelien Jarno <aurelien@aurel32.net> 24878Date: Sun Nov 10 10:50:34 2024 +0100 24879 24880 elf: handle addition overflow in _dl_find_object_update_1 [BZ #32245] 24881 24882 The remaining_to_add variable can be 0 if (current_used + count) wraps, 24883 This is caught by GCC 14+ on hppa, which determines from there that 24884 target_seg could be be NULL when remaining_to_add is zero, which in 24885 turns causes a -Wstringop-overflow warning: 24886 24887 In file included from ../include/atomic.h:49, 24888 from dl-find_object.c:20: 24889 In function '_dlfo_update_init_seg', 24890 inlined from '_dl_find_object_update_1' at dl-find_object.c:689:30, 24891 inlined from '_dl_find_object_update' at dl-find_object.c:805:13: 24892 ../sysdeps/unix/sysv/linux/hppa/atomic-machine.h:44:4: error: '__atomic_store_4' writing 4 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=] 24893 44 | __atomic_store_n ((mem), (val), __ATOMIC_RELAXED); \ 24894 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 24895 dl-find_object.c:644:3: note: in expansion of macro 'atomic_store_relaxed' 24896 644 | atomic_store_relaxed (&seg->size, new_seg_size); 24897 | ^~~~~~~~~~~~~~~~~~~~ 24898 In function '_dl_find_object_update': 24899 cc1: note: destination object is likely at address zero 24900 24901 In practice, this is not possible as it represent counts of link maps. 24902 Link maps have sizes larger than 1 byte, so the sum of any two link map 24903 counts will always fit within a size_t without wrapping around. 24904 24905 This patch therefore adds a check on remaining_to_add == 0 and tell GCC 24906 that this can not happen using __builtin_unreachable. 24907 24908 Thanks to Andreas Schwab for the investigation. 24909 24910 Closes: BZ #32245 24911 Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> 24912 Tested-by: John David Anglin <dave.anglin@bell.net> 24913 Reviewed-by: Florian Weimer <fweimer@redhat.com> 24914 (cherry picked from commit 6c915c73d08028987232f6dc718f218c61113240) 24915 24916diff --git a/NEWS b/NEWS 24917index dc815fb6d3..bd0b3bd66a 100644 24918--- a/NEWS 24919+++ b/NEWS 24920@@ -19,6 +19,7 @@ The following bugs are resolved with this release: 24921 [32052] Name space violation in fortify wrappers 24922 [32137] libio: Attempt wide backup free only for non-legacy code 24923 [32231] elf: Change ldconfig auxcache magic number 24924+ [32245] glibc -Wstringop-overflow= build failure on hppa 24925 24926 Version 2.40 24927 24928diff --git a/elf/dl-find_object.c b/elf/dl-find_object.c 24929index 449302eda3..ae18b438d3 100644 24930--- a/elf/dl-find_object.c 24931+++ b/elf/dl-find_object.c 24932@@ -662,6 +662,14 @@ _dl_find_object_update_1 (struct link_map **loaded, size_t count) 24933 = _dlfo_loaded_mappings[!active_idx]; 24934 size_t remaining_to_add = current_used + count; 24935 24936+ /* remaining_to_add can be 0 if (current_used + count) wraps, but in practice 24937+ this is not possible as it represent counts of link maps. Link maps have 24938+ sizes larger than 1 byte, so the sum of any two link map counts will 24939+ always fit within a size_t without wrapping around. This check ensures 24940+ that target_seg is not erroneously considered potentially NULL by GCC. */ 24941+ if (remaining_to_add == 0) 24942+ __builtin_unreachable (); 24943+ 24944 /* Ensure that the new segment chain has enough space. */ 24945 { 24946 size_t new_allocated 24947 24948commit 9b9545ba27613fa41efdfa7965b6fc580bf1b919 24949Author: Michael Jeanson <mjeanson@efficios.com> 24950Date: Thu Nov 7 22:23:49 2024 +0100 24951 24952 nptl: initialize rseq area prior to registration 24953 24954 Per the rseq syscall documentation, 3 fields are required to be 24955 initialized by userspace prior to registration, they are 'cpu_id', 24956 'rseq_cs' and 'flags'. Since we have no guarantee that 'struct pthread' 24957 is cleared on all architectures, explicitly set those 3 fields prior to 24958 registration. 24959 24960 Signed-off-by: Michael Jeanson <mjeanson@efficios.com> 24961 Reviewed-by: Florian Weimer <fweimer@redhat.com> 24962 (cherry picked from commit 97f60abd25628425971f07e9b0e7f8eec0741235) 24963 24964diff --git a/nptl/descr.h b/nptl/descr.h 24965index 8cef95810c..c4bdd7757a 100644 24966--- a/nptl/descr.h 24967+++ b/nptl/descr.h 24968@@ -414,6 +414,8 @@ struct pthread 24969 { 24970 uint32_t cpu_id_start; 24971 uint32_t cpu_id; 24972+ uint64_t rseq_cs; 24973+ uint32_t flags; 24974 }; 24975 char pad[32]; /* Original rseq area size. */ 24976 } rseq_area __attribute__ ((aligned (32))); 24977diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h 24978index 7ea935b4ad..37a8f630b6 100644 24979--- a/sysdeps/unix/sysv/linux/rseq-internal.h 24980+++ b/sysdeps/unix/sysv/linux/rseq-internal.h 24981@@ -51,11 +51,21 @@ rseq_register_current_thread (struct pthread *self, bool do_rseq) 24982 /* The initial implementation used only 20 bytes out of 32, 24983 but still expected size 32. */ 24984 size = RSEQ_AREA_SIZE_INITIAL; 24985+ 24986+ /* Initialize the rseq fields that are read by the kernel on 24987+ registration, there is no guarantee that struct pthread is 24988+ cleared on all architectures. */ 24989+ THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_UNINITIALIZED); 24990+ THREAD_SETMEM (self, rseq_area.rseq_cs, 0); 24991+ THREAD_SETMEM (self, rseq_area.flags, 0); 24992+ 24993 int ret = INTERNAL_SYSCALL_CALL (rseq, &self->rseq_area, 24994 size, 0, RSEQ_SIG); 24995 if (!INTERNAL_SYSCALL_ERROR_P (ret)) 24996 return true; 24997 } 24998+ /* When rseq is disabled by tunables or the registration fails, inform 24999+ userspace by setting 'cpu_id' to RSEQ_CPU_ID_REGISTRATION_FAILED. */ 25000 THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED); 25001 return false; 25002 } 25003 25004commit 091dd12831792cef16eee24fe240c73a25b47a1d 25005Author: Michael Jeanson <mjeanson@efficios.com> 25006Date: Wed Nov 20 14:15:42 2024 -0500 25007 25008 nptl: initialize cpu_id_start prior to rseq registration 25009 25010 When adding explicit initialization of rseq fields prior to 25011 registration, I glossed over the fact that 'cpu_id_start' is also 25012 documented as initialized by user-space. 25013 25014 While current kernels don't validate the content of this field on 25015 registration, future ones could. 25016 25017 Signed-off-by: Michael Jeanson <mjeanson@efficios.com> 25018 Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> 25019 (cherry picked from commit d9f40387d3305d97e30a8cf8724218c42a63680a) 25020 25021diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h 25022index 37a8f630b6..ef3eab1fef 100644 25023--- a/sysdeps/unix/sysv/linux/rseq-internal.h 25024+++ b/sysdeps/unix/sysv/linux/rseq-internal.h 25025@@ -56,6 +56,7 @@ rseq_register_current_thread (struct pthread *self, bool do_rseq) 25026 registration, there is no guarantee that struct pthread is 25027 cleared on all architectures. */ 25028 THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_UNINITIALIZED); 25029+ THREAD_SETMEM (self, rseq_area.cpu_id_start, 0); 25030 THREAD_SETMEM (self, rseq_area.rseq_cs, 0); 25031 THREAD_SETMEM (self, rseq_area.flags, 0); 25032 25033 25034commit c6cdab1e01bc11bc4036dc5b1be6086f6259c123 25035Author: Sam James <sam@gentoo.org> 25036Date: Mon Dec 9 23:11:25 2024 +0000 25037 25038 malloc: add indirection for malloc(-like) functions in tests [BZ #32366] 25039 25040 GCC 15 introduces allocation dead code removal (DCE) for PR117370 in 25041 r15-5255-g7828dc070510f8. This breaks various glibc tests which want 25042 to assert various properties of the allocator without doing anything 25043 obviously useful with the allocated memory. 25044 25045 Alexander Monakov rightly pointed out that we can and should do better 25046 than passing -fno-malloc-dce to paper over the problem. Not least because 25047 GCC 14 already does such DCE where there's no testing of malloc's return 25048 value against NULL, and LLVM has such optimisations too. 25049 25050 Handle this by providing malloc (and friends) wrappers with a volatile 25051 function pointer to obscure that we're calling malloc (et. al) from the 25052 compiler. 25053 25054 Reviewed-by: Paul Eggert <eggert@cs.ucla.edu> 25055 (cherry picked from commit a9944a52c967ce76a5894c30d0274b824df43c7a) 25056 25057diff --git a/malloc/tst-aligned-alloc.c b/malloc/tst-aligned-alloc.c 25058index 91167d1392..b0f05a8fec 100644 25059--- a/malloc/tst-aligned-alloc.c 25060+++ b/malloc/tst-aligned-alloc.c 25061@@ -25,6 +25,8 @@ 25062 #include <libc-diag.h> 25063 #include <support/check.h> 25064 25065+#include "tst-malloc-aux.h" 25066+ 25067 static int 25068 do_test (void) 25069 { 25070diff --git a/malloc/tst-compathooks-off.c b/malloc/tst-compathooks-off.c 25071index d0106f3fb7..4cce6e5a80 100644 25072--- a/malloc/tst-compathooks-off.c 25073+++ b/malloc/tst-compathooks-off.c 25074@@ -25,6 +25,8 @@ 25075 #include <support/check.h> 25076 #include <support/support.h> 25077 25078+#include "tst-malloc-aux.h" 25079+ 25080 extern void (*volatile __free_hook) (void *, const void *); 25081 extern void *(*volatile __malloc_hook)(size_t, const void *); 25082 extern void *(*volatile __realloc_hook)(void *, size_t, const void *); 25083diff --git a/malloc/tst-malloc-aux.h b/malloc/tst-malloc-aux.h 25084new file mode 100644 25085index 0000000000..54908b4a24 25086--- /dev/null 25087+++ b/malloc/tst-malloc-aux.h 25088@@ -0,0 +1,41 @@ 25089+/* Wrappers for malloc-like functions to allow testing the implementation 25090+ without optimization. 25091+ Copyright (C) 2024 Free Software Foundation, Inc. 25092+ This file is part of the GNU C Library. 25093+ 25094+ The GNU C Library is free software; you can redistribute it and/or 25095+ modify it under the terms of the GNU Lesser General Public License as 25096+ published by the Free Software Foundation; either version 2.1 of the 25097+ License, or (at your option) any later version. 25098+ 25099+ The GNU C Library is distributed in the hope that it will be useful, 25100+ but WITHOUT ANY WARRANTY; without even the implied warranty of 25101+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 25102+ Lesser General Public License for more details. 25103+ 25104+ You should have received a copy of the GNU Lesser General Public 25105+ License along with the GNU C Library; see the file COPYING.LIB. If 25106+ not, see <https://www.gnu.org/licenses/>. */ 25107+ 25108+#ifndef TST_MALLOC_AUX_H 25109+#define TST_MALLOC_AUX_H 25110+ 25111+#include <stddef.h> 25112+#include <stdlib.h> 25113+ 25114+static void *(*volatile aligned_alloc_indirect)(size_t, size_t) = aligned_alloc; 25115+static void *(*volatile calloc_indirect)(size_t, size_t) = calloc; 25116+static void *(*volatile malloc_indirect)(size_t) = malloc; 25117+static void *(*volatile realloc_indirect)(void*, size_t) = realloc; 25118+ 25119+#undef aligned_alloc 25120+#undef calloc 25121+#undef malloc 25122+#undef realloc 25123+ 25124+#define aligned_alloc aligned_alloc_indirect 25125+#define calloc calloc_indirect 25126+#define malloc malloc_indirect 25127+#define realloc realloc_indirect 25128+ 25129+#endif /* TST_MALLOC_AUX_H */ 25130diff --git a/malloc/tst-malloc-check.c b/malloc/tst-malloc-check.c 25131index fde8863ad7..cc88bff3b3 100644 25132--- a/malloc/tst-malloc-check.c 25133+++ b/malloc/tst-malloc-check.c 25134@@ -20,6 +20,8 @@ 25135 #include <stdlib.h> 25136 #include <libc-diag.h> 25137 25138+#include "tst-malloc-aux.h" 25139+ 25140 static int errors = 0; 25141 25142 static void 25143diff --git a/malloc/tst-malloc-too-large.c b/malloc/tst-malloc-too-large.c 25144index 8e9e0d5fa2..2b91377e54 100644 25145--- a/malloc/tst-malloc-too-large.c 25146+++ b/malloc/tst-malloc-too-large.c 25147@@ -43,6 +43,7 @@ 25148 #include <unistd.h> 25149 #include <sys/param.h> 25150 25151+#include "tst-malloc-aux.h" 25152 25153 /* This function prepares for each 'too-large memory allocation' test by 25154 performing a small successful malloc/free and resetting errno prior to 25155diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c 25156index f7a6e4654c..68af399022 100644 25157--- a/malloc/tst-malloc.c 25158+++ b/malloc/tst-malloc.c 25159@@ -22,6 +22,8 @@ 25160 #include <libc-diag.h> 25161 #include <time.h> 25162 25163+#include "tst-malloc-aux.h" 25164+ 25165 static int errors = 0; 25166 25167 static void 25168diff --git a/malloc/tst-realloc.c b/malloc/tst-realloc.c 25169index f50499ecb1..74a28fb45e 100644 25170--- a/malloc/tst-realloc.c 25171+++ b/malloc/tst-realloc.c 25172@@ -23,6 +23,8 @@ 25173 #include <libc-diag.h> 25174 #include <support/check.h> 25175 25176+#include "tst-malloc-aux.h" 25177+ 25178 static int 25179 do_test (void) 25180 { 25181diff --git a/support/support.h b/support/support.h 25182index ba21ec9b5a..1a77f79793 100644 25183--- a/support/support.h 25184+++ b/support/support.h 25185@@ -113,7 +113,7 @@ void *xposix_memalign (size_t alignment, size_t n) 25186 __attribute_malloc__ __attribute_alloc_align__ ((1)) 25187 __attribute_alloc_size__ ((2)) __attr_dealloc_free __returns_nonnull; 25188 char *xasprintf (const char *format, ...) 25189- __attribute__ ((format (printf, 1, 2), malloc)) __attr_dealloc_free 25190+ __attribute__ ((format (printf, 1, 2), __malloc__)) __attr_dealloc_free 25191 __returns_nonnull; 25192 char *xstrdup (const char *) __attr_dealloc_free __returns_nonnull; 25193 char *xstrndup (const char *, size_t) __attr_dealloc_free __returns_nonnull; 25194diff --git a/test-skeleton.c b/test-skeleton.c 25195index ae185a4f28..690f26e7cf 100644 25196--- a/test-skeleton.c 25197+++ b/test-skeleton.c 25198@@ -27,7 +27,6 @@ 25199 #include <errno.h> 25200 #include <fcntl.h> 25201 #include <getopt.h> 25202-#include <malloc.h> 25203 #include <paths.h> 25204 #include <search.h> 25205 #include <signal.h> 25206 25207commit 846e64257e5fc9b5b723c2eec2b7155ab5944d1f 25208Author: Adhemerval Zanella <adhemerval.zanella@linaro.org> 25209Date: Fri Sep 13 11:10:05 2024 -0300 25210 25211 support: Make support_process_state_wait return the found state 25212 25213 So caller can check which state was found if multiple ones are 25214 asked. 25215 25216 Checked on x86_64-linux-gnu. 25217 25218 Reviewed-by: Florian Weimer <fweimer@redhat.com> 25219 (cherry picked from commit 38316352e0f742f3a2b5816a61a4b603cb5573f8) 25220 (cherry picked from commit 2e38c5a090b3a54040b6e508d42e5a76e492c6e8) 25221 25222diff --git a/support/process_state.h b/support/process_state.h 25223index 1cf902e91b..9541d8c343 100644 25224--- a/support/process_state.h 25225+++ b/support/process_state.h 25226@@ -31,13 +31,16 @@ enum support_process_state 25227 support_process_state_dead = 0x20, /* X (dead). */ 25228 support_process_state_zombie = 0x40, /* Z (zombie). */ 25229 support_process_state_parked = 0x80, /* P (parked). */ 25230+ support_process_state_invalid = 0x100 /* Invalid state. */ 25231 }; 25232 25233 /* Wait for process PID to reach state STATE. It can be a combination of 25234 multiple possible states ('process_state_running | process_state_sleeping') 25235 where the function return when any of these state are observed. 25236 For an invalid state not represented by SUPPORT_PROCESS_STATE, it fallbacks 25237- to a 2 second sleep. */ 25238-void support_process_state_wait (pid_t pid, enum support_process_state state); 25239+ to a 2 second sleep. 25240+ Return the found process state. */ 25241+enum support_process_state 25242+support_process_state_wait (pid_t pid, enum support_process_state state); 25243 25244 #endif 25245diff --git a/support/support_process_state.c b/support/support_process_state.c 25246index 062335234f..ae8e0a531c 100644 25247--- a/support/support_process_state.c 25248+++ b/support/support_process_state.c 25249@@ -27,7 +27,7 @@ 25250 #include <support/xstdio.h> 25251 #include <support/check.h> 25252 25253-void 25254+enum support_process_state 25255 support_process_state_wait (pid_t pid, enum support_process_state state) 25256 { 25257 #ifdef __linux__ 25258@@ -75,7 +75,7 @@ support_process_state_wait (pid_t pid, enum support_process_state state) 25259 { 25260 free (line); 25261 xfclose (fstatus); 25262- return; 25263+ return process_states[i].s; 25264 } 25265 25266 rewind (fstatus); 25267@@ -90,4 +90,6 @@ support_process_state_wait (pid_t pid, enum support_process_state state) 25268 /* Fallback to nanosleep if an invalid state is found. */ 25269 #endif 25270 nanosleep (&(struct timespec) { 1, 0 }, NULL); 25271+ 25272+ return support_process_state_invalid; 25273 } 25274diff --git a/support/tst-support-process_state.c b/support/tst-support-process_state.c 25275index d73269320f..4a88eae3a7 100644 25276--- a/support/tst-support-process_state.c 25277+++ b/support/tst-support-process_state.c 25278@@ -68,28 +68,39 @@ do_test (void) 25279 if (test_verbose) 25280 printf ("info: waiting pid %d, state_stopped/state_tracing_stop\n", 25281 (int) pid); 25282- support_process_state_wait (pid, stop_state); 25283+ { 25284+ enum support_process_state state = 25285+ support_process_state_wait (pid, stop_state); 25286+ TEST_VERIFY (state == support_process_state_stopped 25287+ || state == support_process_state_tracing_stop); 25288+ } 25289 25290 if (kill (pid, SIGCONT) != 0) 25291 FAIL_RET ("kill (%d, SIGCONT): %m\n", pid); 25292 25293 if (test_verbose) 25294 printf ("info: waiting pid %d, state_sleeping\n", (int) pid); 25295- support_process_state_wait (pid, support_process_state_sleeping); 25296+ TEST_COMPARE (support_process_state_wait (pid, 25297+ support_process_state_sleeping), 25298+ support_process_state_sleeping); 25299 25300 if (kill (pid, SIGUSR1) != 0) 25301 FAIL_RET ("kill (%d, SIGUSR1): %m\n", pid); 25302 25303 if (test_verbose) 25304 printf ("info: waiting pid %d, state_running\n", (int) pid); 25305- support_process_state_wait (pid, support_process_state_running); 25306+ TEST_COMPARE (support_process_state_wait (pid, 25307+ support_process_state_running), 25308+ support_process_state_running); 25309 25310 if (kill (pid, SIGKILL) != 0) 25311 FAIL_RET ("kill (%d, SIGKILL): %m\n", pid); 25312 25313 if (test_verbose) 25314 printf ("info: waiting pid %d, state_zombie\n", (int) pid); 25315- support_process_state_wait (pid, support_process_state_zombie); 25316+ TEST_COMPARE (support_process_state_wait (pid, 25317+ support_process_state_zombie), 25318+ support_process_state_zombie);; 25319 25320 siginfo_t info; 25321 int r = waitid (P_PID, pid, &info, WEXITED); 25322 25323commit 11d9f49cebe64939f50e16a59c9ebefb80a294ab 25324Author: Adhemerval Zanella <adhemerval.zanella@linaro.org> 25325Date: Fri Sep 13 11:11:56 2024 -0300 25326 25327 sparc: Fix restartable syscalls (BZ 32173) 25328 25329 The commit 'sparc: Use Linux kABI for syscall return' 25330 (86c5d2cf0ce046279baddc7faa27da71f1a89fde) did not take into account 25331 a subtle sparc syscall kABI constraint. For syscalls that might block 25332 indefinitely, on an interrupt (like SIGCONT) the kernel will set the 25333 instruction pointer to just before the syscall: 25334 25335 arch/sparc/kernel/signal_64.c 25336 476 static void do_signal(struct pt_regs *regs, unsigned long orig_i0) 25337 477 { 25338 [...] 25339 525 if (restart_syscall) { 25340 526 switch (regs->u_regs[UREG_I0]) { 25341 527 case ERESTARTNOHAND: 25342 528 case ERESTARTSYS: 25343 529 case ERESTARTNOINTR: 25344 530 /* replay the system call when we are done */ 25345 531 regs->u_regs[UREG_I0] = orig_i0; 25346 532 regs->tpc -= 4; 25347 533 regs->tnpc -= 4; 25348 534 pt_regs_clear_syscall(regs); 25349 535 fallthrough; 25350 536 case ERESTART_RESTARTBLOCK: 25351 537 regs->u_regs[UREG_G1] = __NR_restart_syscall; 25352 538 regs->tpc -= 4; 25353 539 regs->tnpc -= 4; 25354 540 pt_regs_clear_syscall(regs); 25355 541 } 25356 25357 However, on a SIGCONT it seems that 'g1' register is being clobbered after the 25358 syscall returns. Before 86c5d2cf0ce046279, the 'g1' was always placed jus 25359 before the 'ta' instruction which then reloads the syscall number and restarts 25360 the syscall. 25361 25362 On master, where 'g1' might be placed before 'ta': 25363 25364 $ cat test.c 25365 #include <unistd.h> 25366 25367 int main () 25368 { 25369 pause (); 25370 } 25371 $ gcc test.c -o test 25372 $ strace -f ./t 25373 [...] 25374 ppoll(NULL, 0, NULL, NULL, 0 25375 25376 On another terminal 25377 25378 $ kill -STOP 2262828 25379 25380 $ strace -f ./t 25381 [...] 25382 --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- 25383 --- stopped by SIGSTOP --- 25384 25385 And then 25386 25387 $ kill -CONT 2262828 25388 25389 Results in: 25390 25391 --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- 25392 restart_syscall(<... resuming interrupted ppoll ...>) = -1 EINTR (Interrupted system call) 25393 25394 Where the expected behaviour would be: 25395 25396 $ strace -f ./t 25397 [...] 25398 ppoll(NULL, 0, NULL, NULL, 0) = ? ERESTARTNOHAND (To be restarted if no handler) 25399 --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- 25400 --- stopped by SIGSTOP --- 25401 --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=2521813, si_uid=8289} --- 25402 ppoll(NULL, 0, NULL, NULL, 0 25403 25404 Just moving the 'g1' setting near the syscall asm is not suffice, 25405 the compiler might optimize it away (as I saw on cancellation.c by 25406 trying this fix). Instead, I have change the inline asm to put the 25407 'g1' setup in ithe asm block. This would require to change the asm 25408 constraint for INTERNAL_SYSCALL_NCS, since the syscall number is not 25409 constant. 25410 25411 Checked on sparc64-linux-gnu. 25412 25413 Reported-by: René Rebe <rene@exactcode.de> 25414 Tested-by: Sam James <sam@gentoo.org> 25415 Reviewed-by: Sam James <sam@gentoo.org> 25416 (cherry picked from commit 2c1903cbbac0022153a67776f474c221250ad6ed) 25417 (cherry picked from commit 1cd7e13289b91e1495a1865c1f678196d1bb7be4) 25418 25419diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile 25420index 59998c7af4..34890ef69a 100644 25421--- a/sysdeps/unix/sysv/linux/Makefile 25422+++ b/sysdeps/unix/sysv/linux/Makefile 25423@@ -227,6 +227,7 @@ tests += \ 25424 tst-scm_rights \ 25425 tst-sigtimedwait \ 25426 tst-sync_file_range \ 25427+ tst-syscall-restart \ 25428 tst-sysconf-iov_max \ 25429 tst-sysvmsg-linux \ 25430 tst-sysvsem-linux \ 25431diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 25432index d2d68f5312..c2ffbb5c8f 100644 25433--- a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 25434+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 25435@@ -107,6 +107,7 @@ ENTRY(name); \ 25436 #else /* __ASSEMBLER__ */ 25437 25438 #define __SYSCALL_STRING \ 25439+ "mov %[scn], %%g1;" \ 25440 "ta 0x10;" \ 25441 "bcc 1f;" \ 25442 " nop;" \ 25443@@ -114,7 +115,7 @@ ENTRY(name); \ 25444 "1:" 25445 25446 #define __SYSCALL_CLOBBERS \ 25447- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ 25448+ "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ 25449 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ 25450 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \ 25451 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \ 25452diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 25453index 96047424e9..5598fab08a 100644 25454--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 25455+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h 25456@@ -106,6 +106,7 @@ ENTRY(name); \ 25457 #else /* __ASSEMBLER__ */ 25458 25459 #define __SYSCALL_STRING \ 25460+ "mov %[scn], %%g1;" \ 25461 "ta 0x6d;" \ 25462 "bcc,pt %%xcc, 1f;" \ 25463 " nop;" \ 25464@@ -113,7 +114,7 @@ ENTRY(name); \ 25465 "1:" 25466 25467 #define __SYSCALL_CLOBBERS \ 25468- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ 25469+ "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \ 25470 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \ 25471 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \ 25472 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \ 25473diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sysdep.h 25474index dcabb57fe2..c287740a8c 100644 25475--- a/sysdeps/unix/sysv/linux/sparc/sysdep.h 25476+++ b/sysdeps/unix/sysv/linux/sparc/sysdep.h 25477@@ -50,97 +50,109 @@ 25478 25479 #undef INTERNAL_SYSCALL_NCS 25480 #define INTERNAL_SYSCALL_NCS(name, nr, args...) \ 25481- internal_syscall##nr(__SYSCALL_STRING, name, args) 25482+ _internal_syscall##nr(__SYSCALL_STRING, "p", name, args) 25483 25484-#define internal_syscall0(string,name,dummy...) \ 25485+#define _internal_syscall0(string,nc,name,dummy...) \ 25486 ({ \ 25487- register long int __g1 __asm__ ("g1") = (name); \ 25488 register long __o0 __asm__ ("o0"); \ 25489+ long int _name = (long int) (name); \ 25490 __asm __volatile (string : "=r" (__o0) : \ 25491- "r" (__g1) : \ 25492+ [scn] nc (_name) : \ 25493 __SYSCALL_CLOBBERS); \ 25494 __o0; \ 25495 }) 25496+#define internal_syscall0(string,name,args...) \ 25497+ _internal_syscall0(string, "i", name, args) 25498 25499-#define internal_syscall1(string,name,arg1) \ 25500+#define _internal_syscall1(string,nc,name,arg1) \ 25501 ({ \ 25502 long int _arg1 = (long int) (arg1); \ 25503- register long int __g1 __asm__("g1") = (name); \ 25504+ long int _name = (long int) (name); \ 25505 register long int __o0 __asm__ ("o0") = _arg1; \ 25506- __asm __volatile (string : "=r" (__o0) : \ 25507- "r" (__g1), "0" (__o0) : \ 25508+ __asm __volatile (string : "+r" (__o0) : \ 25509+ [scn] nc (_name) : \ 25510 __SYSCALL_CLOBBERS); \ 25511 __o0; \ 25512 }) 25513+#define internal_syscall1(string,name,args...) \ 25514+ _internal_syscall1(string, "i", name, args) 25515 25516-#define internal_syscall2(string,name,arg1,arg2) \ 25517+#define _internal_syscall2(string,nc,name,arg1,arg2) \ 25518 ({ \ 25519 long int _arg1 = (long int) (arg1); \ 25520 long int _arg2 = (long int) (arg2); \ 25521- register long int __g1 __asm__("g1") = (name); \ 25522+ long int _name = (long int) (name); \ 25523 register long int __o0 __asm__ ("o0") = _arg1; \ 25524 register long int __o1 __asm__ ("o1") = _arg2; \ 25525- __asm __volatile (string : "=r" (__o0) : \ 25526- "r" (__g1), "0" (__o0), "r" (__o1) : \ 25527+ __asm __volatile (string : "+r" (__o0) : \ 25528+ [scn] nc (_name), "r" (__o1) : \ 25529 __SYSCALL_CLOBBERS); \ 25530 __o0; \ 25531 }) 25532+#define internal_syscall2(string,name,args...) \ 25533+ _internal_syscall2(string, "i", name, args) 25534 25535-#define internal_syscall3(string,name,arg1,arg2,arg3) \ 25536+#define _internal_syscall3(string,nc,name,arg1,arg2,arg3) \ 25537 ({ \ 25538 long int _arg1 = (long int) (arg1); \ 25539 long int _arg2 = (long int) (arg2); \ 25540 long int _arg3 = (long int) (arg3); \ 25541- register long int __g1 __asm__("g1") = (name); \ 25542+ long int _name = (long int) (name); \ 25543 register long int __o0 __asm__ ("o0") = _arg1; \ 25544 register long int __o1 __asm__ ("o1") = _arg2; \ 25545 register long int __o2 __asm__ ("o2") = _arg3; \ 25546- __asm __volatile (string : "=r" (__o0) : \ 25547- "r" (__g1), "0" (__o0), "r" (__o1), \ 25548+ __asm __volatile (string : "+r" (__o0) : \ 25549+ [scn] nc (_name), "r" (__o1), \ 25550 "r" (__o2) : \ 25551 __SYSCALL_CLOBBERS); \ 25552 __o0; \ 25553 }) 25554+#define internal_syscall3(string,name,args...) \ 25555+ _internal_syscall3(string, "i", name, args) 25556 25557-#define internal_syscall4(string,name,arg1,arg2,arg3,arg4) \ 25558+#define _internal_syscall4(string,nc,name,arg1,arg2,arg3,arg4) \ 25559 ({ \ 25560 long int _arg1 = (long int) (arg1); \ 25561 long int _arg2 = (long int) (arg2); \ 25562 long int _arg3 = (long int) (arg3); \ 25563 long int _arg4 = (long int) (arg4); \ 25564- register long int __g1 __asm__("g1") = (name); \ 25565+ long int _name = (long int) (name); \ 25566 register long int __o0 __asm__ ("o0") = _arg1; \ 25567 register long int __o1 __asm__ ("o1") = _arg2; \ 25568 register long int __o2 __asm__ ("o2") = _arg3; \ 25569 register long int __o3 __asm__ ("o3") = _arg4; \ 25570- __asm __volatile (string : "=r" (__o0) : \ 25571- "r" (__g1), "0" (__o0), "r" (__o1), \ 25572+ __asm __volatile (string : "+r" (__o0) : \ 25573+ [scn] nc (_name), "r" (__o1), \ 25574 "r" (__o2), "r" (__o3) : \ 25575 __SYSCALL_CLOBBERS); \ 25576 __o0; \ 25577 }) 25578+#define internal_syscall4(string,name,args...) \ 25579+ _internal_syscall4(string, "i", name, args) 25580 25581-#define internal_syscall5(string,name,arg1,arg2,arg3,arg4,arg5) \ 25582+#define _internal_syscall5(string,nc,name,arg1,arg2,arg3,arg4,arg5) \ 25583 ({ \ 25584 long int _arg1 = (long int) (arg1); \ 25585 long int _arg2 = (long int) (arg2); \ 25586 long int _arg3 = (long int) (arg3); \ 25587 long int _arg4 = (long int) (arg4); \ 25588 long int _arg5 = (long int) (arg5); \ 25589- register long int __g1 __asm__("g1") = (name); \ 25590+ long int _name = (long int) (name); \ 25591 register long int __o0 __asm__ ("o0") = _arg1; \ 25592 register long int __o1 __asm__ ("o1") = _arg2; \ 25593 register long int __o2 __asm__ ("o2") = _arg3; \ 25594 register long int __o3 __asm__ ("o3") = _arg4; \ 25595 register long int __o4 __asm__ ("o4") = _arg5; \ 25596- __asm __volatile (string : "=r" (__o0) : \ 25597- "r" (__g1), "0" (__o0), "r" (__o1), \ 25598+ __asm __volatile (string : "+r" (__o0) : \ 25599+ [scn] nc (_name), "r" (__o1), \ 25600 "r" (__o2), "r" (__o3), "r" (__o4) : \ 25601 __SYSCALL_CLOBBERS); \ 25602 __o0; \ 25603 }) 25604+#define internal_syscall5(string,name,args...) \ 25605+ _internal_syscall5(string, "i", name, args) 25606 25607-#define internal_syscall6(string,name,arg1,arg2,arg3,arg4,arg5,arg6) \ 25608+#define _internal_syscall6(string,nc,name,arg1,arg2,arg3,arg4,arg5,arg6)\ 25609 ({ \ 25610 long int _arg1 = (long int) (arg1); \ 25611 long int _arg2 = (long int) (arg2); \ 25612@@ -148,20 +160,22 @@ 25613 long int _arg4 = (long int) (arg4); \ 25614 long int _arg5 = (long int) (arg5); \ 25615 long int _arg6 = (long int) (arg6); \ 25616- register long int __g1 __asm__("g1") = (name); \ 25617+ long int _name = (long int) (name); \ 25618 register long int __o0 __asm__ ("o0") = _arg1; \ 25619 register long int __o1 __asm__ ("o1") = _arg2; \ 25620 register long int __o2 __asm__ ("o2") = _arg3; \ 25621 register long int __o3 __asm__ ("o3") = _arg4; \ 25622 register long int __o4 __asm__ ("o4") = _arg5; \ 25623 register long int __o5 __asm__ ("o5") = _arg6; \ 25624- __asm __volatile (string : "=r" (__o0) : \ 25625- "r" (__g1), "0" (__o0), "r" (__o1), \ 25626+ __asm __volatile (string : "+r" (__o0) : \ 25627+ [scn] nc (_name), "r" (__o1), \ 25628 "r" (__o2), "r" (__o3), "r" (__o4), \ 25629 "r" (__o5) : \ 25630 __SYSCALL_CLOBBERS); \ 25631 __o0; \ 25632 }) 25633+#define internal_syscall6(string,name,args...) \ 25634+ _internal_syscall6(string, "i", name, args) 25635 25636 #define INLINE_CLONE_SYSCALL(arg1,arg2,arg3,arg4,arg5) \ 25637 ({ \ 25638@@ -170,15 +184,15 @@ 25639 long int _arg3 = (long int) (arg3); \ 25640 long int _arg4 = (long int) (arg4); \ 25641 long int _arg5 = (long int) (arg5); \ 25642+ long int _name = __NR_clone; \ 25643 register long int __o0 __asm__ ("o0") = _arg1; \ 25644 register long int __o1 __asm__ ("o1") = _arg2; \ 25645 register long int __o2 __asm__ ("o2") = _arg3; \ 25646 register long int __o3 __asm__ ("o3") = _arg4; \ 25647 register long int __o4 __asm__ ("o4") = _arg5; \ 25648- register long int __g1 __asm__ ("g1") = __NR_clone; \ 25649 __asm __volatile (__SYSCALL_STRING : \ 25650 "=r" (__o0), "=r" (__o1) : \ 25651- "r" (__g1), "0" (__o0), "1" (__o1), \ 25652+ [scn] "i" (_name), "0" (__o0), "1" (__o1), \ 25653 "r" (__o2), "r" (__o3), "r" (__o4) : \ 25654 __SYSCALL_CLOBBERS); \ 25655 if (__glibc_unlikely ((unsigned long int) (__o0) > -4096UL)) \ 25656diff --git a/sysdeps/unix/sysv/linux/tst-syscall-restart.c b/sysdeps/unix/sysv/linux/tst-syscall-restart.c 25657new file mode 100644 25658index 0000000000..84a8a41b5c 25659--- /dev/null 25660+++ b/sysdeps/unix/sysv/linux/tst-syscall-restart.c 25661@@ -0,0 +1,112 @@ 25662+/* Test if a syscall is correctly restarted. 25663+ Copyright (C) 2024 Free Software Foundation, Inc. 25664+ This file is part of the GNU C Library. 25665+ 25666+ The GNU C Library is free software; you can redistribute it and/or 25667+ modify it under the terms of the GNU Lesser General Public 25668+ License as published by the Free Software Foundation; either 25669+ version 2.1 of the License, or (at your option) any later version. 25670+ 25671+ The GNU C Library is distributed in the hope that it will be useful, 25672+ but WITHOUT ANY WARRANTY; without even the implied warranty of 25673+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 25674+ Lesser General Public License for more details. 25675+ 25676+ You should have received a copy of the GNU Lesser General Public 25677+ License along with the GNU C Library; if not, see 25678+ <https://www.gnu.org/licenses/>. */ 25679+ 25680+#include <support/xsignal.h> 25681+#include <support/check.h> 25682+#include <support/process_state.h> 25683+#include <support/xunistd.h> 25684+#include <support/xthread.h> 25685+#include <sys/wait.h> 25686+ 25687+static int 25688+check_pid (pid_t pid) 25689+{ 25690+ /* Wait until the child has called pause and it blocking on kernel. */ 25691+ support_process_state_wait (pid, support_process_state_sleeping); 25692+ 25693+ TEST_COMPARE (kill (pid, SIGSTOP), 0); 25694+ 25695+ /* Adding process_state_tracing_stop ('t') allows the test to work under 25696+ trace programs such as ptrace. */ 25697+ support_process_state_wait (pid, support_process_state_stopped 25698+ | support_process_state_tracing_stop); 25699+ 25700+ TEST_COMPARE (kill (pid, SIGCONT), 0); 25701+ 25702+ enum support_process_state state 25703+ = support_process_state_wait (pid, support_process_state_sleeping 25704+ | support_process_state_zombie); 25705+ 25706+ TEST_COMPARE (state, support_process_state_sleeping); 25707+ 25708+ TEST_COMPARE (kill (pid, SIGTERM), 0); 25709+ 25710+ siginfo_t info; 25711+ TEST_COMPARE (waitid (P_PID, pid, &info, WEXITED), 0); 25712+ TEST_COMPARE (info.si_signo, SIGCHLD); 25713+ TEST_COMPARE (info.si_code, CLD_KILLED); 25714+ TEST_COMPARE (info.si_status, SIGTERM); 25715+ TEST_COMPARE (info.si_pid, pid); 25716+ 25717+ return 0; 25718+} 25719+ 25720+static void * 25721+tf (void *) 25722+{ 25723+ pause (); 25724+ return NULL; 25725+} 25726+ 25727+static void 25728+child_mt (void) 25729+{ 25730+ /* Let only the created thread to handle signals. */ 25731+ sigset_t set; 25732+ sigfillset (&set); 25733+ xpthread_sigmask (SIG_BLOCK, &set, NULL); 25734+ 25735+ sigdelset (&set, SIGSTOP); 25736+ sigdelset (&set, SIGCONT); 25737+ sigdelset (&set, SIGTERM); 25738+ 25739+ pthread_attr_t attr; 25740+ xpthread_attr_init (&attr); 25741+ TEST_COMPARE (pthread_attr_setsigmask_np (&attr, &set), 0); 25742+ 25743+ xpthread_join (xpthread_create (&attr, tf, NULL)); 25744+} 25745+ 25746+static void 25747+do_test_syscall (bool multithread) 25748+{ 25749+ pid_t pid = xfork (); 25750+ if (pid == 0) 25751+ { 25752+ if (multithread) 25753+ child_mt (); 25754+ else 25755+ pause (); 25756+ _exit (127); 25757+ } 25758+ 25759+ check_pid (pid); 25760+} 25761+ 25762+static int 25763+do_test (void) 25764+{ 25765+ /* Check for both single and multi thread, since they use different syscall 25766+ mechanisms. */ 25767+ do_test_syscall (false); 25768+ do_test_syscall (true); 25769+ 25770+ return 0; 25771+} 25772+ 25773+#include <support/test-driver.c> 25774 25775commit 9af64ca64c532b7e42a40b48fe5e01726a9b7943 25776Author: H.J. Lu <hjl.tools@gmail.com> 25777Date: Thu Dec 5 08:39:44 2024 +0800 25778 25779 math: Exclude internal math symbols for tests [BZ #32414] 25780 25781 Since internal tests don't have access to internal symbols in libm, 25782 exclude them for internal tests. Also make tst-strtod5 and tst-strtod5i 25783 depend on $(libm) to support older versions of GCC which can't inline 25784 copysign family functions. This fixes BZ #32414. 25785 25786 Signed-off-by: H.J. Lu <hjl.tools@gmail.com> 25787 Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com> 25788 (cherry picked from commit 5df09b444835fca6e64b3d4b4a5beb19b3b2ba21) 25789 25790diff --git a/include/math.h b/include/math.h 25791index fa11a710a6..035fd160ff 100644 25792--- a/include/math.h 25793+++ b/include/math.h 25794@@ -130,7 +130,10 @@ fabsf128 (_Float128 x) 25795 } 25796 # endif 25797 25798-# if !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0) 25799+ 25800+/* NB: Internal tests don't have access to internal symbols. */ 25801+# if !IS_IN (testsuite_internal) \ 25802+ && !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0) 25803 # ifndef NO_MATH_REDIRECT 25804 /* Declare some functions for use within GLIBC. Compilers typically 25805 inline those functions as a single instruction. Use an asm to 25806diff --git a/stdlib/Makefile b/stdlib/Makefile 25807index 8b0ac63ddb..8213fa83ef 100644 25808--- a/stdlib/Makefile 25809+++ b/stdlib/Makefile 25810@@ -603,6 +603,8 @@ $(objpfx)bug-strtod2: $(libm) 25811 $(objpfx)tst-strtod-round: $(libm) 25812 $(objpfx)tst-tininess: $(libm) 25813 $(objpfx)tst-strtod-underflow: $(libm) 25814+$(objpfx)tst-strtod5: $(libm) 25815+$(objpfx)tst-strtod5i: $(libm) 25816 $(objpfx)tst-strtod6: $(libm) 25817 $(objpfx)tst-strtod-nan-locale: $(libm) 25818 $(objpfx)tst-strtod-nan-sign: $(libm) 25819 25820commit 0b39fe801208e805cc911f64a2fdd25d04b7151e 25821Author: Adhemerval Zanella <adhemerval.zanella@linaro.org> 25822Date: Fri Oct 18 08:48:22 2024 -0300 25823 25824 linux: Fix tst-syscall-restart.c on old gcc (BZ 32283) 25825 25826 To avoid a parameter name omitted error. 25827 25828 (cherry picked from commit ab564362d0470d10947c24155ec048c4e14a009d) 25829 25830diff --git a/sysdeps/unix/sysv/linux/tst-syscall-restart.c b/sysdeps/unix/sysv/linux/tst-syscall-restart.c 25831index 84a8a41b5c..0ee7dc8517 100644 25832--- a/sysdeps/unix/sysv/linux/tst-syscall-restart.c 25833+++ b/sysdeps/unix/sysv/linux/tst-syscall-restart.c 25834@@ -57,7 +57,7 @@ check_pid (pid_t pid) 25835 } 25836 25837 static void * 25838-tf (void *) 25839+tf (void *closure) 25840 { 25841 pause (); 25842 return NULL; 25843 25844commit 94e4a8c7d68129075f1b494a0b26151a4f989b36 25845Author: Florian Weimer <fweimer@redhat.com> 25846Date: Tue Dec 17 18:12:03 2024 +0100 25847 25848 x86: Avoid integer truncation with large cache sizes (bug 32470) 25849 25850 Some hypervisors report 1 TiB L3 cache size. This results 25851 in some variables incorrectly getting zeroed, causing crashes 25852 in memcpy/memmove because invariants are violated. 25853 25854 (cherry picked from commit 61c3450db96dce96ad2b24b4f0b548e6a46d68e5) 25855 25856diff --git a/NEWS b/NEWS 25857index bd0b3bd66a..97a1e1f5d4 100644 25858--- a/NEWS 25859+++ b/NEWS 25860@@ -20,6 +20,7 @@ The following bugs are resolved with this release: 25861 [32137] libio: Attempt wide backup free only for non-legacy code 25862 [32231] elf: Change ldconfig auxcache magic number 25863 [32245] glibc -Wstringop-overflow= build failure on hppa 25864+ [32470] x86: Avoid integer truncation with large cache sizes 25865 25866 Version 2.40 25867 25868diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h 25869index a1c03b8903..ac97414b5b 100644 25870--- a/sysdeps/x86/dl-cacheinfo.h 25871+++ b/sysdeps/x86/dl-cacheinfo.h 25872@@ -961,11 +961,11 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) 25873 non_temporal_threshold = maximum_non_temporal_threshold; 25874 25875 /* NB: The REP MOVSB threshold must be greater than VEC_SIZE * 8. */ 25876- unsigned int minimum_rep_movsb_threshold; 25877+ unsigned long int minimum_rep_movsb_threshold; 25878 /* NB: The default REP MOVSB threshold is 4096 * (VEC_SIZE / 16) for 25879 VEC_SIZE == 64 or 32. For VEC_SIZE == 16, the default REP MOVSB 25880 threshold is 2048 * (VEC_SIZE / 16). */ 25881- unsigned int rep_movsb_threshold; 25882+ unsigned long int rep_movsb_threshold; 25883 if (CPU_FEATURE_USABLE_P (cpu_features, AVX512F) 25884 && !CPU_FEATURE_PREFERRED_P (cpu_features, Prefer_No_AVX512)) 25885 { 25886 25887commit 9fbfbd924f718663d5303858f34d1f857c375093 25888Author: John David Anglin <danglin@gcc.gnu.org> 25889Date: Thu Dec 19 11:30:09 2024 -0500 25890 25891 hppa: Fix strace detach-vfork test 25892 25893 This change implements vfork.S for direct support of the vfork 25894 syscall. clone.S is revised to correct child support for the 25895 vfork case. 25896 25897 The main bug was creating a frame prior to the clone syscall. 25898 This was done to allow the rp and r4 registers to be saved and 25899 restored from the stack frame. r4 was used to save and restore 25900 the PIC register, r19, across the system call and the call to 25901 set errno. But in the vfork case, it is undefined behavior 25902 for the child to return from the function in which vfork was 25903 called. It is surprising that this usually worked. 25904 25905 Syscalls on hppa save and restore rp and r19, so we don't need 25906 to create a frame prior to the clone syscall. We only need a 25907 frame when __syscall_error is called. We also don't need to 25908 save and restore r19 around the call to $$dyncall as r19 is not 25909 used in the code after $$dyncall. 25910 25911 This considerably simplifies clone.S. 25912 25913 Signed-off-by: John David Anglin <dave.anglin@bell.net> 25914 25915diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S 25916index a31afea429..c18163d0f7 100644 25917--- a/sysdeps/unix/sysv/linux/hppa/clone.S 25918+++ b/sysdeps/unix/sysv/linux/hppa/clone.S 25919@@ -59,16 +59,6 @@ 25920 25921 .text 25922 ENTRY(__clone) 25923- /* Prologue */ 25924- stwm %r4, 64(%sp) 25925- .cfi_def_cfa_offset -64 25926- .cfi_offset 4, 0 25927- stw %sp, -4(%sp) 25928-#ifdef PIC 25929- stw %r19, -32(%sp) 25930- .cfi_offset 19, 32 25931-#endif 25932- 25933 /* Sanity check arguments. */ 25934 comib,=,n 0,%arg0,.LerrorSanity /* no NULL function pointers */ 25935 comib,=,n 0,%arg1,.LerrorSanity /* no NULL stack pointers */ 25936@@ -87,54 +77,34 @@ ENTRY(__clone) 25937 /* User stack pointer is in the correct register already */ 25938 25939 /* Load args from stack... */ 25940- ldw -116(%sp), %r24 /* Load parent_tidptr */ 25941- ldw -120(%sp), %r23 /* Load newtls */ 25942- ldw -124(%sp), %r22 /* Load child_tidptr */ 25943- 25944- /* Save the PIC register. */ 25945-#ifdef PIC 25946- copy %r19, %r4 /* parent */ 25947-#endif 25948+ ldw -52(%sp), %r24 /* Load parent_tidptr */ 25949+ ldw -56(%sp), %r23 /* Load newtls */ 25950+ ldw -60(%sp), %r22 /* Load child_tidptr */ 25951 25952 /* Do the system call */ 25953 ble 0x100(%sr2, %r0) 25954 ldi __NR_clone, %r20 25955 25956 ldi -4096, %r1 25957- comclr,>>= %r1, %ret0, %r0 /* Note: unsigned compare. */ 25958- b,n .LerrorRest 25959- 25960- /* Restore the PIC register. */ 25961-#ifdef PIC 25962- copy %r4, %r19 /* parent */ 25963-#endif 25964- 25965+ comb,<<,n %r1, %ret0, .LerrorRest /* Note: unsigned compare. */ 25966 comib,=,n 0, %ret0, .LthreadStart 25967- 25968- /* Successful return from the parent 25969- No need to restore the PIC register, 25970- since we return immediately. */ 25971- 25972- ldw -84(%sp), %rp 25973- bv %r0(%rp) 25974- ldwm -64(%sp), %r4 25975+ bv,n %r0(%rp) 25976 25977 .LerrorRest: 25978- /* Something bad happened -- no child created */ 25979+ /* Something bad happened -- no child created -- need a frame */ 25980+ ldo 64(%sp),%sp 25981+ .cfi_def_cfa_offset -64 25982 bl __syscall_error, %rp 25983 sub %r0, %ret0, %arg0 25984 ldw -84(%sp), %rp 25985 /* Return after setting errno, ret0 is set to -1 by __syscall_error. */ 25986 bv %r0(%rp) 25987- ldwm -64(%sp), %r4 25988+ ldo -64(%sp), %sp 25989 25990 .LerrorSanity: 25991 /* Sanity checks failed, return -1, and set errno to EINVAL. */ 25992- bl __syscall_error, %rp 25993- ldi EINVAL, %arg0 25994- ldw -84(%sp), %rp 25995- bv %r0(%rp) 25996- ldwm -64(%sp), %r4 25997+ b .LerrorRest 25998+ ldi -EINVAL, %ret0 25999 26000 .LthreadStart: 26001 /* Load up the arguments. */ 26002@@ -144,14 +114,8 @@ ENTRY(__clone) 26003 /* $$dyncall fixes child's PIC register */ 26004 26005 /* Call the user's function */ 26006-#ifdef PIC 26007- copy %r19, %r4 26008-#endif 26009 bl $$dyncall, %r31 26010 copy %r31, %rp 26011-#ifdef PIC 26012- copy %r4, %r19 26013-#endif 26014 copy %r28, %r26 26015 ble 0x100(%sr2, %r0) 26016 ldi __NR_exit, %r20 26017diff --git a/sysdeps/unix/sysv/linux/hppa/vfork.S b/sysdeps/unix/sysv/linux/hppa/vfork.S 26018new file mode 100644 26019index 0000000000..5fd368f3cf 26020--- /dev/null 26021+++ b/sysdeps/unix/sysv/linux/hppa/vfork.S 26022@@ -0,0 +1,53 @@ 26023+/* Copyright (C) 1999-2024 Free Software Foundation, Inc. 26024+ 26025+ This file is part of the GNU C Library. 26026+ 26027+ The GNU C Library is free software; you can redistribute it and/or 26028+ modify it under the terms of the GNU Lesser General Public License as 26029+ published by the Free Software Foundation; either version 2.1 of the 26030+ License, or (at your option) any later version. 26031+ 26032+ The GNU C Library is distributed in the hope that it will be useful, 26033+ but WITHOUT ANY WARRANTY; without even the implied warranty of 26034+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 26035+ Lesser General Public License for more details. 26036+ 26037+ You should have received a copy of the GNU Lesser General Public 26038+ License along with the GNU C Library; if not, see 26039+ <https://www.gnu.org/licenses/>. */ 26040+ 26041+#include <sysdep.h> 26042+#define _ERRNO_H 1 26043+#include <bits/errno.h> 26044+ 26045+/* Clone the calling process, but without copying the whole address space. 26046+ The calling process is suspended until the new process exits or is 26047+ replaced by a call to `execve'. Return -1 for errors, 0 to the new process, 26048+ and the process ID of the new process to the old process. */ 26049+ 26050+ENTRY (__vfork) 26051+ ble 0x100(%sr2, %r0) 26052+ ldi __NR_vfork, %r20 26053+ 26054+ ldi -4096, %r1 26055+ comclr,<< %r1, %ret0, %r0 /* Note: unsigned compare. */ 26056+ bv,n %r0(%rp) 26057+ 26058+ /* Something bad happened -- no child created -- we need a frame */ 26059+ ldo 64(%sp), %sp 26060+ .cfi_def_cfa_offset -64 26061+ 26062+ /* Set errno */ 26063+ bl __syscall_error, %rp 26064+ sub %r0, %ret0, %arg0 26065+ 26066+ /* ret0 is set to -1 by __syscall_error */ 26067+ ldw -84(%sp), %rp 26068+ bv %r0(%rp) 26069+ ldo -64(%sp), %sp 26070+ 26071+PSEUDO_END (__vfork) 26072+libc_hidden_def (__vfork) 26073+ 26074+weak_alias (__vfork, vfork) 26075+strong_alias (__vfork, __libc_vfork) 26076 26077commit 7648e3c8e80b3f1b3b43506b2fbe370e4824ab97 26078Author: John David Anglin <danglin@gcc.gnu.org> 26079Date: Sun Dec 22 09:58:02 2024 -0500 26080 26081 hppa: Simplify handling of sanity check errors in clone.S. 26082 26083 This simplifies the handling of sanity check errors in clone.S. 26084 Adjusted a couple of comments to reflect current code. 26085 26086 Signed-off-by: John David Anglin <dave.anglin@bell.net> 26087 26088diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S 26089index c18163d0f7..e85e7f517f 100644 26090--- a/sysdeps/unix/sysv/linux/hppa/clone.S 26091+++ b/sysdeps/unix/sysv/linux/hppa/clone.S 26092@@ -90,6 +90,10 @@ ENTRY(__clone) 26093 comib,=,n 0, %ret0, .LthreadStart 26094 bv,n %r0(%rp) 26095 26096+.LerrorSanity: 26097+ /* Sanity checks failed, set errno to EINVAL. */ 26098+ ldi -EINVAL, %ret0 26099+ 26100 .LerrorRest: 26101 /* Something bad happened -- no child created -- need a frame */ 26102 ldo 64(%sp),%sp 26103@@ -101,11 +105,6 @@ ENTRY(__clone) 26104 bv %r0(%rp) 26105 ldo -64(%sp), %sp 26106 26107-.LerrorSanity: 26108- /* Sanity checks failed, return -1, and set errno to EINVAL. */ 26109- b .LerrorRest 26110- ldi -EINVAL, %ret0 26111- 26112 .LthreadStart: 26113 /* Load up the arguments. */ 26114 ldw -60(%sp), %arg0 26115@@ -121,7 +120,7 @@ ENTRY(__clone) 26116 ldi __NR_exit, %r20 26117 26118 /* We should not return from exit. 26119- We do not restore r4, or the stack state. */ 26120+ We do not restore the stack state. */ 26121 iitlbp %r0, (%sr0, %r0) 26122 26123 PSEUDO_END(__clone) 26124 26125commit 473597d8167f86afee3544215db108b170ec13c0 26126Author: Andreas Schwab <schwab@suse.de> 26127Date: Wed Sep 25 11:49:30 2024 +0200 26128 26129 Fix missing randomness in __gen_tempname (bug 32214) 26130 26131 Make sure to update the random value also if getrandom fails. 26132 26133 Fixes: 686d542025 ("posix: Sync tempname with gnulib") 26134 (cherry picked from commit 5f62cf88c4530c11904482775b7582bd7f6d80d2) 26135 26136diff --git a/NEWS b/NEWS 26137index 97a1e1f5d4..57feba81cd 100644 26138--- a/NEWS 26139+++ b/NEWS 26140@@ -18,6 +18,7 @@ The following bugs are resolved with this release: 26141 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces 26142 [32052] Name space violation in fortify wrappers 26143 [32137] libio: Attempt wide backup free only for non-legacy code 26144+ [32214] Fix missing randomness in __gen_tempname 26145 [32231] elf: Change ldconfig auxcache magic number 26146 [32245] glibc -Wstringop-overflow= build failure on hppa 26147 [32470] x86: Avoid integer truncation with large cache sizes 26148diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c 26149index c00fe0c181..fc30958a0c 100644 26150--- a/sysdeps/posix/tempname.c 26151+++ b/sysdeps/posix/tempname.c 26152@@ -117,6 +117,8 @@ random_bits (random_value *r, random_value s) 26153 succeed. */ 26154 #if !_LIBC 26155 *r = mix_random_values (v, clock ()); 26156+#else 26157+ *r = v; 26158 #endif 26159 return false; 26160 } 26161 26162commit 7d4b6bcae91f29d7b4daf15bab06b66cf1d2217c 26163Author: Siddhesh Poyarekar <siddhesh@sourceware.org> 26164Date: Tue Jan 21 16:11:06 2025 -0500 26165 26166 Fix underallocation of abort_msg_s struct (CVE-2025-0395) 26167 26168 Include the space needed to store the length of the message itself, in 26169 addition to the message string. This resolves BZ #32582. 26170 26171 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> 26172 Reviewed: Adhemerval Zanella <adhemerval.zanella@linaro.org> 26173 (cherry picked from commit 68ee0f704cb81e9ad0a78c644a83e1e9cd2ee578) 26174 26175diff --git a/assert/assert.c b/assert/assert.c 26176index c29629f5f6..b6e37d694c 100644 26177--- a/assert/assert.c 26178+++ b/assert/assert.c 26179@@ -18,6 +18,7 @@ 26180 #include <assert.h> 26181 #include <atomic.h> 26182 #include <ldsodefs.h> 26183+#include <libc-pointer-arith.h> 26184 #include <libintl.h> 26185 #include <stdio.h> 26186 #include <stdlib.h> 26187@@ -65,7 +66,8 @@ __assert_fail_base (const char *fmt, const char *assertion, const char *file, 26188 (void) __fxprintf (NULL, "%s", str); 26189 (void) fflush (stderr); 26190 26191- total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); 26192+ total = ALIGN_UP (total + sizeof (struct abort_msg_s) + 1, 26193+ GLRO(dl_pagesize)); 26194 struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE, 26195 MAP_ANON | MAP_PRIVATE, -1, 0); 26196 if (__glibc_likely (buf != MAP_FAILED)) 26197diff --git a/sysdeps/posix/libc_fatal.c b/sysdeps/posix/libc_fatal.c 26198index f9e3425e04..089c47b04b 100644 26199--- a/sysdeps/posix/libc_fatal.c 26200+++ b/sysdeps/posix/libc_fatal.c 26201@@ -20,6 +20,7 @@ 26202 #include <errno.h> 26203 #include <fcntl.h> 26204 #include <ldsodefs.h> 26205+#include <libc-pointer-arith.h> 26206 #include <paths.h> 26207 #include <stdarg.h> 26208 #include <stdbool.h> 26209@@ -105,7 +106,8 @@ __libc_message_impl (const char *fmt, ...) 26210 { 26211 WRITEV_FOR_FATAL (fd, iov, iovcnt, total); 26212 26213- total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1); 26214+ total = ALIGN_UP (total + sizeof (struct abort_msg_s) + 1, 26215+ GLRO(dl_pagesize)); 26216 struct abort_msg_s *buf = __mmap (NULL, total, 26217 PROT_READ | PROT_WRITE, 26218 MAP_ANON | MAP_PRIVATE, -1, 0);