diff --git a/ADVISORIES b/ADVISORIES
new file mode 100644
index 0000000000..d4e33f2df3
--- /dev/null
+++ b/ADVISORIES
@@ -0,0 +1,2 @@
+For the GNU C Library Security Advisories, see the git master branch:
+https://sourceware.org/git/?p=glibc.git;a=tree;f=advisories;hb=HEAD
diff --git a/NEWS b/NEWS
index 31281ac408..4b290ad4bf 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,26 @@ See the end for copying conditions.
Please send GNU C library bug reports via
using `glibc' in the "product" field.
+Version 2.40.1
+
+The following bugs are resolved with this release:
+
+ [27821] ungetc: Fix backup buffer leak on program exit
+ [30081] resolv: Do not wait for non-existing second DNS response after error
+ [31394] clone on sparc might fail with -EFAULT for no valid reason
+ [31717] elf: Avoid re-initializing already allocated TLS in dlopen
+ [31890] resolv: Allow short error responses to match any DNS query
+ [31968] mremap implementation in C does not handle arguments correctly
+ [32026] strerror/strsignal TLS not handled correctly for secondary namespaces
+ [32052] Name space violation in fortify wrappers
+ [32137] libio: Attempt wide backup free only for non-legacy code
+ [32214] Fix missing randomness in __gen_tempname
+ [32231] elf: Change ldconfig auxcache magic number
+ [32245] glibc -Wstringop-overflow= build failure on hppa
+ [32470] x86: Avoid integer truncation with large cache sizes
+ [32810] Crash on x86-64 if XSAVEC disable via tunable
+ [32987] elf: Fix subprocess status handling for tst-dlopen-sgid
+
Version 2.40
Major new features:
diff --git a/advisories/GLIBC-SA-2023-0001 b/advisories/GLIBC-SA-2023-0001
deleted file mode 100644
index 3d19c91b6a..0000000000
--- a/advisories/GLIBC-SA-2023-0001
+++ /dev/null
@@ -1,14 +0,0 @@
-printf: incorrect output for integers with thousands separator and width field
-
-When the printf family of functions is called with a format specifier
-that uses an (enable grouping) and a minimum width
-specifier, the resulting output could be larger than reasonably expected
-by a caller that computed a tight bound on the buffer size. The
-resulting larger than expected output could result in a buffer overflow
-in the printf family of functions.
-
-CVE-Id: CVE-2023-25139
-Public-Date: 2023-02-02
-Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37)
-Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38)
-Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4)
diff --git a/advisories/GLIBC-SA-2023-0002 b/advisories/GLIBC-SA-2023-0002
deleted file mode 100644
index 5122669a64..0000000000
--- a/advisories/GLIBC-SA-2023-0002
+++ /dev/null
@@ -1,15 +0,0 @@
-getaddrinfo: Stack read overflow in no-aaaa mode
-
-If the system is configured in no-aaaa mode via /etc/resolv.conf,
-getaddrinfo is called for the AF_UNSPEC address family, and a DNS
-response is received over TCP that is larger than 2048 bytes,
-getaddrinfo may potentially disclose stack contents via the returned
-address data, or crash.
-
-CVE-Id: CVE-2023-4527
-Public-Date: 2023-09-12
-Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36)
-Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39)
-Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113)
-Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38)
-Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19)
diff --git a/advisories/GLIBC-SA-2023-0003 b/advisories/GLIBC-SA-2023-0003
deleted file mode 100644
index d3aef80348..0000000000
--- a/advisories/GLIBC-SA-2023-0003
+++ /dev/null
@@ -1,15 +0,0 @@
-getaddrinfo: Potential use-after-free
-
-When an NSS plugin only implements the _gethostbyname2_r and
-_getcanonname_r callbacks, getaddrinfo could use memory that was freed
-during buffer resizing, potentially causing a crash or read or write to
-arbitrary memory.
-
-CVE-Id: CVE-2023-4806
-Public-Date: 2023-09-12
-Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39)
-Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
-Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
-Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
-Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
-Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
diff --git a/advisories/GLIBC-SA-2023-0004 b/advisories/GLIBC-SA-2023-0004
deleted file mode 100644
index 5286a7aa54..0000000000
--- a/advisories/GLIBC-SA-2023-0004
+++ /dev/null
@@ -1,16 +0,0 @@
-tunables: local privilege escalation through buffer overflow
-
-If a tunable of the form NAME=NAME=VAL is passed in the environment of a
-setuid program and NAME is valid, it may result in a buffer overflow,
-which could be exploited to achieve escalated privileges. This flaw was
-introduced in glibc 2.34.
-
-CVE-Id: CVE-2023-4911
-Public-Date: 2023-10-03
-Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34)
-Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39)
-Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423)
-Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274)
-Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118)
-Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45)
-Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27)
diff --git a/advisories/GLIBC-SA-2023-0005 b/advisories/GLIBC-SA-2023-0005
deleted file mode 100644
index cc4eb90b82..0000000000
--- a/advisories/GLIBC-SA-2023-0005
+++ /dev/null
@@ -1,18 +0,0 @@
-getaddrinfo: DoS due to memory leak
-
-The fix for CVE-2023-4806 introduced a memory leak when an application
-calls getaddrinfo for AF_INET6 with AI_CANONNAME, AI_ALL and AI_V4MAPPED
-flags set.
-
-CVE-Id: CVE-2023-5156
-Public-Date: 2023-09-25
-Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
-Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
-Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
-Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
-Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
-Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421)
-Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272)
-Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116)
-Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42)
-Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24)
diff --git a/advisories/GLIBC-SA-2024-0001 b/advisories/GLIBC-SA-2024-0001
deleted file mode 100644
index 28931c75ae..0000000000
--- a/advisories/GLIBC-SA-2024-0001
+++ /dev/null
@@ -1,15 +0,0 @@
-syslog: Heap buffer overflow in __vsyslog_internal
-
-__vsyslog_internal did not handle a case where printing a SYSLOG_HEADER
-containing a long program name failed to update the required buffer
-size, leading to the allocation and overflow of a too-small buffer on
-the heap.
-
-CVE-Id: CVE-2023-6246
-Public-Date: 2024-01-30
-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
-Fix-Commit: 6bd0e4efcc78f3c0115e5ea9739a1642807450da (2.39)
-Fix-Commit: 23514c72b780f3da097ecf33a793b7ba9c2070d2 (2.38-42)
-Fix-Commit: 97a4292aa4a2642e251472b878d0ec4c46a0e59a (2.37-57)
-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
-Fix-Commit: d1a83b6767f68b3cb5b4b4ea2617254acd040c82 (2.36-126)
diff --git a/advisories/GLIBC-SA-2024-0002 b/advisories/GLIBC-SA-2024-0002
deleted file mode 100644
index 940bfcf2fc..0000000000
--- a/advisories/GLIBC-SA-2024-0002
+++ /dev/null
@@ -1,15 +0,0 @@
-syslog: Heap buffer overflow in __vsyslog_internal
-
-__vsyslog_internal used the return value of snprintf/vsnprintf to
-calculate buffer sizes for memory allocation. If these functions (for
-any reason) failed and returned -1, the resulting buffer would be too
-small to hold output.
-
-CVE-Id: CVE-2023-6779
-Public-Date: 2024-01-30
-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
-Fix-Commit: 7e5a0c286da33159d47d0122007aac016f3e02cd (2.39)
-Fix-Commit: d0338312aace5bbfef85e03055e1212dd0e49578 (2.38-43)
-Fix-Commit: 67062eccd9a65d7fda9976a56aeaaf6c25a80214 (2.37-58)
-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
-Fix-Commit: 2bc9d7c002bdac38b5c2a3f11b78e309d7765b83 (2.36-127)
diff --git a/advisories/GLIBC-SA-2024-0003 b/advisories/GLIBC-SA-2024-0003
deleted file mode 100644
index b43a5150ab..0000000000
--- a/advisories/GLIBC-SA-2024-0003
+++ /dev/null
@@ -1,13 +0,0 @@
-syslog: Integer overflow in __vsyslog_internal
-
-__vsyslog_internal calculated a buffer size by adding two integers, but
-did not first check if the addition would overflow.
-
-CVE-Id: CVE-2023-6780
-Public-Date: 2024-01-30
-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
-Fix-Commit: ddf542da94caf97ff43cc2875c88749880b7259b (2.39)
-Fix-Commit: d37c2b20a4787463d192b32041c3406c2bd91de0 (2.38-44)
-Fix-Commit: 2b58cba076e912961ceaa5fa58588e4b10f791c0 (2.37-59)
-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
-Fix-Commit: b9b7d6a27aa0632f334352fa400771115b3c69b7 (2.36-128)
diff --git a/advisories/GLIBC-SA-2024-0004 b/advisories/GLIBC-SA-2024-0004
deleted file mode 100644
index 08df2b3118..0000000000
--- a/advisories/GLIBC-SA-2024-0004
+++ /dev/null
@@ -1,28 +0,0 @@
-ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence
-
-The iconv() function in the GNU C Library versions 2.39 and older may
-overflow the output buffer passed to it by up to 4 bytes when converting
-strings to the ISO-2022-CN-EXT character set, which may be used to
-crash an application or overwrite a neighbouring variable.
-
-ISO-2022-CN-EXT uses escape sequences to indicate character set changes
-(as specified by RFC 1922). While the SOdesignation has the expected
-bounds checks, neither SS2designation nor SS3designation have its;
-allowing a write overflow of 1, 2, or 3 bytes with fixed values:
-'$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'.
-
-CVE-Id: CVE-2024-2961
-Public-Date: 2024-04-17
-Vulnerable-Commit: 755104edc75c53f4a0e7440334e944ad3c6b32fc (2.1.93-169)
-Fix-Commit: f9dc609e06b1136bb0408be9605ce7973a767ada (2.40)
-Fix-Commit: 31da30f23cddd36db29d5b6a1c7619361b271fb4 (2.39-31)
-Fix-Commit: e1135387deded5d73924f6ca20c72a35dc8e1bda (2.38-66)
-Fix-Commit: 89ce64b269a897a7780e4c73a7412016381c6ecf (2.37-89)
-Fix-Commit: 4ed98540a7fd19f458287e783ae59c41e64df7b5 (2.36-164)
-Fix-Commit: 36280d1ce5e245aabefb877fe4d3c6cff95dabfa (2.35-315)
-Fix-Commit: a8b0561db4b9847ebfbfec20075697d5492a363c (2.34-459)
-Fix-Commit: ed4f16ff6bed3037266f1fa682ebd32a18fce29c (2.33-263)
-Fix-Commit: 682ad4c8623e611a971839990ceef00346289cc9 (2.32-140)
-Fix-Commit: 3703c32a8d304c1ee12126134ce69be965f38000 (2.31-154)
-
-Reported-By: Charles Fol
diff --git a/advisories/GLIBC-SA-2024-0005 b/advisories/GLIBC-SA-2024-0005
deleted file mode 100644
index a59596610a..0000000000
--- a/advisories/GLIBC-SA-2024-0005
+++ /dev/null
@@ -1,22 +0,0 @@
-nscd: Stack-based buffer overflow in netgroup cache
-
-If the Name Service Cache Daemon's (nscd) fixed size cache is exhausted
-by client requests then a subsequent client request for netgroup data
-may result in a stack-based buffer overflow. This flaw was introduced
-in glibc 2.15 when the cache was added to nscd.
-
-This vulnerability is only present in the nscd binary.
-
-CVE-Id: CVE-2024-33599
-Public-Date: 2024-04-23
-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
-Fix-Commit: 69c58d5ef9f584ea198bd00f7964d364d0e6b921 (2.31-155)
-Fix-Commit: a77064893bfe8a701770e2f53a4d33805bc47a5a (2.32-141)
-Fix-Commit: 5c75001a96abcd50cbdb74df24c3f013188d076e (2.33-264)
-Fix-Commit: 52f73e5c4e29b14e79167272297977f360ae1e97 (2.34-460)
-Fix-Commit: 7a95873543ce225376faf13bb71c43dea6d24f86 (2.35-316)
-Fix-Commit: caa3151ca460bdd9330adeedd68c3112d97bffe4 (2.36-165)
-Fix-Commit: f75c298e747b2b8b41b1c2f551c011a52c41bfd1 (2.37-91)
-Fix-Commit: 5968aebb86164034b8f8421b4abab2f837a5bdaf (2.38-72)
-Fix-Commit: 1263d583d2e28afb8be53f8d6922f0842036f35d (2.39-35)
-Fix-Commit: 87801a8fd06db1d654eea3e4f7626ff476a9bdaa (2.40)
diff --git a/advisories/GLIBC-SA-2024-0006 b/advisories/GLIBC-SA-2024-0006
deleted file mode 100644
index d44148d3d9..0000000000
--- a/advisories/GLIBC-SA-2024-0006
+++ /dev/null
@@ -1,32 +0,0 @@
-nscd: Null pointer crash after notfound response
-
-If the Name Service Cache Daemon's (nscd) cache fails to add a not-found
-netgroup response to the cache, the client request can result in a null
-pointer dereference. This flaw was introduced in glibc 2.15 when the
-cache was added to nscd.
-
-This vulnerability is only present in the nscd binary.
-
-CVE-Id: CVE-2024-33600
-Public-Date: 2024-04-24
-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
-Fix-Commit: b048a482f088e53144d26a61c390bed0210f49f2 (2.40)
-Fix-Commit: 7835b00dbce53c3c87bbbb1754a95fb5e58187aa (2.40)
-Fix-Commit: c99f886de54446cd4447db6b44be93dabbdc2f8b (2.39-37)
-Fix-Commit: 5a508e0b508c8ad53bd0d2fb48fd71b242626341 (2.39-36)
-Fix-Commit: 2ae9446c1b7a3064743b4a51c0bbae668ee43e4c (2.38-74)
-Fix-Commit: 541ea5172aa658c4bd5c6c6d6fd13903c3d5bb0a (2.38-73)
-Fix-Commit: a8070b31043c7585c36ba68a74298c4f7af075c3 (2.37-93)
-Fix-Commit: 5eea50c4402e39588de98aa1d4469a79774703d4 (2.37-92)
-Fix-Commit: f205b3af56740e3b014915b1bd3b162afe3407ef (2.36-167)
-Fix-Commit: c34f470a615b136170abd16142da5dd0c024f7d1 (2.36-166)
-Fix-Commit: bafadc589fbe21ae330e8c2af74db9da44a17660 (2.35-318)
-Fix-Commit: 4370bef52b0f3f3652c6aa13d7a9bb3ac079746d (2.35-317)
-Fix-Commit: 1f94122289a9bf7dba573f5d60327aaa2b85cf2e (2.34-462)
-Fix-Commit: 966d6ac9e40222b84bb21674cc4f83c8d72a5a26 (2.34-461)
-Fix-Commit: e3eef1b8fbdd3a7917af466ca9c4b7477251ca79 (2.33-266)
-Fix-Commit: f20a8d696b13c6261b52a6434899121f8b19d5a7 (2.33-265)
-Fix-Commit: be602180146de37582a3da3a0caa4b719645de9c (2.32-143)
-Fix-Commit: 394eae338199078b7961b051c191539870742d7b (2.32-142)
-Fix-Commit: 8d7949183760170c61e55def723c1d8050187874 (2.31-157)
-Fix-Commit: 304ce5fe466c4762b21b36c26926a4657b59b53e (2.31-156)
diff --git a/advisories/GLIBC-SA-2024-0007 b/advisories/GLIBC-SA-2024-0007
deleted file mode 100644
index b6928fa27a..0000000000
--- a/advisories/GLIBC-SA-2024-0007
+++ /dev/null
@@ -1,28 +0,0 @@
-nscd: netgroup cache may terminate daemon on memory allocation failure
-
-The Name Service Cache Daemon's (nscd) netgroup cache uses xmalloc or
-xrealloc and these functions may terminate the process due to a memory
-allocation failure resulting in a denial of service to the clients. The
-flaw was introduced in glibc 2.15 when the cache was added to nscd.
-
-This vulnerability is only present in the nscd binary.
-
-Subsequent refactoring of the netgroup cache only added more uses of
-xmalloc and xrealloc. Uses of xmalloc and xrealloc in other parts of
-nscd only occur during startup of the daemon and so are not affected by
-client requests that could trigger an out of memory followed by
-termination.
-
-CVE-Id: CVE-2024-33601
-Public-Date: 2024-04-24
-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40)
-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38)
-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75)
-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94)
-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168)
-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319)
-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463)
-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267)
-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144)
-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158)
diff --git a/advisories/GLIBC-SA-2024-0008 b/advisories/GLIBC-SA-2024-0008
deleted file mode 100644
index d93e2a6f0b..0000000000
--- a/advisories/GLIBC-SA-2024-0008
+++ /dev/null
@@ -1,26 +0,0 @@
-nscd: netgroup cache assumes NSS callback uses in-buffer strings
-
-The Name Service Cache Daemon's (nscd) netgroup cache can corrupt memory
-when the NSS callback does not store all strings in the provided buffer.
-The flaw was introduced in glibc 2.15 when the cache was added to nscd.
-
-This vulnerability is only present in the nscd binary.
-
-There is no guarantee from the NSS callback API that the returned
-strings are all within the buffer. However, the netgroup cache code
-assumes that the NSS callback uses in-buffer strings and if it doesn't
-the buffer resizing logic could lead to potential memory corruption.
-
-CVE-Id: CVE-2024-33602
-Public-Date: 2024-04-24
-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40)
-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38)
-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75)
-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94)
-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168)
-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319)
-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463)
-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267)
-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144)
-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158)
diff --git a/advisories/README b/advisories/README
deleted file mode 100644
index b8f8a829ca..0000000000
--- a/advisories/README
+++ /dev/null
@@ -1,77 +0,0 @@
-GNU C Library Security Advisory Format
-======================================
-
-Security advisories in this directory follow a simple git commit log
-format, with a heading and free-format description augmented with tags
-to allow parsing key information. References to code changes are
-specific to the glibc repository and follow a specific format:
-
- Tag-name: (release-version)
-
-The indicates a specific commit in the repository. The
-release-version indicates the publicly consumable release in which this
-commit is known to exist. The release-version is derived from the
-git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and
-is of the form 2.34-NNN. If the -NNN suffix is absent, it means that
-the change is in that release tarball, otherwise the change is on the
-release/2.YY/master branch and not in any released tarball.
-
-The following tags are currently being used:
-
-CVE-Id:
-This is the CVE-Id assigned under the CVE Program
-(https://www.cve.org/).
-
-Public-Date:
-The date this issue became publicly known.
-
-Vulnerable-Commit:
-The commit that introduced this vulnerability. There could be multiple
-entries, one for each release branch in the glibc repository; the
-release-version portion of this tag should tell you which branch this is
-on.
-
-Fix-Commit:
-The commit that fixed this vulnerability. There could be multiple
-entries for each release branch in the glibc repository, indicating that
-all of those commits contributed to fixing that issue in each of those
-branches.
-
-Reported-By:
-The entity that reported this issue. There could be multiple entries, one for
-each reporter.
-
-Adding an Advisory
-------------------
-
-An advisory for a CVE needs to be added on the master branch in two steps:
-
-1. Add the text of the advisory without any Fix-Commit tags along with
- the fix for the CVE. Add the Vulnerable-Commit tag, if applicable.
- The advisories directory does not exist in release branches, so keep
- the advisory text commit distinct from the code changes, to ease
- backports. Ask for the GLIBC-SA advisory number from the security
- team.
-
-2. Finish all backports on release branches and then back on the msater
- branch, add all commit refs to the advisory using the Fix-Commit
- tags. Don't bother adding the release-version subscript since the
- next step will overwrite it.
-
-3. Run the process-advisories.sh script in the scripts directory on the
- advisory:
-
- scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN
-
- (replace YYYY-NNNN with the actual advisory number).
-
-4. Verify the updated advisory and push the result.
-
-Getting a NEWS snippet from advisories
---------------------------------------
-
-Run:
-
- scripts/process-advisories.sh news
-
-and copy the content into the NEWS file.
diff --git a/assert/Makefile b/assert/Makefile
index 35dc908ddb..c0fe660bd6 100644
--- a/assert/Makefile
+++ b/assert/Makefile
@@ -38,6 +38,7 @@ tests := \
test-assert-perr \
tst-assert-c++ \
tst-assert-g++ \
+ tst-assert-sa-2025-0001 \
# tests
ifeq ($(have-cxx-thread_local),yes)
diff --git a/assert/assert.c b/assert/assert.c
index c29629f5f6..b6e37d694c 100644
--- a/assert/assert.c
+++ b/assert/assert.c
@@ -18,6 +18,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -65,7 +66,8 @@ __assert_fail_base (const char *fmt, const char *assertion, const char *file,
(void) __fxprintf (NULL, "%s", str);
(void) fflush (stderr);
- total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1);
+ total = ALIGN_UP (total + sizeof (struct abort_msg_s) + 1,
+ GLRO(dl_pagesize));
struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE,
MAP_ANON | MAP_PRIVATE, -1, 0);
if (__glibc_likely (buf != MAP_FAILED))
diff --git a/assert/tst-assert-sa-2025-0001.c b/assert/tst-assert-sa-2025-0001.c
new file mode 100644
index 0000000000..102cb0078d
--- /dev/null
+++ b/assert/tst-assert-sa-2025-0001.c
@@ -0,0 +1,92 @@
+/* Test for CVE-2025-0395.
+ Copyright The GNU Toolchain Authors.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/* Test that a large enough __progname does not result in a buffer overflow
+ when printing an assertion failure. This was CVE-2025-0395. */
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+extern const char *__progname;
+
+int
+do_test (int argc, char **argv)
+{
+
+ support_need_proc ("Reads /proc/self/maps to add guards to writable maps.");
+ ignore_stderr ();
+
+ /* XXX assumes that the assert is on a 2 digit line number. */
+ const char *prompt = ": %s:99: do_test: Assertion `argc < 1' failed.\n";
+
+ int ret = fprintf (stderr, prompt, __FILE__);
+ if (ret < 0)
+ FAIL_EXIT1 ("fprintf failed: %m\n");
+
+ size_t pagesize = getpagesize ();
+ size_t namesize = pagesize - 1 - ret;
+
+ /* Alter the progname so that the assert message fills the entire page. */
+ char progname[namesize];
+ memset (progname, 'A', namesize - 1);
+ progname[namesize - 1] = '\0';
+ __progname = progname;
+
+ FILE *f = xfopen ("/proc/self/maps", "r");
+ char *line = NULL;
+ size_t len = 0;
+ uintptr_t prev_to = 0;
+
+ /* Pad the beginning of every writable mapping with a PROT_NONE map. This
+ ensures that the mmap in the assert_fail path never ends up below a
+ writable map and will terminate immediately in case of a buffer
+ overflow. */
+ while (xgetline (&line, &len, f))
+ {
+ uintptr_t from, to;
+ char perm[4];
+
+ sscanf (line, "%" SCNxPTR "-%" SCNxPTR " %c%c%c%c ",
+ &from, &to,
+ &perm[0], &perm[1], &perm[2], &perm[3]);
+
+ bool writable = (memchr (perm, 'w', 4) != NULL);
+
+ if (prev_to != 0 && from - prev_to > pagesize && writable)
+ xmmap ((void *) from - pagesize, pagesize, PROT_NONE,
+ MAP_ANONYMOUS | MAP_PRIVATE, 0);
+
+ prev_to = to;
+ }
+
+ xfclose (f);
+
+ assert (argc < 1);
+ return 0;
+}
+
+#define EXPECTED_SIGNAL SIGABRT
+#define TEST_FUNCTION_ARGV do_test
+#include
diff --git a/benchtests/atanh-inputs b/benchtests/atanh-inputs
index 455aa65b65..4985293254 100644
--- a/benchtests/atanh-inputs
+++ b/benchtests/atanh-inputs
@@ -1,6 +1,7 @@
## args: double
## ret: double
## includes: math.h
+## name: workload-random
0x1.5a2730bacd94ap-1
-0x1.b57eb40fc048ep-21
-0x1.c0b185fb450e2p-17
diff --git a/benchtests/sinh-inputs b/benchtests/sinh-inputs
index 7b1ac46a39..2fcb2fabf8 100644
--- a/benchtests/sinh-inputs
+++ b/benchtests/sinh-inputs
@@ -1,6 +1,7 @@
## args: double
## ret: double
## includes: math.h
+## name: workload-random
0x1.bcb6129b5ff2bp8
-0x1.63057386325ebp9
0x1.62f1d7dc4e8bfp9
diff --git a/debug/pcprofiledump.c b/debug/pcprofiledump.c
index 049a9c2744..94530f0cf9 100644
--- a/debug/pcprofiledump.c
+++ b/debug/pcprofiledump.c
@@ -75,6 +75,44 @@ static struct argp argp =
options, parse_opt, args_doc, doc, NULL, more_help
};
+/* Try to read SIZE bytes from FD and store them on BUF. Terminate
+ the process upon read error. Also terminate the process if less
+ than SIZE bytes are remaining in the file. If !IN_HEADER, do not
+ terminate the process if the end of the file is encountered
+ immediately, before any bytes are read.
+
+ Returns true if SIZE bytes have been read, and false if no bytes
+ have been read due to an end-of-file condition. */
+static bool
+read_exactly (int fd, void *buffer, size_t size, bool in_header)
+{
+ char *p = buffer;
+ char *end = p + size;
+ while (p < end)
+ {
+ ssize_t ret = TEMP_FAILURE_RETRY (read (fd, p, end - p));
+ if (ret < 0)
+ {
+ if (in_header)
+ error (EXIT_FAILURE, errno, _("cannot read header"));
+ else
+ error (EXIT_FAILURE, errno, _("cannot read pointer pair"));
+ }
+ if (ret == 0)
+ {
+ if (p == buffer && !in_header)
+ /* Nothing has been read. */
+ return false;
+ if (in_header)
+ error (EXIT_FAILURE, 0, _("unexpected end of file in header"));
+ else
+ error (EXIT_FAILURE, 0,
+ _("unexpected end of file in pointer pair"));
+ }
+ p += ret;
+ }
+ return true;
+}
int
main (int argc, char *argv[])
@@ -110,8 +148,7 @@ main (int argc, char *argv[])
/* Read the first 4-byte word. It contains the information about
the word size and the endianness. */
uint32_t word;
- if (TEMP_FAILURE_RETRY (read (fd, &word, 4)) != 4)
- error (EXIT_FAILURE, errno, _("cannot read header"));
+ read_exactly (fd, &word, sizeof (word), true);
/* Check whether we have to swap the byte order. */
int must_swap = (word & 0x0fffffff) == bswap_32 (0xdeb00000);
@@ -121,56 +158,30 @@ main (int argc, char *argv[])
/* We have two loops, one for 32 bit pointers, one for 64 bit pointers. */
if (word == 0xdeb00004)
{
- union
- {
- uint32_t ptrs[2];
- char bytes[8];
- } pair;
+ uint32_t ptrs[2];
while (1)
{
- size_t len = sizeof (pair);
- size_t n;
-
- while (len > 0
- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len],
- len))) != 0)
- len -= n;
-
- if (len != 0)
- /* Nothing to read. */
+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false))
break;
printf ("this = %#010" PRIx32 ", caller = %#010" PRIx32 "\n",
- must_swap ? bswap_32 (pair.ptrs[0]) : pair.ptrs[0],
- must_swap ? bswap_32 (pair.ptrs[1]) : pair.ptrs[1]);
+ must_swap ? bswap_32 (ptrs[0]) : ptrs[0],
+ must_swap ? bswap_32 (ptrs[1]) : ptrs[1]);
}
}
else if (word == 0xdeb00008)
{
- union
- {
- uint64_t ptrs[2];
- char bytes[16];
- } pair;
+ uint64_t ptrs[2];
while (1)
{
- size_t len = sizeof (pair);
- size_t n;
-
- while (len > 0
- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len],
- len))) != 0)
- len -= n;
-
- if (len != 0)
- /* Nothing to read. */
+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false))
break;
printf ("this = %#018" PRIx64 ", caller = %#018" PRIx64 "\n",
- must_swap ? bswap_64 (pair.ptrs[0]) : pair.ptrs[0],
- must_swap ? bswap_64 (pair.ptrs[1]) : pair.ptrs[1]);
+ must_swap ? bswap_64 (ptrs[0]) : ptrs[0],
+ must_swap ? bswap_64 (ptrs[1]) : ptrs[1]);
}
}
else
diff --git a/debug/tst-fortify-syslog.c b/debug/tst-fortify-syslog.c
index a7ddbf7c6b..2712acf689 100644
--- a/debug/tst-fortify-syslog.c
+++ b/debug/tst-fortify-syslog.c
@@ -22,7 +22,6 @@
#include
#include
#include
-#include
#include
#include
@@ -46,18 +45,13 @@ handler (int sig)
_exit (127);
}
-#define FAIL() \
- do { \
- printf ("Failure on line %d\n", __LINE__); \
- support_record_failure (); \
- } while (0)
#define CHK_FAIL_START \
chk_fail_ok = 1; \
if (! setjmp (chk_fail_buf)) \
{
#define CHK_FAIL_END \
chk_fail_ok = 0; \
- FAIL (); \
+ FAIL ("not supposed to reach here"); \
}
static void
diff --git a/elf/Makefile b/elf/Makefile
index a3475f3fb5..afd4eb6fdd 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -266,6 +266,7 @@ tests-static-normal := \
tst-array1-static \
tst-array5-static \
tst-dl-iter-static \
+ tst-dlopen-sgid \
tst-dst-static \
tst-env-setuid-static \
tst-getauxval-static \
@@ -378,6 +379,7 @@ tests += \
tst-align3 \
tst-audit-tlsdesc \
tst-audit-tlsdesc-dlopen \
+ tst-audit-tlsdesc-dlopen2 \
tst-audit1 \
tst-audit2 \
tst-audit8 \
@@ -416,6 +418,10 @@ tests += \
tst-dlmopen4 \
tst-dlopen-self \
tst-dlopen-tlsmodid \
+ tst-dlopen-tlsreinit1 \
+ tst-dlopen-tlsreinit2 \
+ tst-dlopen-tlsreinit3 \
+ tst-dlopen-tlsreinit4 \
tst-dlopenfail \
tst-dlopenfail-2 \
tst-dlopenrpath \
@@ -813,6 +819,7 @@ modules-names += \
tst-auditmanymod8 \
tst-auditmanymod9 \
tst-auditmod-tlsdesc \
+ tst-auditmod-tlsdesc2 \
tst-auditmod1 \
tst-auditmod11 \
tst-auditmod12 \
@@ -853,6 +860,10 @@ modules-names += \
tst-dlmopen-twice-mod1 \
tst-dlmopen-twice-mod2 \
tst-dlmopen1mod \
+ tst-dlopen-sgid-mod \
+ tst-dlopen-tlsreinitmod1 \
+ tst-dlopen-tlsreinitmod2 \
+ tst-dlopen-tlsreinitmod3 \
tst-dlopenfaillinkmod \
tst-dlopenfailmod1 \
tst-dlopenfailmod2 \
@@ -3033,6 +3044,9 @@ $(objpfx)tst-audit-tlsdesc.out: $(objpfx)tst-auditmod-tlsdesc.so
tst-audit-tlsdesc-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so
$(objpfx)tst-audit-tlsdesc-dlopen.out: $(objpfx)tst-auditmod-tlsdesc.so
tst-audit-tlsdesc-dlopen-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc.so
+$(objpfx)tst-audit-tlsdesc-dlopen2.out: $(objpfx)tst-auditmod-tlsdesc2.so \
+ $(patsubst %, $(objpfx)%.so, $(tlsmod17a-modules))
+tst-audit-tlsdesc-dlopen2-ENV = LD_AUDIT=$(objpfx)tst-auditmod-tlsdesc2.so
$(objpfx)tst-dlmopen-twice.out: \
$(objpfx)tst-dlmopen-twice-mod1.so \
@@ -3118,3 +3132,28 @@ $(objpfx)tst-recursive-tls.out: \
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
$(objpfx)tst-recursive-tlsmod%.os: tst-recursive-tlsmodN.c
$(compile-command.c) -DVAR=thread_$* -DFUNC=get_threadvar_$*
+
+# Order matters here. The test needs the constructor for
+# tst-dlopen-tlsreinitmod2.so to be called first.
+LDFLAGS-tst-dlopen-tlsreinitmod1.so = -Wl,--no-as-needed
+$(objpfx)tst-dlopen-tlsreinitmod1.so: \
+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so
+LDFLAGS-tst-dlopen-tlsreinit2 = -Wl,--no-as-needed
+$(objpfx)tst-dlopen-tlsreinit2: \
+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so
+LDFLAGS-tst-dlopen-tlsreinit4 = -Wl,--no-as-needed
+$(objpfx)tst-dlopen-tlsreinit4: \
+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so
+# tst-dlopen-tlsreinitmod2.so is underlinked and refers to
+# tst-dlopen-tlsreinitmod3.so. The dependency is provided via
+# $(objpfx)tst-dlopen-tlsreinitmod1.so.
+tst-dlopen-tlsreinitmod2.so-no-z-defs = yes
+$(objpfx)tst-dlopen-tlsreinit1.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \
+ $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so
+# Reuse an audit module which provides ample debug logging.
+$(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so
+tst-dlopen-tlsreinit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
+$(objpfx)tst-dlopen-tlsreinit4.out: $(objpfx)tst-auditmod1.so
+tst-dlopen-tlsreinit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
+
+$(objpfx)tst-dlopen-sgid.out: $(objpfx)tst-dlopen-sgid-mod.so
diff --git a/elf/cache.c b/elf/cache.c
index 8a618e11fa..62d681df42 100644
--- a/elf/cache.c
+++ b/elf/cache.c
@@ -820,7 +820,7 @@ struct aux_cache_entry
struct aux_cache_entry *next;
};
-#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-1.0"
+#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-2.0"
struct aux_cache_file_entry
{
diff --git a/elf/dl-find_object.c b/elf/dl-find_object.c
index 449302eda3..ae18b438d3 100644
--- a/elf/dl-find_object.c
+++ b/elf/dl-find_object.c
@@ -662,6 +662,14 @@ _dl_find_object_update_1 (struct link_map **loaded, size_t count)
= _dlfo_loaded_mappings[!active_idx];
size_t remaining_to_add = current_used + count;
+ /* remaining_to_add can be 0 if (current_used + count) wraps, but in practice
+ this is not possible as it represent counts of link maps. Link maps have
+ sizes larger than 1 byte, so the sum of any two link map counts will
+ always fit within a size_t without wrapping around. This check ensures
+ that target_seg is not erroneously considered potentially NULL by GCC. */
+ if (remaining_to_add == 0)
+ __builtin_unreachable ();
+
/* Ensure that the new segment chain has enough space. */
{
size_t new_allocated
diff --git a/elf/dl-open.c b/elf/dl-open.c
index c378da16c0..8556e7bd2f 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -363,17 +363,8 @@ resize_tls_slotinfo (struct link_map *new)
{
bool any_tls = false;
for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
- {
- struct link_map *imap = new->l_searchlist.r_list[i];
-
- /* Only add TLS memory if this object is loaded now and
- therefore is not yet initialized. */
- if (! imap->l_init_called && imap->l_tls_blocksize > 0)
- {
- _dl_add_to_slotinfo (imap, false);
- any_tls = true;
- }
- }
+ if (_dl_add_to_slotinfo (new->l_searchlist.r_list[i], false))
+ any_tls = true;
return any_tls;
}
@@ -383,22 +374,8 @@ resize_tls_slotinfo (struct link_map *new)
static void
update_tls_slotinfo (struct link_map *new)
{
- unsigned int first_static_tls = new->l_searchlist.r_nlist;
for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
- {
- struct link_map *imap = new->l_searchlist.r_list[i];
-
- /* Only add TLS memory if this object is loaded now and
- therefore is not yet initialized. */
- if (! imap->l_init_called && imap->l_tls_blocksize > 0)
- {
- _dl_add_to_slotinfo (imap, true);
-
- if (imap->l_need_tls_init
- && first_static_tls == new->l_searchlist.r_nlist)
- first_static_tls = i;
- }
- }
+ _dl_add_to_slotinfo (new->l_searchlist.r_list[i], true);
size_t newgen = GL(dl_tls_generation) + 1;
if (__glibc_unlikely (newgen == 0))
@@ -410,13 +387,11 @@ TLS generation counter wrapped! Please report this."));
/* We need a second pass for static tls data, because
_dl_update_slotinfo must not be run while calls to
_dl_add_to_slotinfo are still pending. */
- for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i)
+ for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
{
struct link_map *imap = new->l_searchlist.r_list[i];
- if (imap->l_need_tls_init
- && ! imap->l_init_called
- && imap->l_tls_blocksize > 0)
+ if (imap->l_need_tls_init && imap->l_tls_blocksize > 0)
{
/* For static TLS we have to allocate the memory here and
now, but we can delay updating the DTV. */
diff --git a/elf/dl-tls.c b/elf/dl-tls.c
index 3d221273f1..b13e752358 100644
--- a/elf/dl-tls.c
+++ b/elf/dl-tls.c
@@ -528,6 +528,13 @@ _dl_resize_dtv (dtv_t *dtv, size_t max_modid)
if (newp == NULL)
oom ();
memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t));
+#ifdef SHARED
+ /* Auditors can trigger a DTV resize event while the full malloc
+ is not yet in use. Mark the new DTV allocation as the
+ initial allocation. */
+ if (!__rtld_malloc_is_complete ())
+ GL(dl_initial_dtv) = &newp[1];
+#endif
}
else
{
@@ -552,9 +559,14 @@ _dl_resize_dtv (dtv_t *dtv, size_t max_modid)
/* Allocate initial TLS. RESULT should be a non-NULL pointer to storage
for the TLS space. The DTV may be resized, and so this function may
call malloc to allocate that space. The loader's GL(dl_load_tls_lock)
- is taken when manipulating global TLS-related data in the loader. */
+ is taken when manipulating global TLS-related data in the loader.
+
+ If MAIN_THREAD, this is the first call during process
+ initialization. In this case, TLS initialization for secondary
+ (audit) namespaces is skipped because that has already been handled
+ by dlopen. */
void *
-_dl_allocate_tls_init (void *result, bool init_tls)
+_dl_allocate_tls_init (void *result, bool main_thread)
{
if (result == NULL)
/* The memory allocation failed. */
@@ -627,17 +639,21 @@ _dl_allocate_tls_init (void *result, bool init_tls)
some platforms use in static programs requires it. */
dtv[map->l_tls_modid].pointer.val = dest;
- /* Copy the initialization image and clear the BSS part. For
- audit modules or dependencies with initial-exec TLS, we can not
- set the initial TLS image on default loader initialization
- because it would already be set by the audit setup. However,
- subsequent thread creation would need to follow the default
- behaviour. */
- if (map->l_ns != LM_ID_BASE && !init_tls)
+ /* Copy the initialization image and clear the BSS part.
+ For audit modules or dependencies with initial-exec TLS,
+ we can not set the initial TLS image on default loader
+ initialization because it would already be set by the
+ audit setup, which uses the dlopen code and already
+ clears l_need_tls_init. Calls with !main_thread from
+ pthread_create need to initialze TLS for the current
+ thread regardless of namespace. */
+ if (map->l_ns != LM_ID_BASE && main_thread)
continue;
memset (__mempcpy (dest, map->l_tls_initimage,
map->l_tls_initimage_size), '\0',
map->l_tls_blocksize - map->l_tls_initimage_size);
+ if (main_thread)
+ map->l_need_tls_init = 0;
}
total += cnt;
@@ -661,7 +677,7 @@ _dl_allocate_tls (void *mem)
{
return _dl_allocate_tls_init (mem == NULL
? _dl_allocate_tls_storage ()
- : allocate_dtv (mem), true);
+ : allocate_dtv (mem), false);
}
rtld_hidden_def (_dl_allocate_tls)
@@ -1094,9 +1110,32 @@ _dl_tls_initial_modid_limit_setup (void)
}
-void
+/* Add module to slot information data. If DO_ADD is false, only the
+ required memory is allocated. Must be called with
+ GL (dl_load_tls_lock) acquired. If the function has already been
+ called for the link map L with !DO_ADD, then this function will not
+ raise an exception, otherwise it is possible that it encounters a
+ memory allocation failure.
+
+ Return false if L has already been added to the slotinfo data, or
+ if L has no TLS data. If the returned value is true, L has been
+ added with this call (DO_ADD), or has been added in a previous call
+ (!DO_ADD).
+
+ The expected usage is as follows: Call _dl_add_to_slotinfo for
+ several link maps with DO_ADD set to false, and record if any calls
+ result in a true result. If there was a true result, call
+ _dl_add_to_slotinfo again, this time with DO_ADD set to true. (For
+ simplicity, it's possible to call the function for link maps where
+ the previous result was false.) The return value from the second
+ round of calls can be ignored. If there was true result initially,
+ call _dl_update_slotinfo to update the TLS generation counter. */
+bool
_dl_add_to_slotinfo (struct link_map *l, bool do_add)
{
+ if (l->l_tls_blocksize == 0 || l->l_tls_in_slotinfo)
+ return false;
+
/* Now that we know the object is loaded successfully add
modules containing TLS data to the dtv info table. We
might have to increase its size. */
@@ -1152,7 +1191,10 @@ cannot create TLS data structures"));
atomic_store_relaxed (&listp->slotinfo[idx].map, l);
atomic_store_relaxed (&listp->slotinfo[idx].gen,
GL(dl_tls_generation) + 1);
+ l->l_tls_in_slotinfo = true;
}
+
+ return true;
}
#if PTHREAD_IN_LIBC
diff --git a/elf/rtld.c b/elf/rtld.c
index bfdf632e77..09b9c9993b 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2338,7 +2338,7 @@ dl_main (const ElfW(Phdr) *phdr,
into the main thread's TLS area, which we allocated above.
Note: thread-local variables must only be accessed after completing
the next step. */
- _dl_allocate_tls_init (tcbp, false);
+ _dl_allocate_tls_init (tcbp, true);
/* And finally install it for the main thread. */
if (! __rtld_tls_init_tp_called)
diff --git a/elf/tst-audit-tlsdesc-dlopen2.c b/elf/tst-audit-tlsdesc-dlopen2.c
new file mode 100644
index 0000000000..7ba2c4129a
--- /dev/null
+++ b/elf/tst-audit-tlsdesc-dlopen2.c
@@ -0,0 +1,46 @@
+/* Loading TLS-using modules from auditors (bug 32412). Main program.
+ Copyright (C) 2021-2025 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+
+static int
+do_test (void)
+{
+ puts ("info: start of main program");
+
+ /* Load TLS-using modules, to trigger DTV resizing. The dynamic
+ linker will load them again (requiring their own TLS) because the
+ dlopen calls from the auditor were in the auditing namespace. */
+ for (int i = 1; i <= 19; ++i)
+ {
+ char dso[30];
+ snprintf (dso, sizeof (dso), "tst-tlsmod17a%d.so", i);
+ char sym[30];
+ snprintf (sym, sizeof(sym), "tlsmod17a%d", i);
+
+ void *handle = xdlopen (dso, RTLD_LAZY);
+ int (*func) (void) = xdlsym (handle, sym);
+ /* Trigger TLS allocation. */
+ func ();
+ }
+
+ return 0;
+}
+
+#include
diff --git a/elf/tst-auditmod-tlsdesc2.c b/elf/tst-auditmod-tlsdesc2.c
new file mode 100644
index 0000000000..50275cd34d
--- /dev/null
+++ b/elf/tst-auditmod-tlsdesc2.c
@@ -0,0 +1,59 @@
+/* Loading TLS-using modules from auditors (bug 32412). Audit module.
+ Copyright (C) 2021-2025 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+#include
+
+unsigned int
+la_version (unsigned int version)
+{
+ /* Open some modules, to trigger DTV resizing before the switch to
+ the main malloc. */
+ for (int i = 1; i <= 19; ++i)
+ {
+ char dso[30];
+ snprintf (dso, sizeof (dso), "tst-tlsmod17a%d.so", i);
+ char sym[30];
+ snprintf (sym, sizeof(sym), "tlsmod17a%d", i);
+
+ void *handle = dlopen (dso, RTLD_LAZY);
+ if (handle == NULL)
+ {
+ printf ("error: dlmopen from auditor: %s\n", dlerror ());
+ fflush (stdout);
+ _exit (1);
+ }
+ int (*func) (void) = dlsym (handle, sym);
+ if (func == NULL)
+ {
+ printf ("error: dlsym from auditor: %s\n", dlerror ());
+ fflush (stdout);
+ _exit (1);
+ }
+ /* Trigger TLS allocation. */
+ func ();
+ }
+
+ puts ("info: TLS-using modules loaded from auditor");
+ fflush (stdout);
+
+ return LAV_CURRENT;
+}
diff --git a/elf/tst-dlopen-sgid-mod.c b/elf/tst-dlopen-sgid-mod.c
new file mode 100644
index 0000000000..5eb79eef48
--- /dev/null
+++ b/elf/tst-dlopen-sgid-mod.c
@@ -0,0 +1 @@
+/* Opening this object should not succeed. */
diff --git a/elf/tst-dlopen-sgid.c b/elf/tst-dlopen-sgid.c
new file mode 100644
index 0000000000..8aec52e19f
--- /dev/null
+++ b/elf/tst-dlopen-sgid.c
@@ -0,0 +1,106 @@
+/* Test case for ignored LD_LIBRARY_PATH in static startug (bug 32976).
+ Copyright (C) 2025 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+/* This is the name of our test object. Use a custom module for
+ testing, so that this object does not get picked up from the system
+ path. */
+static const char dso_name[] = "tst-dlopen-sgid-mod.so";
+
+/* Used to mark the recursive invocation. */
+static const char magic_argument[] = "run-actual-test";
+
+static int
+do_test (void)
+{
+/* Pathname of the directory that receives the shared objects this
+ test attempts to load. */
+ char *libdir = support_create_temp_directory ("tst-dlopen-sgid-");
+
+ /* This is supposed to be ignored and stripped. */
+ TEST_COMPARE (setenv ("LD_LIBRARY_PATH", libdir, 1), 0);
+
+ /* Copy of libc.so.6. */
+ {
+ char *from = xasprintf ("%s/%s", support_objdir_root, LIBC_SO);
+ char *to = xasprintf ("%s/%s", libdir, LIBC_SO);
+ add_temp_file (to);
+ support_copy_file (from, to);
+ free (to);
+ free (from);
+ }
+
+ /* Copy of the test object. */
+ {
+ char *from = xasprintf ("%s/elf/%s", support_objdir_root, dso_name);
+ char *to = xasprintf ("%s/%s", libdir, dso_name);
+ add_temp_file (to);
+ support_copy_file (from, to);
+ free (to);
+ free (from);
+ }
+
+ free (libdir);
+
+ support_capture_subprogram_self_sgid (magic_argument);
+
+ return 0;
+}
+
+static void
+alternative_main (int argc, char **argv)
+{
+ if (argc == 2 && strcmp (argv[1], magic_argument) == 0)
+ {
+ if (getgid () == getegid ())
+ /* This can happen if the file system is mounted nosuid. */
+ FAIL_UNSUPPORTED ("SGID failed: GID and EGID match (%jd)\n",
+ (intmax_t) getgid ());
+
+ /* Should be removed due to SGID. */
+ TEST_COMPARE_STRING (getenv ("LD_LIBRARY_PATH"), NULL);
+
+ TEST_VERIFY (dlopen (dso_name, RTLD_NOW) == NULL);
+ {
+ const char *message = dlerror ();
+ TEST_COMPARE_STRING (message,
+ "tst-dlopen-sgid-mod.so:"
+ " cannot open shared object file:"
+ " No such file or directory");
+ }
+
+ support_record_failure_barrier ();
+ exit (EXIT_SUCCESS);
+ }
+}
+
+#define PREPARE alternative_main
+#include
diff --git a/elf/tst-dlopen-tlsreinit1.c b/elf/tst-dlopen-tlsreinit1.c
new file mode 100644
index 0000000000..2016b9b0c6
--- /dev/null
+++ b/elf/tst-dlopen-tlsreinit1.c
@@ -0,0 +1,40 @@
+/* Test that dlopen preserves already accessed TLS (bug 31717).
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+
+static int
+do_test (void)
+{
+ void *handle = xdlopen ("tst-dlopen-tlsreinitmod1.so", RTLD_NOW);
+
+ bool *tlsreinitmod3_tested = xdlsym (handle, "tlsreinitmod3_tested");
+ TEST_VERIFY (*tlsreinitmod3_tested);
+
+ xdlclose (handle);
+
+ /* This crashes if the libc.so.6 TLS image has been reverted. */
+ TEST_VERIFY (!isupper ('@'));
+
+ return 0;
+}
+
+#include
diff --git a/elf/tst-dlopen-tlsreinit2.c b/elf/tst-dlopen-tlsreinit2.c
new file mode 100644
index 0000000000..90ad2c7713
--- /dev/null
+++ b/elf/tst-dlopen-tlsreinit2.c
@@ -0,0 +1,39 @@
+/* Test that dlopen preserves already accessed TLS (bug 31717).
+ Variant with initially-linked modules.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+
+
+static int
+do_test (void)
+{
+ /* Defined in tst-dlopen-tlsreinitmod3.so. */
+ extern bool tlsreinitmod3_tested;
+ TEST_VERIFY (tlsreinitmod3_tested);
+
+ /* This crashes if the libc.so.6 TLS image has been reverted. */
+ TEST_VERIFY (!isupper ('@'));
+
+ return 0;
+}
+
+#include
diff --git a/elf/tst-dlopen-tlsreinit3.c b/elf/tst-dlopen-tlsreinit3.c
new file mode 100644
index 0000000000..79bd585aff
--- /dev/null
+++ b/elf/tst-dlopen-tlsreinit3.c
@@ -0,0 +1,2 @@
+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */
+#include "tst-dlopen-tlsreinit1.c"
diff --git a/elf/tst-dlopen-tlsreinit4.c b/elf/tst-dlopen-tlsreinit4.c
new file mode 100644
index 0000000000..344c9211ab
--- /dev/null
+++ b/elf/tst-dlopen-tlsreinit4.c
@@ -0,0 +1,2 @@
+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */
+#include "tst-dlopen-tlsreinit2.c"
diff --git a/elf/tst-dlopen-tlsreinitmod1.c b/elf/tst-dlopen-tlsreinitmod1.c
new file mode 100644
index 0000000000..354cc3de51
--- /dev/null
+++ b/elf/tst-dlopen-tlsreinitmod1.c
@@ -0,0 +1,20 @@
+/* Test that dlopen preserves already accessed TLS (bug 31717), module 1.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/* This module triggers loading of tst-dlopen-tlsreinitmod2.so and
+ tst-dlopen-tlsreinitmod3.so. */
diff --git a/elf/tst-dlopen-tlsreinitmod2.c b/elf/tst-dlopen-tlsreinitmod2.c
new file mode 100644
index 0000000000..677e69bd35
--- /dev/null
+++ b/elf/tst-dlopen-tlsreinitmod2.c
@@ -0,0 +1,30 @@
+/* Test that dlopen preserves already accessed TLS (bug 31717), module 2.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+
+/* Defined in tst-dlopen-tlsreinitmod3.so. This an underlinked symbol
+ dependency. */
+extern void call_tlsreinitmod3 (void);
+
+static void __attribute__ ((constructor))
+tlsreinitmod2_init (void)
+{
+ puts ("info: constructor of tst-dlopen-tlsreinitmod2.so invoked");
+ call_tlsreinitmod3 ();
+}
diff --git a/elf/tst-dlopen-tlsreinitmod3.c b/elf/tst-dlopen-tlsreinitmod3.c
new file mode 100644
index 0000000000..ef769c5131
--- /dev/null
+++ b/elf/tst-dlopen-tlsreinitmod3.c
@@ -0,0 +1,102 @@
+/* Test that dlopen preserves already accessed TLS (bug 31717), module 3.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+
+/* Used to verify from the main program that the test ran. */
+bool tlsreinitmod3_tested;
+
+/* This TLS variable must not revert back to the initial state after
+ dlopen. */
+static __thread int tlsreinitmod3_state = 1;
+
+/* Set from the ELF constructor during dlopen. */
+static bool tlsreinitmod3_constructed;
+
+/* Second half of test, behind a compiler barrier. The compiler
+ barrier is necessary to prevent carrying over TLS address
+ information from call_tlsreinitmod3 to call_tlsreinitmod3_tail. */
+void call_tlsreinitmod3_tail (void *self) __attribute__ ((weak));
+
+/* Called from tst-dlopen-tlsreinitmod2.so. */
+void
+call_tlsreinitmod3 (void)
+{
+ printf ("info: call_tlsreinitmod3 invoked (state=%d)\n",
+ tlsreinitmod3_state);
+
+ if (tlsreinitmod3_constructed)
+ {
+ puts ("error: call_tlsreinitmod3 called after ELF constructor");
+ fflush (stdout);
+ /* Cannot rely on test harness due to dynamic linking. */
+ _exit (1);
+ }
+
+ tlsreinitmod3_state = 2;
+
+ /* Self-dlopen. This will run the ELF constructor. */
+ void *self = dlopen ("tst-dlopen-tlsreinitmod3.so", RTLD_NOW);
+ if (self == NULL)
+ {
+ printf ("error: dlopen: %s\n", dlerror ());
+ fflush (stdout);
+ /* Cannot rely on test harness due to dynamic linking. */
+ _exit (1);
+ }
+
+ call_tlsreinitmod3_tail (self);
+}
+
+void
+call_tlsreinitmod3_tail (void *self)
+{
+ printf ("info: dlopen returned in tlsreinitmod3 (state=%d)\n",
+ tlsreinitmod3_state);
+
+ if (!tlsreinitmod3_constructed)
+ {
+ puts ("error: dlopen did not call tlsreinitmod3 ELF constructor");
+ fflush (stdout);
+ /* Cannot rely on test harness due to dynamic linking. */
+ _exit (1);
+ }
+
+ if (tlsreinitmod3_state != 2)
+ {
+ puts ("error: TLS state reverted in tlsreinitmod3");
+ fflush (stdout);
+ /* Cannot rely on test harness due to dynamic linking. */
+ _exit (1);
+ }
+
+ dlclose (self);
+
+ /* Signal test completion to the main program. */
+ tlsreinitmod3_tested = true;
+}
+
+static void __attribute__ ((constructor))
+tlsreinitmod3_init (void)
+{
+ puts ("info: constructor of tst-dlopen-tlsreinitmod3.so invoked");
+ tlsreinitmod3_constructed = true;
+}
diff --git a/elf/tst-env-setuid-tunables.c b/elf/tst-env-setuid-tunables.c
index a47219047f..233eec7631 100644
--- a/elf/tst-env-setuid-tunables.c
+++ b/elf/tst-env-setuid-tunables.c
@@ -105,10 +105,7 @@ do_test (int argc, char **argv)
if (ret != 0)
exit (1);
-
- /* Special return code to make sure that the child executed all the way
- through. */
- exit (42);
+ return 0;
}
else
{
@@ -127,18 +124,7 @@ do_test (int argc, char **argv)
continue;
}
- int status = support_capture_subprogram_self_sgid (buf);
-
- /* Bail out early if unsupported. */
- if (WEXITSTATUS (status) == EXIT_UNSUPPORTED)
- return EXIT_UNSUPPORTED;
-
- if (WEXITSTATUS (status) != 42)
- {
- printf (" [%d] child failed with status %d\n", i,
- WEXITSTATUS (status));
- support_record_failure ();
- }
+ support_capture_subprogram_self_sgid (buf);
}
return 0;
}
diff --git a/elf/tst-env-setuid.c b/elf/tst-env-setuid.c
index 59f2ffeb88..ee3f058468 100644
--- a/elf/tst-env-setuid.c
+++ b/elf/tst-env-setuid.c
@@ -147,10 +147,7 @@ do_test (int argc, char **argv)
if (ret != 0)
exit (1);
-
- /* Special return code to make sure that the child executed all the way
- through. */
- exit (42);
+ return 0;
}
else
{
@@ -174,17 +171,7 @@ do_test (int argc, char **argv)
free (profilepath);
}
- int status = support_capture_subprogram_self_sgid (SETGID_CHILD);
-
- if (WEXITSTATUS (status) == EXIT_UNSUPPORTED)
- exit (EXIT_UNSUPPORTED);
-
- if (WEXITSTATUS (status) != 42)
- {
- printf (" child failed with status %d\n",
- WEXITSTATUS (status));
- support_record_failure ();
- }
+ support_capture_subprogram_self_sgid (SETGID_CHILD);
return 0;
}
diff --git a/include/libc-internal.h b/include/libc-internal.h
index 87ac591835..1ef43ffe67 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -53,6 +53,9 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
is not for an audit module, not loaded via dlmopen, and not loaded
via static dlopen either). */
extern _Bool __libc_initial attribute_hidden;
+#else
+/* The static libc is always the initial namespace. */
+# define __libc_initial ((_Bool) 1)
#endif
#endif /* _LIBC_INTERNAL */
diff --git a/include/link.h b/include/link.h
index cb0d7d8e2f..5ed445d5a6 100644
--- a/include/link.h
+++ b/include/link.h
@@ -212,6 +212,7 @@ struct link_map
unsigned int l_find_object_processed:1; /* Zero if _dl_find_object_update
needs to process this
lt_library map. */
+ unsigned int l_tls_in_slotinfo:1; /* TLS slotinfo updated in dlopen. */
/* NODELETE status of the map. Only valid for maps of type
lt_loaded. Lazy binding sets l_nodelete_active directly,
diff --git a/include/math.h b/include/math.h
index fa11a710a6..035fd160ff 100644
--- a/include/math.h
+++ b/include/math.h
@@ -130,7 +130,10 @@ fabsf128 (_Float128 x)
}
# endif
-# if !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
+
+/* NB: Internal tests don't have access to internal symbols. */
+# if !IS_IN (testsuite_internal) \
+ && !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
# ifndef NO_MATH_REDIRECT
/* Declare some functions for use within GLIBC. Compilers typically
inline those functions as a single instruction. Use an asm to
diff --git a/libio/Makefile b/libio/Makefile
index 6a507b67ea..f2e98f96eb 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -117,6 +117,7 @@ tests = \
tst-mmap-offend \
tst-mmap-setvbuf \
tst-mmap2-eofsync \
+ tst-popen-fork \
tst-popen1 \
tst-setvbuf1 \
tst-sprintf-chk-ub \
@@ -141,6 +142,8 @@ tests = \
tst_wscanf \
# tests
+$(objpfx)tst-popen-fork: $(shared-thread-library)
+
tests-internal = tst-vtables tst-vtables-interposed
ifeq (yes,$(build-shared))
@@ -286,11 +289,18 @@ endif
ifeq ($(build-shared),yes)
aux += oldfileops oldstdfiles
tests += \
+ tst-fopen-compat \
tst-stderr-compat \
# tests
tests-2.0 += \
+ tst-fopen-compat \
tst-stderr-compat \
# tests-2.0
+
+tst-fopen-compat-ARGS = tst-fopen-compat.c
+# Disable PIE to trigger copy relocation.
+CFLAGS-tst-fopen-compat.c += -fno-pie
+tst-fopen-compat-no-pie = yes
endif
shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \
diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h
index 91a80dd7c6..4b8bc35bdf 100644
--- a/libio/bits/stdio2.h
+++ b/libio/bits/stdio2.h
@@ -308,14 +308,14 @@ fgets (__fortify_clang_overload_arg (char *, __restrict, __s), int __n,
"fgets called with bigger size than length of "
"destination buffer")
{
- size_t sz = __glibc_objsize (__s);
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
+ size_t __sz = __glibc_objsize (__s);
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
return __fgets_alias (__s, __n, __stream);
#if !__fortify_use_clang
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
- return __fgets_chk_warn (__s, sz, __n, __stream);
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
+ return __fgets_chk_warn (__s, __sz, __n, __stream);
#endif
- return __fgets_chk (__s, sz, __n, __stream);
+ return __fgets_chk (__s, __sz, __n, __stream);
}
__fortify_function __wur __nonnull ((4)) __attribute_overloadable__ size_t
@@ -326,14 +326,14 @@ fread (__fortify_clang_overload_arg (void *, __restrict, __ptr),
"fread called with bigger size * n than length "
"of destination buffer")
{
- size_t sz = __glibc_objsize0 (__ptr);
- if (__glibc_safe_or_unknown_len (__n, __size, sz))
+ size_t __sz = __glibc_objsize0 (__ptr);
+ if (__glibc_safe_or_unknown_len (__n, __size, __sz))
return __fread_alias (__ptr, __size, __n, __stream);
#if !__fortify_use_clang
- if (__glibc_unsafe_len (__n, __size, sz))
- return __fread_chk_warn (__ptr, sz, __size, __n, __stream);
+ if (__glibc_unsafe_len (__n, __size, __sz))
+ return __fread_chk_warn (__ptr, __sz, __size, __n, __stream);
#endif
- return __fread_chk (__ptr, sz, __size, __n, __stream);
+ return __fread_chk (__ptr, __sz, __size, __n, __stream);
}
#ifdef __USE_GNU
@@ -345,14 +345,14 @@ fgets_unlocked (__fortify_clang_overload_arg (char *, __restrict, __s),
"fgets called with bigger size than length of "
"destination buffer")
{
- size_t sz = __glibc_objsize (__s);
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
+ size_t __sz = __glibc_objsize (__s);
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
return __fgets_unlocked_alias (__s, __n, __stream);
#if !__fortify_use_clang
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
- return __fgets_unlocked_chk_warn (__s, sz, __n, __stream);
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
+ return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream);
#endif
- return __fgets_unlocked_chk (__s, sz, __n, __stream);
+ return __fgets_unlocked_chk (__s, __sz, __n, __stream);
}
#endif
@@ -366,8 +366,8 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr),
"fread_unlocked called with bigger size * n than "
"length of destination buffer")
{
- size_t sz = __glibc_objsize0 (__ptr);
- if (__glibc_safe_or_unknown_len (__n, __size, sz))
+ size_t __sz = __glibc_objsize0 (__ptr);
+ if (__glibc_safe_or_unknown_len (__n, __size, __sz))
{
# ifdef __USE_EXTERN_INLINES
if (__builtin_constant_p (__size)
@@ -393,10 +393,10 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr),
return __fread_unlocked_alias (__ptr, __size, __n, __stream);
}
# if !__fortify_use_clang
- if (__glibc_unsafe_len (__n, __size, sz))
- return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream);
+ if (__glibc_unsafe_len (__n, __size, __sz))
+ return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream);
# endif
- return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream);
+ return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream);
}
#endif
diff --git a/libio/genops.c b/libio/genops.c
index 99f5e80f20..6f20d49669 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -662,7 +662,7 @@ _IO_sputbackc (FILE *fp, int c)
{
int result;
- if (fp->_IO_read_ptr > fp->_IO_read_base
+ if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp)
&& (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c)
{
fp->_IO_read_ptr--;
@@ -816,6 +816,12 @@ _IO_unbuffer_all (void)
legacy = 1;
#endif
+ /* Free up the backup area if it was ever allocated. */
+ if (_IO_have_backup (fp))
+ _IO_free_backup_area (fp);
+ if (!legacy && fp->_mode > 0 && _IO_have_wbackup (fp))
+ _IO_free_wbackup_area (fp);
+
if (! (fp->_flags & _IO_UNBUFFERED)
/* Iff stream is un-orientated, it wasn't used. */
&& (legacy || fp->_mode != 0))
diff --git a/libio/iopopen.c b/libio/iopopen.c
index d01cb0648e..352513a291 100644
--- a/libio/iopopen.c
+++ b/libio/iopopen.c
@@ -57,6 +57,26 @@ unlock (void *not_used)
}
#endif
+/* These lock/unlock/resetlock functions are used during fork. */
+
+void
+_IO_proc_file_chain_lock (void)
+{
+ _IO_lock_lock (proc_file_chain_lock);
+}
+
+void
+_IO_proc_file_chain_unlock (void)
+{
+ _IO_lock_unlock (proc_file_chain_lock);
+}
+
+void
+_IO_proc_file_chain_resetlock (void)
+{
+ _IO_lock_init (proc_file_chain_lock);
+}
+
/* POSIX states popen shall ensure that any streams from previous popen()
calls that remain open in the parent process should be closed in the new
child process.
diff --git a/libio/libioP.h b/libio/libioP.h
index 1af287b19f..a83a411fdf 100644
--- a/libio/libioP.h
+++ b/libio/libioP.h
@@ -429,6 +429,12 @@ libc_hidden_proto (_IO_list_resetlock)
extern void _IO_enable_locks (void) __THROW;
libc_hidden_proto (_IO_enable_locks)
+/* Functions for operating popen's proc_file_chain_lock during fork. */
+
+extern void _IO_proc_file_chain_lock (void) __THROW attribute_hidden;
+extern void _IO_proc_file_chain_unlock (void) __THROW attribute_hidden;
+extern void _IO_proc_file_chain_resetlock (void) __THROW attribute_hidden;
+
/* Default jumptable functions. */
extern int _IO_default_underflow (FILE *) __THROW;
@@ -577,8 +583,8 @@ extern void _IO_old_init (FILE *fp, int flags) __THROW;
((__fp)->_wide_data->_IO_write_base \
= (__fp)->_wide_data->_IO_write_ptr = __p, \
(__fp)->_wide_data->_IO_write_end = (__ep))
-#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL)
-#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL)
+#define _IO_have_backup(fp) ((fp)->_IO_backup_base != NULL)
+#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_backup_base != NULL)
#define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP)
#define _IO_have_markers(fp) ((fp)->_markers != NULL)
#define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base)
diff --git a/libio/oldfileops.c b/libio/oldfileops.c
index 97148dba9b..8f775c9094 100644
--- a/libio/oldfileops.c
+++ b/libio/oldfileops.c
@@ -103,9 +103,11 @@ _IO_old_file_init_internal (struct _IO_FILE_plus *fp)
fp->file._old_offset = _IO_pos_BAD;
fp->file._flags |= CLOSED_FILEBUF_FLAGS;
- _IO_link_in (fp);
+ /* NB: _vtable_offset must be set before calling _IO_link_in since
+ _IO_vtable_offset is used to detect the old binaries. */
fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE)
- (int) sizeof (struct _IO_FILE_complete));
+ _IO_link_in (fp);
fp->file._fileno = -1;
if (&_IO_stdin_used != NULL || !_IO_legacy_file ((FILE *) fp))
diff --git a/libio/tst-fopen-compat.c b/libio/tst-fopen-compat.c
new file mode 100644
index 0000000000..f241b61043
--- /dev/null
+++ b/libio/tst-fopen-compat.c
@@ -0,0 +1,85 @@
+/* Verify that fopen works with copy relocation on _IO_stderr_ in binaries
+ linked with glibc 2.0.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+
+#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+# define _LIBC
+# define _IO_USE_OLD_IO_FILE
+# include
+# include
+# include
+# include
+# include
+# include
+
+struct _IO_jump_t;
+
+struct _IO_FILE_plus
+{
+ FILE file;
+ const struct _IO_jump_t *vtable;
+};
+
+extern struct _IO_FILE_plus _IO_stderr_;
+compat_symbol_reference (libc, _IO_stderr_, _IO_stderr_, GLIBC_2_0);
+compat_symbol_reference (libc, fopen, fopen, GLIBC_2_0);
+compat_symbol_reference (libc, fclose, fclose, GLIBC_2_0);
+
+static int
+do_test (int argc, char *argv[])
+{
+ static char filename[PATH_MAX + 1];
+ struct stat st;
+ char *name = NULL;
+ int i;
+
+ /* Try to trigger copy relocation. */
+ TEST_VERIFY_EXIT (_IO_stderr_.file._fileno == STDERR_FILENO);
+
+ for (i = 1; i < argc; i++)
+ {
+ name = argv[i];
+ if (stat (name, &st) == 0)
+ {
+ TEST_VERIFY_EXIT (strlen (name) <= PATH_MAX);
+ break;
+ }
+ }
+ TEST_VERIFY_EXIT (name != NULL);
+
+ strcpy (filename, name);
+ FILE *fp = fopen (filename, "r");
+ TEST_VERIFY_EXIT (strcmp (filename, name) == 0);
+ TEST_VERIFY_EXIT (fp != NULL);
+ TEST_VERIFY_EXIT (fclose (fp) == 0);
+ return 0;
+}
+#else
+# include
+
+static int
+do_test (int argc, char *argv[])
+{
+ return EXIT_UNSUPPORTED;
+}
+#endif
+
+#define TEST_FUNCTION_ARGV do_test
+#include
diff --git a/libio/tst-popen-fork.c b/libio/tst-popen-fork.c
new file mode 100644
index 0000000000..1df30fc6c0
--- /dev/null
+++ b/libio/tst-popen-fork.c
@@ -0,0 +1,80 @@
+/* Test concurrent popen and fork.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+static void
+popen_and_pclose (void)
+{
+ FILE *f = popen ("true", "r");
+ TEST_VERIFY_EXIT (f != NULL);
+ pclose (f);
+ return;
+}
+
+static atomic_bool done = ATOMIC_VAR_INIT (0);
+
+static void *
+popen_and_pclose_forever (__attribute__ ((unused))
+ void *arg)
+{
+ while (!atomic_load_explicit (&done, memory_order_acquire))
+ popen_and_pclose ();
+ return NULL;
+}
+
+static int
+do_test (void)
+{
+
+ /* Repeatedly call popen in a loop during the entire test. */
+ pthread_t t = xpthread_create (NULL, popen_and_pclose_forever, NULL);
+
+ /* Repeatedly fork off and reap child processes one-by-one.
+ Each child calls popen once, then exits, leading to the possibility
+ that a child forks *during* our own popen call, thus inheriting any
+ intermediate popen state, possibly including lock state(s). */
+ for (int i = 0; i < 100; i++)
+ {
+ int cpid = xfork ();
+
+ if (cpid == 0)
+ {
+ popen_and_pclose ();
+ _exit (0);
+ }
+ else
+ xwaitpid (cpid, NULL, 0);
+ }
+
+ /* Stop calling popen. */
+ atomic_store_explicit (&done, 1, memory_order_release);
+ xpthread_join (t);
+
+ return 0;
+}
+
+#include
diff --git a/localedata/tst-ctype.c b/localedata/tst-ctype.c
index 9de979a2d7..a23689719c 100644
--- a/localedata/tst-ctype.c
+++ b/localedata/tst-ctype.c
@@ -21,6 +21,8 @@
#include
#include
+#include
+
static const char lower[] = "abcdefghijklmnopqrstuvwxyz";
static const char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
@@ -53,19 +55,11 @@ static struct classes
#define nclasses (sizeof (classes) / sizeof (classes[0]))
-#define FAIL(str, args...) \
- { \
- printf (" " str "\n", ##args); \
- ++errors; \
- }
-
-
static int
do_test (void)
{
const char *cp;
const char *cp2;
- int errors = 0;
char *inpline = NULL;
size_t inplinelen = 0;
char *resline = NULL;
@@ -394,11 +388,8 @@ punct = %04x alnum = %04x\n",
{
if (((__ctype_b[(unsigned int) *inp] & classes[n].mask) != 0)
!= (*resp != '0'))
- {
- printf (" is%s('%c' = '\\x%02x') %s true\n", inpline,
- *inp, *inp, *resp == '1' ? "not" : "is");
- ++errors;
- }
+ FAIL (" is%s('%c' = '\\x%02x') %s true\n", inpline,
+ *inp, *inp, *resp == '1' ? "not" : "is");
++inp;
++resp;
}
@@ -408,11 +399,8 @@ punct = %04x alnum = %04x\n",
while (*inp != '\0')
{
if (tolower (*inp) != *resp)
- {
- printf (" tolower('%c' = '\\x%02x') != '%c'\n",
- *inp, *inp, *resp);
- ++errors;
- }
+ FAIL (" tolower('%c' = '\\x%02x') != '%c'\n",
+ *inp, *inp, *resp);
++inp;
++resp;
}
@@ -422,11 +410,8 @@ punct = %04x alnum = %04x\n",
while (*inp != '\0')
{
if (toupper (*inp) != *resp)
- {
- printf (" toupper('%c' = '\\x%02x') != '%c'\n",
- *inp, *inp, *resp);
- ++errors;
- }
+ FAIL (" toupper('%c' = '\\x%02x') != '%c'\n",
+ *inp, *inp, *resp);
++inp;
++resp;
}
@@ -436,14 +421,7 @@ punct = %04x alnum = %04x\n",
}
- if (errors != 0)
- {
- printf (" %d error%s for `%s' locale\n\n\n", errors,
- errors == 1 ? "" : "s", setlocale (LC_ALL, NULL));
- return 1;
- }
-
- printf (" No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL));
+ printf ("Completed testing for `%s' locale\n\n\n", setlocale (LC_ALL, NULL));
return 0;
}
diff --git a/malloc/Makefile b/malloc/Makefile
index 02aff1bd1d..98d507a6eb 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -28,6 +28,8 @@ tests := \
mallocbug \
tst-aligned-alloc \
tst-aligned-alloc-random \
+ tst-aligned-alloc-random-thread \
+ tst-aligned-alloc-random-thread-cross \
tst-alloc_buffer \
tst-calloc \
tst-free-errno \
@@ -151,6 +153,8 @@ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes)
# the tests expect specific internal behavior that is changed due to linking to
# libmcheck.a.
tests-exclude-mcheck = \
+ tst-aligned-alloc-random-thread \
+ tst-aligned-alloc-random-thread-cross \
tst-compathooks-off \
tst-compathooks-on \
tst-malloc-backtrace \
@@ -415,7 +419,11 @@ $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so
$(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so
$(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
+$(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so
+$(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so
$(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
+tst-aligned-alloc-random-thread-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
+tst-aligned-alloc-random-thread-cross-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
diff --git a/malloc/tst-aligned-alloc-random-thread-cross.c b/malloc/tst-aligned-alloc-random-thread-cross.c
new file mode 100644
index 0000000000..360ecc56ee
--- /dev/null
+++ b/malloc/tst-aligned-alloc-random-thread-cross.c
@@ -0,0 +1,19 @@
+/* multi-threaded memory allocation and cross-thread deallocation test.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If
+ not, see . */
+#define CROSS_THREAD_DEALLOC
+#include "tst-aligned-alloc-random-thread.c"
diff --git a/malloc/tst-aligned-alloc-random-thread.c b/malloc/tst-aligned-alloc-random-thread.c
new file mode 100644
index 0000000000..e95f79250a
--- /dev/null
+++ b/malloc/tst-aligned-alloc-random-thread.c
@@ -0,0 +1,145 @@
+/* multi-threaded memory allocation/deallocation test.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If
+ not, see . */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#ifndef ITERATIONS
+# define ITERATIONS 16
+#endif
+
+#ifndef NUM_THREADS
+# define NUM_THREADS 8
+#endif
+
+#ifndef NUM_ALLOCATIONS
+# define NUM_ALLOCATIONS 2048
+#endif
+
+static pthread_barrier_t barrier;
+
+__thread unsigned int seed;
+
+typedef struct
+{
+ int id;
+ pthread_t thread;
+} thread;
+
+thread threads[NUM_THREADS];
+
+void *allocations[NUM_THREADS][NUM_ALLOCATIONS];
+
+void
+run_thread_dealloc (int id)
+{
+ for (int i = 0; i < NUM_ALLOCATIONS; i++)
+ {
+ free (allocations[id][i]);
+ allocations[id][i] = NULL;
+ }
+}
+
+void
+run_thread_alloc (int id)
+{
+ size_t msb, size;
+ for (int i = 0; i < NUM_ALLOCATIONS; i++)
+ {
+ msb = 1 << rand_r (&seed) % 16;
+ size = msb + rand_r (&seed) % msb;
+ allocations[id][i] = malloc (size);
+ TEST_VERIFY_EXIT (allocations[id][i] != NULL);
+ }
+}
+
+void *
+run_allocations (void *arg)
+{
+ int id = *((int *) arg);
+ seed = time (NULL) + id;
+
+ /* Stage 1: First half o the threads allocating memory and the second
+ * half waiting for them to finish
+ */
+ if (id < NUM_THREADS / 2)
+ run_thread_alloc (id);
+
+ xpthread_barrier_wait (&barrier);
+
+ /* Stage 2: Half of the threads allocationg memory and the other
+ * half deallocating:
+ * - In the non cross-thread dealloc scenario the first half will be
+ * deallocating the memory allocated by themselves in stage 1 and the
+ * second half will be allocating memory.
+ * - In the cross-thread dealloc scenario the first half will continue
+ * to allocate memory and the second half will deallocate the memory
+ * allocated by the first half in stage 1.
+ */
+ if (id < NUM_THREADS / 2)
+#ifndef CROSS_THREAD_DEALLOC
+ run_thread_dealloc (id);
+#else
+ run_thread_alloc (id + NUM_THREADS / 2);
+#endif
+ else
+#ifndef CROSS_THREAD_DEALLOC
+ run_thread_alloc (id);
+#else
+ run_thread_dealloc (id - NUM_THREADS / 2);
+#endif
+
+ xpthread_barrier_wait (&barrier);
+
+ // Stage 3: Second half of the threads deallocating and the first half
+ // waiting for them to finish.
+ if (id >= NUM_THREADS / 2)
+ run_thread_dealloc (id);
+
+ return NULL;
+}
+
+static int
+do_test (void)
+{
+ xpthread_barrier_init (&barrier, NULL, NUM_THREADS);
+
+ for (int i = 0; i < ITERATIONS; i++)
+ {
+ for (int t = 0; t < NUM_THREADS; t++)
+ {
+ threads[t].id = t;
+ threads[t].thread
+ = xpthread_create (NULL, run_allocations, &threads[t].id);
+ }
+
+ for (int t = 0; t < NUM_THREADS; t++)
+ xpthread_join (threads[t].thread);
+ }
+
+ return 0;
+}
+
+#include
diff --git a/malloc/tst-aligned-alloc.c b/malloc/tst-aligned-alloc.c
index 91167d1392..b0f05a8fec 100644
--- a/malloc/tst-aligned-alloc.c
+++ b/malloc/tst-aligned-alloc.c
@@ -25,6 +25,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
static int
do_test (void)
{
diff --git a/malloc/tst-aligned_alloc-lib.c b/malloc/tst-aligned_alloc-lib.c
index 0205df5acf..9ef1f839c1 100644
--- a/malloc/tst-aligned_alloc-lib.c
+++ b/malloc/tst-aligned_alloc-lib.c
@@ -17,37 +17,38 @@
License along with the GNU C Library; see the file COPYING.LIB. If
not, see . */
-#include
#include
#include
+#include
extern void *__libc_malloc (size_t size);
extern void *__libc_calloc (size_t n, size_t size);
+__thread unsigned int seed = 0;
+
int aligned_alloc_count = 0;
int libc_malloc_count = 0;
int libc_calloc_count = 0;
-/* Get a random alignment value. Biased towards the smaller values. Must be
- a power of 2. */
-static size_t get_random_alignment (void)
-{
- size_t aligns[] = {
- 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384
- };
-
- return aligns[random () % array_length (aligns)];
-}
-
-static void *get_random_alloc (size_t size)
+static void *
+get_random_alloc (size_t size)
{
void *retval;
size_t align;
+ struct timespec tp;
+
+ if (seed == 0)
+ {
+ clock_gettime (CLOCK_REALTIME, &tp);
+ seed = tp.tv_nsec;
+ }
- switch (random() % 3)
- {
+ switch (rand_r (&seed) % 3)
+ {
case 1:
- align = get_random_alignment ();
+ /* Get a random alignment value. Biased towards the smaller
+ * values up to 16384. Must be a power of 2. */
+ align = 1 << rand_r (&seed) % 15;
retval = aligned_alloc (align, size);
aligned_alloc_count++;
break;
@@ -59,13 +60,13 @@ static void *get_random_alloc (size_t size)
retval = __libc_malloc (size);
libc_malloc_count++;
break;
- }
+ }
return retval;
}
-
-void * __random_malloc (size_t size)
+void *
+__random_malloc (size_t size)
{
return get_random_alloc (size);
}
diff --git a/malloc/tst-calloc.c b/malloc/tst-calloc.c
index 01f17f9e65..5a8c7ab121 100644
--- a/malloc/tst-calloc.c
+++ b/malloc/tst-calloc.c
@@ -23,6 +23,7 @@
#include
#include
+#include "tst-malloc-aux.h"
/* Number of samples per size. */
#define N 50000
@@ -94,16 +95,19 @@ random_test (void)
static void
null_test (void)
{
+ /* Obscure allocation size from the compiler. */
+ volatile size_t max_size = UINT_MAX;
+ volatile size_t zero_size = 0;
/* If the size is 0 the result is implementation defined. Just make
sure the program doesn't crash. The result of calloc is
deliberately ignored, so do not warn about that. */
DIAG_PUSH_NEEDS_COMMENT;
DIAG_IGNORE_NEEDS_COMMENT (10, "-Wunused-result");
calloc (0, 0);
- calloc (0, UINT_MAX);
- calloc (UINT_MAX, 0);
- calloc (0, ~((size_t) 0));
- calloc (~((size_t) 0), 0);
+ calloc (0, max_size);
+ calloc (max_size, 0);
+ calloc (0, ~((size_t) zero_size));
+ calloc (~((size_t) zero_size), 0);
DIAG_POP_NEEDS_COMMENT;
}
diff --git a/malloc/tst-compathooks-off.c b/malloc/tst-compathooks-off.c
index d0106f3fb7..4cce6e5a80 100644
--- a/malloc/tst-compathooks-off.c
+++ b/malloc/tst-compathooks-off.c
@@ -25,6 +25,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
extern void (*volatile __free_hook) (void *, const void *);
extern void *(*volatile __malloc_hook)(size_t, const void *);
extern void *(*volatile __realloc_hook)(void *, size_t, const void *);
diff --git a/malloc/tst-mallinfo2.c b/malloc/tst-mallinfo2.c
index 2c02f5f700..f072b9f24b 100644
--- a/malloc/tst-mallinfo2.c
+++ b/malloc/tst-mallinfo2.c
@@ -23,6 +23,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
/* This is not specifically needed for the test, but (1) does
something to the data so gcc doesn't optimize it away, and (2) may
help when developing future tests. */
diff --git a/malloc/tst-malloc-aux.h b/malloc/tst-malloc-aux.h
new file mode 100644
index 0000000000..3e1b61ce34
--- /dev/null
+++ b/malloc/tst-malloc-aux.h
@@ -0,0 +1,56 @@
+/* Wrappers for malloc-like functions to allow testing the implementation
+ without optimization.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If
+ not, see . */
+
+#ifndef TST_MALLOC_AUX_H
+#define TST_MALLOC_AUX_H
+
+#include
+#include
+#include
+
+static __typeof (aligned_alloc) * volatile aligned_alloc_indirect
+ = aligned_alloc;
+static __typeof (calloc) * volatile calloc_indirect = calloc;
+static __typeof (malloc) * volatile malloc_indirect = malloc;
+static __typeof (memalign) * volatile memalign_indirect = memalign;
+static __typeof (posix_memalign) * volatile posix_memalign_indirect
+ = posix_memalign;
+static __typeof (pvalloc) * volatile pvalloc_indirect = pvalloc;
+static __typeof (realloc) * volatile realloc_indirect = realloc;
+static __typeof (valloc) * volatile valloc_indirect = valloc;
+
+#undef aligned_alloc
+#undef calloc
+#undef malloc
+#undef memalign
+#undef posix_memalign
+#undef pvalloc
+#undef realloc
+#undef valloc
+
+#define aligned_alloc aligned_alloc_indirect
+#define calloc calloc_indirect
+#define malloc malloc_indirect
+#define memalign memalign_indirect
+#define posix_memalign posix_memalign_indirect
+#define pvalloc pvalloc_indirect
+#define realloc realloc_indirect
+#define valloc valloc_indirect
+
+#endif /* TST_MALLOC_AUX_H */
diff --git a/malloc/tst-malloc-backtrace.c b/malloc/tst-malloc-backtrace.c
index c7b1d65e5c..65fa91f6fd 100644
--- a/malloc/tst-malloc-backtrace.c
+++ b/malloc/tst-malloc-backtrace.c
@@ -22,6 +22,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
#define SIZE 4096
/* Wrap free with a function to prevent gcc from optimizing it out. */
diff --git a/malloc/tst-malloc-check.c b/malloc/tst-malloc-check.c
index fde8863ad7..cc88bff3b3 100644
--- a/malloc/tst-malloc-check.c
+++ b/malloc/tst-malloc-check.c
@@ -20,6 +20,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
static int errors = 0;
static void
diff --git a/malloc/tst-malloc-too-large.c b/malloc/tst-malloc-too-large.c
index 8e9e0d5fa2..2b91377e54 100644
--- a/malloc/tst-malloc-too-large.c
+++ b/malloc/tst-malloc-too-large.c
@@ -43,6 +43,7 @@
#include
#include
+#include "tst-malloc-aux.h"
/* This function prepares for each 'too-large memory allocation' test by
performing a small successful malloc/free and resetting errno prior to
diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c
index f7a6e4654c..68af399022 100644
--- a/malloc/tst-malloc.c
+++ b/malloc/tst-malloc.c
@@ -22,6 +22,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
static int errors = 0;
static void
diff --git a/malloc/tst-memalign.c b/malloc/tst-memalign.c
index 563f6413d2..ac9770d3f9 100644
--- a/malloc/tst-memalign.c
+++ b/malloc/tst-memalign.c
@@ -23,6 +23,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
static int errors = 0;
static void
diff --git a/malloc/tst-realloc.c b/malloc/tst-realloc.c
index f50499ecb1..74a28fb45e 100644
--- a/malloc/tst-realloc.c
+++ b/malloc/tst-realloc.c
@@ -23,6 +23,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
static int
do_test (void)
{
diff --git a/malloc/tst-safe-linking.c b/malloc/tst-safe-linking.c
index 01dd07004d..63a7e2bc8e 100644
--- a/malloc/tst-safe-linking.c
+++ b/malloc/tst-safe-linking.c
@@ -26,6 +26,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
/* Run CALLBACK and check that the data on standard error equals
EXPECTED. */
static void
diff --git a/malloc/tst-valloc.c b/malloc/tst-valloc.c
index 9bab8c6470..0243d3dfd4 100644
--- a/malloc/tst-valloc.c
+++ b/malloc/tst-valloc.c
@@ -23,6 +23,8 @@
#include
#include
+#include "tst-malloc-aux.h"
+
static int errors = 0;
static void
diff --git a/manual/dynlink.texi b/manual/dynlink.texi
index 03565d4fb0..1500a53de6 100644
--- a/manual/dynlink.texi
+++ b/manual/dynlink.texi
@@ -993,21 +993,21 @@ The dynamic segment should also mention @code{BIND_NOW} on the
enough).
@item
-For shared objects (not main programs), if the program header has a
-@code{PT_TLS} segment, the dynamic segment (as shown by @samp{readelf
--dW}) should contain the @code{STATIC_TLS} flag on the @code{FLAGS}
-line.
-
-If @code{STATIC_TLS} is missing in shared objects, ensure that the
-appropriate relocations for GNU2 TLS descriptors are used (for example,
+Ensure that only static TLS relocations (thread-pointer relative offset
+locations) are used, for example @code{R_AARCH64_TLS_TPREL} and
+@code{X86_64_TPOFF64}. As the second-best option, and only if
+compatibility with non-hardened applications using @code{dlopen} is
+needed, GNU2 TLS descriptor relocations can be used (for example,
@code{R_AARCH64_TLSDESC} or @code{R_X86_64_TLSDESC}).
@item
-There should not be a reference to the symbols @code{__tls_get_addr},
-@code{__tls_get_offset}, @code{__tls_get_addr_opt} in the dynamic symbol
-table (in the @samp{readelf -sDW} output). Thread-local storage must be
-accessed using the initial-exec (static) model, or using GNU2 TLS
-descriptors.
+There should not be references to the traditional TLS function symbols
+@code{__tls_get_addr}, @code{__tls_get_offset},
+@code{__tls_get_addr_opt} in the dynamic symbol table (in the
+@samp{readelf -sDW} output). Supporting global dynamic TLS relocations
+(such as @code{R_AARCH64_TLS_DTPMOD}, @code{R_AARCH64_TLS_DTPREL},
+@code{R_X86_64_DTPMOD64}, @code{R_X86_64_DTPOFF64}) should not be used,
+either.
@item
Likewise, the functions @code{dlopen}, @code{dlmopen}, @code{dlclose}
diff --git a/manual/llio.texi b/manual/llio.texi
index 6f0a48609b..ea84196abd 100644
--- a/manual/llio.texi
+++ b/manual/llio.texi
@@ -1892,7 +1892,7 @@ There is no existing mapping in at least part of the given region.
@end deftypefun
-@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag})
+@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}, ... /* void *@var{new_address} */)
@standards{GNU, sys/mman.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@@ -1901,12 +1901,40 @@ area. @var{address} and @var{length} must cover a region entirely mapped
in the same @code{mmap} statement. A new mapping with the same
characteristics will be returned with the length @var{new_length}.
-One option is possible, @code{MREMAP_MAYMOVE}. If it is given in
-@var{flags}, the system may remove the existing mapping and create a new
-one of the desired length in another location.
+Possible flags are
-The address of the resulting mapping is returned, or @math{-1}. Possible
-error codes include:
+@table @code
+
+@item MREMAP_MAYMOVE
+If it is given in @var{flags}, the system may remove the existing mapping
+and create a new one of the desired length in another location.
+
+@item MREMAP_FIXED
+If it is given in @var{flags}, @code{mremap} accepts a fifth argument,
+@code{void *new_address}, which specifies a page-aligned address to
+which the mapping must be moved. Any previous mapping at the address
+range specified by @var{new_address} and @var{new_size} is unmapped.
+
+@code{MREMAP_FIXED} must be used together with @code{MREMAP_MAYMOVE}.
+
+@item MREMAP_DONTUNMAP
+If it is given in @var{flags}, @code{mremap} accepts a fifth argument,
+@code{void *new_address}, which specifies a page-aligned address. Any
+previous mapping at the address range specified by @var{new_address} and
+@var{new_size} is unmapped. If @var{new_address} is @code{NULL}, the
+kernel chooses the page-aligned address at which to create the mapping.
+Otherwise, the kernel takes it as a hint about where to place the mapping.
+The mapping at the address range specified by @var{old_address} and
+@var{old_size} isn't unmapped.
+
+@code{MREMAP_DONTUNMAP} must be used together with @code{MREMAP_MAYMOVE}.
+@var{old_size} must be the same as @var{new_size}. This flag bit is
+Linux-specific.
+
+@end table
+
+The address of the resulting mapping is returned, or @code{MAP_FAILED}.
+Possible error codes include:
@table @code
@@ -1915,7 +1943,7 @@ There is no existing mapping in at least part of the original region, or
the region covers two or more distinct mappings.
@item EINVAL
-The address given is misaligned or inappropriate.
+Any arguments are inappropriate, including unknown @var{flags} values.
@item EAGAIN
The region has pages locked, and if extended it would exceed the
diff --git a/manual/resource.texi b/manual/resource.texi
index c9b21dedeb..25966bcb64 100644
--- a/manual/resource.texi
+++ b/manual/resource.texi
@@ -192,8 +192,8 @@ If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
@standards{BSD, sys/resource.h}
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c Direct syscall on most systems; lock-taking critical section on HURD.
-Store the current and maximum limits for the resource @var{resource}
-in @code{*@var{rlp}}.
+Change the current and maximum limits of the process for the resource
+@var{resource} to the values provided in @code{*@var{rlp}}.
The return value is @code{0} on success and @code{-1} on failure. The
following @code{errno} error condition is possible:
diff --git a/manual/stdio.texi b/manual/stdio.texi
index f5e289d58a..92614775fa 100644
--- a/manual/stdio.texi
+++ b/manual/stdio.texi
@@ -903,21 +903,17 @@ This function is a GNU extension.
@deftypefun int putc (int @var{c}, FILE *@var{stream})
@standards{ISO, stdio.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
-This is just like @code{fputc}, except that most systems implement it as
-a macro, making it faster. One consequence is that it may evaluate the
-@var{stream} argument more than once, which is an exception to the
-general rule for macros. @code{putc} is usually the best function to
-use for writing a single character.
+This is just like @code{fputc}, except that it may be implemented as
+a macro and may evaluate the @var{stream} argument more than once.
+Therefore, @var{stream} should never be an expression with side-effects.
@end deftypefun
@deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream})
@standards{ISO, wchar.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
-This is just like @code{fputwc}, except that it can be implement as
-a macro, making it faster. One consequence is that it may evaluate the
-@var{stream} argument more than once, which is an exception to the
-general rule for macros. @code{putwc} is usually the best function to
-use for writing a single wide character.
+This is just like @code{fputwc}, except that it may be implemented as
+a macro and may evaluate the @var{stream} argument more than once.
+Therefore, @var{stream} should never be an expression with side-effects.
@end deftypefun
@deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream})
@@ -1110,20 +1106,17 @@ This function is a GNU extension.
@deftypefun int getc (FILE *@var{stream})
@standards{ISO, stdio.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}}
-This is just like @code{fgetc}, except that it is permissible (and
-typical) for it to be implemented as a macro that evaluates the
-@var{stream} argument more than once. @code{getc} is often highly
-optimized, so it is usually the best function to use to read a single
-character.
+This is just like @code{fgetc}, except that it may be implemented as
+a macro and may evaluate the @var{stream} argument more than once.
+Therefore, @var{stream} should never be an expression with side-effects.
@end deftypefun
@deftypefun wint_t getwc (FILE *@var{stream})
@standards{ISO, wchar.h}
@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}}
-This is just like @code{fgetwc}, except that it is permissible for it to
-be implemented as a macro that evaluates the @var{stream} argument more
-than once. @code{getwc} can be highly optimized, so it is usually the
-best function to use to read a single wide character.
+This is just like @code{fgetwc}, except that it may be implemented as
+a macro and may evaluate the @var{stream} argument more than once.
+Therefore, @var{stream} should never be an expression with side-effects.
@end deftypefun
@deftypefun int getc_unlocked (FILE *@var{stream})
@@ -1474,11 +1467,9 @@ program; usually @code{ungetc} is used only to unread a character that
was just read from the same stream. @Theglibc{} supports this
even on files opened in binary mode, but other systems might not.
-@Theglibc{} only supports one character of pushback---in other
-words, it does not work to call @code{ungetc} twice without doing input
-in between. Other systems might let you push back multiple characters;
-then reading from the stream retrieves the characters in the reverse
-order that they were pushed.
+@Theglibc{} supports pushing back multiple characters; subsequently
+reading from the stream retrieves the characters in the reverse order
+that they were pushed.
Pushing back characters doesn't alter the file; only the internal
buffering for the stream is affected. If a file positioning function
diff --git a/math/Makefile b/math/Makefile
index f06d370383..b64c3eedd5 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -1077,6 +1077,7 @@ CFLAGS-test-flt-eval-method.c += -fexcess-precision=standard
CFLAGS-test-fe-snans-always-signal.c += $(config-cflags-signaling-nans)
CFLAGS-test-nan-const.c += -fno-builtin
+CFLAGS-test-nan-payload.c += -fno-builtin
CFLAGS-test-ceil-except-2.c += -fno-builtin
CFLAGS-test-floor-except-2.c += -fno-builtin
diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c
index 4a81dc348b..413791e09f 100644
--- a/math/test-nan-payload.c
+++ b/math/test-nan-payload.c
@@ -16,6 +16,9 @@
License along with the GNU C Library; if not, see
. */
+#define _LIBC_TEST 1
+#define __STDC_WANT_IEC_60559_TYPES_EXT__
+#include
#include
#include
#include
@@ -31,7 +34,7 @@
#define CHECK_IS_NAN(TYPE, A) \
do \
{ \
- if (isnan (A)) \
+ if (isnan (A) && !issignaling (A)) \
puts ("PASS: " #TYPE " " #A); \
else \
{ \
@@ -41,6 +44,19 @@
} \
while (0)
+#define CHECK_PAYLOAD(TYPE, FUNC, A, P) \
+ do \
+ { \
+ if (FUNC (&(A)) == (P)) \
+ puts ("PASS: " #TYPE " payload " #A); \
+ else \
+ { \
+ puts ("FAIL: " #TYPE " payload " #A); \
+ result = 1; \
+ } \
+ } \
+ while (0)
+
#define CHECK_SAME_NAN(TYPE, A, B) \
do \
{ \
@@ -67,33 +83,97 @@
} \
while (0)
+#define CLEAR_ERRNO \
+ do \
+ { \
+ errno = 12345; \
+ } \
+ while (0)
+
+#define CHECK_ERRNO(TYPE, A) \
+ do \
+ { \
+ if (errno == 12345) \
+ puts ("PASS: " #TYPE " " #A " errno"); \
+ else \
+ { \
+ puts ("FAIL: " #TYPE " " #A " errno"); \
+ result = 1; \
+ } \
+ } \
+ while (0)
+
/* Cannot test payloads by memcmp for formats where NaNs have padding
bits. */
#define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106)
-#define RUN_TESTS(TYPE, SFUNC, FUNC, MANT_DIG) \
+#define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \
do \
{ \
+ CLEAR_ERRNO; \
TYPE n123 = WRAP_NAN (FUNC, "123"); \
+ CHECK_ERRNO (TYPE, n123); \
CHECK_IS_NAN (TYPE, n123); \
+ CLEAR_ERRNO; \
TYPE s123 = WRAP_STRTO (SFUNC, "NAN(123)"); \
+ CHECK_ERRNO (TYPE, s123); \
CHECK_IS_NAN (TYPE, s123); \
+ CLEAR_ERRNO; \
TYPE n456 = WRAP_NAN (FUNC, "456"); \
+ CHECK_ERRNO (TYPE, n456); \
CHECK_IS_NAN (TYPE, n456); \
+ CLEAR_ERRNO; \
TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \
+ CHECK_ERRNO (TYPE, s456); \
CHECK_IS_NAN (TYPE, s456); \
+ CLEAR_ERRNO; \
+ TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \
+ CHECK_ERRNO (TYPE, nh123); \
+ CHECK_IS_NAN (TYPE, nh123); \
+ CLEAR_ERRNO; \
+ TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \
+ CHECK_ERRNO (TYPE, sh123); \
+ CHECK_IS_NAN (TYPE, sh123); \
+ CLEAR_ERRNO; \
TYPE n123x = WRAP_NAN (FUNC, "123)"); \
+ CHECK_ERRNO (TYPE, n123x); \
CHECK_IS_NAN (TYPE, n123x); \
+ CLEAR_ERRNO; \
TYPE nemp = WRAP_NAN (FUNC, ""); \
+ CHECK_ERRNO (TYPE, nemp); \
CHECK_IS_NAN (TYPE, nemp); \
+ CLEAR_ERRNO; \
TYPE semp = WRAP_STRTO (SFUNC, "NAN()"); \
+ CHECK_ERRNO (TYPE, semp); \
CHECK_IS_NAN (TYPE, semp); \
+ CLEAR_ERRNO; \
TYPE sx = WRAP_STRTO (SFUNC, "NAN"); \
+ CHECK_ERRNO (TYPE, sx); \
CHECK_IS_NAN (TYPE, sx); \
+ CLEAR_ERRNO; \
+ TYPE novf = WRAP_NAN (FUNC, "9999999999" \
+ "99999999999999999999" \
+ "9999999999"); \
+ CHECK_ERRNO (TYPE, novf); \
+ CHECK_IS_NAN (TYPE, novf); \
+ CLEAR_ERRNO; \
+ TYPE sovf = WRAP_STRTO (SFUNC, "NAN(9999999999" \
+ "99999999999999999999" \
+ "9999999999)"); \
+ CHECK_ERRNO (TYPE, sovf); \
+ CHECK_IS_NAN (TYPE, sovf); \
if (CAN_TEST_EQ (MANT_DIG)) \
CHECK_SAME_NAN (TYPE, n123, s123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, s123, 123); \
if (CAN_TEST_EQ (MANT_DIG)) \
CHECK_SAME_NAN (TYPE, n456, s456); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, n456, 456); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, s456, 456); \
+ if (CAN_TEST_EQ (MANT_DIG)) \
+ CHECK_SAME_NAN (TYPE, nh123, sh123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, nh123, 0x123); \
+ CHECK_PAYLOAD (TYPE, PLFUNC, sh123, 0x123); \
if (CAN_TEST_EQ (MANT_DIG)) \
CHECK_SAME_NAN (TYPE, nemp, semp); \
if (CAN_TEST_EQ (MANT_DIG)) \
@@ -110,9 +190,31 @@ static int
do_test (void)
{
int result = 0;
- RUN_TESTS (float, strtof, nanf, FLT_MANT_DIG);
- RUN_TESTS (double, strtod, nan, DBL_MANT_DIG);
- RUN_TESTS (long double, strtold, nanl, LDBL_MANT_DIG);
+ RUN_TESTS (float, strtof, nanf, getpayloadf, FLT_MANT_DIG);
+ RUN_TESTS (double, strtod, nan, getpayload, DBL_MANT_DIG);
+ RUN_TESTS (long double, strtold, nanl, getpayloadl, LDBL_MANT_DIG);
+#if __HAVE_FLOAT16
+ RUN_TESTS (_Float16, strtof16, nanf16, getpayloadf16, FLT16_MANT_DIG);
+#endif
+#if __HAVE_FLOAT32
+ RUN_TESTS (_Float32, strtof32, nanf32, getpayloadf32, FLT32_MANT_DIG);
+#endif
+#if __HAVE_FLOAT64
+ RUN_TESTS (_Float64, strtof64, nanf64, getpayloadf64, FLT64_MANT_DIG);
+#endif
+#if __HAVE_FLOAT128
+ RUN_TESTS (_Float128, strtof128, nanf128, getpayloadf128, FLT128_MANT_DIG);
+#endif
+#if __HAVE_FLOAT32X
+ RUN_TESTS (_Float32x, strtof32x, nanf32x, getpayloadf32x, FLT32X_MANT_DIG);
+#endif
+#if __HAVE_FLOAT64X
+ RUN_TESTS (_Float64x, strtof64x, nanf64x, getpayloadf64x, FLT64X_MANT_DIG);
+#endif
+#if __HAVE_FLOAT128X
+ RUN_TESTS (_Float128x, strtof128x, nanf128x, getpayloadf128x,
+ FLT128X_MANT_DIG);
+#endif
return result;
}
diff --git a/math/test-tgmath2.c b/math/test-tgmath2.c
index 37afa8a08a..4aeb877b8e 100644
--- a/math/test-tgmath2.c
+++ b/math/test-tgmath2.c
@@ -24,6 +24,8 @@
#include
#include
+#include
+
//#define DEBUG
typedef complex float cfloat;
@@ -87,13 +89,6 @@ enum
int count;
int counts[Tlast][C_last];
-#define FAIL(str) \
- do \
- { \
- printf ("%s failure on line %d\n", (str), __LINE__); \
- result = 1; \
- } \
- while (0)
#define TEST_TYPE_ONLY(expr, rettype) \
do \
{ \
@@ -133,8 +128,6 @@ int counts[Tlast][C_last];
int
test_cos (const int Vint4, const long long int Vllong4)
{
- int result = 0;
-
TEST (cos (vfloat1), float, cos);
TEST (cos (vdouble1), double, cos);
TEST (cos (vldouble1), ldouble, cos);
@@ -152,7 +145,7 @@ test_cos (const int Vint4, const long long int Vllong4)
TEST (cos (Vcdouble1), cdouble, cos);
TEST (cos (Vcldouble1), cldouble, cos);
- return result;
+ return 0;
}
int
diff --git a/misc/Makefile b/misc/Makefile
index 5d17c562fe..7b7f8351bf 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -257,6 +257,8 @@ tests := \
tst-mntent-blank-passno \
tst-mntent-escape \
tst-mntent2 \
+ tst-mremap1 \
+ tst-mremap2 \
tst-preadvwritev \
tst-preadvwritev2 \
tst-preadvwritev64 \
diff --git a/misc/tst-mremap1.c b/misc/tst-mremap1.c
new file mode 100644
index 0000000000..0469991a6c
--- /dev/null
+++ b/misc/tst-mremap1.c
@@ -0,0 +1,46 @@
+/* Test mremap with MREMAP_MAYMOVE.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+static int
+do_test (void)
+{
+ size_t old_size = getpagesize ();
+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
+ old_addr[0] = 1;
+ old_addr[old_size - 1] = 2;
+
+ /* Test MREMAP_MAYMOVE. */
+ size_t new_size = old_size + old_size;
+ char *new_addr = mremap (old_addr, old_size, new_size, MREMAP_MAYMOVE);
+ TEST_VERIFY_EXIT (new_addr != MAP_FAILED);
+ new_addr[0] = 1;
+ new_addr[new_size - 1] = 2;
+ xmunmap (new_addr, new_size);
+
+ return 0;
+}
+
+#include
diff --git a/misc/tst-mremap2.c b/misc/tst-mremap2.c
new file mode 100644
index 0000000000..45be7f0369
--- /dev/null
+++ b/misc/tst-mremap2.c
@@ -0,0 +1,54 @@
+/* Test mremap with MREMAP_FIXED.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+static int
+do_test (void)
+{
+ size_t old_size = getpagesize ();
+ size_t new_size = old_size + old_size;
+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
+ old_addr[0] = 1;
+ old_addr[old_size - 1] = 2;
+
+ char *fixed_addr = xmmap (NULL, new_size, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
+ fixed_addr[0] = 1;
+ fixed_addr[new_size - 1] = 2;
+
+ /* Test MREMAP_FIXED. */
+ char *new_addr = mremap (old_addr, old_size, new_size,
+ MREMAP_FIXED | MREMAP_MAYMOVE,
+ fixed_addr);
+ if (new_addr == MAP_FAILED)
+ return mremap_failure_exit (errno);
+ new_addr[0] = 1;
+ new_addr[new_size - 1] = 2;
+ xmunmap (new_addr, new_size);
+
+ return 0;
+}
+
+#include
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index f35a8369bd..2cb562f8ea 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -139,7 +139,7 @@ get_cached_stack (size_t *sizep, void **memp)
memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t));
/* Re-initialize the TLS. */
- _dl_allocate_tls_init (TLS_TPADJ (result), true);
+ _dl_allocate_tls_init (TLS_TPADJ (result), false);
return result;
}
diff --git a/nptl/descr.h b/nptl/descr.h
index 8cef95810c..c4bdd7757a 100644
--- a/nptl/descr.h
+++ b/nptl/descr.h
@@ -414,6 +414,8 @@ struct pthread
{
uint32_t cpu_id_start;
uint32_t cpu_id;
+ uint64_t rseq_cs;
+ uint32_t flags;
};
char pad[32]; /* Original rseq area size. */
} rseq_area __attribute__ ((aligned (32)));
diff --git a/nptl/pthread_cond_broadcast.c b/nptl/pthread_cond_broadcast.c
index aada91639a..51afa62adf 100644
--- a/nptl/pthread_cond_broadcast.c
+++ b/nptl/pthread_cond_broadcast.c
@@ -57,10 +57,10 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
{
/* Add as many signals as the remaining size of the group. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
- /* We need to wake G1 waiters before we quiesce G1 below. */
+ /* We need to wake G1 waiters before we switch G1 below. */
/* TODO Only set it if there are indeed futex waiters. We could
also try to move this out of the critical section in cases when
G2 is empty (and we don't need to quiesce). */
@@ -69,11 +69,11 @@ ___pthread_cond_broadcast (pthread_cond_t *cond)
/* G1 is complete. Step (2) is next unless there are no waiters in G2, in
which case we can stop. */
- if (__condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ if (__condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Step (3): Send signals to all waiters in the old G2 / new G1. */
atomic_fetch_add_relaxed (cond->__data.__g_signals + g1,
- cond->__data.__g_size[g1] << 1);
+ cond->__data.__g_size[g1]);
cond->__data.__g_size[g1] = 0;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c
index 3487557bb8..389402913c 100644
--- a/nptl/pthread_cond_common.c
+++ b/nptl/pthread_cond_common.c
@@ -189,19 +189,17 @@ __condvar_get_private (int flags)
return FUTEX_SHARED;
}
-/* This closes G1 (whose index is in G1INDEX), waits for all futex waiters to
- leave G1, converts G1 into a fresh G2, and then switches group roles so that
- the former G2 becomes the new G1 ending at the current __wseq value when we
- eventually make the switch (WSEQ is just an observation of __wseq by the
- signaler).
+/* This closes G1 (whose index is in G1INDEX), converts G1 into a fresh G2,
+ and then switches group roles so that the former G2 becomes the new G1
+ ending at the current __wseq value when we eventually make the switch
+ (WSEQ is just an observation of __wseq by the signaler).
If G2 is empty, it will not switch groups because then it would create an
empty G1 which would require switching groups again on the next signal.
Returns false iff groups were not switched because G2 was empty. */
static bool __attribute__ ((unused))
-__condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
+__condvar_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
unsigned int *g1index, int private)
{
- const unsigned int maxspin = 0;
unsigned int g1 = *g1index;
/* If there is no waiter in G2, we don't do anything. The expression may
@@ -210,96 +208,23 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
behavior.
Note that this works correctly for a zero-initialized condvar too. */
unsigned int old_orig_size = __condvar_get_orig_size (cond);
- uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
- if (((unsigned) (wseq - old_g1_start - old_orig_size)
- + cond->__data.__g_size[g1 ^ 1]) == 0)
+ uint64_t old_g1_start = __condvar_load_g1_start_relaxed (cond);
+ uint64_t new_g1_start = old_g1_start + old_orig_size;
+ if (((unsigned) (wseq - new_g1_start) + cond->__data.__g_size[g1 ^ 1]) == 0)
return false;
- /* Now try to close and quiesce G1. We have to consider the following kinds
- of waiters:
+ /* We have to consider the following kinds of waiters:
* Waiters from less recent groups than G1 are not affected because
nothing will change for them apart from __g1_start getting larger.
* New waiters arriving concurrently with the group switching will all go
into G2 until we atomically make the switch. Waiters existing in G2
are not affected.
- * Waiters in G1 will be closed out immediately by setting a flag in
- __g_signals, which will prevent waiters from blocking using a futex on
- __g_signals and also notifies them that the group is closed. As a
- result, they will eventually remove their group reference, allowing us
- to close switch group roles. */
+ * Waiters in G1 have already received a signal and been woken. */
- /* First, set the closed flag on __g_signals. This tells waiters that are
- about to wait that they shouldn't do that anymore. This basically
- serves as an advance notification of the upcoming change to __g1_start;
- waiters interpret it as if __g1_start was larger than their waiter
- sequence position. This allows us to change __g1_start after waiting
- for all existing waiters with group references to leave, which in turn
- makes recovery after stealing a signal simpler because it then can be
- skipped if __g1_start indicates that the group is closed (otherwise,
- we would have to recover always because waiters don't know how big their
- groups are). Relaxed MO is fine. */
- atomic_fetch_or_relaxed (cond->__data.__g_signals + g1, 1);
-
- /* Wait until there are no group references anymore. The fetch-or operation
- injects us into the modification order of __g_refs; release MO ensures
- that waiters incrementing __g_refs after our fetch-or see the previous
- changes to __g_signals and to __g1_start that had to happen before we can
- switch this G1 and alias with an older group (we have two groups, so
- aliasing requires switching group roles twice). Note that nobody else
- can have set the wake-request flag, so we do not have to act upon it.
-
- Also note that it is harmless if older waiters or waiters from this G1
- get a group reference after we have quiesced the group because it will
- remain closed for them either because of the closed flag in __g_signals
- or the later update to __g1_start. New waiters will never arrive here
- but instead continue to go into the still current G2. */
- unsigned r = atomic_fetch_or_release (cond->__data.__g_refs + g1, 0);
- while ((r >> 1) > 0)
- {
- for (unsigned int spin = maxspin; ((r >> 1) > 0) && (spin > 0); spin--)
- {
- /* TODO Back off. */
- r = atomic_load_relaxed (cond->__data.__g_refs + g1);
- }
- if ((r >> 1) > 0)
- {
- /* There is still a waiter after spinning. Set the wake-request
- flag and block. Relaxed MO is fine because this is just about
- this futex word.
-
- Update r to include the set wake-request flag so that the upcoming
- futex_wait only blocks if the flag is still set (otherwise, we'd
- violate the basic client-side futex protocol). */
- r = atomic_fetch_or_relaxed (cond->__data.__g_refs + g1, 1) | 1;
-
- if ((r >> 1) > 0)
- futex_wait_simple (cond->__data.__g_refs + g1, r, private);
- /* Reload here so we eventually see the most recent value even if we
- do not spin. */
- r = atomic_load_relaxed (cond->__data.__g_refs + g1);
- }
- }
- /* Acquire MO so that we synchronize with the release operation that waiters
- use to decrement __g_refs and thus happen after the waiters we waited
- for. */
- atomic_thread_fence_acquire ();
-
- /* Update __g1_start, which finishes closing this group. The value we add
- will never be negative because old_orig_size can only be zero when we
- switch groups the first time after a condvar was initialized, in which
- case G1 will be at index 1 and we will add a value of 1. See above for
- why this takes place after waiting for quiescence of the group.
- Relaxed MO is fine because the change comes with no additional
- constraints that others would have to observe. */
- __condvar_add_g1_start_relaxed (cond,
- (old_orig_size << 1) + (g1 == 1 ? 1 : - 1));
-
- /* Now reopen the group, thus enabling waiters to again block using the
- futex controlled by __g_signals. Release MO so that observers that see
- no signals (and thus can block) also see the write __g1_start and thus
- that this is now a new group (see __pthread_cond_wait_common for the
- matching acquire MO loads). */
- atomic_store_release (cond->__data.__g_signals + g1, 0);
+ /* Update __g1_start, which closes this group. Relaxed MO is fine because
+ the change comes with no additional constraints that others would have
+ to observe. */
+ __condvar_add_g1_start_relaxed (cond, old_orig_size);
/* At this point, the old G1 is now a valid new G2 (but not in use yet).
No old waiter can neither grab a signal nor acquire a reference without
@@ -311,9 +236,13 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq,
g1 ^= 1;
*g1index ^= 1;
+ /* Now advance the new G1 g_signals to the new g1_start, giving it
+ an effective signal count of 0 to start. */
+ atomic_store_release (cond->__data.__g_signals + g1, (unsigned)new_g1_start);
+
/* These values are just observed by signalers, and thus protected by the
lock. */
- unsigned int orig_size = wseq - (old_g1_start + old_orig_size);
+ unsigned int orig_size = wseq - new_g1_start;
__condvar_set_orig_size (cond, orig_size);
/* Use and addition to not loose track of cancellations in what was
previously G2. */
diff --git a/nptl/pthread_cond_signal.c b/nptl/pthread_cond_signal.c
index 43d6286ecd..fa3a5c3d8f 100644
--- a/nptl/pthread_cond_signal.c
+++ b/nptl/pthread_cond_signal.c
@@ -69,19 +69,18 @@ ___pthread_cond_signal (pthread_cond_t *cond)
bool do_futex_wake = false;
/* If G1 is still receiving signals, we put the signal there. If not, we
- check if G2 has waiters, and if so, quiesce and switch G1 to the former
- G2; if this results in a new G1 with waiters (G2 might have cancellations
- already, see __condvar_quiesce_and_switch_g1), we put the signal in the
- new G1. */
+ check if G2 has waiters, and if so, switch G1 to the former G2; if this
+ results in a new G1 with waiters (G2 might have cancellations already,
+ see __condvar_switch_g1), we put the signal in the new G1. */
if ((cond->__data.__g_size[g1] != 0)
- || __condvar_quiesce_and_switch_g1 (cond, wseq, &g1, private))
+ || __condvar_switch_g1 (cond, wseq, &g1, private))
{
/* Add a signal. Relaxed MO is fine because signaling does not need to
- establish a happens-before relation (see above). We do not mask the
- release-MO store when initializing a group in
- __condvar_quiesce_and_switch_g1 because we use an atomic
- read-modify-write and thus extend that store's release sequence. */
- atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 2);
+ establish a happens-before relation (see above). We do not mask the
+ release-MO store when initializing a group in __condvar_switch_g1
+ because we use an atomic read-modify-write and thus extend that
+ store's release sequence. */
+ atomic_fetch_add_relaxed (cond->__data.__g_signals + g1, 1);
cond->__data.__g_size[g1]--;
/* TODO Only set it if there are indeed futex waiters. */
do_futex_wake = true;
diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c
index 66786c7b90..0f1dfcb595 100644
--- a/nptl/pthread_cond_wait.c
+++ b/nptl/pthread_cond_wait.c
@@ -84,7 +84,7 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
not hold a reference on the group. */
__condvar_acquire_lock (cond, private);
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond) >> 1;
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
if (g1_start > seq)
{
/* Our group is closed, so someone provided enough signals for it.
@@ -143,23 +143,6 @@ __condvar_cancel_waiting (pthread_cond_t *cond, uint64_t seq, unsigned int g,
}
}
-/* Wake up any signalers that might be waiting. */
-static void
-__condvar_dec_grefs (pthread_cond_t *cond, unsigned int g, int private)
-{
- /* Release MO to synchronize-with the acquire load in
- __condvar_quiesce_and_switch_g1. */
- if (atomic_fetch_add_release (cond->__data.__g_refs + g, -2) == 3)
- {
- /* Clear the wake-up request flag before waking up. We do not need more
- than relaxed MO and it doesn't matter if we apply this for an aliased
- group because we wake all futex waiters right after clearing the
- flag. */
- atomic_fetch_and_relaxed (cond->__data.__g_refs + g, ~(unsigned int) 1);
- futex_wake (cond->__data.__g_refs + g, INT_MAX, private);
- }
-}
-
/* Clean-up for cancellation of waiters waiting for normal signals. We cancel
our registration as a waiter, confirm we have woken up, and re-acquire the
mutex. */
@@ -171,8 +154,6 @@ __condvar_cleanup_waiting (void *arg)
pthread_cond_t *cond = cbuffer->cond;
unsigned g = cbuffer->wseq & 1;
- __condvar_dec_grefs (cond, g, cbuffer->private);
-
__condvar_cancel_waiting (cond, cbuffer->wseq >> 1, g, cbuffer->private);
/* FIXME With the current cancellation implementation, it is possible that
a thread is cancelled after it has returned from a syscall. This could
@@ -238,9 +219,7 @@ __condvar_cleanup_waiting (void *arg)
signaled), and a reference count.
The group reference count is used to maintain the number of waiters that
- are using the group's futex. Before a group can change its role, the
- reference count must show that no waiters are using the futex anymore; this
- prevents ABA issues on the futex word.
+ are using the group's futex.
To represent which intervals in the waiter sequence the groups cover (and
thus also which group slot contains G1 or G2), we use a 64b counter to
@@ -251,7 +230,7 @@ __condvar_cleanup_waiting (void *arg)
figure out whether they are in a group that has already been completely
signaled (i.e., if the current G1 starts at a later position that the
waiter's position). Waiters cannot determine whether they are currently
- in G2 or G1 -- but they do not have too because all they are interested in
+ in G2 or G1 -- but they do not have to because all they are interested in
is whether there are available signals, and they always start in G2 (whose
group slot they know because of the bit in the waiter sequence. Signalers
will simply fill the right group until it is completely signaled and can
@@ -280,7 +259,6 @@ __condvar_cleanup_waiting (void *arg)
* Waiters fetch-add while having acquire the mutex associated with the
condvar. Signalers load it and fetch-xor it concurrently.
__g1_start: Starting position of G1 (inclusive)
- * LSB is index of current G2.
* Modified by signalers while having acquired the condvar-internal lock
and observed concurrently by waiters.
__g1_orig_size: Initial size of G1
@@ -300,11 +278,10 @@ __condvar_cleanup_waiting (void *arg)
last reference.
* Reference count used by waiters concurrently with signalers that have
acquired the condvar-internal lock.
- __g_signals: The number of signals that can still be consumed.
+ __g_signals: The number of signals that can still be consumed, relative to
+ the current g1_start. (i.e. g1_start with the signal count added)
* Used as a futex word by waiters. Used concurrently by waiters and
signalers.
- * LSB is true iff this group has been completely signaled (i.e., it is
- closed).
__g_size: Waiters remaining in this group (i.e., which have not been
signaled yet.
* Accessed by signalers and waiters that cancel waiting (both do so only
@@ -328,27 +305,6 @@ __condvar_cleanup_waiting (void *arg)
sufficient because if a waiter can see a sufficiently large value, it could
have also consume a signal in the waiters group.
- Waiters try to grab a signal from __g_signals without holding a reference
- count, which can lead to stealing a signal from a more recent group after
- their own group was already closed. They cannot always detect whether they
- in fact did because they do not know when they stole, but they can
- conservatively add a signal back to the group they stole from; if they
- did so unnecessarily, all that happens is a spurious wake-up. To make this
- even less likely, __g1_start contains the index of the current g2 too,
- which allows waiters to check if there aliasing on the group slots; if
- there wasn't, they didn't steal from the current G1, which means that the
- G1 they stole from must have been already closed and they do not need to
- fix anything.
-
- It is essential that the last field in pthread_cond_t is __g_signals[1]:
- The previous condvar used a pointer-sized field in pthread_cond_t, so a
- PTHREAD_COND_INITIALIZER from that condvar implementation might only
- initialize 4 bytes to zero instead of the 8 bytes we need (i.e., 44 bytes
- in total instead of the 48 we need). __g_signals[1] is not accessed before
- the first group switch (G2 starts at index 0), which will set its value to
- zero after a harmless fetch-or whose return value is ignored. This
- effectively completes initialization.
-
Limitations:
* This condvar isn't designed to allow for more than
@@ -379,7 +335,6 @@ static __always_inline int
__pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
clockid_t clockid, const struct __timespec64 *abstime)
{
- const int maxspin = 0;
int err;
int result = 0;
@@ -396,8 +351,7 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
because we do not need to establish any happens-before relation with
signalers (see __pthread_cond_signal); modification order alone
establishes a total order of waiters/signals. We do need acquire MO
- to synchronize with group reinitialization in
- __condvar_quiesce_and_switch_g1. */
+ to synchronize with group reinitialization in __condvar_switch_g1. */
uint64_t wseq = __condvar_fetch_add_wseq_acquire (cond, 2);
/* Find our group's index. We always go into what was G2 when we acquired
our position. */
@@ -424,178 +378,64 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex,
return err;
}
- /* Now wait until a signal is available in our group or it is closed.
- Acquire MO so that if we observe a value of zero written after group
- switching in __condvar_quiesce_and_switch_g1, we synchronize with that
- store and will see the prior update of __g1_start done while switching
- groups too. */
- unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
- do
+ while (1)
{
- while (1)
- {
- /* Spin-wait first.
- Note that spinning first without checking whether a timeout
- passed might lead to what looks like a spurious wake-up even
- though we should return ETIMEDOUT (e.g., if the caller provides
- an absolute timeout that is clearly in the past). However,
- (1) spurious wake-ups are allowed, (2) it seems unlikely that a
- user will (ab)use pthread_cond_wait as a check for whether a
- point in time is in the past, and (3) spinning first without
- having to compare against the current time seems to be the right
- choice from a performance perspective for most use cases. */
- unsigned int spin = maxspin;
- while (signals == 0 && spin > 0)
- {
- /* Check that we are not spinning on a group that's already
- closed. */
- if (seq < (__condvar_load_g1_start_relaxed (cond) >> 1))
- goto done;
-
- /* TODO Back off. */
-
- /* Reload signals. See above for MO. */
- signals = atomic_load_acquire (cond->__data.__g_signals + g);
- spin--;
- }
-
- /* If our group will be closed as indicated by the flag on signals,
- don't bother grabbing a signal. */
- if (signals & 1)
- goto done;
-
- /* If there is an available signal, don't block. */
- if (signals != 0)
- break;
-
- /* No signals available after spinning, so prepare to block.
- We first acquire a group reference and use acquire MO for that so
- that we synchronize with the dummy read-modify-write in
- __condvar_quiesce_and_switch_g1 if we read from that. In turn,
- in this case this will make us see the closed flag on __g_signals
- that designates a concurrent attempt to reuse the group's slot.
- We use acquire MO for the __g_signals check to make the
- __g1_start check work (see spinning above).
- Note that the group reference acquisition will not mask the
- release MO when decrementing the reference count because we use
- an atomic read-modify-write operation and thus extend the release
- sequence. */
- atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2);
- if (((atomic_load_acquire (cond->__data.__g_signals + g) & 1) != 0)
- || (seq < (__condvar_load_g1_start_relaxed (cond) >> 1)))
- {
- /* Our group is closed. Wake up any signalers that might be
- waiting. */
- __condvar_dec_grefs (cond, g, private);
- goto done;
- }
-
- // Now block.
- struct _pthread_cleanup_buffer buffer;
- struct _condvar_cleanup_buffer cbuffer;
- cbuffer.wseq = wseq;
- cbuffer.cond = cond;
- cbuffer.mutex = mutex;
- cbuffer.private = private;
- __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
-
- err = __futex_abstimed_wait_cancelable64 (
- cond->__data.__g_signals + g, 0, clockid, abstime, private);
-
- __pthread_cleanup_pop (&buffer, 0);
-
- if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
- {
- __condvar_dec_grefs (cond, g, private);
- /* If we timed out, we effectively cancel waiting. Note that
- we have decremented __g_refs before cancellation, so that a
- deadlock between waiting for quiescence of our group in
- __condvar_quiesce_and_switch_g1 and us trying to acquire
- the lock during cancellation is not possible. */
- __condvar_cancel_waiting (cond, seq, g, private);
- result = err;
- goto done;
- }
- else
- __condvar_dec_grefs (cond, g, private);
-
- /* Reload signals. See above for MO. */
- signals = atomic_load_acquire (cond->__data.__g_signals + g);
+ /* Now wait until a signal is available in our group or it is closed.
+ Acquire MO so that if we observe (signals == lowseq) after group
+ switching in __condvar_switch_g1, we synchronize with that store and
+ will see the prior update of __g1_start done while switching groups
+ too. */
+ unsigned int signals = atomic_load_acquire (cond->__data.__g_signals + g);
+ uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
+
+ if (seq < g1_start)
+ {
+ /* If the group is closed already,
+ then this waiter originally had enough extra signals to
+ consume, up until the time its group was closed. */
+ break;
+ }
+
+ /* If there is an available signal, don't block.
+ If __g1_start has advanced at all, then we must be in G1
+ by now, perhaps in the process of switching back to an older
+ G2, but in either case we're allowed to consume the available
+ signal and should not block anymore. */
+ if ((int)(signals - (unsigned int)g1_start) > 0)
+ {
+ /* Try to grab a signal. See above for MO. (if we do another loop
+ iteration we need to see the correct value of g1_start) */
+ if (atomic_compare_exchange_weak_acquire (
+ cond->__data.__g_signals + g,
+ &signals, signals - 1))
+ break;
+ else
+ continue;
}
+ // Now block.
+ struct _pthread_cleanup_buffer buffer;
+ struct _condvar_cleanup_buffer cbuffer;
+ cbuffer.wseq = wseq;
+ cbuffer.cond = cond;
+ cbuffer.mutex = mutex;
+ cbuffer.private = private;
+ __pthread_cleanup_push (&buffer, __condvar_cleanup_waiting, &cbuffer);
+
+ err = __futex_abstimed_wait_cancelable64 (
+ cond->__data.__g_signals + g, signals, clockid, abstime, private);
+
+ __pthread_cleanup_pop (&buffer, 0);
+
+ if (__glibc_unlikely (err == ETIMEDOUT || err == EOVERFLOW))
+ {
+ /* If we timed out, we effectively cancel waiting. */
+ __condvar_cancel_waiting (cond, seq, g, private);
+ result = err;
+ break;
+ }
}
- /* Try to grab a signal. Use acquire MO so that we see an up-to-date value
- of __g1_start below (see spinning above for a similar case). In
- particular, if we steal from a more recent group, we will also see a
- more recent __g1_start below. */
- while (!atomic_compare_exchange_weak_acquire (cond->__data.__g_signals + g,
- &signals, signals - 2));
-
- /* We consumed a signal but we could have consumed from a more recent group
- that aliased with ours due to being in the same group slot. If this
- might be the case our group must be closed as visible through
- __g1_start. */
- uint64_t g1_start = __condvar_load_g1_start_relaxed (cond);
- if (seq < (g1_start >> 1))
- {
- /* We potentially stole a signal from a more recent group but we do not
- know which group we really consumed from.
- We do not care about groups older than current G1 because they are
- closed; we could have stolen from these, but then we just add a
- spurious wake-up for the current groups.
- We will never steal a signal from current G2 that was really intended
- for G2 because G2 never receives signals (until it becomes G1). We
- could have stolen a signal from G2 that was conservatively added by a
- previous waiter that also thought it stole a signal -- but given that
- that signal was added unnecessarily, it's not a problem if we steal
- it.
- Thus, the remaining case is that we could have stolen from the current
- G1, where "current" means the __g1_start value we observed. However,
- if the current G1 does not have the same slot index as we do, we did
- not steal from it and do not need to undo that. This is the reason
- for putting a bit with G2's index into__g1_start as well. */
- if (((g1_start & 1) ^ 1) == g)
- {
- /* We have to conservatively undo our potential mistake of stealing
- a signal. We can stop trying to do that when the current G1
- changes because other spinning waiters will notice this too and
- __condvar_quiesce_and_switch_g1 has checked that there are no
- futex waiters anymore before switching G1.
- Relaxed MO is fine for the __g1_start load because we need to
- merely be able to observe this fact and not have to observe
- something else as well.
- ??? Would it help to spin for a little while to see whether the
- current G1 gets closed? This might be worthwhile if the group is
- small or close to being closed. */
- unsigned int s = atomic_load_relaxed (cond->__data.__g_signals + g);
- while (__condvar_load_g1_start_relaxed (cond) == g1_start)
- {
- /* Try to add a signal. We don't need to acquire the lock
- because at worst we can cause a spurious wake-up. If the
- group is in the process of being closed (LSB is true), this
- has an effect similar to us adding a signal. */
- if (((s & 1) != 0)
- || atomic_compare_exchange_weak_relaxed
- (cond->__data.__g_signals + g, &s, s + 2))
- {
- /* If we added a signal, we also need to add a wake-up on
- the futex. We also need to do that if we skipped adding
- a signal because the group is being closed because
- while __condvar_quiesce_and_switch_g1 could have closed
- the group, it might still be waiting for futex waiters to
- leave (and one of those waiters might be the one we stole
- the signal from, which cause it to block using the
- futex). */
- futex_wake (cond->__data.__g_signals + g, 1, private);
- break;
- }
- /* TODO Back off. */
- }
- }
- }
-
- done:
/* Confirm that we have been woken. We do that before acquiring the mutex
to allow for execution of pthread_cond_destroy while having acquired the
diff --git a/nptl/pthread_getattr_np.c b/nptl/pthread_getattr_np.c
index 1e91874767..3ce34437bc 100644
--- a/nptl/pthread_getattr_np.c
+++ b/nptl/pthread_getattr_np.c
@@ -145,9 +145,9 @@ __pthread_getattr_np (pthread_t thread_id, pthread_attr_t *attr)
> (size_t) iattr->stackaddr - last_to)
iattr->stacksize = (size_t) iattr->stackaddr - last_to;
#else
- /* The limit might be too high. */
+ /* The limit might be too low. */
if ((size_t) iattr->stacksize
- > to - (size_t) iattr->stackaddr)
+ < to - (size_t) iattr->stackaddr)
iattr->stacksize = to - (size_t) iattr->stackaddr;
#endif
/* We succeed and no need to look further. */
diff --git a/nptl/tst-cond22.c b/nptl/tst-cond22.c
index 1336e9c79d..bdcb45c536 100644
--- a/nptl/tst-cond22.c
+++ b/nptl/tst-cond22.c
@@ -106,13 +106,13 @@ do_test (void)
status = 1;
}
- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n",
+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n",
c.__data.__wseq.__value32.__high,
c.__data.__wseq.__value32.__low,
c.__data.__g1_start.__value32.__high,
c.__data.__g1_start.__value32.__low,
- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0],
- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1],
+ c.__data.__g_signals[0], c.__data.__g_size[0],
+ c.__data.__g_signals[1], c.__data.__g_size[1],
c.__data.__g1_orig_size, c.__data.__wrefs);
if (pthread_create (&th, NULL, tf, (void *) 1l) != 0)
@@ -152,13 +152,13 @@ do_test (void)
status = 1;
}
- printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u/%u, %u/%u/%u, %u, %u }\n",
+ printf ("cond = { 0x%x:%x, 0x%x:%x, %u/%u, %u/%u, %u, %u }\n",
c.__data.__wseq.__value32.__high,
c.__data.__wseq.__value32.__low,
c.__data.__g1_start.__value32.__high,
c.__data.__g1_start.__value32.__low,
- c.__data.__g_signals[0], c.__data.__g_refs[0], c.__data.__g_size[0],
- c.__data.__g_signals[1], c.__data.__g_refs[1], c.__data.__g_size[1],
+ c.__data.__g_signals[0], c.__data.__g_size[0],
+ c.__data.__g_signals[1], c.__data.__g_size[1],
c.__data.__g1_orig_size, c.__data.__wrefs);
return status;
diff --git a/posix/fork.c b/posix/fork.c
index 298765a1ff..cf9b80e7c0 100644
--- a/posix/fork.c
+++ b/posix/fork.c
@@ -62,6 +62,7 @@ __libc_fork (void)
call_function_static_weak (__nss_database_fork_prepare_parent,
&nss_database_data);
+ _IO_proc_file_chain_lock ();
_IO_list_lock ();
/* Acquire malloc locks. This needs to come last because fork
@@ -92,6 +93,7 @@ __libc_fork (void)
/* Reset locks in the I/O code. */
_IO_list_resetlock ();
+ _IO_proc_file_chain_resetlock ();
call_function_static_weak (__nss_database_fork_subprocess,
&nss_database_data);
@@ -121,6 +123,7 @@ __libc_fork (void)
/* We execute this even if the 'fork' call failed. */
_IO_list_unlock ();
+ _IO_proc_file_chain_unlock ();
}
/* Run the handlers registered for the parent. */
diff --git a/posix/tst-truncate-common.c b/posix/tst-truncate-common.c
index b774fa46b8..b8c561ffdb 100644
--- a/posix/tst-truncate-common.c
+++ b/posix/tst-truncate-common.c
@@ -21,6 +21,8 @@
#include
#include
+#include
+
static void do_prepare (void);
#define PREPARE(argc, argv) do_prepare ()
static int do_test (void);
@@ -42,9 +44,6 @@ do_prepare (void)
}
}
-#define FAIL(str) \
- do { printf ("error: %s (line %d)\n", str, __LINE__); return 1; } while (0)
-
static int
do_test_with_offset (off_t offset)
{
@@ -54,35 +53,35 @@ do_test_with_offset (off_t offset)
memset (buf, 0xcf, sizeof (buf));
if (pwrite (temp_fd, buf, sizeof (buf), offset) != sizeof (buf))
- FAIL ("write failed");
+ FAIL_RET ("write failed");
if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + sizeof (buf)))
- FAIL ("initial size wrong");
+ FAIL_RET ("initial size wrong");
if (ftruncate (temp_fd, offset + 800) < 0)
- FAIL ("size reduction with ftruncate failed");
+ FAIL_RET ("size reduction with ftruncate failed");
if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800))
- FAIL ("size after reduction with ftruncate is incorrect");
+ FAIL_RET ("size after reduction with ftruncate is incorrect");
/* The following test covers more than POSIX. POSIX does not require
that ftruncate() can increase the file size. But we are testing
Unix systems. */
if (ftruncate (temp_fd, offset + 1200) < 0)
- FAIL ("size increate with ftruncate failed");
+ FAIL_RET ("size increate with ftruncate failed");
if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200))
- FAIL ("size after increase is incorrect");
+ FAIL_RET ("size after increase is incorrect");
if (truncate (temp_filename, offset + 800) < 0)
- FAIL ("size reduction with truncate failed");
+ FAIL_RET ("size reduction with truncate failed");
if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800))
- FAIL ("size after reduction with truncate incorrect");
+ FAIL_RET ("size after reduction with truncate incorrect");
/* The following test covers more than POSIX. POSIX does not require
that truncate() can increase the file size. But we are testing
Unix systems. */
if (truncate (temp_filename, (offset + 1200)) < 0)
- FAIL ("size increase with truncate failed");
+ FAIL_RET ("size increase with truncate failed");
if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200))
- FAIL ("size increase with truncate is incorrect");
+ FAIL_RET ("size increase with truncate is incorrect");
return 0;
}
diff --git a/resolv/Makefile b/resolv/Makefile
index 5f44f5896b..abff7fc007 100644
--- a/resolv/Makefile
+++ b/resolv/Makefile
@@ -106,6 +106,8 @@ tests += \
tst-resolv-nondecimal \
tst-resolv-res_init-multi \
tst-resolv-search \
+ tst-resolv-semi-failure \
+ tst-resolv-short-response \
tst-resolv-trailing \
# This test calls __res_context_send directly, which is not exported
@@ -299,6 +301,10 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library)
$(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
$(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library)
$(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
+$(objpfx)tst-resolv-semi-failure: $(objpfx)libresolv.so \
+ $(shared-thread-library)
+$(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \
+ $(shared-thread-library)
$(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library)
$(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library)
$(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \
diff --git a/resolv/res_send.c b/resolv/res_send.c
index ea7cf192b2..9c77613f37 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -1199,19 +1199,30 @@ send_dg(res_state statp,
}
/* Check for the correct header layout and a matching
- question. */
+ question. Some recursive resolvers send REFUSED
+ without copying back the question section
+ (producing a response that is only HFIXEDSZ bytes
+ long). Skip query matching in this case. */
+ bool thisansp_error = (anhp->rcode == SERVFAIL ||
+ anhp->rcode == NOTIMP ||
+ anhp->rcode == REFUSED);
+ bool skip_query_match = (*thisresplenp == HFIXEDSZ
+ && ntohs (anhp->qdcount) == 0
+ && thisansp_error);
int matching_query = 0; /* Default to no matching query. */
if (!recvresp1
&& anhp->id == hp->id
- && __libc_res_queriesmatch (buf, buf + buflen,
- *thisansp,
- *thisansp + *thisanssizp))
+ && (skip_query_match
+ || __libc_res_queriesmatch (buf, buf + buflen,
+ *thisansp,
+ *thisansp + *thisanssizp)))
matching_query = 1;
if (!recvresp2
&& anhp->id == hp2->id
- && __libc_res_queriesmatch (buf2, buf2 + buflen2,
- *thisansp,
- *thisansp + *thisanssizp))
+ && (skip_query_match
+ || __libc_res_queriesmatch (buf2, buf2 + buflen2,
+ *thisansp,
+ *thisansp + *thisanssizp)))
matching_query = 2;
if (matching_query == 0)
/* Spurious UDP packet. Drop it and continue
@@ -1221,15 +1232,13 @@ send_dg(res_state statp,
goto wait;
}
- if (anhp->rcode == SERVFAIL ||
- anhp->rcode == NOTIMP ||
- anhp->rcode == REFUSED) {
+ if (thisansp_error) {
next_ns:
if (recvresp1 || (buf2 != NULL && recvresp2)) {
*resplen2 = 0;
return resplen;
}
- if (buf2 != NULL)
+ if (buf2 != NULL && !single_request)
{
/* No data from the first reply. */
resplen = 0;
diff --git a/resolv/tst-resolv-semi-failure.c b/resolv/tst-resolv-semi-failure.c
new file mode 100644
index 0000000000..aa9798b5a7
--- /dev/null
+++ b/resolv/tst-resolv-semi-failure.c
@@ -0,0 +1,133 @@
+/* Test parallel failure/success responses (bug 30081).
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+
+/* The rcode in the initial response. */
+static volatile int rcode;
+
+/* Whether to fail the initial A query (!fail_aaaa) or the initial
+ AAAA query (fail_aaaa). */
+static volatile bool fail_aaaa;
+
+static void
+response (const struct resolv_response_context *ctx,
+ struct resolv_response_builder *b,
+ const char *qname, uint16_t qclass, uint16_t qtype)
+{
+ /* Handle the failing query. */
+ if ((fail_aaaa && qtype == T_AAAA) && ctx->server_index == 0)
+ {
+ struct resolv_response_flags flags = {.rcode = rcode};
+ resolv_response_init (b, flags);
+ return;
+ }
+
+ /* Otherwise produce a response. */
+ resolv_response_init (b, (struct resolv_response_flags) {});
+ resolv_response_add_question (b, qname, qclass, qtype);
+ resolv_response_section (b, ns_s_an);
+ resolv_response_open_record (b, qname, qclass, qtype, 0);
+ switch (qtype)
+ {
+ case T_A:
+ {
+ char ipv4[4] = {192, 0, 2, 17};
+ resolv_response_add_data (b, &ipv4, sizeof (ipv4));
+ }
+ break;
+ case T_AAAA:
+ {
+ char ipv6[16]
+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
+ resolv_response_add_data (b, &ipv6, sizeof (ipv6));
+ }
+ break;
+ default:
+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype);
+ }
+ resolv_response_close_record (b);
+}
+
+static void
+check_one (void)
+{
+
+ /* The buggy 1-second query timeout results in 30 seconds of delay,
+ which triggers are test timeout failure. */
+ for (int i = 0; i < 30; ++i)
+ {
+ static const struct addrinfo hints =
+ {
+ .ai_family = AF_UNSPEC,
+ .ai_socktype = SOCK_STREAM,
+ };
+ struct addrinfo *ai;
+ int ret = getaddrinfo ("www.example", "80", &hints, &ai);
+ const char *expected;
+ if (ret == 0 && ai->ai_next != NULL)
+ expected = ("address: STREAM/TCP 192.0.2.17 80\n"
+ "address: STREAM/TCP 2001:db8::1 80\n");
+ else
+ /* Only one response because the AAAA lookup failure is
+ treated as an ignoreable error. */
+ expected = "address: STREAM/TCP 192.0.2.17 80\n";
+ check_addrinfo ("www.example", ai, ret, expected);
+ if (ret == 0)
+ freeaddrinfo (ai);
+ }
+}
+
+static int
+do_test (void)
+{
+ for (int do_single_lookup = 0; do_single_lookup < 2; ++do_single_lookup)
+ {
+ struct resolv_test *aux = resolv_test_start
+ ((struct resolv_redirect_config)
+ {
+ .response_callback = response,
+ });
+
+ if (do_single_lookup)
+ _res.options |= RES_SNGLKUP;
+
+ for (int do_fail_aaaa = 0; do_fail_aaaa < 2; ++do_fail_aaaa)
+ {
+ fail_aaaa = do_fail_aaaa;
+
+ rcode = 2; /* SERVFAIL. */
+ check_one ();
+
+ rcode = 4; /* NOTIMP. */
+ check_one ();
+
+ rcode = 5; /* REFUSED. */
+ check_one ();
+ }
+
+ resolv_test_end (aux);
+ }
+
+ return 0;
+}
+
+#include
diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c
new file mode 100644
index 0000000000..9b06b0c176
--- /dev/null
+++ b/resolv/tst-resolv-short-response.c
@@ -0,0 +1,126 @@
+/* Test for spurious timeouts with short 12-byte responses (bug 31890).
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+
+/* The rcode in the initial response. */
+static volatile int rcode;
+
+static void
+response (const struct resolv_response_context *ctx,
+ struct resolv_response_builder *b,
+ const char *qname, uint16_t qclass, uint16_t qtype)
+{
+ switch (ctx->server_index)
+ {
+ case 0:
+ /* First server times out. */
+ {
+ struct resolv_response_flags flags = {.rcode = rcode};
+ resolv_response_init (b, flags);
+ }
+ break;
+ case 1:
+ /* Second server sends reply. */
+ resolv_response_init (b, (struct resolv_response_flags) {});
+ resolv_response_add_question (b, qname, qclass, qtype);
+ resolv_response_section (b, ns_s_an);
+ resolv_response_open_record (b, qname, qclass, qtype, 0);
+ switch (qtype)
+ {
+ case T_A:
+ {
+ char ipv4[4] = {192, 0, 2, 17};
+ resolv_response_add_data (b, &ipv4, sizeof (ipv4));
+ }
+ break;
+ case T_AAAA:
+ {
+ char ipv6[16]
+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
+ resolv_response_add_data (b, &ipv6, sizeof (ipv6));
+ }
+ break;
+ default:
+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype);
+ }
+ resolv_response_close_record (b);
+ break;
+ default:
+ FAIL_EXIT1 ("unexpected query to server %d", ctx->server_index);
+ }
+}
+
+static void
+check_one (void)
+{
+
+ /* The buggy 1-second query timeout results in 30 seconds of delay,
+ which triggers a test timeout failure. */
+ for (int i = 0; i < 10; ++i)
+ {
+ check_hostent ("www.example", gethostbyname ("www.example"),
+ "name: www.example\n"
+ "address: 192.0.2.17\n");
+ check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6),
+ "name: www.example\n"
+ "address: 2001:db8::1\n");
+ static const struct addrinfo hints =
+ {
+ .ai_family = AF_UNSPEC,
+ .ai_socktype = SOCK_STREAM,
+ };
+ struct addrinfo *ai;
+ int ret = getaddrinfo ("www.example", "80", &hints, &ai);
+ check_addrinfo ("www.example", ai, ret,
+ "address: STREAM/TCP 192.0.2.17 80\n"
+ "address: STREAM/TCP 2001:db8::1 80\n");
+ if (ret == 0)
+ freeaddrinfo (ai);
+ }
+}
+
+static int
+do_test (void)
+{
+ struct resolv_test *aux = resolv_test_start
+ ((struct resolv_redirect_config)
+ {
+ .response_callback = response,
+ });
+
+ _res.options |= RES_SNGLKUP;
+
+ rcode = 2; /* SERVFAIL. */
+ check_one ();
+
+ rcode = 4; /* NOTIMP. */
+ check_one ();
+
+ rcode = 5; /* REFUSED. */
+ check_one ();
+
+ resolv_test_end (aux);
+
+ return 0;
+}
+
+#include
diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h
index 04780f320e..bd91647f37 100644
--- a/socket/bits/socket2.h
+++ b/socket/bits/socket2.h
@@ -37,14 +37,14 @@ recv (int __fd, __fortify_clang_overload_arg0 (void *, ,__buf), size_t __n,
"recv called with bigger length than "
"size of destination buffer")
{
- size_t sz = __glibc_objsize0 (__buf);
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
+ size_t __sz = __glibc_objsize0 (__buf);
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
return __recv_alias (__fd, __buf, __n, __flags);
#if !__fortify_use_clang
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
- return __recv_chk_warn (__fd, __buf, __n, sz, __flags);
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
+ return __recv_chk_warn (__fd, __buf, __n, __sz, __flags);
#endif
- return __recv_chk (__fd, __buf, __n, sz, __flags);
+ return __recv_chk (__fd, __buf, __n, __sz, __flags);
}
extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
@@ -71,13 +71,13 @@ recvfrom (int __fd, __fortify_clang_overload_arg0 (void *, __restrict, __buf),
"recvfrom called with bigger length "
"than size of destination buffer")
{
- size_t sz = __glibc_objsize0 (__buf);
- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
+ size_t __sz = __glibc_objsize0 (__buf);
+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len);
#if !__fortify_use_clang
- if (__glibc_unsafe_len (__n, sizeof (char), sz))
- return __recvfrom_chk_warn (__fd, __buf, __n, sz, __flags, __addr,
+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
+ return __recvfrom_chk_warn (__fd, __buf, __n, __sz, __flags, __addr,
__addr_len);
#endif
- return __recvfrom_chk (__fd, __buf, __n, sz, __flags, __addr, __addr_len);
+ return __recvfrom_chk (__fd, __buf, __n, __sz, __flags, __addr, __addr_len);
}
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index a63c05a120..3396090be1 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -207,6 +207,7 @@ tests := \
tst-cookie \
tst-dprintf-length \
tst-fdopen \
+ tst-fdopen2 \
tst-ferror \
tst-fgets \
tst-fileno \
@@ -216,6 +217,7 @@ tests := \
tst-fmemopen4 \
tst-fphex \
tst-fphex-wide \
+ tst-fread \
tst-fseek \
tst-fwrite \
tst-gets \
@@ -240,6 +242,7 @@ tests := \
tst-scanf-binary-c23 \
tst-scanf-binary-gnu11 \
tst-scanf-binary-gnu89 \
+ tst-scanf-bz27650 \
tst-scanf-intn \
tst-scanf-round \
tst-scanf-to_inpunct \
@@ -253,6 +256,7 @@ tests := \
tst-swscanf \
tst-tmpnam \
tst-ungetc \
+ tst-ungetc-leak \
tst-unlockedio \
tst-vfprintf-mbs-prec \
tst-vfprintf-user-type \
@@ -315,6 +319,7 @@ tests-special += \
$(objpfx)tst-printf-bz25691-mem.out \
$(objpfx)tst-printf-fp-free-mem.out \
$(objpfx)tst-printf-fp-leak-mem.out \
+ $(objpfx)tst-ungetc-leak-mem.out \
$(objpfx)tst-vfprintf-width-prec-mem.out \
# tests-special
@@ -328,6 +333,9 @@ generated += \
tst-printf-fp-free.mtrace \
tst-printf-fp-leak-mem.out \
tst-printf-fp-leak.mtrace \
+ tst-scanf-bz27650.mtrace \
+ tst-ungetc-leak-mem.out \
+ tst-ungetc-leak.mtrace \
tst-vfprintf-width-prec-mem.out \
tst-vfprintf-width-prec.mtrace \
# generated
@@ -419,6 +427,12 @@ tst-printf-fp-free-ENV = \
tst-printf-fp-leak-ENV = \
MALLOC_TRACE=$(objpfx)tst-printf-fp-leak.mtrace \
LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
+tst-scanf-bz27650-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
+tst-ungetc-leak-ENV = \
+ MALLOC_TRACE=$(objpfx)tst-ungetc-leak.mtrace \
+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
$(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
$(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
diff --git a/stdio-common/tst-fdopen2.c b/stdio-common/tst-fdopen2.c
new file mode 100644
index 0000000000..0c6625f258
--- /dev/null
+++ b/stdio-common/tst-fdopen2.c
@@ -0,0 +1,246 @@
+/* Test the fdopen function.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+char *tmp_dir;
+char *path_to_file;
+
+void
+prepare_tmp_dir (void)
+{
+ tmp_dir = support_create_temp_directory ("tst-fdopen2");
+ path_to_file = xasprintf ("%s/tst-fdopen2.txt", tmp_dir);
+}
+
+/* open temp file descriptor with mode. */
+int
+open_tmp_fd (int mode)
+{
+ int fd = xopen (path_to_file, mode, 0644);
+ return fd;
+}
+
+
+/* close and remove temp file with close. */
+void
+close_tmp_fd (int fd)
+{
+ xclose (fd);
+ xunlink (path_to_file);
+}
+
+/* close and remove temp file with fclose. */
+void
+close_tmp_fp (FILE *fp)
+{
+ fclose (fp);
+ xunlink (path_to_file);
+}
+
+/* test "w" fdopen mode. */
+void
+do_test_fdopen_w (void)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_TRUNC);
+
+ /* test mode mismatch. */
+ fp = fdopen (fd, "r");
+ if (fp != NULL || errno != EINVAL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, r) should fail with EINVAL: %m", fd);
+ }
+
+ fp = fdopen (fd, "w");
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
+ }
+
+ const void *buf = "AAAA";
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite (): %m");
+ }
+
+ unsigned char buf2[4];
+ rewind (fp);
+ clearerr (fp);
+ /* fread should fail in "w" mode */
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 0 || ferror (fp) == 0)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread should fail in \"w\" mode");
+ }
+
+ fclose (fp);
+}
+
+/* test "r" fdopen mode. */
+void
+do_test_fdopen_r (void)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (O_RDONLY);
+
+ /* test mode mismatch. */
+ fp = fdopen (fd, "w");
+ if (fp != NULL || errno != EINVAL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w) should fail with EINVAL: %m", fd);
+ }
+
+ fp = fdopen (fd, "r");
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
+ }
+
+ const void *buf = "BBBB";
+ /* fwrite should fail in "r" mode. */
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 0 || ferror (fp) == 0)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite should fail in \"r\" mode");
+ }
+
+ unsigned char buf2[4];
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread (): %m");
+ }
+
+ fclose (fp);
+}
+
+/* test "a" fdopen mode. */
+void
+do_test_fdopen_a (void)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_APPEND);
+
+ /* test mode mismatch. */
+ fp = fdopen (fd, "r+");
+ if (fp != NULL || errno != EINVAL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, \"r+\") should fail with EINVAL: %m", fd);
+ }
+
+ fp = fdopen (fd, "a");
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
+ }
+
+ const void *buf = "CCCC";
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite (): %m");
+ }
+
+ /* fread should fail in "a" mode. */
+ unsigned char buf2[4];
+ clearerr (fp);
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 0 || ferror (fp) == 0)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread should fail \"a\" mode");
+ }
+
+ fclose (fp);
+}
+
+void
+do_test_fdopen_mode (int mode, const char *fmode)
+{
+ int fd, ret;
+ FILE *fp;
+ fd = open_tmp_fd (mode);
+
+ fp = fdopen (fd, fmode);
+ if (fp == NULL)
+ {
+ close_tmp_fd (fd);
+ FAIL_EXIT1 ("fdopen (%d, %s): %m", fd, fmode);
+ }
+
+ const void *buf = "EEEE";
+ ret = fwrite (buf, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fwrite () in mode:%s returns %d: %m", fmode, ret);
+ }
+
+ rewind (fp);
+ unsigned char buf2[4];
+ ret = fread (buf2, 1, 4, fp);
+ if (ret != 4)
+ {
+ close_tmp_fp (fp);
+ FAIL_EXIT1 ("fread () in mode:%s returns %d: %m", fmode, ret);
+ }
+
+ fclose (fp);
+}
+
+static int
+do_test (void)
+{
+
+ prepare_tmp_dir ();
+
+ do_test_fdopen_w ();
+ do_test_fdopen_r ();
+ do_test_fdopen_a ();
+
+ /* test r+ w+ a+ fdopen modes. */
+ do_test_fdopen_mode (O_RDWR, "r+");
+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_TRUNC, "w+");
+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_APPEND, "a+");
+ xunlink (path_to_file);
+ return 0;
+}
+
+#include
diff --git a/stdio-common/tst-fread.c b/stdio-common/tst-fread.c
new file mode 100644
index 0000000000..4d9a7895f6
--- /dev/null
+++ b/stdio-common/tst-fread.c
@@ -0,0 +1,134 @@
+/* Test fread.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+int
+do_test (void)
+{
+ char *temp_dir = support_create_temp_directory ("tst-fread");
+ char *file1 = xasprintf ("%s/file1", temp_dir);
+ support_write_file_string (file1, "file1");
+ add_temp_file (file1);
+ FILE *fp;
+ size_t ret;
+ char buf[1024];
+
+ verbose_printf ("test single-byte reads\n");
+ fp = xfopen (file1, "r");
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, 2, fp);
+ TEST_COMPARE (ret, 2);
+ TEST_COMPARE (buf[0], 'f');
+ TEST_COMPARE (buf[1], 'i');
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ftell (fp), 2);
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, 3, fp);
+ TEST_COMPARE (ret, 3);
+ TEST_COMPARE (buf[0], 'l');
+ TEST_COMPARE (buf[1], 'e');
+ TEST_COMPARE (buf[2], '1');
+ TEST_COMPARE (ftell (fp), 5);
+ TEST_COMPARE (feof (fp), 0);
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, 1, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (!!feof (fp), 1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 5);
+ xfclose (fp);
+
+ verbose_printf ("test single-byte reads, EOF part way through\n");
+ fp = xfopen (file1, "r");
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, sizeof buf, fp);
+ TEST_COMPARE (ret, 5);
+ TEST_COMPARE (buf[0], 'f');
+ TEST_COMPARE (buf[1], 'i');
+ TEST_COMPARE (buf[2], 'l');
+ TEST_COMPARE (buf[3], 'e');
+ TEST_COMPARE (buf[4], '1');
+ TEST_COMPARE (!!feof (fp), 1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 5);
+ xfclose (fp);
+
+ verbose_printf ("test multi-byte reads\n");
+ fp = xfopen (file1, "r");
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 2, 2, fp);
+ TEST_COMPARE (ret, 2);
+ TEST_COMPARE (buf[0], 'f');
+ TEST_COMPARE (buf[1], 'i');
+ TEST_COMPARE (buf[2], 'l');
+ TEST_COMPARE (buf[3], 'e');
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ftell (fp), 4);
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 3, 3, fp);
+ TEST_COMPARE (ret, 0);
+ /* The bytes written for a partial element read are unspecified. */
+ TEST_COMPARE (!!feof (fp), 1);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 5);
+ xfclose (fp);
+
+ verbose_printf ("test read error\n");
+ fp = xfopen (file1, "r");
+ xclose (fileno (fp));
+ memset (buf, 0, sizeof buf);
+ ret = fread (buf, 1, sizeof buf, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (!!ferror (fp), 1);
+ fclose (fp);
+
+ verbose_printf ("test zero size\n");
+ fp = xfopen (file1, "r");
+ ret = fread (buf, 0, SIZE_MAX, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 0);
+ xfclose (fp);
+
+ verbose_printf ("test zero items\n");
+ fp = xfopen (file1, "r");
+ ret = fread (buf, SIZE_MAX, 0, fp);
+ TEST_COMPARE (ret, 0);
+ TEST_COMPARE (feof (fp), 0);
+ TEST_COMPARE (ferror (fp), 0);
+ TEST_COMPARE (ftell (fp), 0);
+ xfclose (fp);
+
+ free (temp_dir);
+ free (file1);
+ return 0;
+}
+
+#include
diff --git a/stdio-common/tst-scanf-bz27650.c b/stdio-common/tst-scanf-bz27650.c
new file mode 100644
index 0000000000..3a742bc865
--- /dev/null
+++ b/stdio-common/tst-scanf-bz27650.c
@@ -0,0 +1,108 @@
+/* Test for BZ #27650, formatted input matching beyond INT_MAX.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+#include
+#include
+
+/* Produce a stream of more than INT_MAX characters via buffer BUF of
+ size SIZE according to bookkeeping in COOKIE and then return EOF. */
+
+static ssize_t
+io_read (void *cookie, char *buf, size_t size)
+{
+ unsigned int *written = cookie;
+ unsigned int w = *written;
+
+ if (w > INT_MAX)
+ return 0;
+
+ memset (buf, 'a', size);
+ *written = w + size;
+ return size;
+}
+
+/* Consume a stream of more than INT_MAX characters from an artificial
+ input stream of which none is the new line character. The call to
+ fscanf is supposed to complete upon the EOF condition of input,
+ however in the presence of BZ #27650 it will terminate prematurely
+ with characters still outstanding in input. Diagnose the condition
+ and return status accordingly. */
+
+int
+do_test (void)
+{
+ static cookie_io_functions_t io_funcs = { .read = io_read };
+ unsigned int written = 0;
+ FILE *in;
+ int v;
+
+ mtrace ();
+
+ in = fopencookie (&written, "r", io_funcs);
+ if (in == NULL)
+ {
+ FAIL ("fopencookie: %m");
+ goto out;
+ }
+
+ v = fscanf (in, "%*[^\n]");
+ if (ferror (in))
+ {
+ FAIL ("fscanf: input failure, at %u: %m", written);
+ goto out_close;
+ }
+ else if (v == EOF)
+ {
+ FAIL ("fscanf: unexpected end of file, at %u", written);
+ goto out_close;
+ }
+
+ if (!feof (in))
+ {
+ v = fgetc (in);
+ if (ferror (in))
+ FAIL ("fgetc: input failure: %m");
+ else if (v == EOF)
+ FAIL ("fgetc: unexpected end of file after missing end of file");
+ else if (v == '\n')
+ FAIL ("unexpected new line character received");
+ else
+ FAIL ("character received after end of file expected: \\x%02x", v);
+ }
+
+out_close:
+ if (fclose (in) != 0)
+ FAIL ("fclose: %m");
+
+out:
+ return EXIT_SUCCESS;
+}
+
+#define TIMEOUT (DEFAULT_TIMEOUT * 8)
+#include
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S b/stdio-common/tst-ungetc-leak.c
similarity index 66%
rename from sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S
rename to stdio-common/tst-ungetc-leak.c
index 1a9f6069f5..6c5152b43f 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power10.S
+++ b/stdio-common/tst-ungetc-leak.c
@@ -1,5 +1,5 @@
-/* Optimized strcmp implementation for POWER10/PPC64.
- Copyright (C) 2021-2024 Free Software Foundation, Inc.
+/* Test for memory leak with ungetc when stream is unused.
+ Copyright The GNU Toolchain Authors.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -16,11 +16,17 @@
License along with the GNU C Library; if not, see
. */
-#if defined __LITTLE_ENDIAN__ && IS_IN (libc)
-#define STRCMP __strcmp_power10
+#include
+#include
+#include
+#include
-#undef libc_hidden_builtin_def
-#define libc_hidden_builtin_def(name)
+static int
+do_test (void)
+{
+ mtrace ();
+ TEST_COMPARE (ungetc('y', stdin), 'y');
+ return 0;
+}
-#include
-#endif /* __LITTLE_ENDIAN__ && IS_IN (libc) */
+#include
diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c
index 1344b2b591..388b202493 100644
--- a/stdio-common/tst-ungetc.c
+++ b/stdio-common/tst-ungetc.c
@@ -1,70 +1,74 @@
-/* Test for ungetc bugs. */
+/* Test for ungetc bugs.
+ Copyright (C) 1996-2024 Free Software Foundation, Inc.
+ Copyright The GNU Toolchain Authors.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
#include
#include
-#include
-
-#undef assert
-#define assert(x) \
- if (!(x)) \
- { \
- fputs ("test failed: " #x "\n", stderr); \
- retval = 1; \
- goto the_end; \
- }
+#include
+#include
+#include
+#include
+#include
-int
-main (int argc, char *argv[])
+static int
+do_test (void)
{
- char name[] = "/tmp/tst-ungetc.XXXXXX";
+ char *name = NULL;
FILE *fp = NULL;
- int retval = 0;
int c;
char buffer[64];
- int fd = mkstemp (name);
+ int fd = create_temp_file ("tst-ungetc.", &name);
if (fd == -1)
- {
- printf ("mkstemp failed: %m\n");
- return 1;
- }
- close (fd);
- fp = fopen (name, "w");
- assert (fp != NULL)
- fputs ("bla", fp);
- fclose (fp);
- fp = NULL;
+ FAIL_EXIT1 ("cannot create temporary file: %m");
+ xclose (fd);
- fp = fopen (name, "r");
- assert (fp != NULL);
- assert (ungetc ('z', fp) == 'z');
- assert (getc (fp) == 'z');
- assert (getc (fp) == 'b');
- assert (getc (fp) == 'l');
- assert (ungetc ('m', fp) == 'm');
- assert (getc (fp) == 'm');
- assert ((c = getc (fp)) == 'a');
- assert (getc (fp) == EOF);
- assert (ungetc (c, fp) == c);
- assert (feof (fp) == 0);
- assert (getc (fp) == c);
- assert (getc (fp) == EOF);
- fclose (fp);
- fp = NULL;
+ fp = xfopen (name, "w");
+ fputs ("bla", fp);
+ xfclose (fp);
- fp = fopen (name, "r");
- assert (fp != NULL);
- assert (getc (fp) == 'b');
- assert (getc (fp) == 'l');
- assert (ungetc ('b', fp) == 'b');
- assert (fread (buffer, 1, 64, fp) == 2);
- assert (buffer[0] == 'b');
- assert (buffer[1] == 'a');
+ fp = xfopen (name, "r");
+ TEST_VERIFY_EXIT (ungetc ('z', fp) == 'z');
+ TEST_VERIFY_EXIT (getc (fp) == 'z');
+ TEST_VERIFY_EXIT (getc (fp) == 'b');
+ TEST_VERIFY_EXIT (getc (fp) == 'l');
+ TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm');
+ TEST_VERIFY_EXIT (ungetc ('n', fp) == 'n');
+ TEST_VERIFY_EXIT (getc (fp) == 'n');
+ TEST_VERIFY_EXIT (getc (fp) == 'm');
+ TEST_VERIFY_EXIT ((c = getc (fp)) == 'a');
+ TEST_VERIFY_EXIT (getc (fp) == EOF);
+ TEST_VERIFY_EXIT (ungetc (c, fp) == c);
+ TEST_VERIFY_EXIT (feof (fp) == 0);
+ TEST_VERIFY_EXIT (getc (fp) == c);
+ TEST_VERIFY_EXIT (getc (fp) == EOF);
+ xfclose (fp);
-the_end:
- if (fp != NULL)
- fclose (fp);
- unlink (name);
+ fp = xfopen (name, "r");
+ TEST_VERIFY_EXIT (getc (fp) == 'b');
+ TEST_VERIFY_EXIT (getc (fp) == 'l');
+ TEST_VERIFY_EXIT (ungetc ('b', fp) == 'b');
+ TEST_VERIFY_EXIT (fread (buffer, 1, 64, fp) == 2);
+ TEST_VERIFY_EXIT (buffer[0] == 'b');
+ TEST_VERIFY_EXIT (buffer[1] == 'a');
+ xfclose (fp);
- return retval;
+ return 0;
}
+
+#include
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 8b0ac63ddb..d3a84fa641 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -307,6 +307,7 @@ tests := \
tst-setcontext9 \
tst-setcontext10 \
tst-setcontext11 \
+ tst-setenv-environ \
tst-stdbit-Wconversion \
tst-stdbit-builtins \
tst-stdc_bit_ceil \
@@ -603,6 +604,8 @@ $(objpfx)bug-strtod2: $(libm)
$(objpfx)tst-strtod-round: $(libm)
$(objpfx)tst-tininess: $(libm)
$(objpfx)tst-strtod-underflow: $(libm)
+$(objpfx)tst-strtod5: $(libm)
+$(objpfx)tst-strtod5i: $(libm)
$(objpfx)tst-strtod6: $(libm)
$(objpfx)tst-strtod-nan-locale: $(libm)
$(objpfx)tst-strtod-nan-sign: $(libm)
diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h
index 1557b862b1..9c78ecf458 100644
--- a/stdlib/bits/stdlib.h
+++ b/stdlib/bits/stdlib.h
@@ -43,16 +43,16 @@ __NTH (realpath (const char *__restrict __name,
"bytes long buffer")
#endif
{
- size_t sz = __glibc_objsize (__resolved);
+ size_t __sz = __glibc_objsize (__resolved);
- if (sz == (size_t) -1)
+ if (__sz == (size_t) -1)
return __realpath_alias (__name, __resolved);
#if !__fortify_use_clang && defined _LIBC_LIMITS_H_ && defined PATH_MAX
- if (__glibc_unsafe_len (PATH_MAX, sizeof (char), sz))
- return __realpath_chk_warn (__name, __resolved, sz);
+ if (__glibc_unsafe_len (PATH_MAX, sizeof (char), __sz))
+ return __realpath_chk_warn (__name, __resolved, __sz);
#endif
- return __realpath_chk (__name, __resolved, sz);
+ return __realpath_chk (__name, __resolved, __sz);
}
diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c
index e48bf4d6ea..7ce735f81d 100644
--- a/stdlib/gen-tst-strtod-round.c
+++ b/stdlib/gen-tst-strtod-round.c
@@ -46,6 +46,7 @@ static int
string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
{
mpfr_clear_overflow ();
+ mpfr_clear_underflow ();
#ifdef WORKAROUND
mpfr_t f2;
mpfr_init2 (f2, 100000);
@@ -53,12 +54,16 @@ string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
int r = mpfr_set (f, f2, rnd);
r |= mpfr_subnormalize (f, r, rnd);
mpfr_clear (f2);
- return r0 | r;
+ r |= r0;
#else
int r = mpfr_strtofr (f, s, NULL, 0, rnd);
r |= mpfr_subnormalize (f, r, rnd);
- return r;
#endif
+ if (r == 0)
+ /* The MPFR underflow flag is set for exact subnormal results,
+ which is not wanted here. */
+ mpfr_clear_underflow ();
+ return r;
}
void
@@ -70,6 +75,21 @@ print_fp (FILE *fout, mpfr_t f, const char *suffix)
mpfr_fprintf (fout, "\t%Ra%s", f, suffix);
}
+static const char *
+suffix_to_print (bool overflow, bool underflow, bool underflow_before_rounding,
+ bool with_comma)
+{
+ if (overflow)
+ return with_comma ? ", true, false,\n" : ", true, false";
+ if (underflow)
+ return with_comma ? ", false, true,\n" : ", false, true";
+ if (underflow_before_rounding)
+ return (with_comma
+ ? ", false, !TININESS_AFTER_ROUNDING,\n"
+ : ", false, !TININESS_AFTER_ROUNDING");
+ return with_comma ? ", false, false,\n" : ", false, false";
+}
+
static void
round_str (FILE *fout, const char *s, int prec, int emin, int emax,
bool ibm_ld)
@@ -80,8 +100,11 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax,
mpfr_set_emin (emin);
mpfr_set_emax (emax);
mpfr_init (f);
+ string_to_fp (f, s, MPFR_RNDZ);
+ bool underflow_before_rounding = mpfr_underflow_p () != 0;
int r = string_to_fp (f, s, MPFR_RNDD);
bool overflow = mpfr_overflow_p () != 0;
+ bool underflow = mpfr_underflow_p () != 0;
if (ibm_ld)
{
assert (prec == 106 && emin == -1073 && emax == 1024);
@@ -97,19 +120,27 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax,
}
}
mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true");
- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ true));
string_to_fp (f, s, MPFR_RNDN);
overflow = (mpfr_overflow_p () != 0
|| (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ true));
string_to_fp (f, s, MPFR_RNDZ);
overflow = (mpfr_overflow_p () != 0
|| (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ true));
string_to_fp (f, s, MPFR_RNDU);
overflow = (mpfr_overflow_p () != 0
|| (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
- print_fp (fout, f, overflow ? ", true" : ", false");
+ print_fp (fout, f,
+ suffix_to_print (overflow, underflow, underflow_before_rounding,
+ false));
mpfr_clear (f);
if (ibm_ld)
mpfr_clear (max_value);
diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
index be515ce659..beb97b3d0c 100644
--- a/stdlib/strtod_l.c
+++ b/stdlib/strtod_l.c
@@ -222,6 +222,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
mp_size_t shift = MIN_EXP - 1 - exponent;
bool is_tiny = true;
+ bool old_half_bit = (round_limb & (((mp_limb_t) 1) << round_bit)) != 0;
more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;
if (shift == MANT_DIG)
@@ -292,6 +293,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
round_bit = shift - 1;
(void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift);
}
+ more_bits |= old_half_bit;
/* This is a hook for the m68k long double format, where the
exponent bias is the same for normalized and denormalized
numbers. */
diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c
index 4cb286d2b3..39fb7e9f75 100644
--- a/stdlib/strtod_nan_main.c
+++ b/stdlib/strtod_nan_main.c
@@ -16,6 +16,7 @@
License along with the GNU C Library; if not, see
. */
+#include
#include
#include
#include
@@ -50,7 +51,9 @@ STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc)
STRING_TYPE *endp;
unsigned long long int mant;
+ int save_errno = errno;
mant = STRTOULL (str, &endp, 0);
+ __set_errno (save_errno);
if (endp == cp)
SET_NAN_PAYLOAD (retval, mant);
diff --git a/stdlib/tst-secure-getenv.c b/stdlib/tst-secure-getenv.c
index cc26ed6d15..cefee58d46 100644
--- a/stdlib/tst-secure-getenv.c
+++ b/stdlib/tst-secure-getenv.c
@@ -57,13 +57,7 @@ do_test (void)
exit (1);
}
- int status = support_capture_subprogram_self_sgid (MAGIC_ARGUMENT);
-
- if (WEXITSTATUS (status) == EXIT_UNSUPPORTED)
- return EXIT_UNSUPPORTED;
-
- if (!WIFEXITED (status))
- FAIL_EXIT1 ("Unexpected exit status %d from child process\n", status);
+ support_capture_subprogram_self_sgid (MAGIC_ARGUMENT);
return 0;
}
@@ -82,6 +76,7 @@ alternative_main (int argc, char **argv)
if (secure_getenv ("PATH") != NULL)
FAIL_EXIT (4, "PATH variable not filtered out\n");
+ support_record_failure_barrier ();
exit (EXIT_SUCCESS);
}
}
diff --git a/stdlib/tst-setenv-environ.c b/stdlib/tst-setenv-environ.c
new file mode 100644
index 0000000000..02fcef96d0
--- /dev/null
+++ b/stdlib/tst-setenv-environ.c
@@ -0,0 +1,36 @@
+/* Test using setenv with updated environ.
+ Copyright (C) 2025 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+#include
+#include
+
+extern char **environ;
+
+int
+do_test (void)
+{
+ char *valp;
+ static char *dummy_environ[] = { NULL };
+ environ = dummy_environ;
+ setenv ("A", "1", 0);
+ valp = getenv ("A");
+ TEST_VERIFY_EXIT (valp[0] == '1' && valp[1] == '\0');
+ return 0;
+}
+
+#include
diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data
index 84ab705709..9489fbcc9c 100644
--- a/stdlib/tst-strtod-round-data
+++ b/stdlib/tst-strtod-round-data
@@ -265,3 +265,15 @@
1.000000000000000000000000000000000385185988877447170611195588516985463707620329643077639047987759113311767578125
1.0000000000000000000000000000000001925929944387235853055977942584927318538101648215388195239938795566558837890625
1.00000000000000000000000000000000009629649721936179265279889712924636592690508241076940976199693977832794189453125
+0x30000002222225p-1077
+0x0.7fffffffffffeap-1022
+0x0.7fffffffffffe9p-1022
+0x0.7ffffd4p-126
+0x0.7ffffffffffffffd4p-16382
+0x0.7ffffffffffffffd4p-16383
+0x0.7ffffffffffffffffffffffffffeap-16382
+0x0.7000004p-126
+0x0.70000000000002p-1022
+0x0.70000000000000004p-16382
+0x0.70000000000000004p-16383
+0x0.70000000000000000000000000002p-16382
diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h
index 8899d15f9b..ed50eb2537 100644
--- a/stdlib/tst-strtod-round-data.h
+++ b/stdlib/tst-strtod-round-data.h
@@ -2,1852 +2,1852 @@
static const struct test tests[] = {
TEST ("3.518437208883201171875E+013",
false,
- 0x2p+44, false,
- 0x2p+44, false,
- 0x2p+44, false,
- 0x2.000004p+44, false,
- false,
- 0x2.0000000000002p+44, false,
- 0x2.0000000000004p+44, false,
- 0x2.0000000000002p+44, false,
- 0x2.0000000000004p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- true,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false,
- 0x2.0000000000003p+44, false),
+ 0x2p+44, false, false,
+ 0x2p+44, false, false,
+ 0x2p+44, false, false,
+ 0x2.000004p+44, false, false,
+ false,
+ 0x2.0000000000002p+44, false, false,
+ 0x2.0000000000004p+44, false, false,
+ 0x2.0000000000002p+44, false, false,
+ 0x2.0000000000004p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ true,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false,
+ 0x2.0000000000003p+44, false, false),
TEST ("1.00000005960464477550",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false),
TEST ("1.0000000596046447755",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000002p+0, false,
- 0x1.0000010000000004p+0, false,
- false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- 0x1.0000010000000002048242f2ffp+0, false,
- 0x1.0000010000000002048242f2ff8p+0, false,
- false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false,
- 0x1.0000010000000002048242f2ff66p+0, false,
- 0x1.0000010000000002048242f2ff67p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ 0x1.0000010000000004p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ 0x1.0000010000000002048242f2ffp+0, false, false,
+ 0x1.0000010000000002048242f2ff8p+0, false, false,
+ false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false,
+ 0x1.0000010000000002048242f2ff66p+0, false, false,
+ 0x1.0000010000000002048242f2ff67p+0, false, false),
TEST ("1.000000059604644776",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- 0x1.000001000000000ap+0, false,
- 0x1.000001000000000cp+0, false,
- false,
- 0x1.000001000000000b3db12bdc21p+0, false,
- 0x1.000001000000000b3db12bdc21p+0, false,
- 0x1.000001000000000b3db12bdc21p+0, false,
- 0x1.000001000000000b3db12bdc218p+0, false,
- false,
- 0x1.000001000000000b3db12bdc213cp+0, false,
- 0x1.000001000000000b3db12bdc213dp+0, false,
- 0x1.000001000000000b3db12bdc213cp+0, false,
- 0x1.000001000000000b3db12bdc213dp+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ 0x1.000001000000000ap+0, false, false,
+ 0x1.000001000000000cp+0, false, false,
+ false,
+ 0x1.000001000000000b3db12bdc21p+0, false, false,
+ 0x1.000001000000000b3db12bdc21p+0, false, false,
+ 0x1.000001000000000b3db12bdc21p+0, false, false,
+ 0x1.000001000000000b3db12bdc218p+0, false, false,
+ false,
+ 0x1.000001000000000b3db12bdc213cp+0, false, false,
+ 0x1.000001000000000b3db12bdc213dp+0, false, false,
+ 0x1.000001000000000b3db12bdc213cp+0, false, false,
+ 0x1.000001000000000b3db12bdc213dp+0, false, false),
TEST ("1.000000059604644775",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffffap+0, false,
- false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffff8p+0, false,
- 0x1.000000fffffffffap+0, false,
- false,
- 0x1.000000fffffffff8cb535a09dd8p+0, false,
- 0x1.000000fffffffff8cb535a09dd8p+0, false,
- 0x1.000000fffffffff8cb535a09dd8p+0, false,
- 0x1.000000fffffffff8cb535a09dep+0, false,
- false,
- 0x1.000000fffffffff8cb535a09dd9p+0, false,
- 0x1.000000fffffffff8cb535a09dd91p+0, false,
- 0x1.000000fffffffff8cb535a09dd9p+0, false,
- 0x1.000000fffffffff8cb535a09dd91p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffffap+0, false, false,
+ false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffff8p+0, false, false,
+ 0x1.000000fffffffffap+0, false, false,
+ false,
+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dep+0, false, false,
+ false,
+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false,
+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false),
TEST ("1.00000005960464478",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- 0x1.0000010000000054p+0, false,
- 0x1.0000010000000056p+0, false,
- false,
- 0x1.0000010000000055072873252f8p+0, false,
- 0x1.0000010000000055072873253p+0, false,
- 0x1.0000010000000055072873252f8p+0, false,
- 0x1.0000010000000055072873253p+0, false,
- false,
- 0x1.0000010000000055072873252febp+0, false,
- 0x1.0000010000000055072873252febp+0, false,
- 0x1.0000010000000055072873252febp+0, false,
- 0x1.0000010000000055072873252fecp+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ 0x1.0000010000000054p+0, false, false,
+ 0x1.0000010000000056p+0, false, false,
+ false,
+ 0x1.0000010000000055072873252f8p+0, false, false,
+ 0x1.0000010000000055072873253p+0, false, false,
+ 0x1.0000010000000055072873252f8p+0, false, false,
+ 0x1.0000010000000055072873253p+0, false, false,
+ false,
+ 0x1.0000010000000055072873252febp+0, false, false,
+ 0x1.0000010000000055072873252febp+0, false, false,
+ 0x1.0000010000000055072873252febp+0, false, false,
+ 0x1.0000010000000055072873252fecp+0, false, false),
TEST ("1.0000000596046448",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- 0x1.00000100000001c4p+0, false,
- 0x1.00000100000001c6p+0, false,
- false,
- 0x1.00000100000001c5f67cd79279p+0, false,
- 0x1.00000100000001c5f67cd792798p+0, false,
- 0x1.00000100000001c5f67cd79279p+0, false,
- 0x1.00000100000001c5f67cd792798p+0, false,
- false,
- 0x1.00000100000001c5f67cd7927953p+0, false,
- 0x1.00000100000001c5f67cd7927954p+0, false,
- 0x1.00000100000001c5f67cd7927953p+0, false,
- 0x1.00000100000001c5f67cd7927954p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ 0x1.00000100000001c4p+0, false, false,
+ 0x1.00000100000001c6p+0, false, false,
+ false,
+ 0x1.00000100000001c5f67cd79279p+0, false, false,
+ 0x1.00000100000001c5f67cd792798p+0, false, false,
+ 0x1.00000100000001c5f67cd79279p+0, false, false,
+ 0x1.00000100000001c5f67cd792798p+0, false, false,
+ false,
+ 0x1.00000100000001c5f67cd7927953p+0, false, false,
+ 0x1.00000100000001c5f67cd7927954p+0, false, false,
+ 0x1.00000100000001c5f67cd7927953p+0, false, false,
+ 0x1.00000100000001c5f67cd7927954p+0, false, false),
TEST ("1.000000059604645",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.0000010000001p+0, false,
- 0x1.0000010000001p+0, false,
- 0x1.0000010000001p+0, false,
- 0x1.0000010000002p+0, false,
- false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- 0x1.000001000000102ep+0, false,
- 0x1.000001000000103p+0, false,
- false,
- 0x1.000001000000102f4fc8c3d757p+0, false,
- 0x1.000001000000102f4fc8c3d7578p+0, false,
- 0x1.000001000000102f4fc8c3d757p+0, false,
- 0x1.000001000000102f4fc8c3d7578p+0, false,
- false,
- 0x1.000001000000102f4fc8c3d75769p+0, false,
- 0x1.000001000000102f4fc8c3d75769p+0, false,
- 0x1.000001000000102f4fc8c3d75769p+0, false,
- 0x1.000001000000102f4fc8c3d7576ap+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.0000010000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ 0x1.0000010000002p+0, false, false,
+ false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ 0x1.000001000000102ep+0, false, false,
+ 0x1.000001000000103p+0, false, false,
+ false,
+ 0x1.000001000000102f4fc8c3d757p+0, false, false,
+ 0x1.000001000000102f4fc8c3d7578p+0, false, false,
+ 0x1.000001000000102f4fc8c3d757p+0, false, false,
+ 0x1.000001000000102f4fc8c3d7578p+0, false, false,
+ false,
+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
+ 0x1.000001000000102f4fc8c3d7576ap+0, false, false),
TEST ("1.00000005960464",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffffeap+0, false,
- 0x1.000000fffffeap+0, false,
- 0x1.000000fffffeap+0, false,
- 0x1.000000fffffebp+0, false,
- false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- 0x1.000000fffffea7e4p+0, false,
- 0x1.000000fffffea7e6p+0, false,
- false,
- 0x1.000000fffffea7e5975eb11da7p+0, false,
- 0x1.000000fffffea7e5975eb11da78p+0, false,
- 0x1.000000fffffea7e5975eb11da7p+0, false,
- 0x1.000000fffffea7e5975eb11da78p+0, false,
- false,
- 0x1.000000fffffea7e5975eb11da74ap+0, false,
- 0x1.000000fffffea7e5975eb11da74bp+0, false,
- 0x1.000000fffffea7e5975eb11da74ap+0, false,
- 0x1.000000fffffea7e5975eb11da74bp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffffeap+0, false, false,
+ 0x1.000000fffffeap+0, false, false,
+ 0x1.000000fffffeap+0, false, false,
+ 0x1.000000fffffebp+0, false, false,
+ false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ 0x1.000000fffffea7e4p+0, false, false,
+ 0x1.000000fffffea7e6p+0, false, false,
+ false,
+ 0x1.000000fffffea7e5975eb11da7p+0, false, false,
+ 0x1.000000fffffea7e5975eb11da78p+0, false, false,
+ 0x1.000000fffffea7e5975eb11da7p+0, false, false,
+ 0x1.000000fffffea7e5975eb11da78p+0, false, false,
+ false,
+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false,
+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false,
+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false,
+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false),
TEST ("1.0000000596046",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffff36p+0, false,
- 0x1.000000fffff36p+0, false,
- 0x1.000000fffff36p+0, false,
- 0x1.000000fffff37p+0, false,
- false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- 0x1.000000fffff36596p+0, false,
- 0x1.000000fffff36598p+0, false,
- false,
- 0x1.000000fffff36597d40e1b5026p+0, false,
- 0x1.000000fffff36597d40e1b50268p+0, false,
- 0x1.000000fffff36597d40e1b5026p+0, false,
- 0x1.000000fffff36597d40e1b50268p+0, false,
- false,
- 0x1.000000fffff36597d40e1b502655p+0, false,
- 0x1.000000fffff36597d40e1b502656p+0, false,
- 0x1.000000fffff36597d40e1b502655p+0, false,
- 0x1.000000fffff36597d40e1b502656p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffff36p+0, false, false,
+ 0x1.000000fffff36p+0, false, false,
+ 0x1.000000fffff36p+0, false, false,
+ 0x1.000000fffff37p+0, false, false,
+ false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ 0x1.000000fffff36596p+0, false, false,
+ 0x1.000000fffff36598p+0, false, false,
+ false,
+ 0x1.000000fffff36597d40e1b5026p+0, false, false,
+ 0x1.000000fffff36597d40e1b50268p+0, false, false,
+ 0x1.000000fffff36597d40e1b5026p+0, false, false,
+ 0x1.000000fffff36597d40e1b50268p+0, false, false,
+ false,
+ 0x1.000000fffff36597d40e1b502655p+0, false, false,
+ 0x1.000000fffff36597d40e1b502656p+0, false, false,
+ 0x1.000000fffff36597d40e1b502655p+0, false, false,
+ 0x1.000000fffff36597d40e1b502656p+0, false, false),
TEST ("1.000000059605",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001000063fp+0, false,
- 0x1.000001000064p+0, false,
- 0x1.000001000063fp+0, false,
- 0x1.000001000064p+0, false,
- false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- 0x1.000001000063fcap+0, false,
- 0x1.000001000063fca2p+0, false,
- false,
- 0x1.000001000063fca17533f5572f8p+0, false,
- 0x1.000001000063fca17533f5573p+0, false,
- 0x1.000001000063fca17533f5572f8p+0, false,
- 0x1.000001000063fca17533f5573p+0, false,
- false,
- 0x1.000001000063fca17533f5572fe9p+0, false,
- 0x1.000001000063fca17533f5572feap+0, false,
- 0x1.000001000063fca17533f5572fe9p+0, false,
- 0x1.000001000063fca17533f5572feap+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001000063fp+0, false, false,
+ 0x1.000001000064p+0, false, false,
+ 0x1.000001000063fp+0, false, false,
+ 0x1.000001000064p+0, false, false,
+ false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ 0x1.000001000063fcap+0, false, false,
+ 0x1.000001000063fca2p+0, false, false,
+ false,
+ 0x1.000001000063fca17533f5572f8p+0, false, false,
+ 0x1.000001000063fca17533f5573p+0, false, false,
+ 0x1.000001000063fca17533f5572f8p+0, false, false,
+ 0x1.000001000063fca17533f5573p+0, false, false,
+ false,
+ 0x1.000001000063fca17533f5572fe9p+0, false, false,
+ 0x1.000001000063fca17533f5572feap+0, false, false,
+ 0x1.000001000063fca17533f5572fe9p+0, false, false,
+ 0x1.000001000063fca17533f5572feap+0, false, false),
TEST ("1.00000005960",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff388p+0, false,
- false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382ep+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff388p+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382ep+0, false, false),
TEST ("1.0000000596",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- 0x1.000000fffae49p+0, false,
- 0x1.000000fffae4ap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- 0x1.000000fffae49ca8p+0, false,
- 0x1.000000fffae49caap+0, false,
- false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff38p+0, false,
- 0x1.000000fffae49ca916dacfff388p+0, false,
- false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382dp+0, false,
- 0x1.000000fffae49ca916dacfff382ep+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ 0x1.000000fffae49p+0, false, false,
+ 0x1.000000fffae4ap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ 0x1.000000fffae49ca8p+0, false, false,
+ 0x1.000000fffae49caap+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
+ 0x1.000000fffae49ca916dacfff388p+0, false, false,
+ false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
+ 0x1.000000fffae49ca916dacfff382ep+0, false, false),
TEST ("1.000000060",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca38p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false),
TEST ("1.00000006",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- 0x1.00000101b2b29p+0, false,
- 0x1.00000101b2b2ap+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a46p+0, false,
- 0x1.00000101b2b29a48p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
- 0x1.00000101b2b29a4692b67b7ca38p+0, false,
- false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false,
- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
- 0x1.00000101b2b29a4692b67b7ca314p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ 0x1.00000101b2b29p+0, false, false,
+ 0x1.00000101b2b2ap+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a46p+0, false, false,
+ 0x1.00000101b2b29a48p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false,
+ false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false),
TEST ("1.0000001",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001ad7f29ap+0, false,
- 0x1.000001ad7f29bp+0, false,
- 0x1.000001ad7f29ap+0, false,
- 0x1.000001ad7f29bp+0, false,
- false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abccp+0, false,
- false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abcap+0, false,
- 0x1.000001ad7f29abccp+0, false,
- false,
- 0x1.000001ad7f29abcaf485787a65p+0, false,
- 0x1.000001ad7f29abcaf485787a65p+0, false,
- 0x1.000001ad7f29abcaf485787a65p+0, false,
- 0x1.000001ad7f29abcaf485787a658p+0, false,
- false,
- 0x1.000001ad7f29abcaf485787a652p+0, false,
- 0x1.000001ad7f29abcaf485787a6521p+0, false,
- 0x1.000001ad7f29abcaf485787a652p+0, false,
- 0x1.000001ad7f29abcaf485787a6521p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001ad7f29ap+0, false, false,
+ 0x1.000001ad7f29bp+0, false, false,
+ 0x1.000001ad7f29ap+0, false, false,
+ 0x1.000001ad7f29bp+0, false, false,
+ false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abccp+0, false, false,
+ false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abcap+0, false, false,
+ 0x1.000001ad7f29abccp+0, false, false,
+ false,
+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a658p+0, false, false,
+ false,
+ 0x1.000001ad7f29abcaf485787a652p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a652p+0, false, false,
+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false),
TEST ("1.000000",
true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- true,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ true,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false),
TEST ("1.00000000000000011113",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.0000000000000801fc96557232p+0, false,
- 0x1.0000000000000801fc96557232p+0, false,
- 0x1.0000000000000801fc96557232p+0, false,
- 0x1.0000000000000801fc965572328p+0, false,
- false,
- 0x1.0000000000000801fc9655723222p+0, false,
- 0x1.0000000000000801fc9655723222p+0, false,
- 0x1.0000000000000801fc9655723222p+0, false,
- 0x1.0000000000000801fc9655723223p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.0000000000000801fc96557232p+0, false, false,
+ 0x1.0000000000000801fc96557232p+0, false, false,
+ 0x1.0000000000000801fc96557232p+0, false, false,
+ 0x1.0000000000000801fc965572328p+0, false, false,
+ false,
+ 0x1.0000000000000801fc9655723222p+0, false, false,
+ 0x1.0000000000000801fc9655723222p+0, false, false,
+ 0x1.0000000000000801fc9655723222p+0, false, false,
+ 0x1.0000000000000801fc9655723223p+0, false, false),
TEST ("1.00000000000000011103",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008002459c076c48p+0, false,
- 0x1.00000000000008002459c076c5p+0, false,
- 0x1.00000000000008002459c076c48p+0, false,
- 0x1.00000000000008002459c076c5p+0, false,
- false,
- 0x1.00000000000008002459c076c4f7p+0, false,
- 0x1.00000000000008002459c076c4f8p+0, false,
- 0x1.00000000000008002459c076c4f7p+0, false,
- 0x1.00000000000008002459c076c4f8p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008002459c076c48p+0, false, false,
+ 0x1.00000000000008002459c076c5p+0, false, false,
+ 0x1.00000000000008002459c076c48p+0, false, false,
+ 0x1.00000000000008002459c076c5p+0, false, false,
+ false,
+ 0x1.00000000000008002459c076c4f7p+0, false, false,
+ 0x1.00000000000008002459c076c4f8p+0, false, false,
+ 0x1.00000000000008002459c076c4f7p+0, false, false,
+ 0x1.00000000000008002459c076c4f8p+0, false, false),
TEST ("1.00000000000000011102",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fff5207e5dap+0, false,
- 0x1.00000000000007fff5207e5da08p+0, false,
- 0x1.00000000000007fff5207e5dap+0, false,
- 0x1.00000000000007fff5207e5da08p+0, false,
- false,
- 0x1.00000000000007fff5207e5da073p+0, false,
- 0x1.00000000000007fff5207e5da073p+0, false,
- 0x1.00000000000007fff5207e5da073p+0, false,
- 0x1.00000000000007fff5207e5da074p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fff5207e5dap+0, false, false,
+ 0x1.00000000000007fff5207e5da08p+0, false, false,
+ 0x1.00000000000007fff5207e5dap+0, false, false,
+ 0x1.00000000000007fff5207e5da08p+0, false, false,
+ false,
+ 0x1.00000000000007fff5207e5da073p+0, false, false,
+ 0x1.00000000000007fff5207e5da073p+0, false, false,
+ 0x1.00000000000007fff5207e5da073p+0, false, false,
+ 0x1.00000000000007fff5207e5da074p+0, false, false),
TEST ("1.00000000000000011101",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007ffc5e73c447b8p+0, false,
- 0x1.00000000000007ffc5e73c447cp+0, false,
- 0x1.00000000000007ffc5e73c447b8p+0, false,
- 0x1.00000000000007ffc5e73c447cp+0, false,
- false,
- 0x1.00000000000007ffc5e73c447befp+0, false,
- 0x1.00000000000007ffc5e73c447befp+0, false,
- 0x1.00000000000007ffc5e73c447befp+0, false,
- 0x1.00000000000007ffc5e73c447bfp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007ffc5e73c447b8p+0, false, false,
+ 0x1.00000000000007ffc5e73c447cp+0, false, false,
+ 0x1.00000000000007ffc5e73c447b8p+0, false, false,
+ 0x1.00000000000007ffc5e73c447cp+0, false, false,
+ false,
+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
+ 0x1.00000000000007ffc5e73c447bfp+0, false, false),
TEST ("1.0000000000000001111",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.0000000000000802p+0, false,
- false,
- 0x1.00000000000008016eea8f26c48p+0, false,
- 0x1.00000000000008016eea8f26c48p+0, false,
- 0x1.00000000000008016eea8f26c48p+0, false,
- 0x1.00000000000008016eea8f26c5p+0, false,
- false,
- 0x1.00000000000008016eea8f26c495p+0, false,
- 0x1.00000000000008016eea8f26c496p+0, false,
- 0x1.00000000000008016eea8f26c495p+0, false,
- 0x1.00000000000008016eea8f26c496p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.0000000000000802p+0, false, false,
+ false,
+ 0x1.00000000000008016eea8f26c48p+0, false, false,
+ 0x1.00000000000008016eea8f26c48p+0, false, false,
+ 0x1.00000000000008016eea8f26c48p+0, false, false,
+ 0x1.00000000000008016eea8f26c5p+0, false, false,
+ false,
+ 0x1.00000000000008016eea8f26c495p+0, false, false,
+ 0x1.00000000000008016eea8f26c496p+0, false, false,
+ 0x1.00000000000008016eea8f26c495p+0, false, false,
+ 0x1.00000000000008016eea8f26c496p+0, false, false),
TEST ("1.000000000000000111",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000007fep+0, false,
- 0x1.00000000000008p+0, false,
- false,
- 0x1.00000000000007ff96adfa2b57p+0, false,
- 0x1.00000000000007ff96adfa2b578p+0, false,
- 0x1.00000000000007ff96adfa2b57p+0, false,
- 0x1.00000000000007ff96adfa2b578p+0, false,
- false,
- 0x1.00000000000007ff96adfa2b576ap+0, false,
- 0x1.00000000000007ff96adfa2b576bp+0, false,
- 0x1.00000000000007ff96adfa2b576ap+0, false,
- 0x1.00000000000007ff96adfa2b576bp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000007fep+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ false,
+ 0x1.00000000000007ff96adfa2b57p+0, false, false,
+ 0x1.00000000000007ff96adfa2b578p+0, false, false,
+ 0x1.00000000000007ff96adfa2b57p+0, false, false,
+ 0x1.00000000000007ff96adfa2b578p+0, false, false,
+ false,
+ 0x1.00000000000007ff96adfa2b576ap+0, false, false,
+ 0x1.00000000000007ff96adfa2b576bp+0, false, false,
+ 0x1.00000000000007ff96adfa2b576ap+0, false, false,
+ 0x1.00000000000007ff96adfa2b576bp+0, false, false),
TEST ("1.00000000000000011",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- 0x1.00000000000007ecp+0, false,
- 0x1.00000000000007eep+0, false,
- false,
- 0x1.00000000000007ed24502859138p+0, false,
- 0x1.00000000000007ed24502859138p+0, false,
- 0x1.00000000000007ed24502859138p+0, false,
- 0x1.00000000000007ed2450285914p+0, false,
- false,
- 0x1.00000000000007ed2450285913bfp+0, false,
- 0x1.00000000000007ed2450285913bfp+0, false,
- 0x1.00000000000007ed2450285913bfp+0, false,
- 0x1.00000000000007ed2450285913cp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ 0x1.00000000000007ecp+0, false, false,
+ 0x1.00000000000007eep+0, false, false,
+ false,
+ 0x1.00000000000007ed24502859138p+0, false, false,
+ 0x1.00000000000007ed24502859138p+0, false, false,
+ 0x1.00000000000007ed24502859138p+0, false, false,
+ 0x1.00000000000007ed2450285914p+0, false, false,
+ false,
+ 0x1.00000000000007ed2450285913bfp+0, false, false,
+ 0x1.00000000000007ed2450285913bfp+0, false, false,
+ 0x1.00000000000007ed2450285913bfp+0, false, false,
+ 0x1.00000000000007ed2450285913cp+0, false, false),
TEST ("1.0000000000000001",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000736p+0, false,
- false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000734p+0, false,
- 0x1.0000000000000736p+0, false,
- false,
- 0x1.0000000000000734aca5f6226fp+0, false,
- 0x1.0000000000000734aca5f6226fp+0, false,
- 0x1.0000000000000734aca5f6226fp+0, false,
- 0x1.0000000000000734aca5f6226f8p+0, false,
- false,
- 0x1.0000000000000734aca5f6226f0ap+0, false,
- 0x1.0000000000000734aca5f6226f0bp+0, false,
- 0x1.0000000000000734aca5f6226f0ap+0, false,
- 0x1.0000000000000734aca5f6226f0bp+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000736p+0, false, false,
+ false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000734p+0, false, false,
+ 0x1.0000000000000736p+0, false, false,
+ false,
+ 0x1.0000000000000734aca5f6226fp+0, false, false,
+ 0x1.0000000000000734aca5f6226fp+0, false, false,
+ 0x1.0000000000000734aca5f6226fp+0, false, false,
+ 0x1.0000000000000734aca5f6226f8p+0, false, false,
+ false,
+ 0x1.0000000000000734aca5f6226f0ap+0, false, false,
+ 0x1.0000000000000734aca5f6226f0bp+0, false, false,
+ 0x1.0000000000000734aca5f6226f0ap+0, false, false,
+ 0x1.0000000000000734aca5f6226f0bp+0, false, false),
TEST ("3929201589819414e-25",
false,
- 0x1.b0053p-32, false,
- 0x1.b00532p-32, false,
- 0x1.b0053p-32, false,
- 0x1.b00532p-32, false,
- false,
- 0x1.b005314e2421ep-32, false,
- 0x1.b005314e2421ep-32, false,
- 0x1.b005314e2421ep-32, false,
- 0x1.b005314e2421fp-32, false,
- false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- 0x1.b005314e2421e7fep-32, false,
- 0x1.b005314e2421e8p-32, false,
- false,
- 0x1.b005314e2421e7ffb472840c5ap-32, false,
- 0x1.b005314e2421e7ffb472840c5a8p-32, false,
- 0x1.b005314e2421e7ffb472840c5ap-32, false,
- 0x1.b005314e2421e7ffb472840c5a8p-32, false,
- false,
- 0x1.b005314e2421e7ffb472840c5a6ep-32, false,
- 0x1.b005314e2421e7ffb472840c5a6fp-32, false,
- 0x1.b005314e2421e7ffb472840c5a6ep-32, false,
- 0x1.b005314e2421e7ffb472840c5a6fp-32, false),
+ 0x1.b0053p-32, false, false,
+ 0x1.b00532p-32, false, false,
+ 0x1.b0053p-32, false, false,
+ 0x1.b00532p-32, false, false,
+ false,
+ 0x1.b005314e2421ep-32, false, false,
+ 0x1.b005314e2421ep-32, false, false,
+ 0x1.b005314e2421ep-32, false, false,
+ 0x1.b005314e2421fp-32, false, false,
+ false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ 0x1.b005314e2421e7fep-32, false, false,
+ 0x1.b005314e2421e8p-32, false, false,
+ false,
+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false,
+ false,
+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false,
+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false),
TEST ("0.0000000000000000000000000000000000000000000021019476964872"
"256063855943749348741969203929128147736576356024258346866240"
"28790902229957282543182373046875",
false,
- 0x8p-152, false,
- 0x1p-148, false,
- 0x8p-152, false,
- 0x1p-148, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false),
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false),
TEST ("1.00000005960464477539062499",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffp+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- 0x1.000000fffffffffep+0, false,
- 0x1.000001p+0, false,
- false,
- 0x1.000000fffffffffffffffce7b78p+0, false,
- 0x1.000000fffffffffffffffce7b8p+0, false,
- 0x1.000000fffffffffffffffce7b78p+0, false,
- 0x1.000000fffffffffffffffce7b8p+0, false,
- false,
- 0x1.000000fffffffffffffffce7b7e7p+0, false,
- 0x1.000000fffffffffffffffce7b7e7p+0, false,
- 0x1.000000fffffffffffffffce7b7e7p+0, false,
- 0x1.000000fffffffffffffffce7b7e8p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffp+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000000fffffffffep+0, false, false,
+ 0x1.000001p+0, false, false,
+ false,
+ 0x1.000000fffffffffffffffce7b78p+0, false, false,
+ 0x1.000000fffffffffffffffce7b8p+0, false, false,
+ 0x1.000000fffffffffffffffce7b78p+0, false, false,
+ 0x1.000000fffffffffffffffce7b8p+0, false, false,
+ false,
+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000000fffffffffffffffce7b7e8p+0, false, false),
TEST ("1.000000059604644775390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- true,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ true,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false),
TEST ("1.00000005960464477539062501",
false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000001p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000000002p+0, false,
- false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.000001p+0, false,
- 0x1.0000010000000002p+0, false,
- false,
- 0x1.00000100000000000000031848p+0, false,
- 0x1.00000100000000000000031848p+0, false,
- 0x1.00000100000000000000031848p+0, false,
- 0x1.000001000000000000000318488p+0, false,
- false,
- 0x1.0000010000000000000003184818p+0, false,
- 0x1.0000010000000000000003184819p+0, false,
- 0x1.0000010000000000000003184818p+0, false,
- 0x1.0000010000000000000003184819p+0, false),
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000001p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.000001p+0, false, false,
+ 0x1.0000010000000002p+0, false, false,
+ false,
+ 0x1.00000100000000000000031848p+0, false, false,
+ 0x1.00000100000000000000031848p+0, false, false,
+ 0x1.00000100000000000000031848p+0, false, false,
+ 0x1.000001000000000000000318488p+0, false, false,
+ false,
+ 0x1.0000010000000000000003184818p+0, false, false,
+ 0x1.0000010000000000000003184819p+0, false, false,
+ 0x1.0000010000000000000003184818p+0, false, false,
+ 0x1.0000010000000000000003184819p+0, false, false),
TEST ("1.00000011920928955078125",
true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false),
TEST ("1.00000017881393432617187499",
false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- false,
- 0x1.000002fffffffp+0, false,
- 0x1.000003p+0, false,
- 0x1.000002fffffffp+0, false,
- 0x1.000003p+0, false,
- false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- 0x1.000002fffffffffep+0, false,
- 0x1.000003p+0, false,
- false,
- 0x1.000002fffffffffffffffce7b78p+0, false,
- 0x1.000002fffffffffffffffce7b8p+0, false,
- 0x1.000002fffffffffffffffce7b78p+0, false,
- 0x1.000002fffffffffffffffce7b8p+0, false,
- false,
- 0x1.000002fffffffffffffffce7b7e7p+0, false,
- 0x1.000002fffffffffffffffce7b7e7p+0, false,
- 0x1.000002fffffffffffffffce7b7e7p+0, false,
- 0x1.000002fffffffffffffffce7b7e8p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ false,
+ 0x1.000002fffffffp+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000002fffffffp+0, false, false,
+ 0x1.000003p+0, false, false,
+ false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000002fffffffffep+0, false, false,
+ 0x1.000003p+0, false, false,
+ false,
+ 0x1.000002fffffffffffffffce7b78p+0, false, false,
+ 0x1.000002fffffffffffffffce7b8p+0, false, false,
+ 0x1.000002fffffffffffffffce7b78p+0, false, false,
+ 0x1.000002fffffffffffffffce7b8p+0, false, false,
+ false,
+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
+ 0x1.000002fffffffffffffffce7b7e8p+0, false, false),
TEST ("1.000000178813934326171875",
false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- true,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ true,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false),
TEST ("1.00000017881393432617187501",
false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- 0x1.000002p+0, false,
- 0x1.000004p+0, false,
- false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.0000030000001p+0, false,
- false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.0000030000000002p+0, false,
- false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.000003p+0, false,
- 0x1.0000030000000002p+0, false,
- false,
- 0x1.00000300000000000000031848p+0, false,
- 0x1.00000300000000000000031848p+0, false,
- 0x1.00000300000000000000031848p+0, false,
- 0x1.000003000000000000000318488p+0, false,
- false,
- 0x1.0000030000000000000003184818p+0, false,
- 0x1.0000030000000000000003184819p+0, false,
- 0x1.0000030000000000000003184818p+0, false,
- 0x1.0000030000000000000003184819p+0, false),
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000002p+0, false, false,
+ 0x1.000004p+0, false, false,
+ false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.0000030000001p+0, false, false,
+ false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.0000030000000002p+0, false, false,
+ false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.000003p+0, false, false,
+ 0x1.0000030000000002p+0, false, false,
+ false,
+ 0x1.00000300000000000000031848p+0, false, false,
+ 0x1.00000300000000000000031848p+0, false, false,
+ 0x1.00000300000000000000031848p+0, false, false,
+ 0x1.000003000000000000000318488p+0, false, false,
+ false,
+ 0x1.0000030000000000000003184818p+0, false, false,
+ 0x1.0000030000000000000003184819p+0, false, false,
+ 0x1.0000030000000000000003184818p+0, false, false,
+ 0x1.0000030000000000000003184819p+0, false, false),
TEST ("1.0000002384185791015625",
true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- true,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false,
- 0x1.000004p+0, false),
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ true,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false,
+ 0x1.000004p+0, false, false),
TEST ("1.08420217248550443400745280086994171142578125e-19",
true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- true,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false),
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ true,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false),
TEST ("1.0842022371089897897127399001987457793916291848290711641311"
"645507812499e-19",
false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- false,
- 0x2.000001ffffffep-64, false,
- 0x2.000002p-64, false,
- 0x2.000001ffffffep-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- 0x2.000001fffffffffcp-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001ffffffffffffffffffffp-64, false,
- 0x2.000002p-64, false,
- 0x2.000001ffffffffffffffffffffp-64, false,
- 0x2.000002p-64, false,
- false,
- 0x2.000001fffffffffffffffffffffep-64, false,
- 0x2.000002p-64, false,
- 0x2.000001fffffffffffffffffffffep-64, false,
- 0x2.000002p-64, false),
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ false,
+ 0x2.000001ffffffep-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001ffffffep-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001fffffffffcp-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001ffffffffffffffffffffp-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001ffffffffffffffffffffp-64, false, false,
+ 0x2.000002p-64, false, false,
+ false,
+ 0x2.000001fffffffffffffffffffffep-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000001fffffffffffffffffffffep-64, false, false,
+ 0x2.000002p-64, false, false),
TEST ("1.0842022371089897897127399001987457793916291848290711641311"
"6455078125e-19",
false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- true,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false),
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ true,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false),
TEST ("1.0842022371089897897127399001987457793916291848290711641311"
"645507812501e-19",
false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- 0x2p-64, false,
- 0x2.000004p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000002p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000000004p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000000004p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.00000200000000000000000001p-64, false,
- false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.000002p-64, false,
- 0x2.0000020000000000000000000002p-64, false),
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2p-64, false, false,
+ 0x2.000004p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000002p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000000004p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000000004p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.00000200000000000000000001p-64, false, false,
+ false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.000002p-64, false, false,
+ 0x2.0000020000000000000000000002p-64, false, false),
TEST ("1.0842023017324751454180269995275498473574771196581423282623"
"291015625e-19",
true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- true,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ true,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false),
TEST ("1.0842023663559605011233140988563539153233250544872134923934"
"936523437499e-19",
false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- false,
- 0x2.000005ffffffep-64, false,
- 0x2.000006p-64, false,
- 0x2.000005ffffffep-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- 0x2.000005fffffffffcp-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005ffffffffffffffffffffp-64, false,
- 0x2.000006p-64, false,
- 0x2.000005ffffffffffffffffffffp-64, false,
- 0x2.000006p-64, false,
- false,
- 0x2.000005fffffffffffffffffffffep-64, false,
- 0x2.000006p-64, false,
- 0x2.000005fffffffffffffffffffffep-64, false,
- 0x2.000006p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ false,
+ 0x2.000005ffffffep-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005ffffffep-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005fffffffffcp-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005ffffffffffffffffffffp-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005ffffffffffffffffffffp-64, false, false,
+ 0x2.000006p-64, false, false,
+ false,
+ 0x2.000005fffffffffffffffffffffep-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000005fffffffffffffffffffffep-64, false, false,
+ 0x2.000006p-64, false, false),
TEST ("1.0842023663559605011233140988563539153233250544872134923934"
"9365234375e-19",
false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- true,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ true,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false),
TEST ("1.0842023663559605011233140988563539153233250544872134923934"
"936523437501e-19",
false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- 0x2.000004p-64, false,
- 0x2.000008p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000002p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000000004p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000000004p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.00000600000000000000000001p-64, false,
- false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.000006p-64, false,
- 0x2.0000060000000000000000000002p-64, false),
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000004p-64, false, false,
+ 0x2.000008p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000002p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000000004p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000000004p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.00000600000000000000000001p-64, false, false,
+ false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.000006p-64, false, false,
+ 0x2.0000060000000000000000000002p-64, false, false),
TEST ("1.0842024309794458568286011981851579832891729893162846565246"
"58203125e-19",
true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- true,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false,
- 0x2.000008p-64, false),
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ true,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false,
+ 0x2.000008p-64, false, false),
TEST ("7.5231638452626400509999138382223723380394595633413601376560"
"1092018187046051025390625e-37",
true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- true,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false),
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ true,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false),
TEST ("7.5231642936781486349413765338158389908126215730251815381410"
"578824437213052434003657253924757242202758789062499e-37",
false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- false,
- 0x1.000000fffffffp-120, false,
- 0x1.000001p-120, false,
- 0x1.000000fffffffp-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- 0x1.000000fffffffffep-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000ffffffffffffffffffff8p-120, false,
- 0x1.000001p-120, false,
- 0x1.000000ffffffffffffffffffff8p-120, false,
- 0x1.000001p-120, false,
- false,
- 0x1.000000ffffffffffffffffffffffp-120, false,
- 0x1.000001p-120, false,
- 0x1.000000ffffffffffffffffffffffp-120, false,
- 0x1.000001p-120, false),
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ false,
+ 0x1.000000fffffffp-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000fffffffp-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000fffffffffep-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000ffffffffffffffffffff8p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000ffffffffffffffffffff8p-120, false, false,
+ 0x1.000001p-120, false, false,
+ false,
+ 0x1.000000ffffffffffffffffffffffp-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000000ffffffffffffffffffffffp-120, false, false,
+ 0x1.000001p-120, false, false),
TEST ("7.5231642936781486349413765338158389908126215730251815381410"
"5788244372130524340036572539247572422027587890625e-37",
false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- true,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false),
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ true,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false),
TEST ("7.5231642936781486349413765338158389908126215730251815381410"
"578824437213052434003657253924757242202758789062501e-37",
false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- 0x1p-120, false,
- 0x1.000002p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000001p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000000002p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000000002p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001000000000000000000008p-120, false,
- false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.000001p-120, false,
- 0x1.0000010000000000000000000001p-120, false),
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1p-120, false, false,
+ 0x1.000002p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000001p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000000002p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000000002p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001000000000000000000008p-120, false, false,
+ false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.000001p-120, false, false,
+ 0x1.0000010000000000000000000001p-120, false, false),
TEST ("7.5231647420936572188828392294093056435857835827090029386261"
"048447055721499765468252007849514484405517578125e-37",
true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- true,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ true,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false),
TEST ("7.5231651905091658028243019250027722963589455923928243391111"
"518069674229947096932846761774271726608276367187499e-37",
false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- false,
- 0x1.000002fffffffp-120, false,
- 0x1.000003p-120, false,
- 0x1.000002fffffffp-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- 0x1.000002fffffffffep-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002ffffffffffffffffffff8p-120, false,
- 0x1.000003p-120, false,
- 0x1.000002ffffffffffffffffffff8p-120, false,
- 0x1.000003p-120, false,
- false,
- 0x1.000002ffffffffffffffffffffffp-120, false,
- 0x1.000003p-120, false,
- 0x1.000002ffffffffffffffffffffffp-120, false,
- 0x1.000003p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ false,
+ 0x1.000002fffffffp-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002fffffffp-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002fffffffffep-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002ffffffffffffffffffff8p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002ffffffffffffffffffff8p-120, false, false,
+ 0x1.000003p-120, false, false,
+ false,
+ 0x1.000002ffffffffffffffffffffffp-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000002ffffffffffffffffffffffp-120, false, false,
+ 0x1.000003p-120, false, false),
TEST ("7.5231651905091658028243019250027722963589455923928243391111"
"5180696742299470969328467617742717266082763671875e-37",
false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- true,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ true,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false),
TEST ("7.5231651905091658028243019250027722963589455923928243391111"
"518069674229947096932846761774271726608276367187501e-37",
false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- 0x1.000002p-120, false,
- 0x1.000004p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000001p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000000002p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000000002p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003000000000000000000008p-120, false,
- false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.000003p-120, false,
- 0x1.0000030000000000000000000001p-120, false),
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000002p-120, false, false,
+ 0x1.000004p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000001p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000000002p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000000002p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003000000000000000000008p-120, false, false,
+ false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.000003p-120, false, false,
+ 0x1.0000030000000000000000000001p-120, false, false),
TEST ("7.5231656389246743867657646205962389491321076020766457395961"
"98769229273839442839744151569902896881103515625e-37",
true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- true,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false,
- 0x1.000004p-120, false),
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ true,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false,
+ 0x1.000004p-120, false, false),
TEST ("340282356779733661637539395458142568447.999",
false,
- 0xf.fffffp+124, false,
- 0xf.fffffp+124, false,
- 0xf.fffffp+124, false,
- INF, true,
- false,
- 0xf.fffff7ffffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7ffffff8p+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffp+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffffffffffffcp+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffffffffffffcp+124, false,
- 0xf.fffff8p+124, false,
- false,
- 0xf.fffff7fffffffffffffffffffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff7fffffffffffffffffffff8p+124, false,
- 0xf.fffff8p+124, false),
+ 0xf.fffffp+124, false, false,
+ 0xf.fffffp+124, false, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffff7ffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7ffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ false,
+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false),
TEST ("340282356779733661637539395458142568448",
false,
- 0xf.fffffp+124, false,
- INF, true,
- 0xf.fffffp+124, false,
- INF, true,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- true,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false),
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ true,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false),
TEST ("340282356779733661637539395458142568448.001",
false,
- 0xf.fffffp+124, false,
- INF, true,
- 0xf.fffffp+124, false,
- INF, true,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff80000008p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8000000001p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8000000001p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff800000000000000000004p+124, false,
- false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff8p+124, false,
- 0xf.fffff80000000000000000000008p+124, false),
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff80000008p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8000000001p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8000000001p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff800000000000000000004p+124, false, false,
+ false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff8p+124, false, false,
+ 0xf.fffff80000000000000000000008p+124, false, false),
TEST ("-340282356779733661637539395458142568447.999",
false,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7ffffff8p+124, false,
- -0xf.fffff7ffffff8p+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffp+124, false,
- -0xf.fffff7fffffffffp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffp+124, false,
- -0xf.fffff7fffffffffp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffffffffffffcp+124, false,
- -0xf.fffff7fffffffffffffffffffcp+124, false,
- false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff7fffffffffffffffffffff8p+124, false,
- -0xf.fffff7fffffffffffffffffffff8p+124, false),
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7ffffff8p+124, false, false,
+ -0xf.fffff7ffffff8p+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ -0xf.fffff7fffffffffp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ -0xf.fffff7fffffffffffffffffffcp+124, false, false,
+ false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false,
+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false),
TEST ("-340282356779733661637539395458142568448",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- true,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ true,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false),
TEST ("-340282356779733661637539395458142568448.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- false,
- -0xf.fffff80000008p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff8000000001p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff8000000001p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff800000000000000000004p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- false,
- -0xf.fffff80000000000000000000008p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false,
- -0xf.fffff8p+124, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ false,
+ -0xf.fffff80000008p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff8000000001p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff8000000001p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff800000000000000000004p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ false,
+ -0xf.fffff80000000000000000000008p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false,
+ -0xf.fffff8p+124, false, false),
TEST ("179769313486231580793728971405303415079934132710037826936173"
"778980444968292764750946649017977587207096330286416692887910"
"946555547851940402630657488671505820681908902000708383676273"
@@ -1855,35 +1855,35 @@ static const struct test tests[] = {
"936475292719074168444365510704342711559699508093042880177904"
"174497791.999",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- 0xf.ffffffffffff8p+1020, false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffbffp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- false,
- 0xf.ffffffffffffbffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffbffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, true,
- false,
- 0xf.ffffffffffffbffffffffffffff8p+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffbffffffffffffff8p+1020, false,
- 0xf.ffffffffffffcp+1020, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffbffp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ false,
+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ false,
+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false),
TEST ("179769313486231580793728971405303415079934132710037826936173"
"778980444968292764750946649017977587207096330286416692887910"
"946555547851940402630657488671505820681908902000708383676273"
@@ -1891,35 +1891,35 @@ static const struct test tests[] = {
"936475292719074168444365510704342711559699508093042880177904"
"174497792",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- true,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- true,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- false,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- true,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ true,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ true,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ true,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false),
TEST ("179769313486231580793728971405303415079934132710037826936173"
"778980444968292764750946649017977587207096330286416692887910"
"946555547851940402630657488671505820681908902000708383676273"
@@ -1927,35 +1927,35 @@ static const struct test tests[] = {
"936475292719074168444365510704342711559699508093042880177904"
"174497792.001",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffc01p+1020, false,
- false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffc01p+1020, false,
- false,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffcp+1020, true,
- 0xf.ffffffffffffc0000000000004p+1020, true,
- false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffcp+1020, false,
- 0xf.ffffffffffffc000000000000008p+1020, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffc01p+1020, false, false,
+ false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffc01p+1020, false, false,
+ false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffcp+1020, true, false,
+ 0xf.ffffffffffffc0000000000004p+1020, true, false,
+ false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffcp+1020, false, false,
+ 0xf.ffffffffffffc000000000000008p+1020, false, false),
TEST ("-17976931348623158079372897140530341507993413271003782693617"
"377898044496829276475094664901797758720709633028641669288791"
"094655554785194040263065748867150582068190890200070838367627"
@@ -1963,35 +1963,35 @@ static const struct test tests[] = {
"493647529271907416844436551070434271155969950809304288017790"
"4174497791.999",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- -0xf.ffffffffffffbffp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffbffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffbffffffffffffff8p+1020, false,
- -0xf.ffffffffffffbffffffffffffff8p+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ -0xf.ffffffffffffbffp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false),
TEST ("-17976931348623158079372897140530341507993413271003782693617"
"377898044496829276475094664901797758720709633028641669288791"
"094655554785194040263065748867150582068190890200070838367627"
@@ -1999,35 +1999,35 @@ static const struct test tests[] = {
"493647529271907416844436551070434271155969950809304288017790"
"4174497792",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- true,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- true,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- true,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ true,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ true,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ true,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false),
TEST ("-17976931348623158079372897140530341507993413271003782693617"
"377898044496829276475094664901797758720709633028641669288791"
"094655554785194040263065748867150582068190890200070838367627"
@@ -2035,35 +2035,35 @@ static const struct test tests[] = {
"493647529271907416844436551070434271155969950809304288017790"
"4174497792.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- false,
- -0xf.ffffffffffffc01p+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffc01p+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- false,
- -0xf.ffffffffffffc0000000000004p+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- -0xf.ffffffffffffcp+1020, true,
- false,
- -0xf.ffffffffffffc000000000000008p+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false,
- -0xf.ffffffffffffcp+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ false,
+ -0xf.ffffffffffffc01p+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffc01p+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ false,
+ -0xf.ffffffffffffc0000000000004p+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ -0xf.ffffffffffffcp+1020, true, false,
+ false,
+ -0xf.ffffffffffffc000000000000008p+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false,
+ -0xf.ffffffffffffcp+1020, false, false),
TEST ("118973149535723176505351158982948866796625400469556721895649"
"927756249918185172720476044944290457046138433056764616744328"
"666255526748948793023632513609765434237723241753648908036202"
@@ -2148,35 +2148,35 @@ static const struct test tests[] = {
"578031503869424406179027994752890226443351619365453243328968"
"8740976918527.999",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffff7fffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff7fffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false),
TEST ("118973149535723176505351158982948866796625400469556721895649"
"927756249918185172720476044944290457046138433056764616744328"
"666255526748948793023632513609765434237723241753648908036202"
@@ -2261,35 +2261,35 @@ static const struct test tests[] = {
"578031503869424406179027994752890226443351619365453243328968"
"8740976918528",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- true,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ true,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false),
TEST ("118973149535723176505351158982948866796625400469556721895649"
"927756249918185172720476044944290457046138433056764616744328"
"666255526748948793023632513609765434237723241753648908036202"
@@ -2374,35 +2374,35 @@ static const struct test tests[] = {
"578031503869424406179027994752890226443351619365453243328968"
"8740976918528.001",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8p+16380, false,
- 0xf.fffffffffffffff8000000000008p+16380, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffff8000000000008p+16380, false, false),
TEST ("-11897314953572317650535115898294886679662540046955672189564"
"992775624991818517272047604494429045704613843305676461674432"
"866625552674894879302363251360976543423772324175364890803620"
@@ -2487,35 +2487,35 @@ static const struct test tests[] = {
"557803150386942440617902799475289022644335161936545324332896"
"88740976918527.999",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff7fffffffffff8p+16380, false,
- -0xf.fffffffffffffff7fffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false),
TEST ("-11897314953572317650535115898294886679662540046955672189564"
"992775624991818517272047604494429045704613843305676461674432"
"866625552674894879302363251360976543423772324175364890803620"
@@ -2600,35 +2600,35 @@ static const struct test tests[] = {
"557803150386942440617902799475289022644335161936545324332896"
"88740976918528",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- true,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ true,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false),
TEST ("-11897314953572317650535115898294886679662540046955672189564"
"992775624991818517272047604494429045704613843305676461674432"
"866625552674894879302363251360976543423772324175364890803620"
@@ -2713,35 +2713,35 @@ static const struct test tests[] = {
"557803150386942440617902799475289022644335161936545324332896"
"88740976918528.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -0xf.fffffffffffffff8000000000008p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false,
- -0xf.fffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -0xf.fffffffffffffff8000000000008p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffff8p+16380, false, false),
TEST ("118973149535723176508575932662800707347995686986910214150118"
"685272271246896789803961473130416053705672050873552479421805"
"932646640744124594447361172514341324846716679654551308018400"
@@ -2826,35 +2826,35 @@ static const struct test tests[] = {
"972233447491583165728635513802591543441145939539353470970452"
"5536550715391.999",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("118973149535723176508575932662800707347995686986910214150118"
"685272271246896789803961473130416053705672050873552479421805"
"932646640744124594447361172514341324846716679654551308018400"
@@ -2939,35 +2939,35 @@ static const struct test tests[] = {
"972233447491583165728635513802591543441145939539353470970452"
"5536550715392",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("118973149535723176508575932662800707347995686986910214150118"
"685272271246896789803961473130416053705672050873552479421805"
"932646640744124594447361172514341324846716679654551308018400"
@@ -3052,35 +3052,35 @@ static const struct test tests[] = {
"972233447491583165728635513802591543441145939539353470970452"
"5536550715392.001",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("-11897314953572317650857593266280070734799568698691021415011"
"868527227124689678980396147313041605370567205087355247942180"
"593264664074412459444736117251434132484671667965455130801840"
@@ -3165,35 +3165,35 @@ static const struct test tests[] = {
"097223344749158316572863551380259154344114593953935347097045"
"25536550715391.999",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("-11897314953572317650857593266280070734799568698691021415011"
"868527227124689678980396147313041605370567205087355247942180"
"593264664074412459444736117251434132484671667965455130801840"
@@ -3278,35 +3278,35 @@ static const struct test tests[] = {
"097223344749158316572863551380259154344114593953935347097045"
"25536550715392",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("-11897314953572317650857593266280070734799568698691021415011"
"868527227124689678980396147313041605370567205087355247942180"
"593264664074412459444736117251434132484671667965455130801840"
@@ -3391,419 +3391,419 @@ static const struct test tests[] = {
"097223344749158316572863551380259154344114593953935347097045"
"25536550715392.001",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("2.1019476964872256063855943749348741969203929128147736576356"
"0242583468662402879090222995728254318237304687499e-45",
false,
- 0x8p-152, false,
- 0x8p-152, false,
- 0x8p-152, false,
- 0x1p-148, false,
- false,
- 0xb.ffffffffffff8p-152, false,
- 0xcp-152, false,
- 0xb.ffffffffffff8p-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffp-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffffffffffffcp-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffffffffffffcp-152, false,
- 0xcp-152, false,
- false,
- 0xb.fffffffffffffffffffffffffff8p-152, false,
- 0xcp-152, false,
- 0xb.fffffffffffffffffffffffffff8p-152, false,
- 0xcp-152, false),
+ 0x8p-152, false, true,
+ 0x8p-152, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ false,
+ 0xb.ffffffffffff8p-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.ffffffffffff8p-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffp-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffffffffffffcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffffffffffffcp-152, false, false,
+ 0xcp-152, false, false,
+ false,
+ 0xb.fffffffffffffffffffffffffff8p-152, false, false,
+ 0xcp-152, false, false,
+ 0xb.fffffffffffffffffffffffffff8p-152, false, false,
+ 0xcp-152, false, false),
TEST ("2.1019476964872256063855943749348741969203929128147736576356"
"02425834686624028790902229957282543182373046875e-45",
false,
- 0x8p-152, false,
- 0x1p-148, false,
- 0x8p-152, false,
- 0x1p-148, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- true,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false),
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ true,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false),
TEST ("2.1019476964872256063855943749348741969203929128147736576356"
"0242583468662402879090222995728254318237304687501e-45",
false,
- 0x8p-152, false,
- 0x1p-148, false,
- 0x8p-152, false,
- 0x1p-148, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.0000000000008p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.000000000000001p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.000000000000001p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.00000000000000000000000004p-152, false,
- false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xcp-152, false,
- 0xc.0000000000000000000000000008p-152, false),
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ 0x8p-152, false, true,
+ 0x1p-148, false, true,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.0000000000008p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.000000000000001p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.000000000000001p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.00000000000000000000000004p-152, false, false,
+ false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xcp-152, false, false,
+ 0xc.0000000000000000000000000008p-152, false, false),
TEST ("-2.101947696487225606385594374934874196920392912814773657635"
"60242583468662402879090222995728254318237304687499e-45",
false,
- -0x1p-148, false,
- -0x8p-152, false,
- -0x8p-152, false,
- -0x8p-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.ffffffffffff8p-152, false,
- -0xb.ffffffffffff8p-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffp-152, false,
- -0xb.fffffffffffffffp-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffp-152, false,
- -0xb.fffffffffffffffp-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffffffffffffcp-152, false,
- -0xb.fffffffffffffffffffffffffcp-152, false,
- false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xb.fffffffffffffffffffffffffff8p-152, false,
- -0xb.fffffffffffffffffffffffffff8p-152, false),
+ -0x1p-148, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.ffffffffffff8p-152, false, false,
+ -0xb.ffffffffffff8p-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ -0xb.fffffffffffffffp-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffffffffffffcp-152, false, false,
+ -0xb.fffffffffffffffffffffffffcp-152, false, false,
+ false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xb.fffffffffffffffffffffffffff8p-152, false, false,
+ -0xb.fffffffffffffffffffffffffff8p-152, false, false),
TEST ("-2.101947696487225606385594374934874196920392912814773657635"
"602425834686624028790902229957282543182373046875e-45",
false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x8p-152, false,
- -0x8p-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- true,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false),
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ true,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false),
TEST ("-2.101947696487225606385594374934874196920392912814773657635"
"60242583468662402879090222995728254318237304687501e-45",
false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x8p-152, false,
- -0x8p-152, false,
- false,
- -0xc.0000000000008p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.000000000000001p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.000000000000001p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.00000000000000000000000004p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- false,
- -0xc.0000000000000000000000000008p-152, false,
- -0xcp-152, false,
- -0xcp-152, false,
- -0xcp-152, false),
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ false,
+ -0xc.0000000000008p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.000000000000001p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.000000000000001p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.00000000000000000000000004p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ false,
+ -0xc.0000000000000000000000000008p-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false,
+ -0xcp-152, false, false),
TEST ("3.5032461608120426773093239582247903282006548546912894293926"
"7070972447770671465150371659547090530395507812499e-45",
false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- false,
- 0x1.3ffffffffffffp-148, false,
- 0x1.4p-148, false,
- 0x1.3ffffffffffffp-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- 0x1.3ffffffffffffffep-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3fffffffffffffffffffffffff8p-148, false,
- 0x1.4p-148, false,
- 0x1.3fffffffffffffffffffffffff8p-148, false,
- 0x1.4p-148, false,
- false,
- 0x1.3fffffffffffffffffffffffffffp-148, false,
- 0x1.4p-148, false,
- 0x1.3fffffffffffffffffffffffffffp-148, false,
- 0x1.4p-148, false),
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ false,
+ 0x1.3ffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3ffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3ffffffffffffffep-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ 0x1.4p-148, false, false,
+ false,
+ 0x1.3fffffffffffffffffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.3fffffffffffffffffffffffffffp-148, false, false,
+ 0x1.4p-148, false, false),
TEST ("3.5032461608120426773093239582247903282006548546912894293926"
"70709724477706714651503716595470905303955078125e-45",
false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- true,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false),
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ true,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false),
TEST ("3.5032461608120426773093239582247903282006548546912894293926"
"7070972447770671465150371659547090530395507812501e-45",
false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- 0x1p-148, false,
- 0x1.8p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000001p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000000002p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000000002p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.400000000000000000000000008p-148, false,
- false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4p-148, false,
- 0x1.4000000000000000000000000001p-148, false),
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ 0x1p-148, false, true,
+ 0x1.8p-148, false, true,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000001p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000000002p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000000002p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.400000000000000000000000008p-148, false, false,
+ false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4p-148, false, false,
+ 0x1.4000000000000000000000000001p-148, false, false),
TEST ("-3.503246160812042677309323958224790328200654854691289429392"
"67070972447770671465150371659547090530395507812499e-45",
false,
- -0x1.8p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3ffffffffffffp-148, false,
- -0x1.3ffffffffffffp-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3ffffffffffffffep-148, false,
- -0x1.3ffffffffffffffep-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3ffffffffffffffep-148, false,
- -0x1.3ffffffffffffffep-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3fffffffffffffffffffffffff8p-148, false,
- -0x1.3fffffffffffffffffffffffff8p-148, false,
- false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.3fffffffffffffffffffffffffffp-148, false,
- -0x1.3fffffffffffffffffffffffffffp-148, false),
+ -0x1.8p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3ffffffffffffp-148, false, false,
+ -0x1.3ffffffffffffp-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ -0x1.3ffffffffffffffep-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ -0x1.3fffffffffffffffffffffffff8p-148, false, false,
+ false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.3fffffffffffffffffffffffffffp-148, false, false,
+ -0x1.3fffffffffffffffffffffffffffp-148, false, false),
TEST ("-3.503246160812042677309323958224790328200654854691289429392"
"670709724477706714651503716595470905303955078125e-45",
false,
- -0x1.8p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- true,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false),
+ -0x1.8p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ true,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false),
TEST ("-3.503246160812042677309323958224790328200654854691289429392"
"67070972447770671465150371659547090530395507812501e-45",
false,
- -0x1.8p-148, false,
- -0x1.8p-148, false,
- -0x1p-148, false,
- -0x1p-148, false,
- false,
- -0x1.4000000000001p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.4000000000000002p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.4000000000000002p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.400000000000000000000000008p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- false,
- -0x1.4000000000000000000000000001p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false,
- -0x1.4p-148, false),
+ -0x1.8p-148, false, true,
+ -0x1.8p-148, false, true,
+ -0x1p-148, false, true,
+ -0x1p-148, false, true,
+ false,
+ -0x1.4000000000001p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.4000000000000002p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.4000000000000002p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.400000000000000000000000008p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ false,
+ -0x1.4000000000000000000000000001p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false,
+ -0x1.4p-148, false, false),
TEST ("7.4109846876186981626485318930233205854758970392148714663837"
"852375101326090531312779794975454245398856969484704316857659"
"638998506553390969459816219401617281718945106978546710679176"
@@ -3818,35 +3818,35 @@ static const struct test tests[] = {
"337560846003984904972149117463085539556354188641513168478436"
"31308023759629577398300170898437499e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- 0x5.fffffffffffffff8p-1076, false,
- 0x6p-1076, false,
- false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x5.fffffffffffffffffffffffffffcp-1076, false,
- 0x6p-1076, false,
- 0x5.fffffffffffffffffffffffffffcp-1076, false,
- 0x6p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x5.fffffffffffffff8p-1076, false, false,
+ 0x6p-1076, false, false,
+ false,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false,
+ 0x6p-1076, false, false),
TEST ("7.4109846876186981626485318930233205854758970392148714663837"
"852375101326090531312779794975454245398856969484704316857659"
"638998506553390969459816219401617281718945106978546710679176"
@@ -3861,35 +3861,35 @@ static const struct test tests[] = {
"337560846003984904972149117463085539556354188641513168478436"
"313080237596295773983001708984375e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- true,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- true,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- true,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ true,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ true,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ true,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false),
TEST ("7.4109846876186981626485318930233205854758970392148714663837"
"852375101326090531312779794975454245398856969484704316857659"
"638998506553390969459816219401617281718945106978546710679176"
@@ -3904,35 +3904,35 @@ static const struct test tests[] = {
"337560846003984904972149117463085539556354188641513168478436"
"31308023759629577398300170898437501e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6.0000000000000008p-1076, false,
- false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6.0000000000000008p-1076, false,
- false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- 0x4p-1076, false,
- 0x8p-1076, false,
- false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6p-1076, false,
- 0x6.0000000000000000000000000004p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6.0000000000000008p-1076, false, false,
+ false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6.0000000000000008p-1076, false, false,
+ false,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ 0x4p-1076, false, true,
+ 0x8p-1076, false, true,
+ false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6p-1076, false, false,
+ 0x6.0000000000000000000000000004p-1076, false, false),
TEST ("-7.410984687618698162648531893023320585475897039214871466383"
"785237510132609053131277979497545424539885696948470431685765"
"963899850655339096945981621940161728171894510697854671067917"
@@ -3947,35 +3947,35 @@ static const struct test tests[] = {
"433756084600398490497214911746308553955635418864151316847843"
"631308023759629577398300170898437499e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- -0x5.fffffffffffffff8p-1076, false,
- false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x5.fffffffffffffffffffffffffffcp-1076, false,
- -0x5.fffffffffffffffffffffffffffcp-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ -0x5.fffffffffffffff8p-1076, false, false,
+ false,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false,
+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false),
TEST ("-7.410984687618698162648531893023320585475897039214871466383"
"785237510132609053131277979497545424539885696948470431685765"
"963899850655339096945981621940161728171894510697854671067917"
@@ -3990,35 +3990,35 @@ static const struct test tests[] = {
"433756084600398490497214911746308553955635418864151316847843"
"6313080237596295773983001708984375e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- true,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- true,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- true,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ true,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ true,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ true,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false),
TEST ("-7.410984687618698162648531893023320585475897039214871466383"
"785237510132609053131277979497545424539885696948470431685765"
"963899850655339096945981621940161728171894510697854671067917"
@@ -4033,35 +4033,35 @@ static const struct test tests[] = {
"433756084600398490497214911746308553955635418864151316847843"
"631308023759629577398300170898437501e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6.0000000000000008p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- false,
- -0x6.0000000000000008p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- false,
- -0x8p-1076, false,
- -0x8p-1076, false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- false,
- -0x6.0000000000000000000000000004p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false,
- -0x6p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6.0000000000000008p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ false,
+ -0x6.0000000000000008p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ false,
+ -0x8p-1076, false, true,
+ -0x8p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ false,
+ -0x6.0000000000000000000000000004p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false,
+ -0x6p-1076, false, false),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -4255,35 +4255,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687499e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -4477,35 +4477,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"6833433740466716699302196502685546875e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -4699,35 +4699,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687501e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0x1p-16444, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xc.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xc.000000000004p-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -4921,35 +4921,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687499e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xb.fffffffffffcp-16448, false,
- -0xb.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -5143,35 +5143,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"26833433740466716699302196502685546875e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -5365,35 +5365,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687501e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x1p-16444, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xc.000000000004p-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xc.000000000004p-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -5587,35 +5587,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687499e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- 0x8p-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false,
- 0xb.fffffffffffcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x8p-16448, false, true,
+ 0xcp-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xb.fffffffffffcp-16448, false, true,
+ 0xcp-16448, false, true),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -5809,35 +5809,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"6833433740466716699302196502685546875e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false,
+ 0xcp-16448, false, false),
TEST ("5.4677992978237119037926089004291297245985762235403450155814"
"707305425575329500966052143410629387408077958710210208052966"
"529504784489330482549602621133847135082257338717668975178538"
@@ -6031,35 +6031,35 @@ static const struct test tests[] = {
"866268925981702690270202829595794350800918257913991744455922"
"683343374046671669930219650268554687501e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- 0x8p-16448, false,
- 0x1p-16444, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0x1p-16444, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xcp-16448, false,
- 0xc.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ 0x8p-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0x1p-16444, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xcp-16448, false, true,
+ 0xc.000000000004p-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -6253,35 +6253,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687499e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xb.fffffffffffcp-16448, false,
- -0xb.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true,
+ -0xb.fffffffffffcp-16448, false, true),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -6475,35 +6475,35 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"26833433740466716699302196502685546875e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false,
+ -0xcp-16448, false, false),
TEST ("-5.467799297823711903792608900429129724598576223540345015581"
"470730542557532950096605214341062938740807795871021020805296"
"652950478448933048254960262113384713508225733871766897517853"
@@ -6697,630 +6697,630 @@ static const struct test tests[] = {
"386626892598170269027020282959579435080091825791399174445592"
"2683343374046671669930219650268554687501e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x1p-16444, false,
- -0x1p-16444, false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- false,
- -0x1p-16444, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0xc.000000000004p-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false,
- -0xcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0x1p-16444, false, true,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ false,
+ -0x1p-16444, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0xc.000000000004p-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true,
+ -0xcp-16448, false, true),
TEST ("-0x0.7p-149",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- true,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false,
- -0x3.8p-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ true,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false,
+ -0x3.8p-152, false, false),
TEST ("-0x0.7p-1074",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- true,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false,
- -0x1.cp-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ true,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false,
+ -0x1.cp-1076, false, false),
TEST ("-0x0.7p-16445",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x3.8p-16448, false,
- -0x3.8p-16448, false,
- -0x3.8p-16448, false,
- -0x3.8p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x3.8p-16448, false, false,
+ -0x3.8p-16448, false, false,
+ -0x3.8p-16448, false, false,
+ -0x3.8p-16448, false, false),
TEST ("-0x0.7p-16494",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("0x1p-150",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false),
TEST ("0x1p-1075",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false),
TEST ("0x1p-16446",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false),
TEST ("0x1p-16495",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("-0x1p-150",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false),
TEST ("-0x1p-1075",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false),
TEST ("-0x1p-16446",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false),
TEST ("-0x1p-16495",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST (".70064923216240853546186479164495807e-45",
false,
- 0x0p+0, false,
- 0x8p-152, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000004p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.00000000000000000000000002p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000000000000000004p-152, false),
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000004p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.00000000000000000000000002p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000000000000000004p-152, false, false),
TEST ("7.0064923216240853546186479164495806564013097093825788587853"
"4141944895541342930300743319094181060791015624e-46",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x3.ffffffffffffep-152, false,
- 0x4p-152, false,
- 0x3.ffffffffffffep-152, false,
- 0x4p-152, false,
- false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- 0x3.fffffffffffffffcp-152, false,
- 0x4p-152, false,
- false,
- 0x3.ffffffffffffffffffffffffffp-152, false,
- 0x4p-152, false,
- 0x3.ffffffffffffffffffffffffffp-152, false,
- 0x4p-152, false,
- false,
- 0x3.fffffffffffffffffffffffffffep-152, false,
- 0x4p-152, false,
- 0x3.fffffffffffffffffffffffffffep-152, false,
- 0x4p-152, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x3.ffffffffffffep-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.ffffffffffffep-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.fffffffffffffffcp-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.ffffffffffffffffffffffffffp-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.ffffffffffffffffffffffffffp-152, false, false,
+ 0x4p-152, false, false,
+ false,
+ 0x3.fffffffffffffffffffffffffffep-152, false, false,
+ 0x4p-152, false, false,
+ 0x3.fffffffffffffffffffffffffffep-152, false, false,
+ 0x4p-152, false, false),
TEST ("7.0064923216240853546186479164495806564013097093825788587853"
"4141944895541342930300743319094181060791015625e-46",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- true,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ true,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false),
TEST ("7.0064923216240853546186479164495806564013097093825788587853"
"4141944895541342930300743319094181060791015626e-46",
false,
- 0x0p+0, false,
- 0x8p-152, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000004p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000008p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.00000000000000000000000002p-152, false,
- false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4p-152, false,
- 0x4.0000000000000000000000000004p-152, false),
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000004p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000008p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.00000000000000000000000002p-152, false, false,
+ false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4p-152, false, false,
+ 0x4.0000000000000000000000000004p-152, false, false),
TEST ("-7.006492321624085354618647916449580656401309709382578858785"
"34141944895541342930300743319094181060791015624e-46",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.ffffffffffffep-152, false,
- -0x3.ffffffffffffep-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.fffffffffffffffcp-152, false,
- -0x3.fffffffffffffffcp-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.fffffffffffffffcp-152, false,
- -0x3.fffffffffffffffcp-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.ffffffffffffffffffffffffffp-152, false,
- -0x3.ffffffffffffffffffffffffffp-152, false,
- false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x3.fffffffffffffffffffffffffffep-152, false,
- -0x3.fffffffffffffffffffffffffffep-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.ffffffffffffep-152, false, false,
+ -0x3.ffffffffffffep-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ -0x3.fffffffffffffffcp-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.ffffffffffffffffffffffffffp-152, false, false,
+ -0x3.ffffffffffffffffffffffffffp-152, false, false,
+ false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x3.fffffffffffffffffffffffffffep-152, false, false,
+ -0x3.fffffffffffffffffffffffffffep-152, false, false),
TEST ("-7.006492321624085354618647916449580656401309709382578858785"
"34141944895541342930300743319094181060791015625e-46",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- true,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ true,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false),
TEST ("-7.006492321624085354618647916449580656401309709382578858785"
"34141944895541342930300743319094181060791015626e-46",
false,
- -0x8p-152, false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4.0000000000004p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.0000000000000008p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.0000000000000008p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.00000000000000000000000002p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- false,
- -0x4.0000000000000000000000000004p-152, false,
- -0x4p-152, false,
- -0x4p-152, false,
- -0x4p-152, false),
+ -0x8p-152, false, true,
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4.0000000000004p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.0000000000000008p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.0000000000000008p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.00000000000000000000000002p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ false,
+ -0x4.0000000000000000000000000004p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false,
+ -0x4p-152, false, false),
TEST ("2.4703282292062327208828439643411068618252990130716238221279"
"284125033775363510437593264991818081799618989828234772285886"
"546332835517796989819938739800539093906315035659515570226392"
@@ -7335,35 +7335,35 @@ static const struct test tests[] = {
"779186948667994968324049705821028513185451396213837722826145"
"437693412532098591327667236328124e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- 0x1.fffffffffffffffep-1076, false,
- 0x2p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x1.ffffffffffffffffffffffffffffp-1076, false,
- 0x2p-1076, false,
- 0x1.ffffffffffffffffffffffffffffp-1076, false,
- 0x2p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x1.fffffffffffffffep-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false,
+ 0x2p-1076, false, false),
TEST ("2.4703282292062327208828439643411068618252990130716238221279"
"284125033775363510437593264991818081799618989828234772285886"
"546332835517796989819938739800539093906315035659515570226392"
@@ -7378,35 +7378,35 @@ static const struct test tests[] = {
"779186948667994968324049705821028513185451396213837722826145"
"437693412532098591327667236328125e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false),
TEST ("2.4703282292062327208828439643411068618252990130716238221279"
"284125033775363510437593264991818081799618989828234772285886"
"546332835517796989819938739800539093906315035659515570226392"
@@ -7421,35 +7421,35 @@ static const struct test tests[] = {
"779186948667994968324049705821028513185451396213837722826145"
"437693412532098591327667236328126e-324",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x4p-1076, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2.0000000000000004p-1076, false,
- false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2.0000000000000004p-1076, false,
- false,
- 0x0p+0, false,
- 0x4p-1076, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2p-1076, false,
- 0x2.0000000000000000000000000002p-1076, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2.0000000000000004p-1076, false, false,
+ false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2.0000000000000004p-1076, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2p-1076, false, false,
+ 0x2.0000000000000000000000000002p-1076, false, false),
TEST ("-2.470328229206232720882843964341106861825299013071623822127"
"928412503377536351043759326499181808179961898982823477228588"
"654633283551779698981993873980053909390631503565951557022639"
@@ -7464,35 +7464,35 @@ static const struct test tests[] = {
"477918694866799496832404970582102851318545139621383772282614"
"5437693412532098591327667236328124e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- -0x1.fffffffffffffffep-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x1.ffffffffffffffffffffffffffffp-1076, false,
- -0x1.ffffffffffffffffffffffffffffp-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ -0x1.fffffffffffffffep-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false,
+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false),
TEST ("-2.470328229206232720882843964341106861825299013071623822127"
"928412503377536351043759326499181808179961898982823477228588"
"654633283551779698981993873980053909390631503565951557022639"
@@ -7507,35 +7507,35 @@ static const struct test tests[] = {
"477918694866799496832404970582102851318545139621383772282614"
"5437693412532098591327667236328125e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false),
TEST ("-2.470328229206232720882843964341106861825299013071623822127"
"928412503377536351043759326499181808179961898982823477228588"
"654633283551779698981993873980053909390631503565951557022639"
@@ -7550,35 +7550,35 @@ static const struct test tests[] = {
"477918694866799496832404970582102851318545139621383772282614"
"5437693412532098591327667236328126e-324",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2.0000000000000004p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x2.0000000000000004p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- false,
- -0x4p-1076, false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2.0000000000000000000000000002p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false,
- -0x2p-1076, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2.0000000000000004p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x2.0000000000000004p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2.0000000000000000000000000002p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false,
+ -0x2p-1076, false, false),
TEST ("1.8225997659412373012642029668097099081995254078467816718604"
"902435141858443166988684047803543129136025986236736736017655"
"509834928163110160849867540377949045027419112905889658392846"
@@ -7772,35 +7772,35 @@ static const struct test tests[] = {
"622089641993900896756734276531931450266972752637997248151974"
"2277811246822238899767398834228515624e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x4p-16448, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x3.fffffffffffcp-16448, false,
- 0x4p-16448, false,
- 0x3.fffffffffffcp-16448, false,
- 0x4p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x3.fffffffffffcp-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x3.fffffffffffcp-16448, false, true,
+ 0x4p-16448, false, true),
TEST ("1.8225997659412373012642029668097099081995254078467816718604"
"902435141858443166988684047803543129136025986236736736017655"
"509834928163110160849867540377949045027419112905889658392846"
@@ -7994,35 +7994,35 @@ static const struct test tests[] = {
"622089641993900896756734276531931450266972752637997248151974"
"2277811246822238899767398834228515625e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false,
+ 0x4p-16448, false, false),
TEST ("1.8225997659412373012642029668097099081995254078467816718604"
"902435141858443166988684047803543129136025986236736736017655"
"509834928163110160849867540377949045027419112905889658392846"
@@ -8216,35 +8216,35 @@ static const struct test tests[] = {
"622089641993900896756734276531931450266972752637997248151974"
"2277811246822238899767398834228515626e-4951",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x8p-16448, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4p-16448, false,
- 0x4.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x4p-16448, false, true,
+ 0x4.000000000004p-16448, false, true),
TEST ("-1.822599765941237301264202966809709908199525407846781671860"
"490243514185844316698868404780354312913602598623673673601765"
"550983492816311016084986754037794904502741911290588965839284"
@@ -8438,35 +8438,35 @@ static const struct test tests[] = {
"462208964199390089675673427653193145026697275263799724815197"
"42277811246822238899767398834228515624e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x3.fffffffffffcp-16448, false,
- -0x3.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x3.fffffffffffcp-16448, false, true,
+ -0x3.fffffffffffcp-16448, false, true),
TEST ("-1.822599765941237301264202966809709908199525407846781671860"
"490243514185844316698868404780354312913602598623673673601765"
"550983492816311016084986754037794904502741911290588965839284"
@@ -8660,35 +8660,35 @@ static const struct test tests[] = {
"462208964199390089675673427653193145026697275263799724815197"
"42277811246822238899767398834228515625e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false,
+ -0x4p-16448, false, false),
TEST ("-1.822599765941237301264202966809709908199525407846781671860"
"490243514185844316698868404780354312913602598623673673601765"
"550983492816311016084986754037794904502741911290588965839284"
@@ -8882,35 +8882,35 @@ static const struct test tests[] = {
"462208964199390089675673427653193145026697275263799724815197"
"42277811246822238899767398834228515626e-4951",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4.000000000004p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x4p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4.000000000004p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true),
TEST ("9.1129988297061865063210148340485495409976270392339083593024"
"512175709292215834943420239017715645680129931183683680088277"
"549174640815550804249337701889745225137095564529448291964230"
@@ -9104,35 +9104,35 @@ static const struct test tests[] = {
"110448209969504483783671382659657251334863763189986240759871"
"1389056234111194498836994171142578124e-4952",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x1.fffffffffffcp-16448, false,
- 0x2p-16448, false,
- 0x1.fffffffffffcp-16448, false,
- 0x2p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffcp-16448, false, true,
+ 0x2p-16448, false, true,
+ 0x1.fffffffffffcp-16448, false, true,
+ 0x2p-16448, false, true),
TEST ("9.1129988297061865063210148340485495409976270392339083593024"
"512175709292215834943420239017715645680129931183683680088277"
"549174640815550804249337701889745225137095564529448291964230"
@@ -9326,35 +9326,35 @@ static const struct test tests[] = {
"110448209969504483783671382659657251334863763189986240759871"
"1389056234111194498836994171142578125e-4952",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- true,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x2p-16448, false, false,
+ 0x2p-16448, false, false,
+ 0x2p-16448, false, false,
+ 0x2p-16448, false, false),
TEST ("9.1129988297061865063210148340485495409976270392339083593024"
"512175709292215834943420239017715645680129931183683680088277"
"549174640815550804249337701889745225137095564529448291964230"
@@ -9548,35 +9548,35 @@ static const struct test tests[] = {
"110448209969504483783671382659657251334863763189986240759871"
"1389056234111194498836994171142578126e-4952",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x4p-16448, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2p-16448, false,
- 0x2.000000000004p-16448, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x2p-16448, false, true,
+ 0x2p-16448, false, true,
+ 0x2p-16448, false, true,
+ 0x2.000000000004p-16448, false, true),
TEST ("-9.112998829706186506321014834048549540997627039233908359302"
"451217570929221583494342023901771564568012993118368368008827"
"754917464081555080424933770188974522513709556452944829196423"
@@ -9770,35 +9770,35 @@ static const struct test tests[] = {
"311044820996950448378367138265965725133486376318998624075987"
"11389056234111194498836994171142578124e-4952",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x1.fffffffffffcp-16448, false,
- -0x1.fffffffffffcp-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2p-16448, false, true,
+ -0x2p-16448, false, true,
+ -0x1.fffffffffffcp-16448, false, true,
+ -0x1.fffffffffffcp-16448, false, true),
TEST ("-9.112998829706186506321014834048549540997627039233908359302"
"451217570929221583494342023901771564568012993118368368008827"
"754917464081555080424933770188974522513709556452944829196423"
@@ -9992,35 +9992,35 @@ static const struct test tests[] = {
"311044820996950448378367138265965725133486376318998624075987"
"11389056234111194498836994171142578125e-4952",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- true,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ true,
+ -0x2p-16448, false, false,
+ -0x2p-16448, false, false,
+ -0x2p-16448, false, false,
+ -0x2p-16448, false, false),
TEST ("-9.112998829706186506321014834048549540997627039233908359302"
"451217570929221583494342023901771564568012993118368368008827"
"754917464081555080424933770188974522513709556452944829196423"
@@ -10214,35 +10214,35 @@ static const struct test tests[] = {
"311044820996950448378367138265965725133486376318998624075987"
"11389056234111194498836994171142578126e-4952",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x2.000000000004p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false,
- -0x2p-16448, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x2.000000000004p-16448, false, true,
+ -0x2p-16448, false, true,
+ -0x2p-16448, false, true,
+ -0x2p-16448, false, true),
TEST ("3.2375875597190125554622194791138232762497846690173405048449"
"421945985197700620596855088357456383249701279390707384240598"
"382936099431912710233425550359863089915213963553756674672083"
@@ -10437,35 +10437,35 @@ static const struct test tests[] = {
"182358152808745703724362178773168996492870519432472065091133"
"11767578124e-4966",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("3.2375875597190125554622194791138232762497846690173405048449"
"421945985197700620596855088357456383249701279390707384240598"
"382936099431912710233425550359863089915213963553756674672083"
@@ -10660,35 +10660,35 @@ static const struct test tests[] = {
"182358152808745703724362178773168996492870519432472065091133"
"11767578125e-4966",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("3.2375875597190125554622194791138232762497846690173405048449"
"421945985197700620596855088357456383249701279390707384240598"
"382936099431912710233425550359863089915213963553756674672083"
@@ -10883,35 +10883,35 @@ static const struct test tests[] = {
"182358152808745703724362178773168996492870519432472065091133"
"11767578126e-4966",
false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-152, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x8p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-16448, false,
- false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x0p+0, false,
- 0x4p-1076, false,
- false,
- 0x0p+0, false,
- 0x4p-16496, false,
- 0x0p+0, false,
- 0x4p-16496, false),
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16448, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true,
+ 0x0p+0, false, true,
+ 0x4p-16496, false, true),
TEST ("-3.237587559719012555462219479113823276249784669017340504844"
"942194598519770062059685508835745638324970127939070738424059"
"838293609943191271023342555035986308991521396355375667467208"
@@ -11106,35 +11106,35 @@ static const struct test tests[] = {
"218235815280874570372436217877316899649287051943247206509113"
"311767578124e-4966",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("-3.237587559719012555462219479113823276249784669017340504844"
"942194598519770062059685508835745638324970127939070738424059"
"838293609943191271023342555035986308991521396355375667467208"
@@ -11329,35 +11329,35 @@ static const struct test tests[] = {
"218235815280874570372436217877316899649287051943247206509113"
"311767578125e-4966",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("-3.237587559719012555462219479113823276249784669017340504844"
"942194598519770062059685508835745638324970127939070738424059"
"838293609943191271023342555035986308991521396355375667467208"
@@ -11552,66 +11552,66 @@ static const struct test tests[] = {
"218235815280874570372436217877316899649287051943247206509113"
"311767578126e-4966",
false,
- -0x8p-152, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x8p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16448, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-1076, false,
- -0x0p+0, false,
- -0x0p+0, false,
- -0x0p+0, false,
- false,
- -0x4p-16496, false,
- -0x4p-16496, false,
- -0x0p+0, false,
- -0x0p+0, false),
+ -0x8p-152, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x8p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16448, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-1076, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true,
+ false,
+ -0x4p-16496, false, true,
+ -0x4p-16496, false, true,
+ -0x0p+0, false, true,
+ -0x0p+0, false, true),
TEST ("340282366920938463463374607431768211455",
false,
- 0xf.fffffp+124, false,
- INF, true,
- 0xf.fffffp+124, false,
- INF, true,
- false,
- 0xf.ffffffffffff8p+124, false,
- 0x1p+128, false,
- 0xf.ffffffffffff8p+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffp+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffffffffffffcp+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffffffffffffcp+124, false,
- 0x1p+128, false,
- false,
- 0xf.fffffffffffffffffffffffffff8p+124, false,
- 0x1p+128, false,
- 0xf.fffffffffffffffffffffffffff8p+124, false,
- 0x1p+128, false),
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ 0xf.fffffp+124, false, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.ffffffffffff8p+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffp+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffffffffffffcp+124, false, false,
+ 0x1p+128, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+124, false, false,
+ 0x1p+128, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+124, false, false,
+ 0x1p+128, false, false),
TEST ("179769313486231590772930519078902473361797697894230657273430"
"081157732675805500963132708477322407536021120113879871393357"
"658789768814416622492847430639474124377767893424865485276302"
@@ -11619,35 +11619,35 @@ static const struct test tests[] = {
"540827237163350510684586298239947245938479716304835356329624"
"224137215",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- 0xf.ffffffffffff8p+1020, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- 0xf.fffffffffffffffp+1020, false,
- 0x1p+1024, false,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+1020, false,
- 0x1p+1024, false,
- 0xf.fffffffffffffffffffffffffff8p+1020, false,
- 0x1p+1024, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ 0xf.fffffffffffffffp+1020, false, false,
+ 0x1p+1024, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false,
+ 0x1p+1024, false, false,
+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false,
+ 0x1p+1024, false, false),
TEST ("118973149535723176508575932662800713076344468709651023747267"
"482123326135818048368690448859547261203991511543748483930925"
"889766738130868742627452469834156500608087163436600489752214"
@@ -11732,66 +11732,66 @@ static const struct test tests[] = {
"047398248889922809181821393428829567971736994315246044702729"
"0669964066815",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- 0xf.fffffffffffffffp+16380, false,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true,
- 0xf.fffffffffffffffffffffffffff8p+16380, false,
- INF, true),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffp+16380, false, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ INF, true, false),
TEST ("-340282366920938463463374607431768211455",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, false,
- -0xf.fffffp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.ffffffffffff8p+124, false,
- -0xf.ffffffffffff8p+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffp+124, false,
- -0xf.fffffffffffffffp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffp+124, false,
- -0xf.fffffffffffffffp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffffffffffffcp+124, false,
- -0xf.fffffffffffffffffffffffffcp+124, false,
- false,
- -0x1p+128, false,
- -0x1p+128, false,
- -0xf.fffffffffffffffffffffffffff8p+124, false,
- -0xf.fffffffffffffffffffffffffff8p+124, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, false, false,
+ -0xf.fffffp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.ffffffffffff8p+124, false, false,
+ -0xf.ffffffffffff8p+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ -0xf.fffffffffffffffp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffffffffffffcp+124, false, false,
+ -0xf.fffffffffffffffffffffffffcp+124, false, false,
+ false,
+ -0x1p+128, false, false,
+ -0x1p+128, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+124, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+124, false, false),
TEST ("-17976931348623159077293051907890247336179769789423065727343"
"008115773267580550096313270847732240753602112011387987139335"
"765878976881441662249284743063947412437776789342486548527630"
@@ -11799,35 +11799,35 @@ static const struct test tests[] = {
"054082723716335051068458629823994724593847971630483535632962"
"4224137215",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, false,
- -0xf.ffffffffffff8p+1020, false,
- false,
- -0x1p+1024, false,
- -0x1p+1024, false,
- -0xf.fffffffffffffffp+1020, false,
- -0xf.fffffffffffffffp+1020, false,
- false,
- -0x1p+1024, false,
- -0x1p+1024, false,
- -0xf.fffffffffffffffp+1020, false,
- -0xf.fffffffffffffffp+1020, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -0x1p+1024, false,
- -0x1p+1024, false,
- -0xf.fffffffffffffffffffffffffff8p+1020, false,
- -0xf.fffffffffffffffffffffffffff8p+1020, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ -0xf.ffffffffffff8p+1020, false, false,
+ false,
+ -0x1p+1024, false, false,
+ -0x1p+1024, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ false,
+ -0x1p+1024, false, false,
+ -0x1p+1024, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ -0xf.fffffffffffffffp+1020, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -0x1p+1024, false, false,
+ -0x1p+1024, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false),
TEST ("-11897314953572317650857593266280071307634446870965102374726"
"748212332613581804836869044885954726120399151154374848393092"
"588976673813086874262745246983415650060808716343660048975221"
@@ -11912,3529 +11912,3901 @@ static const struct test tests[] = {
"904739824888992280918182139342882956797173699431524604470272"
"90669964066815",
false,
- -INF, true,
- -INF, true,
- -0xf.fffffp+124, true,
- -0xf.fffffp+124, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.ffffffffffff8p+1020, true,
- -0xf.ffffffffffff8p+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffp+16380, false,
- -0xf.fffffffffffffffp+16380, false,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- -0xf.fffffffffffffffffffffffffcp+1020, true,
- false,
- -INF, true,
- -INF, true,
- -0xf.fffffffffffffffffffffffffff8p+16380, false,
- -0xf.fffffffffffffffffffffffffff8p+16380, false),
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffp+124, true, false,
+ -0xf.fffffp+124, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ -0xf.ffffffffffff8p+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ -0xf.fffffffffffffffp+16380, false, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ false,
+ -INF, true, false,
+ -INF, true, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
TEST ("+0x.80000000000000000000000000000001p1025",
false,
- 0xf.fffffp+124, true,
- INF, true,
- 0xf.fffffp+124, true,
- INF, true,
- false,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- 0xf.ffffffffffff8p+1020, true,
- INF, true,
- false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1.0000000000000002p+1024, false,
- false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1.0000000000000002p+1024, false,
- false,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- 0xf.fffffffffffffffffffffffffcp+1020, true,
- INF, true,
- false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1p+1024, false,
- 0x1.0000000000000000000000000001p+1024, false),
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ 0xf.fffffp+124, true, false,
+ INF, true, false,
+ false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ 0xf.ffffffffffff8p+1020, true, false,
+ INF, true, false,
+ false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1.0000000000000002p+1024, false, false,
+ false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1.0000000000000002p+1024, false, false,
+ false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
+ INF, true, false,
+ false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1p+1024, false, false,
+ 0x1.0000000000000000000000000001p+1024, false, false),
TEST ("1.5",
true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- true,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false,
- 0x1.8p+0, false),
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ true,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false,
+ 0x1.8p+0, false, false),
TEST ("1.25",
true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- true,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false,
- 0x1.4p+0, false),
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ true,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false,
+ 0x1.4p+0, false, false),
TEST ("1.125",
true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- true,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false,
- 0x1.2p+0, false),
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ true,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false,
+ 0x1.2p+0, false, false),
TEST ("1.0625",
true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- true,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false,
- 0x1.1p+0, false),
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ true,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false,
+ 0x1.1p+0, false, false),
TEST ("1.03125",
true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- true,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false,
- 0x1.08p+0, false),
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ true,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false,
+ 0x1.08p+0, false, false),
TEST ("1.015625",
true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- true,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false,
- 0x1.04p+0, false),
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ true,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false,
+ 0x1.04p+0, false, false),
TEST ("1.0078125",
true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- true,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false,
- 0x1.02p+0, false),
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ true,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false,
+ 0x1.02p+0, false, false),
TEST ("1.00390625",
true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- true,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false,
- 0x1.01p+0, false),
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ true,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false,
+ 0x1.01p+0, false, false),
TEST ("1.001953125",
true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- true,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false,
- 0x1.008p+0, false),
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ true,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false,
+ 0x1.008p+0, false, false),
TEST ("1.0009765625",
true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- true,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false,
- 0x1.004p+0, false),
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ true,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false,
+ 0x1.004p+0, false, false),
TEST ("1.00048828125",
true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- true,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false,
- 0x1.002p+0, false),
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ true,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false,
+ 0x1.002p+0, false, false),
TEST ("1.000244140625",
true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- true,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false,
- 0x1.001p+0, false),
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ true,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false,
+ 0x1.001p+0, false, false),
TEST ("1.0001220703125",
true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- true,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false,
- 0x1.0008p+0, false),
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ true,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false,
+ 0x1.0008p+0, false, false),
TEST ("1.00006103515625",
true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- true,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false,
- 0x1.0004p+0, false),
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ true,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false,
+ 0x1.0004p+0, false, false),
TEST ("1.000030517578125",
true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- true,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false,
- 0x1.0002p+0, false),
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ true,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false,
+ 0x1.0002p+0, false, false),
TEST ("1.0000152587890625",
true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- true,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false,
- 0x1.0001p+0, false),
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ true,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false,
+ 0x1.0001p+0, false, false),
TEST ("1.00000762939453125",
true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- true,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false,
- 0x1.00008p+0, false),
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ true,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false,
+ 0x1.00008p+0, false, false),
TEST ("1.000003814697265625",
true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- true,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false,
- 0x1.00004p+0, false),
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ true,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false,
+ 0x1.00004p+0, false, false),
TEST ("1.0000019073486328125",
true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- true,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false,
- 0x1.00002p+0, false),
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ true,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false,
+ 0x1.00002p+0, false, false),
TEST ("1.00000095367431640625",
true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- true,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false,
- 0x1.00001p+0, false),
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ true,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false,
+ 0x1.00001p+0, false, false),
TEST ("1.000000476837158203125",
true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- true,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false,
- 0x1.000008p+0, false),
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ true,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false,
+ 0x1.000008p+0, false, false),
TEST ("1.0000000298023223876953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- true,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false,
- 0x1.0000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ true,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false,
+ 0x1.0000008p+0, false, false),
TEST ("1.00000001490116119384765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- true,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false,
- 0x1.0000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ true,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false,
+ 0x1.0000004p+0, false, false),
TEST ("1.000000007450580596923828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- true,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false,
- 0x1.0000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ true,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false,
+ 0x1.0000002p+0, false, false),
TEST ("1.0000000037252902984619140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- true,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false,
- 0x1.0000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ true,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false,
+ 0x1.0000001p+0, false, false),
TEST ("1.00000000186264514923095703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- true,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false,
- 0x1.00000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ true,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false,
+ 0x1.00000008p+0, false, false),
TEST ("1.000000000931322574615478515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- true,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false,
- 0x1.00000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ true,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false,
+ 0x1.00000004p+0, false, false),
TEST ("1.0000000004656612873077392578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- true,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false,
- 0x1.00000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ true,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false,
+ 0x1.00000002p+0, false, false),
TEST ("1.00000000023283064365386962890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- true,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false,
- 0x1.00000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ true,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false,
+ 0x1.00000001p+0, false, false),
TEST ("1.000000000116415321826934814453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- true,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false,
- 0x1.000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ true,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false,
+ 0x1.000000008p+0, false, false),
TEST ("1.0000000000582076609134674072265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- true,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false,
- 0x1.000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ true,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false,
+ 0x1.000000004p+0, false, false),
TEST ("1.00000000002910383045673370361328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- true,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false,
- 0x1.000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ true,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false,
+ 0x1.000000002p+0, false, false),
TEST ("1.000000000014551915228366851806640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- true,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false,
- 0x1.000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ true,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false,
+ 0x1.000000001p+0, false, false),
TEST ("1.0000000000072759576141834259033203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- true,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false,
- 0x1.0000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ true,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false,
+ 0x1.0000000008p+0, false, false),
TEST ("1.00000000000363797880709171295166015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- true,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false,
- 0x1.0000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ true,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false,
+ 0x1.0000000004p+0, false, false),
TEST ("1.000000000001818989403545856475830078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- true,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false,
- 0x1.0000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ true,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false,
+ 0x1.0000000002p+0, false, false),
TEST ("1.0000000000009094947017729282379150390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- true,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false,
- 0x1.0000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ true,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false,
+ 0x1.0000000001p+0, false, false),
TEST ("1.00000000000045474735088646411895751953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- true,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false,
- 0x1.00000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ true,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false,
+ 0x1.00000000008p+0, false, false),
TEST ("1.000000000000227373675443232059478759765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- true,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false,
- 0x1.00000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ true,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false,
+ 0x1.00000000004p+0, false, false),
TEST ("1.0000000000001136868377216160297393798828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- true,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false,
- 0x1.00000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ true,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false,
+ 0x1.00000000002p+0, false, false),
TEST ("1.00000000000005684341886080801486968994140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- true,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false,
- 0x1.00000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ true,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false,
+ 0x1.00000000001p+0, false, false),
TEST ("1.000000000000028421709430404007434844970703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- true,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false,
- 0x1.000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ true,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false,
+ 0x1.000000000008p+0, false, false),
TEST ("1.0000000000000142108547152020037174224853515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- true,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false,
- 0x1.000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ true,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false,
+ 0x1.000000000004p+0, false, false),
TEST ("1.00000000000000710542735760100185871124267578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- true,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false,
- 0x1.000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ true,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false,
+ 0x1.000000000002p+0, false, false),
TEST ("1.000000000000003552713678800500929355621337890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- true,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false,
- 0x1.000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ true,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false,
+ 0x1.000000000001p+0, false, false),
TEST ("1.0000000000000017763568394002504646778106689453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- true,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false,
- 0x1.0000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ true,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false,
+ 0x1.0000000000008p+0, false, false),
TEST ("1.00000000000000088817841970012523233890533447265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- true,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false,
- 0x1.0000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ true,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false,
+ 0x1.0000000000004p+0, false, false),
TEST ("1.000000000000000444089209850062616169452667236328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- true,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false,
- 0x1.0000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ true,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false,
+ 0x1.0000000000002p+0, false, false),
TEST ("1.0000000000000002220446049250313080847263336181640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false,
- 0x1.0000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ 0x1.0000000000001p+0, false, false),
TEST ("1.00000000000000011102230246251565404236316680908203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- true,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false,
- 0x1.00000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ true,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false,
+ 0x1.00000000000008p+0, false, false),
TEST ("1.000000000000000055511151231257827021181583404541015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- true,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false,
- 0x1.00000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ true,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false,
+ 0x1.00000000000004p+0, false, false),
TEST ("1.0000000000000000277555756156289135105907917022705078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- true,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false,
- 0x1.00000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ true,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false,
+ 0x1.00000000000002p+0, false, false),
TEST ("1.00000000000000001387778780781445675529539585113525390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- true,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false,
- 0x1.00000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ true,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false,
+ 0x1.00000000000001p+0, false, false),
TEST ("1.000000000000000006938893903907228377647697925567626953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- true,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false,
- 0x1.000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false,
+ 0x1.000000000000008p+0, false, false),
TEST ("1.0000000000000000034694469519536141888238489627838134765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- true,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false,
- 0x1.000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false,
+ 0x1.000000000000004p+0, false, false),
TEST ("1.0000000000000000017347234759768070944119244813919067382812"
"5",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- true,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false,
- 0x1.000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false,
+ 0x1.000000000000002p+0, false, false),
TEST ("1.0000000000000000008673617379884035472059622406959533691406"
"25",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- true,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false,
- 0x1.000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false,
+ 0x1.000000000000001p+0, false, false),
TEST ("1.0000000000000000004336808689942017736029811203479766845703"
"125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- true,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false,
- 0x1.0000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false,
+ 0x1.0000000000000008p+0, false, false),
TEST ("1.0000000000000000002168404344971008868014905601739883422851"
"5625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- true,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false,
- 0x1.0000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false,
+ 0x1.0000000000000004p+0, false, false),
TEST ("1.0000000000000000001084202172485504434007452800869941711425"
"78125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false,
- 0x1.0000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ 0x1.0000000000000002p+0, false, false),
TEST ("1.0000000000000000000542101086242752217003726400434970855712"
"890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- true,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false,
- 0x1.0000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false,
+ 0x1.0000000000000001p+0, false, false),
TEST ("1.0000000000000000000271050543121376108501863200217485427856"
"4453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- true,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false,
- 0x1.00000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false,
+ 0x1.00000000000000008p+0, false, false),
TEST ("1.0000000000000000000135525271560688054250931600108742713928"
"22265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- true,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false,
- 0x1.00000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false,
+ 0x1.00000000000000004p+0, false, false),
TEST ("1.0000000000000000000067762635780344027125465800054371356964"
"111328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- true,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false,
- 0x1.00000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false,
+ 0x1.00000000000000002p+0, false, false),
TEST ("1.0000000000000000000033881317890172013562732900027185678482"
"0556640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- true,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false,
- 0x1.00000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false,
+ 0x1.00000000000000001p+0, false, false),
TEST ("1.0000000000000000000016940658945086006781366450013592839241"
"02783203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- true,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false,
- 0x1.000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false,
+ 0x1.000000000000000008p+0, false, false),
TEST ("1.0000000000000000000008470329472543003390683225006796419620"
"513916015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- true,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false,
- 0x1.000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false,
+ 0x1.000000000000000004p+0, false, false),
TEST ("1.0000000000000000000004235164736271501695341612503398209810"
"2569580078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- true,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false,
- 0x1.000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false,
+ 0x1.000000000000000002p+0, false, false),
TEST ("1.0000000000000000000002117582368135750847670806251699104905"
"12847900390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- true,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false,
- 0x1.000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false,
+ 0x1.000000000000000001p+0, false, false),
TEST ("1.0000000000000000000001058791184067875423835403125849552452"
"564239501953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- true,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false,
- 0x1.0000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false,
+ 0x1.0000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000529395592033937711917701562924776226"
"2821197509765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- true,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false,
- 0x1.0000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false,
+ 0x1.0000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000264697796016968855958850781462388113"
"14105987548828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- true,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false,
- 0x1.0000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false,
+ 0x1.0000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000132348898008484427979425390731194056"
"570529937744140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- true,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false,
- 0x1.0000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false,
+ 0x1.0000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000066174449004242213989712695365597028"
"2852649688720703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- true,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false,
- 0x1.00000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false,
+ 0x1.00000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000033087224502121106994856347682798514"
"14263248443603515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- true,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false,
- 0x1.00000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false,
+ 0x1.00000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000016543612251060553497428173841399257"
"071316242218017578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- true,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false,
- 0x1.00000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false,
+ 0x1.00000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000008271806125530276748714086920699628"
"5356581211090087890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- true,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false,
- 0x1.00000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false,
+ 0x1.00000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000004135903062765138374357043460349814"
"26782906055450439453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false,
- 0x1.000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false,
+ 0x1.000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000002067951531382569187178521730174907"
"133914530277252197265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- true,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false,
- 0x1.000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false,
+ 0x1.000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000001033975765691284593589260865087453"
"5669572651386260986328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- true,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false,
- 0x1.000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false,
+ 0x1.000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000516987882845642296794630432543726"
"78347863256931304931640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- true,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false,
- 0x1.000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false,
+ 0x1.000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000258493941422821148397315216271863"
"391739316284656524658203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false,
- 0x1.0000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000129246970711410574198657608135931"
"6958696581423282623291015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- true,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false,
- 0x1.0000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000064623485355705287099328804067965"
"84793482907116413116455078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- true,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false,
- 0x1.0000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000032311742677852643549664402033982"
"923967414535582065582275390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- true,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false,
- 0x1.0000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000016155871338926321774832201016991"
"4619837072677910327911376953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- true,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false,
- 0x1.00000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000008077935669463160887416100508495"
"73099185363389551639556884765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- true,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false,
- 0x1.00000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000004038967834731580443708050254247"
"865495926816947758197784423828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- true,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false,
- 0x1.00000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000002019483917365790221854025127123"
"9327479634084738790988922119140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- true,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false,
- 0x1.00000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000001009741958682895110927012563561"
"96637398170423693954944610595703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false,
- 0x1.000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000504870979341447555463506281780"
"983186990852118469774723052978515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- true,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false,
- 0x1.000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ true,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000252435489670723777731753140890"
"4915934954260592348873615264892578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- true,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false,
- 0x1.000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000126217744835361888865876570445"
"24579674771302961744368076324462890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- true,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false,
- 0x1.000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ true,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000063108872417680944432938285222"
"622898373856514808721840381622314453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false,
- 0x1.0000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000031554436208840472216469142611"
"3114491869282574043609201908111572265625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- true,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false,
- 0x1.0000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ true,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000015777218104420236108234571305"
"65572459346412870218046009540557861328125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false,
- 0x1.0000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000007888609052210118054117285652"
"827862296732064351090230047702789306640625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- true,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false,
- 0x1.0000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ true,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000003944304526105059027058642826"
"4139311483660321755451150238513946533203125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- true,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false,
- 0x1.00000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ true,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false,
+ 0x1.00000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000001972152263052529513529321413"
"20696557418301608777255751192569732666015625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- true,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false,
- 0x1.00000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ true,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false,
+ 0x1.00000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000000986076131526264756764660706"
"603482787091508043886278755962848663330078125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false,
- 0x1.00000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false,
+ 0x1.00000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000000493038065763132378382330353"
"3017413935457540219431393779814243316650390625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- true,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false,
- 0x1.00000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ true,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false,
+ 0x1.00000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000000246519032881566189191165176"
"65087069677287701097156968899071216583251953125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- true,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- 0x1.000000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ true,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000000123259516440783094595582588"
"325435348386438505485784844495356082916259765625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000004p+0, false,
- 0x1.000000000000000000000000004p+0, false,
- 0x1.000000000000000000000000004p+0, false,
- 0x1.000000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000000004p+0, false, false,
+ 0x1.000000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000000061629758220391547297791294"
"1627176741932192527428924222476780414581298828125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000002p+0, false,
- 0x1.000000000000000000000000002p+0, false,
- 0x1.000000000000000000000000002p+0, false,
- 0x1.000000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000000002p+0, false, false,
+ 0x1.000000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000000030814879110195773648895647"
"08135883709660962637144621112383902072906494140625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.000000000000000000000000001p+0, false,
- 0x1.000000000000000000000000001p+0, false,
- 0x1.000000000000000000000000001p+0, false,
- 0x1.000000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.000000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000000001p+0, false, false,
+ 0x1.000000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000000015407439555097886824447823"
"540679418548304813185723105561919510364532470703125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000008p+0, false,
- 0x1.0000000000000000000000000008p+0, false,
- 0x1.0000000000000000000000000008p+0, false,
- 0x1.0000000000000000000000000008p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000000008p+0, false, false,
+ 0x1.0000000000000000000000000008p+0, false, false),
TEST ("1.0000000000000000000000000000000007703719777548943412223911"
"7703397092741524065928615527809597551822662353515625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000004p+0, false,
- 0x1.0000000000000000000000000004p+0, false,
- 0x1.0000000000000000000000000004p+0, false,
- 0x1.0000000000000000000000000004p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000000004p+0, false, false,
+ 0x1.0000000000000000000000000004p+0, false, false),
TEST ("1.0000000000000000000000000000000003851859888774471706111955"
"88516985463707620329643077639047987759113311767578125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000002p+0, false,
- 0x1.0000000000000000000000000002p+0, false,
- 0x1.0000000000000000000000000002p+0, false,
- 0x1.0000000000000000000000000002p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000000002p+0, false, false,
+ 0x1.0000000000000000000000000002p+0, false, false),
TEST ("1.0000000000000000000000000000000001925929944387235853055977"
"942584927318538101648215388195239938795566558837890625",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- true,
- 0x1.0000000000000000000000000001p+0, false,
- 0x1.0000000000000000000000000001p+0, false,
- 0x1.0000000000000000000000000001p+0, false,
- 0x1.0000000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ true,
+ 0x1.0000000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false),
TEST ("1.0000000000000000000000000000000000962964972193617926527988"
"9712924636592690508241076940976199693977832794189453125",
false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000001p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000002p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.000000000000000000000000008p+0, false,
- false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1p+0, false,
- 0x1.0000000000000000000000000001p+0, false),
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000001p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000002p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.000000000000000000000000008p+0, false, false,
+ false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1p+0, false, false,
+ 0x1.0000000000000000000000000001p+0, false, false),
+ TEST ("0x30000002222225p-1077",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ true,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ true,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ false,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ 0x1.800000111111p-1024, false, true,
+ 0x1.8000001111114p-1024, false, true,
+ true,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false,
+ 0x1.80000011111128p-1024, false, false),
+ TEST ("0x0.7fffffffffffeap-1022",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ true,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false,
+ 0x1.ffffffffffffa8p-1024, false, false),
+ TEST ("0x0.7fffffffffffe9p-1022",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ true,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ false,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ 0x1.ffffffffffff8p-1024, false, true,
+ 0x1.ffffffffffffcp-1024, false, true,
+ true,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false,
+ 0x1.ffffffffffffa4p-1024, false, false),
+ TEST ("0x0.7ffffd4p-126",
+ false,
+ 0x1.fffffp-128, false, true,
+ 0x1.fffff8p-128, false, true,
+ 0x1.fffffp-128, false, true,
+ 0x1.fffff8p-128, false, true,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ true,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false,
+ 0x1.fffff5p-128, false, false),
+ TEST ("0x0.7ffffffffffffffd4p-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffffp-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ 0x1.fffffffffffffffp-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ false,
+ 0x1.fffffffffffffff4p-16384, false, true,
+ 0x1.fffffffffffffff4p-16384, false, true,
+ 0x1.fffffffffffffff4p-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x1.fffffffffffffff5p-16384, false, false,
+ 0x1.fffffffffffffff5p-16384, false, false,
+ 0x1.fffffffffffffff5p-16384, false, false,
+ 0x1.fffffffffffffff5p-16384, false, false),
+ TEST ("0x0.7ffffffffffffffd4p-16383",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0x1p-16384, false, true,
+ false,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffffcp-16388, false, true,
+ 0xf.ffffffffffffff8p-16388, false, true,
+ 0xf.ffffffffffffffcp-16388, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xf.ffffffffffffffa8p-16388, false, false,
+ 0xf.ffffffffffffffa8p-16388, false, false,
+ 0xf.ffffffffffffffa8p-16388, false, false,
+ 0xf.ffffffffffffffa8p-16388, false, false),
+ TEST ("0x0.7ffffffffffffffffffffffffffeap-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ 0x2p-16384, false, true,
+ 0x1.fffffffffffffff8p-16384, false, true,
+ 0x2p-16384, false, true,
+ false,
+ 0x1.fffffffffffffffcp-16384, false, true,
+ 0x2p-16384, false, true,
+ 0x1.fffffffffffffffcp-16384, false, true,
+ 0x2p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true,
+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true,
+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true,
+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true),
+ TEST ("0x0.7000004p-126",
+ false,
+ 0x1.cp-128, false, true,
+ 0x1.cp-128, false, true,
+ 0x1.cp-128, false, true,
+ 0x1.c00008p-128, false, true,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ true,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false,
+ 0x1.c00001p-128, false, false),
+ TEST ("0x0.70000000000002p-1022",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.c000000000004p-1024, false, true,
+ true,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ true,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ false,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.cp-1024, false, true,
+ 0x1.c000000000004p-1024, false, true,
+ true,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false,
+ 0x1.c0000000000008p-1024, false, false),
+ TEST ("0x0.70000000000000004p-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000008p-16384, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000004p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0x1.c000000000000001p-16384, false, false,
+ 0x1.c000000000000001p-16384, false, false,
+ 0x1.c000000000000001p-16384, false, false,
+ 0x1.c000000000000001p-16384, false, false),
+ TEST ("0x0.70000000000000004p-16383",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xe.000000000000008p-16388, false, true,
+ false,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xep-16388, false, true,
+ 0xe.000000000000004p-16388, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ true,
+ 0xe.0000000000000008p-16388, false, false,
+ 0xe.0000000000000008p-16388, false, false,
+ 0xe.0000000000000008p-16388, false, false,
+ 0xe.0000000000000008p-16388, false, false),
+ TEST ("0x0.70000000000000000000000000002p-16382",
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x8p-152, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000008p-16384, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000004p-16384, false, true,
+ false,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x0p+0, false, true,
+ 0x4p-1076, false, true,
+ false,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.cp-16384, false, true,
+ 0x1.c000000000000000000000000004p-16384, false, true),
};
diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c
index 6fba4b5228..be081ba416 100644
--- a/stdlib/tst-strtod-round-skeleton.c
+++ b/stdlib/tst-strtod-round-skeleton.c
@@ -21,6 +21,7 @@
declared in the headers. */
#define _LIBC_TEST 1
#define __STDC_WANT_IEC_60559_TYPES_EXT__
+#include
#include
#include
#include
@@ -29,6 +30,7 @@
#include
#include
#include
+#include
#include "tst-strtod.h"
@@ -138,16 +140,26 @@
gen-tst-strtod-round utility to select the appropriately
rounded long double value for a given format. */
#define TEST(s, \
- fx, fd, fdo, fn, fno, fz, fzo, fu, fuo, \
- dx, dd, ddo, dn, dno, dz, dzo, du, duo, \
- ld64ix, ld64id, ld64ido, ld64in, ld64ino, \
- ld64iz, ld64izo, ld64iu, ld64iuo, \
- ld64mx, ld64md, ld64mdo, ld64mn, ld64mno, \
- ld64mz, ld64mzo, ld64mu, ld64muo, \
- ld106x, ld106d, ld106do, ld106n, ld106no, \
- ld106z, ld106zo, ld106u, ld106uo, \
- ld113x, ld113d, ld113do, ld113n, ld113no, \
- ld113z, ld113zo, ld113u, ld113uo) \
+ fx, fd, fdo, fdu, fn, fno, fnu, \
+ fz, fzo, fzu, fu, fuo, fuu, \
+ dx, dd, ddo, ddu, dn, dno, dnu, \
+ dz, dzo, dzu, du, duo, duu, \
+ ld64ix, ld64id, ld64ido, ld64idu, \
+ ld64in, ld64ino, ld64inu, \
+ ld64iz, ld64izo, ld64izu, \
+ ld64iu, ld64iuo, ld64iuu, \
+ ld64mx, ld64md, ld64mdo, ld64mdu, \
+ ld64mn, ld64mno, ld64mnu, \
+ ld64mz, ld64mzo, ld64mzu, \
+ ld64mu, ld64muo, ld64muu, \
+ ld106x, ld106d, ld106do, ld106du, \
+ ld106n, ld106no, ld106nu, \
+ ld106z, ld106zo, ld106zu, \
+ ld106u, ld106uo, ld106uu, \
+ ld113x, ld113d, ld113do, ld113du, \
+ ld113n, ld113no, ld113nu, \
+ ld113z, ld113zo, ld113zu, \
+ ld113u, ld113uo, ld113uu) \
{ \
L_ (s), \
{ XNTRY (fx, dx, ld64ix, ld64mx, ld106x, ld113x) }, \
@@ -162,6 +174,12 @@
{ XNTRY (fdo, ddo, ld64ido, ld64mdo, ld106do, ld113do) }, \
{ XNTRY (fzo, dzo, ld64izo, ld64mzo, ld106zo, ld113zo) }, \
{ XNTRY (fuo, duo, ld64iuo, ld64muo, ld106uo, ld113uo) } \
+ }, \
+ { \
+ { XNTRY (fnu, dnu, ld64inu, ld64mnu, ld106nu, ld113nu) }, \
+ { XNTRY (fdu, ddu, ld64idu, ld64mdu, ld106du, ld113du) }, \
+ { XNTRY (fzu, dzu, ld64izu, ld64mzu, ld106zu, ld113zu) }, \
+ { XNTRY (fuu, duu, ld64iuu, ld64muu, ld106uu, ld113uu) } \
} \
}
@@ -180,11 +198,17 @@ struct test_overflow
STRUCT_FOREACH_FLOAT_BOOL
};
+struct test_underflow
+ {
+ STRUCT_FOREACH_FLOAT_BOOL
+ };
+
struct test {
const CHAR *s;
struct test_exactness exact;
struct test_results r[4];
struct test_overflow o[4];
+ struct test_underflow u[4];
};
/* Include the generated test data. */
@@ -202,10 +226,16 @@ struct test {
# define FE_OVERFLOW 0
#endif
+#ifndef FE_UNDERFLOW
+# define FE_UNDERFLOW 0
+#endif
+
#define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
{ \
feclearexcept (FE_ALL_EXCEPT); \
+ errno = 12345; \
FTYPE f = STRTO (FSUF) (s, NULL); \
+ int new_errno = errno; \
if (f != expected->FSUF \
|| (copysign ## CSUF) (1.0 ## LSUF, f) \
!= (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \
@@ -254,6 +284,48 @@ struct test {
printf ("ignoring this exception error\n"); \
} \
} \
+ if (overflow->FSUF && new_errno != ERANGE) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") left errno == %d," \
+ " not %d (ERANGE)\n", \
+ s, new_errno, ERANGE); \
+ result = 1; \
+ } \
+ if (FE_UNDERFLOW != 0) \
+ { \
+ bool underflow_raised \
+ = fetestexcept (FE_UNDERFLOW) != 0; \
+ if (underflow_raised != underflow->FSUF) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") underflow %d " \
+ "not %d\n", s, underflow_raised, \
+ underflow->FSUF); \
+ if (EXCEPTION_TESTS (FTYPE)) \
+ result = 1; \
+ else \
+ printf ("ignoring this exception error\n"); \
+ } \
+ } \
+ if (underflow->FSUF && new_errno != ERANGE) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") left errno == %d," \
+ " not %d (ERANGE)\n", \
+ s, new_errno, ERANGE); \
+ result = 1; \
+ } \
+ if (!overflow->FSUF \
+ && !underflow->FSUF \
+ && new_errno != 12345) \
+ { \
+ printf (FNPFXS "to" #FSUF \
+ " (" STRM ") set errno == %d," \
+ " should be unchanged\n", \
+ s, new_errno); \
+ result = 1; \
+ } \
} \
}
@@ -261,6 +333,7 @@ static int
test_in_one_mode (const CHAR *s, const struct test_results *expected,
const struct test_exactness *exact,
const struct test_overflow *overflow,
+ const struct test_underflow *underflow,
const char *mode_name, int rnd_mode)
{
int result = 0;
@@ -296,6 +369,7 @@ do_test (void)
{
result |= test_in_one_mode (tests[i].s, &tests[i].r[modes[0].rnd_i],
&tests[i].exact, &tests[i].o[modes[0].rnd_i],
+ &tests[i].u[modes[0].rnd_i],
modes[0].mode_name, modes[0].rnd_mode);
for (const struct fetestmodes *m = &modes[1]; m->mode_name != NULL; m++)
{
@@ -303,7 +377,9 @@ do_test (void)
{
result |= test_in_one_mode (tests[i].s, &tests[i].r[m->rnd_i],
&tests[i].exact,
- &tests[i].o[m->rnd_i], m->mode_name,
+ &tests[i].o[m->rnd_i],
+ &tests[i].u[m->rnd_i],
+ m->mode_name,
m->rnd_mode);
fesetround (save_round_mode);
}
diff --git a/stdlib/tst-strtod-underflow.c b/stdlib/tst-strtod-underflow.c
index a5ced18599..8598b95b6d 100644
--- a/stdlib/tst-strtod-underflow.c
+++ b/stdlib/tst-strtod-underflow.c
@@ -17,6 +17,10 @@
License along with the GNU C Library; if not, see
. */
+/* Defining _LIBC_TEST ensures long double math functions are
+ declared in the headers. */
+#define _LIBC_TEST 1
+#define __STDC_WANT_IEC_60559_TYPES_EXT__
#include
#include
#include
@@ -25,6 +29,60 @@
#include
#include
+#include "tst-strtod.h"
+
+/* Logic for selecting between tests for different formats is as in
+ tst-strtod-skeleton.c, but here it is selecting string inputs with
+ different underflow properties, rather than generated test
+ data. */
+
+#define _CONCAT(a, b) a ## b
+#define CONCAT(a, b) _CONCAT (a, b)
+
+#define MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+ const char *s_ ## FSUF;
+
+#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
+# define CHOOSE_ld(f,d,...) d
+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381
+# define CHOOSE_ld(f,d,ld64i,...) ld64i
+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382
+# define CHOOSE_ld(f,d,ld64i,ld64m,...) ld64m
+#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024
+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,...) ld106
+#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,ld113,...) ld113
+#else
+# error "unknown long double format"
+#endif
+
+#define CHOOSE_f(f,...) f
+#define CHOOSE_f32(f,...) f
+#define CHOOSE_d(f,d,...) d
+#define CHOOSE_f64(f,d,...) d
+#define CHOOSE_f32x(f,d,...) d
+#define CHOOSE_f128(f,d,ld64i,ld64m,ld106,ld113,...) ld113
+
+#if __HAVE_FLOAT64X
+# if FLT64X_MANT_DIG == 113 && FLT64X_MAX_EXP == 16384
+# define CHOOSE_f64x(f,d,ld64i,ld64m,ld106,ld113,...) ld113
+# elif (FLT64X_MANT_DIG == 64 \
+ && FLT64X_MAX_EXP == 16384 \
+ && FLT64X_MIN_EXP == -16381)
+# define CHOOSE_f64x(f,d,ld64i,...) ld64i
+# else
+# error "unknown _Float64x format"
+# endif
+#endif
+
+#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \
+ CHOOSE_ ## FSUF (__VA_ARGS__),
+#define XNTRY(...) \
+ GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__)
+
+#define TEST(f, d, ld64i, ld64m, ld106, ld113, u) \
+ { XNTRY(f, d, ld64i, ld64m, ld106, ld113) u }
+
enum underflow_case
{
/* Result is exact or outside the subnormal range. */
@@ -55,38 +113,194 @@ enum underflow_case
struct test
{
- const char *s;
+ GEN_TEST_STRTOD_FOREACH (MEMBER)
enum underflow_case c;
};
static const struct test tests[] =
{
- { "0x1p-1022", UNDERFLOW_NONE },
- { "-0x1p-1022", UNDERFLOW_NONE },
- { "0x0p-10000000000000000000000000", UNDERFLOW_NONE },
- { "-0x0p-10000000000000000000000000", UNDERFLOW_NONE },
- { "0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
- { "-0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
- { "0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
- { "-0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
- { "0x1p-1075", UNDERFLOW_ALWAYS },
- { "-0x1p-1075", UNDERFLOW_ALWAYS },
- { "0x1p-1023", UNDERFLOW_NONE },
- { "-0x1p-1023", UNDERFLOW_NONE },
- { "0x1p-1074", UNDERFLOW_NONE },
- { "-0x1p-1074", UNDERFLOW_NONE },
- { "0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
- { "-0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
- { "0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
- { "-0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
- { "0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_UPWARD },
- { "-0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_DOWNWARD },
- { "0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_UPWARD },
- { "-0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_DOWNWARD },
- { "0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
- { "-0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
- { "0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
- { "-0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
+ TEST ("0x1p-126",
+ "0x1p-1022",
+ "0x1p-16382",
+ "0x1p-16383",
+ "0x1p-969",
+ "0x1p-16382",
+ UNDERFLOW_NONE),
+ TEST ("-0x1p-126",
+ "-0x1p-1022",
+ "-0x1p-16382",
+ "-0x1p-16383",
+ "-0x1p-969",
+ "-0x1p-16382",
+ UNDERFLOW_NONE),
+ TEST ("0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ "0x0p-10000000000000000000000000",
+ UNDERFLOW_NONE),
+ TEST ("-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ "-0x0p-10000000000000000000000000",
+ UNDERFLOW_NONE),
+ TEST ("0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ "0x1p-10000000000000000000000000",
+ UNDERFLOW_ALWAYS),
+ TEST ("-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ "-0x1p-10000000000000000000000000",
+ UNDERFLOW_ALWAYS),
+ TEST ("0x1.000000000000000000001p-126",
+ "0x1.000000000000000000001p-1022",
+ "0x1.000000000000000000001p-16382",
+ "0x1.000000000000000000001p-16383",
+ "0x1.000000000000000000001p-969",
+ "0x1.00000000000000000000000000000000000000001p-16382",
+ UNDERFLOW_NONE),
+ TEST ("-0x1.000000000000000000001p-126",
+ "-0x1.000000000000000000001p-1022",
+ "-0x1.000000000000000000001p-16382",
+ "-0x1.000000000000000000001p-16383",
+ "-0x1.000000000000000000001p-969",
+ "-0x1.00000000000000000000000000000000000000001p-16382",
+ UNDERFLOW_NONE),
+ TEST ("0x1p-150",
+ "0x1p-1075",
+ "0x1p-16446",
+ "0x1p-16447",
+ "0x1p-1075",
+ "0x1p-16495",
+ UNDERFLOW_ALWAYS),
+ TEST ("-0x1p-150",
+ "-0x1p-1075",
+ "-0x1p-16446",
+ "-0x1p-16447",
+ "-0x1p-1075",
+ "-0x1p-16495",
+ UNDERFLOW_ALWAYS),
+ TEST ("0x1p-127",
+ "0x1p-1023",
+ "0x1p-16383",
+ "0x1p-16384",
+ "0x1p-970",
+ "0x1p-16383",
+ UNDERFLOW_NONE),
+ TEST ("-0x1p-127",
+ "-0x1p-1023",
+ "-0x1p-16383",
+ "-0x1p-16384",
+ "-0x1p-970",
+ "-0x1p-16383",
+ UNDERFLOW_NONE),
+ TEST ("0x1p-149",
+ "0x1p-1074",
+ "0x1p-16445",
+ "0x1p-16446",
+ "0x1p-1074",
+ "0x1p-16494",
+ UNDERFLOW_NONE),
+ TEST ("-0x1p-149",
+ "-0x1p-1074",
+ "-0x1p-16445",
+ "-0x1p-16446",
+ "-0x1p-1074",
+ "-0x1p-16494",
+ UNDERFLOW_NONE),
+ TEST ("0x1.fffffcp-127",
+ "0x1.ffffffffffffep-1023",
+ "0x1.fffffffffffffffcp-16383",
+ "0x1.fffffffffffffffcp-16384",
+ "0x1.ffffffffffffffffffffffffffp-970",
+ "0x1.fffffffffffffffffffffffffffep-16383",
+ UNDERFLOW_NONE),
+ TEST ("-0x1.fffffcp-127",
+ "-0x1.ffffffffffffep-1023",
+ "-0x1.fffffffffffffffcp-16383",
+ "-0x1.fffffffffffffffcp-16384",
+ "-0x1.ffffffffffffffffffffffffffp-970",
+ "-0x1.fffffffffffffffffffffffffffep-16383",
+ UNDERFLOW_NONE),
+ TEST ("0x1.fffffep-127",
+ "0x1.fffffffffffffp-1023",
+ "0x1.fffffffffffffffep-16383",
+ "0x1.fffffffffffffffep-16384",
+ "0x1.ffffffffffffffffffffffffff8p-970",
+ "0x1.ffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ALWAYS),
+ TEST ("-0x1.fffffep-127",
+ "-0x1.fffffffffffffp-1023",
+ "-0x1.fffffffffffffffep-16383",
+ "-0x1.fffffffffffffffep-16384",
+ "-0x1.ffffffffffffffffffffffffff8p-970",
+ "-0x1.ffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ALWAYS),
+ TEST ("0x1.fffffe0001p-127",
+ "0x1.fffffffffffff0001p-1023",
+ "0x1.fffffffffffffffe0001p-16383",
+ "0x1.fffffffffffffffe0001p-16384",
+ "0x1.ffffffffffffffffffffffffff80001p-970",
+ "0x1.ffffffffffffffffffffffffffff0001p-16383",
+ UNDERFLOW_EXCEPT_UPWARD),
+ TEST ("-0x1.fffffe0001p-127",
+ "-0x1.fffffffffffff0001p-1023",
+ "-0x1.fffffffffffffffe0001p-16383",
+ "-0x1.fffffffffffffffe0001p-16384",
+ "-0x1.ffffffffffffffffffffffffff80001p-970",
+ "-0x1.ffffffffffffffffffffffffffff0001p-16383",
+ UNDERFLOW_EXCEPT_DOWNWARD),
+ TEST ("0x1.fffffeffffp-127",
+ "0x1.fffffffffffff7fffp-1023",
+ "0x1.fffffffffffffffeffffp-16383",
+ "0x1.fffffffffffffffeffffp-16384",
+ "0x1.ffffffffffffffffffffffffffbffffp-970",
+ "0x1.ffffffffffffffffffffffffffff7fffp-16383",
+ UNDERFLOW_EXCEPT_UPWARD),
+ TEST ("-0x1.fffffeffffp-127",
+ "-0x1.fffffffffffff7fffp-1023",
+ "-0x1.fffffffffffffffeffffp-16383",
+ "-0x1.fffffffffffffffeffffp-16384",
+ "-0x1.ffffffffffffffffffffffffffbffffp-970",
+ "-0x1.ffffffffffffffffffffffffffff7fffp-16383",
+ UNDERFLOW_EXCEPT_DOWNWARD),
+ TEST ("0x1.ffffffp-127",
+ "0x1.fffffffffffff8p-1023",
+ "0x1.ffffffffffffffffp-16383",
+ "0x1.ffffffffffffffffp-16384",
+ "0x1.ffffffffffffffffffffffffffcp-970",
+ "0x1.ffffffffffffffffffffffffffff8p-16383",
+ UNDERFLOW_ONLY_DOWNWARD_ZERO),
+ TEST ("-0x1.ffffffp-127",
+ "-0x1.fffffffffffff8p-1023",
+ "-0x1.ffffffffffffffffp-16383",
+ "-0x1.ffffffffffffffffp-16384",
+ "-0x1.ffffffffffffffffffffffffffcp-970",
+ "-0x1.ffffffffffffffffffffffffffff8p-16383",
+ UNDERFLOW_ONLY_UPWARD_ZERO),
+ TEST ("0x1.ffffffffffp-127",
+ "0x1.fffffffffffffffffp-1023",
+ "0x1.ffffffffffffffffffffp-16383",
+ "0x1.ffffffffffffffffffffp-16384",
+ "0x1.ffffffffffffffffffffffffffffffp-970",
+ "0x1.ffffffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ONLY_DOWNWARD_ZERO),
+ TEST ("-0x1.ffffffffffp-127",
+ "-0x1.fffffffffffffffffp-1023",
+ "-0x1.ffffffffffffffffffffp-16383",
+ "-0x1.ffffffffffffffffffffp-16384",
+ "-0x1.ffffffffffffffffffffffffffffffp-970",
+ "-0x1.ffffffffffffffffffffffffffffffffp-16383",
+ UNDERFLOW_ONLY_UPWARD_ZERO),
};
/* Return whether to expect underflow from a particular testcase, in a
@@ -133,39 +347,62 @@ static bool support_underflow_exception = false;
volatile double d = DBL_MIN;
volatile double dd;
-static int
-test_in_one_mode (const char *s, enum underflow_case c, int rm,
- const char *mode_name)
+static bool
+test_got_fe_underflow (void)
{
- int result = 0;
- feclearexcept (FE_ALL_EXCEPT);
- errno = 0;
- double d = strtod (s, NULL);
- int got_errno = errno;
#ifdef FE_UNDERFLOW
- bool got_fe_underflow = fetestexcept (FE_UNDERFLOW) != 0;
+ return fetestexcept (FE_UNDERFLOW) != 0;
#else
- bool got_fe_underflow = false;
+ return false;
#endif
- printf ("strtod (%s) (%s) returned %a, errno = %d, %sunderflow exception\n",
- s, mode_name, d, got_errno, got_fe_underflow ? "" : "no ");
- bool this_expect_underflow = expect_underflow (c, rm);
- if (got_errno != 0 && got_errno != ERANGE)
- {
- puts ("FAIL: errno neither 0 nor ERANGE");
- result = 1;
- }
- else if (this_expect_underflow != (errno == ERANGE))
- {
- puts ("FAIL: underflow from errno differs from expectations");
- result = 1;
- }
- if (support_underflow_exception && got_fe_underflow != this_expect_underflow)
- {
- puts ("FAIL: underflow from exceptions differs from expectations");
- result = 1;
- }
- return result;
+}
+
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static int \
+test_strto ## FSUF (int i, int rm, const char *mode_name) \
+{ \
+ const char *s = tests[i].s_ ## FSUF; \
+ enum underflow_case c = tests[i].c; \
+ int result = 0; \
+ feclearexcept (FE_ALL_EXCEPT); \
+ errno = 0; \
+ FTYPE d = strto ## FSUF (s, NULL); \
+ int got_errno = errno; \
+ bool got_fe_underflow = test_got_fe_underflow (); \
+ char buf[FSTRLENMAX]; \
+ FTOSTR (buf, sizeof (buf), "%a", d); \
+ printf ("strto" #FSUF \
+ " (%s) (%s) returned %s, errno = %d, " \
+ "%sunderflow exception\n", \
+ s, mode_name, buf, got_errno, \
+ got_fe_underflow ? "" : "no "); \
+ bool this_expect_underflow = expect_underflow (c, rm); \
+ if (got_errno != 0 && got_errno != ERANGE) \
+ { \
+ puts ("FAIL: errno neither 0 nor ERANGE"); \
+ result = 1; \
+ } \
+ else if (this_expect_underflow != (errno == ERANGE)) \
+ { \
+ puts ("FAIL: underflow from errno differs from expectations"); \
+ result = 1; \
+ } \
+ if (support_underflow_exception \
+ && got_fe_underflow != this_expect_underflow) \
+ { \
+ puts ("FAIL: underflow from exceptions " \
+ "differs from expectations"); \
+ result = 1; \
+ } \
+ return result; \
+}
+
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
+
+static int
+test_in_one_mode (size_t i, int rm, const char *mode_name)
+{
+ return STRTOD_TEST_FOREACH (test_strto, i, rm, mode_name);
}
static int
@@ -191,12 +428,12 @@ do_test (void)
#endif
for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, fe_tonearest,
+ result |= test_in_one_mode (i, fe_tonearest,
"default rounding mode");
#ifdef FE_DOWNWARD
if (!fesetround (FE_DOWNWARD))
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_DOWNWARD,
+ result |= test_in_one_mode (i, FE_DOWNWARD,
"FE_DOWNWARD");
fesetround (save_round_mode);
}
@@ -204,7 +441,7 @@ do_test (void)
#ifdef FE_TOWARDZERO
if (!fesetround (FE_TOWARDZERO))
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_TOWARDZERO,
+ result |= test_in_one_mode (i, FE_TOWARDZERO,
"FE_TOWARDZERO");
fesetround (save_round_mode);
}
@@ -212,7 +449,7 @@ do_test (void)
#ifdef FE_UPWARD
if (!fesetround (FE_UPWARD))
{
- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_UPWARD,
+ result |= test_in_one_mode (i, FE_UPWARD,
"FE_UPWARD");
fesetround (save_round_mode);
}
diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c
index 9d6bb760fb..44ae0264f4 100644
--- a/stdlib/tst-strtod1i.c
+++ b/stdlib/tst-strtod1i.c
@@ -25,60 +25,91 @@
#include
#include
-/* Perform a few tests in a locale with thousands separators. */
-static int
-do_test (void)
-{
- static const struct
- {
- const char *loc;
- const char *str;
- double exp;
- ptrdiff_t nread;
- } tests[] =
- {
- { "de_DE.UTF-8", "1,5", 1.5, 3 },
- { "de_DE.UTF-8", "1.5", 1.0, 1 },
- { "de_DE.UTF-8", "1.500", 1500.0, 5 },
- { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
- };
-#define ntests (sizeof (tests) / sizeof (tests[0]))
- size_t n;
- int result = 0;
-
- puts ("\nLocale tests");
+#include "tst-strtod.h"
- for (n = 0; n < ntests; ++n)
- {
- double d;
- char *endp;
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
- if (setlocale (LC_ALL, tests[n].loc) == NULL)
- {
- printf ("cannot set locale %s\n", tests[n].loc);
- result = 1;
- continue;
- }
+#define ntests (sizeof (tests) / sizeof (tests[0]))
- d = __strtod_internal (tests[n].str, &endp, 1);
- if (d != tests[n].exp)
- {
- printf ("strtod(\"%s\") returns %g and not %g\n",
- tests[n].str, d, tests[n].exp);
- result = 1;
- }
- else if (endp - tests[n].str != tests[n].nread)
- {
- printf ("strtod(\"%s\") read %td bytes and not %td\n",
- tests[n].str, endp - tests[n].str, tests[n].nread);
- result = 1;
- }
- }
+/* Perform a few tests in a locale with thousands separators. */
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ static const struct \
+ { \
+ const char *loc; \
+ const char *str; \
+ FTYPE exp; \
+ ptrdiff_t nread; \
+ } tests[] = \
+ { \
+ { "de_DE.UTF-8", "1,5", 1.5 ## LSUF, 3 }, \
+ { "de_DE.UTF-8", "1.5", 1.0 ## LSUF, 1 }, \
+ { "de_DE.UTF-8", "1.500", 1500.0 ## LSUF, 5 }, \
+ { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65 ## LSUF, 26 } \
+ }; \
+ size_t n; \
+ int result = 0; \
+ \
+ puts ("\nLocale tests"); \
+ \
+ for (n = 0; n < ntests; ++n) \
+ { \
+ FTYPE d; \
+ char *endp; \
+ \
+ if (setlocale (LC_ALL, tests[n].loc) == NULL) \
+ { \
+ printf ("cannot set locale %s\n", tests[n].loc); \
+ result = 1; \
+ continue; \
+ } \
+ \
+ d = __strto ## FSUF ## _internal (tests[n].str, &endp, 1); \
+ if (d != tests[n].exp) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", d); \
+ FTOSTR (buf2, sizeof (buf2), "%g", tests[n].exp); \
+ printf ("strto" # FSUF "(\"%s\") returns %s and not %s\n", \
+ tests[n].str, buf1, buf2); \
+ result = 1; \
+ } \
+ else if (endp - tests[n].str != tests[n].nread) \
+ { \
+ printf ("strto" # FSUF "(\"%s\") read %td bytes and not %td\n", \
+ tests[n].str, endp - tests[n].str, tests[n].nread); \
+ result = 1; \
+ } \
+ } \
+ \
+ if (result == 0) \
+ puts ("all OK"); \
+ \
+ return result ? EXIT_FAILURE : EXIT_SUCCESS; \
+}
- if (result == 0)
- puts ("all OK");
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
- return result ? EXIT_FAILURE : EXIT_SUCCESS;
+static int
+do_test (void)
+{
+ return STRTOD_TEST_FOREACH (test_strto);
}
#include
diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c
index a7df82ebbd..d00bc13323 100644
--- a/stdlib/tst-strtod2.c
+++ b/stdlib/tst-strtod2.c
@@ -1,43 +1,112 @@
+#include
#include
#include
-struct test
-{
- const char *str;
- double result;
- size_t offset;
-} tests[] =
-{
- { "0xy", 0.0, 1 },
- { "0x.y", 0.0, 1 },
- { "0x0.y", 0.0, 4 },
- { "0x.0y", 0.0, 4 },
- { ".y", 0.0, 0 },
- { "0.y", 0.0, 2 },
- { ".0y", 0.0, 2 }
-};
+#include "tst-strtod.h"
+
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+struct test_strto ## FSUF \
+{ \
+ const char *str; \
+ FTYPE result; \
+ size_t offset; \
+} tests_strto ## FSUF[] = \
+{ \
+ { "0xy", 0.0 ## LSUF, 1 }, \
+ { "0x.y", 0.0 ## LSUF, 1 }, \
+ { "0x0.y", 0.0 ## LSUF, 4 }, \
+ { "0x.0y", 0.0 ## LSUF, 4 }, \
+ { ".y", 0.0 ## LSUF, 0 }, \
+ { "0.y", 0.0 ## LSUF, 2 }, \
+ { ".0y", 0.0 ## LSUF, 2 }, \
+ { "1.0e", 1.0 ## LSUF, 3 }, \
+ { "1.0e+", 1.0 ## LSUF, 3 }, \
+ { "1.0e-", 1.0 ## LSUF, 3 }, \
+ { "1.0ex", 1.0 ## LSUF, 3 }, \
+ { "1.0e+x", 1.0 ## LSUF, 3 }, \
+ { "1.0e-x", 1.0 ## LSUF, 3 }, \
+ { "0x1p", 1.0 ## LSUF, 3 }, \
+ { "0x1p+", 1.0 ## LSUF, 3 }, \
+ { "0x1p-", 1.0 ## LSUF, 3 }, \
+ { "0x1px", 1.0 ## LSUF, 3 }, \
+ { "0x1p+x", 1.0 ## LSUF, 3 }, \
+ { "0x1p-x", 1.0 ## LSUF, 3 }, \
+ { "", 0.0 ## LSUF, 0 }, \
+ { ".", 0.0 ## LSUF, 0 }, \
+ { "-", 0.0 ## LSUF, 0 }, \
+ { "-.", 0.0 ## LSUF, 0 }, \
+ { ".e", 0.0 ## LSUF, 0 }, \
+ { "-.e", 0.0 ## LSUF, 0 }, \
+ { " \t", 0.0 ## LSUF, 0 }, \
+ { " \t.", 0.0 ## LSUF, 0 }, \
+ { " \t-", 0.0 ## LSUF, 0 }, \
+ { " \t-.", 0.0 ## LSUF, 0 }, \
+ { " \t.e", 0.0 ## LSUF, 0 }, \
+ { " \t-.e", 0.0 ## LSUF, 0 }, \
+ { " \t\f\r\n\v1", 1.0 ## LSUF, 7 }, \
+ { " \t\f\r\n\v-1.5e2", -150.0 ## LSUF, 12 }, \
+ { "INFx", INFINITY, 3 }, \
+ { "infx", INFINITY, 3 }, \
+ { "INFINITx", INFINITY, 3 }, \
+ { "infinitx", INFINITY, 3 }, \
+ { "INFINITYY", INFINITY, 8 }, \
+ { "infinityy", INFINITY, 8 }, \
+ { "NANx", NAN, 3 }, \
+ { "nanx", NAN, 3 }, \
+ { "NAN(", NAN, 3 }, \
+ { "nan(", NAN, 3 }, \
+ { "NAN(x", NAN, 3 }, \
+ { "nan(x", NAN, 3 }, \
+ { "NAN(x)y", NAN, 6 }, \
+ { "nan(x)y", NAN, 6 }, \
+ { "NAN(*)y", NAN, 3 }, \
+ { "nan(*)y", NAN, 3 } \
+}; \
+ \
+static int \
+compare_strto ## FSUF (FTYPE x, FTYPE y) \
+{ \
+ if (isnan (x) && isnan (y)) \
+ return 1; \
+ return x == y; \
+} \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ for (size_t i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \
+ if (!compare_strto ## FSUF (r, tests_strto ## FSUF[i].result)) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", tests_strto ## FSUF[i].result); \
+ printf ("test %zu r = %s, expect %s\n", i, buf1, buf2); \
+ status = 1; \
+ } \
+ if (ep != tests_strto ## FSUF[i].str + tests_strto ## FSUF[i].offset) \
+ { \
+ printf ("test %zu strto" #FSUF \
+ " parsed %tu characters, expected %zu\n", \
+ i, ep - tests_strto ## FSUF[i].str, \
+ tests_strto ## FSUF[i].offset); \
+ status = 1; \
+ } \
+ } \
+ return status; \
+}
+
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
{
- int status = 0;
- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
- {
- char *ep;
- double r = strtod (tests[i].str, &ep);
- if (r != tests[i].result)
- {
- printf ("test %zu r = %g, expect %g\n", i, r, tests[i].result);
- status = 1;
- }
- if (ep != tests[i].str + tests[i].offset)
- {
- printf ("test %zu strtod parsed %tu characters, expected %zu\n",
- i, ep - tests[i].str, tests[i].offset);
- status = 1;
- }
- }
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#define TEST_FUNCTION do_test ()
diff --git a/stdlib/tst-strtod3.c b/stdlib/tst-strtod3.c
index 23abec1896..0d662d8be8 100644
--- a/stdlib/tst-strtod3.c
+++ b/stdlib/tst-strtod3.c
@@ -3,19 +3,73 @@
#include
#include
-static const struct
-{
- const char *in;
- const char *out;
- double expected;
-} tests[] =
- {
- { "000,,,e1", ",,,e1", 0.0 },
- { "000e1", "", 0.0 },
- { "000,1e1", ",1e1", 0.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#include "tst-strtod.h"
+
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ const char *out; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "000,,,e1", ",,,e1", 0.0 ## LSUF }, \
+ { "000e1", "", 0.0 ## LSUF }, \
+ { "000,1e1", ",1e1", 0.0 ## LSUF } \
+ }; \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
+ &ep, 1); \
+ \
+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \
+ i, ep, tests_strto ## FSUF[i].out); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -26,29 +80,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, 1);
-
- if (strcmp (ep, tests[i].out) != 0)
- {
- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
- i, ep, tests[i].out);
- status = 1;
- }
-
- if (r != tests[i].expected)
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#define TEST_FUNCTION do_test ()
diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c
index 6cc4e843c7..dfd3f05027 100644
--- a/stdlib/tst-strtod4.c
+++ b/stdlib/tst-strtod4.c
@@ -3,22 +3,76 @@
#include
#include
+#include "tst-strtod.h"
+
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
+
#define NNBSP "\xe2\x80\xaf"
-static const struct
-{
- const char *in;
- const char *out;
- double expected;
-} tests[] =
- {
- { "000"NNBSP"000"NNBSP"000", "", 0.0 },
- { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 },
- /* Bug 30964 */
- { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ const char *out; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "000"NNBSP"000"NNBSP"000", "", 0.0 ## LSUF }, \
+ { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 ## LSUF }, \
+ /* Bug 30964 */ \
+ { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 ## LSUF } \
+ }; \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
+ &ep, 1); \
+ \
+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \
+ i, ep, tests_strto ## FSUF[i].out); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -29,29 +83,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, 1);
-
- if (strcmp (ep, tests[i].out) != 0)
- {
- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
- i, ep, tests[i].out);
- status = 1;
- }
-
- if (r != tests[i].expected)
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#define TEST_FUNCTION do_test ()
diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5.c
index 29153ec005..7eb9b3a2d7 100644
--- a/stdlib/tst-strtod5.c
+++ b/stdlib/tst-strtod5.c
@@ -22,35 +22,75 @@
#include
#include
+#include "tst-strtod.h"
+
#define NBSP "\xc2\xa0"
-static const struct
-{
- const char *in;
- double expected;
-} tests[] =
- {
- { "0", 0.0 },
- { "000", 0.0 },
- { "-0", -0.0 },
- { "-000", -0.0 },
- { "0,", 0.0 },
- { "-0,", -0.0 },
- { "0,0", 0.0 },
- { "-0,0", -0.0 },
- { "0e-10", 0.0 },
- { "-0e-10", -0.0 },
- { "0,e-10", 0.0 },
- { "-0,e-10", -0.0 },
- { "0,0e-10", 0.0 },
- { "-0,0e-10", -0.0 },
- { "0e-1000000", 0.0 },
- { "-0e-1000000", -0.0 },
- { "0,0e-1000000", 0.0 },
- { "-0,0e-1000000", -0.0 },
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "0", 0.0 ## LSUF }, \
+ { "000", 0.0 ## LSUF }, \
+ { "-0", -0.0 ## LSUF }, \
+ { "-000", -0.0 ## LSUF }, \
+ { "0,", 0.0 ## LSUF }, \
+ { "-0,", -0.0 ## LSUF }, \
+ { "0,0", 0.0 ## LSUF }, \
+ { "-0,0", -0.0 ## LSUF }, \
+ { "0e-10", 0.0 ## LSUF }, \
+ { "-0e-10", -0.0 ## LSUF }, \
+ { "0,e-10", 0.0 ## LSUF }, \
+ { "-0,e-10", -0.0 ## LSUF }, \
+ { "0,0e-10", 0.0 ## LSUF }, \
+ { "-0,0e-10", -0.0 ## LSUF }, \
+ { "0e-1000000", 0.0 ## LSUF }, \
+ { "-0e-1000000", -0.0 ## LSUF }, \
+ { "0,0e-1000000", 0.0 ## LSUF }, \
+ { "-0,0e-1000000", -0.0 ## LSUF }, \
+ }; \
+ \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].in, &ep); \
+ \
+ if (*ep != '\0') \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected \
+ || (copysign ## CSUF (10.0 ## LSUF, r) \
+ != copysign ## CSUF (10.0 ## LSUF, \
+ tests_strto ## FSUF[i].expected))) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -61,29 +101,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = strtod (tests[i].in, &ep);
-
- if (*ep != '\0')
- {
- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
- status = 1;
- }
-
- if (r != tests[i].expected
- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#include
diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c
index ee54e3404c..136aedea68 100644
--- a/stdlib/tst-strtod5i.c
+++ b/stdlib/tst-strtod5i.c
@@ -16,52 +16,112 @@
License along with the GNU C Library; if not, see
. */
+/* Defining _LIBC_TEST ensures long double math functions are
+ declared in the headers. */
+#define _LIBC_TEST 1
#include
#include
#include
#include
#include
+#include "tst-strtod.h"
+
+/* This tests internal interfaces, which are only defined for types
+ with distinct ABIs, so disable testing for types without distinct
+ ABIs. */
+#undef IF_FLOAT32
+#define IF_FLOAT32(x)
+#undef IF_FLOAT64
+#define IF_FLOAT64(x)
+#undef IF_FLOAT32X
+#define IF_FLOAT32X(x)
+#undef IF_FLOAT64X
+#define IF_FLOAT64X(x)
+#if !__HAVE_DISTINCT_FLOAT128
+# undef IF_FLOAT128
+# define IF_FLOAT128(x)
+#endif
+
#define NNBSP "\xe2\x80\xaf"
-static const struct
-{
- const char *in;
- int group;
- double expected;
-} tests[] =
- {
- { "0", 0, 0.0 },
- { "000", 0, 0.0 },
- { "-0", 0, -0.0 },
- { "-000", 0, -0.0 },
- { "0,", 0, 0.0 },
- { "-0,", 0, -0.0 },
- { "0,0", 0, 0.0 },
- { "-0,0", 0, -0.0 },
- { "0e-10", 0, 0.0 },
- { "-0e-10", 0, -0.0 },
- { "0,e-10", 0, 0.0 },
- { "-0,e-10", 0, -0.0 },
- { "0,0e-10", 0, 0.0 },
- { "-0,0e-10", 0, -0.0 },
- { "0e-1000000", 0, 0.0 },
- { "-0e-1000000", 0, -0.0 },
- { "0,0e-1000000", 0, 0.0 },
- { "-0,0e-1000000", 0, -0.0 },
- { "0", 1, 0.0 },
- { "000", 1, 0.0 },
- { "-0", 1, -0.0 },
- { "-000", 1, -0.0 },
- { "0e-10", 1, 0.0 },
- { "-0e-10", 1, -0.0 },
- { "0e-1000000", 1, 0.0 },
- { "-0e-1000000", 1, -0.0 },
- { "000"NNBSP"000"NNBSP"000", 1, 0.0 },
- { "-000"NNBSP"000"NNBSP"000", 1, -0.0 }
- };
-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
+static const struct \
+{ \
+ const char *in; \
+ int group; \
+ FTYPE expected; \
+} tests_strto ## FSUF[] = \
+ { \
+ { "0", 0, 0.0 ## LSUF }, \
+ { "000", 0, 0.0 ## LSUF }, \
+ { "-0", 0, -0.0 ## LSUF }, \
+ { "-000", 0, -0.0 ## LSUF }, \
+ { "0,", 0, 0.0 ## LSUF }, \
+ { "-0,", 0, -0.0 ## LSUF }, \
+ { "0,0", 0, 0.0 ## LSUF }, \
+ { "-0,0", 0, -0.0 ## LSUF }, \
+ { "0e-10", 0, 0.0 ## LSUF }, \
+ { "-0e-10", 0, -0.0 ## LSUF }, \
+ { "0,e-10", 0, 0.0 ## LSUF }, \
+ { "-0,e-10", 0, -0.0 ## LSUF }, \
+ { "0,0e-10", 0, 0.0 ## LSUF }, \
+ { "-0,0e-10", 0, -0.0 ## LSUF }, \
+ { "0e-1000000", 0, 0.0 ## LSUF }, \
+ { "-0e-1000000", 0, -0.0 ## LSUF }, \
+ { "0,0e-1000000", 0, 0.0 ## LSUF }, \
+ { "-0,0e-1000000", 0, -0.0 ## LSUF }, \
+ { "0", 1, 0.0 ## LSUF }, \
+ { "000", 1, 0.0 ## LSUF }, \
+ { "-0", 1, -0.0 ## LSUF }, \
+ { "-000", 1, -0.0 ## LSUF }, \
+ { "0e-10", 1, 0.0 ## LSUF }, \
+ { "-0e-10", 1, -0.0 ## LSUF }, \
+ { "0e-1000000", 1, 0.0 ## LSUF }, \
+ { "-0e-1000000", 1, -0.0 ## LSUF }, \
+ { "000"NNBSP"000"NNBSP"000", 1, 0.0 ## LSUF }, \
+ { "-000"NNBSP"000"NNBSP"000", 1, -0.0 ## LSUF } \
+ }; \
+ \
+static int \
+test_strto ## FSUF (void) \
+{ \
+ int status = 0; \
+ \
+ for (int i = 0; \
+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
+ ++i) \
+ { \
+ char *ep; \
+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
+ &ep, \
+ tests_strto ## FSUF[i].group); \
+ \
+ if (*ep != '\0') \
+ { \
+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \
+ status = 1; \
+ } \
+ \
+ if (r != tests_strto ## FSUF[i].expected \
+ || (copysign ## CSUF (10.0 ## LSUF, r) \
+ != copysign ## CSUF (10.0 ## LSUF, \
+ tests_strto ## FSUF[i].expected))) \
+ { \
+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
+ FTOSTR (buf2, sizeof (buf2), "%g", \
+ tests_strto ## FSUF[i].expected); \
+ printf ("%d: got wrong results %s, expected %s\n", \
+ i, buf1, buf2); \
+ status = 1; \
+ } \
+ } \
+ \
+ return status; \
+}
+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
static int
do_test (void)
@@ -72,29 +132,7 @@ do_test (void)
return 1;
}
- int status = 0;
-
- for (int i = 0; i < NTESTS; ++i)
- {
- char *ep;
- double r = __strtod_internal (tests[i].in, &ep, tests[i].group);
-
- if (*ep != '\0')
- {
- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
- status = 1;
- }
-
- if (r != tests[i].expected
- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
- {
- printf ("%d: got wrong results %g, expected %g\n",
- i, r, tests[i].expected);
- status = 1;
- }
- }
-
- return status;
+ return STRTOD_TEST_FOREACH (test_strto);
}
#include
diff --git a/string/Makefile b/string/Makefile
index 8f31fa49e6..1dff405c27 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -184,6 +184,7 @@ tests := \
test-strncpy \
test-strndup \
test-strnlen \
+ test-strnlen-nonarray \
test-strpbrk \
test-strrchr \
test-strspn \
@@ -235,7 +236,10 @@ tests-unsupported += $(tests-translation)
endif
# This test allocates a lot of memory and can run for a long time.
-xtests = tst-strcoll-overflow
+xtests += tst-strcoll-overflow
+
+# This test runs for a long time.
+xtests += test-strncmp-nonarray
# This test needs libdl.
ifeq (yes,$(build-shared))
diff --git a/string/strerror_l.c b/string/strerror_l.c
index 15cce261e6..70456e5bb4 100644
--- a/string/strerror_l.c
+++ b/string/strerror_l.c
@@ -20,7 +20,7 @@
#include
#include
#include
-
+#include
static const char *
translate (const char *str, locale_t loc)
@@ -31,6 +31,12 @@ translate (const char *str, locale_t loc)
return res;
}
+static char *
+unknown_error (locale_t loc)
+{
+ return (char *) translate ("Unknown error", loc);
+}
+
/* Return a string describing the errno code in ERRNUM. */
char *
@@ -40,18 +46,25 @@ __strerror_l (int errnum, locale_t loc)
char *err = (char *) __get_errlist (errnum);
if (__glibc_unlikely (err == NULL))
{
- struct tls_internal_t *tls_internal = __glibc_tls_internal ();
- free (tls_internal->strerror_l_buf);
- if (__asprintf (&tls_internal->strerror_l_buf, "%s%d",
- translate ("Unknown error ", loc), errnum) > 0)
- err = tls_internal->strerror_l_buf;
- else
+ if (__libc_initial)
{
- /* The memory was freed above. */
- tls_internal->strerror_l_buf = NULL;
- /* Provide a fallback translation. */
- err = (char *) translate ("Unknown error", loc);
+ struct tls_internal_t *tls_internal = __glibc_tls_internal ();
+ free (tls_internal->strerror_l_buf);
+ if (__asprintf (&tls_internal->strerror_l_buf, "%s%d",
+ translate ("Unknown error ", loc), errnum) > 0)
+ err = tls_internal->strerror_l_buf;
+ else
+ {
+ /* The memory was freed above. */
+ tls_internal->strerror_l_buf = NULL;
+ /* Provide a fallback translation. */
+ err = unknown_error (loc);
+ }
}
+ else
+ /* Secondary namespaces use a different malloc, so cannot
+ participate in the buffer management. */
+ err = unknown_error (loc);
}
else
err = (char *) translate (err, loc);
diff --git a/string/strsignal.c b/string/strsignal.c
index 3114601564..d9b0365468 100644
--- a/string/strsignal.c
+++ b/string/strsignal.c
@@ -21,6 +21,7 @@
#include
#include
#include
+#include
/* Return a string describing the meaning of the signal number SIGNUM. */
char *
@@ -30,21 +31,28 @@ strsignal (int signum)
if (desc != NULL)
return _(desc);
- struct tls_internal_t *tls_internal = __glibc_tls_internal ();
- free (tls_internal->strsignal_buf);
+ if (__libc_initial)
+ {
+ struct tls_internal_t *tls_internal = __glibc_tls_internal ();
+ free (tls_internal->strsignal_buf);
- int r;
+ int r;
#ifdef SIGRTMIN
- if (signum >= SIGRTMIN && signum <= SIGRTMAX)
- r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"),
- signum - SIGRTMIN);
- else
+ if (signum >= SIGRTMIN && signum <= SIGRTMAX)
+ r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"),
+ signum - SIGRTMIN);
+ else
#endif
- r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"),
- signum);
-
- if (r == -1)
- tls_internal->strsignal_buf = NULL;
-
- return tls_internal->strsignal_buf;
+ r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"),
+ signum);
+
+ if (r >= 0)
+ return tls_internal->strsignal_buf;
+ else
+ tls_internal->strsignal_buf = NULL;
+ }
+ /* Fall through on asprintf error, and for !__libc_initial:
+ secondary namespaces use a different malloc and cannot
+ participate in the buffer management. */
+ return _("Unknown signal");
}
diff --git a/string/test-Xncmp-nonarray.c b/string/test-Xncmp-nonarray.c
new file mode 100644
index 0000000000..9f3a3ca75d
--- /dev/null
+++ b/string/test-Xncmp-nonarray.c
@@ -0,0 +1,183 @@
+/* Test non-array inputs to string comparison functions.
+ Copyright (C) 2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ . */
+
+/* This skeleton file is included from string/test-strncmp-nonarray.c and
+ wcsmbs/test-wcsncmp-nonarray.c to test that reading of the arrays stops
+ at the first null character.
+
+ TEST_IDENTIFIER must be the test function identifier. TEST_NAME is
+ the same as a string.
+
+ CHAR must be defined as the character type. */
+
+#include
+#include
+#include