1commit 6daa77104520ca992a9369bd01cccd4d98c82984
2Author: Andreas K. Hüttel <dilfridge@gentoo.org>
3Date: Sun Jul 21 19:02:10 2024 +0200
4
5 Replace advisories directory
6
7 Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
8
9diff --git a/advisories/GLIBC-SA-2023-0001 b/advisories/GLIBC-SA-2023-0001
10deleted file mode 100644
11index 3d19c91b6a..0000000000
12--- a/advisories/GLIBC-SA-2023-0001
13+++ /dev/null
14@@ -1,14 +0,0 @@
15-printf: incorrect output for integers with thousands separator and width field
16-
17-When the printf family of functions is called with a format specifier
18-that uses an <apostrophe> (enable grouping) and a minimum width
19-specifier, the resulting output could be larger than reasonably expected
20-by a caller that computed a tight bound on the buffer size. The
21-resulting larger than expected output could result in a buffer overflow
22-in the printf family of functions.
23-
24-CVE-Id: CVE-2023-25139
25-Public-Date: 2023-02-02
26-Vulnerable-Commit: e88b9f0e5cc50cab57a299dc7efe1a4eb385161d (2.37)
27-Fix-Commit: c980549cc6a1c03c23cc2fe3e7b0fe626a0364b0 (2.38)
28-Fix-Commit: 07b9521fc6369d000216b96562ff7c0ed32a16c4 (2.37-4)
29diff --git a/advisories/GLIBC-SA-2023-0002 b/advisories/GLIBC-SA-2023-0002
30deleted file mode 100644
31index 5122669a64..0000000000
32--- a/advisories/GLIBC-SA-2023-0002
33+++ /dev/null
34@@ -1,15 +0,0 @@
35-getaddrinfo: Stack read overflow in no-aaaa mode
36-
37-If the system is configured in no-aaaa mode via /etc/resolv.conf,
38-getaddrinfo is called for the AF_UNSPEC address family, and a DNS
39-response is received over TCP that is larger than 2048 bytes,
40-getaddrinfo may potentially disclose stack contents via the returned
41-address data, or crash.
42-
43-CVE-Id: CVE-2023-4527
44-Public-Date: 2023-09-12
45-Vulnerable-Commit: f282cdbe7f436c75864e5640a409a10485e9abb2 (2.36)
46-Fix-Commit: bd77dd7e73e3530203be1c52c8a29d08270cb25d (2.39)
47-Fix-Commit: 4ea972b7edd7e36610e8cde18bf7a8149d7bac4f (2.36-113)
48-Fix-Commit: b7529346025a130fee483d42178b5c118da971bb (2.37-38)
49-Fix-Commit: b25508dd774b617f99419bdc3cf2ace4560cd2d6 (2.38-19)
50diff --git a/advisories/GLIBC-SA-2023-0003 b/advisories/GLIBC-SA-2023-0003
51deleted file mode 100644
52index d3aef80348..0000000000
53--- a/advisories/GLIBC-SA-2023-0003
54+++ /dev/null
55@@ -1,15 +0,0 @@
56-getaddrinfo: Potential use-after-free
57-
58-When an NSS plugin only implements the _gethostbyname2_r and
59-_getcanonname_r callbacks, getaddrinfo could use memory that was freed
60-during buffer resizing, potentially causing a crash or read or write to
61-arbitrary memory.
62-
63-CVE-Id: CVE-2023-4806
64-Public-Date: 2023-09-12
65-Fix-Commit: 973fe93a5675c42798b2161c6f29c01b0e243994 (2.39)
66-Fix-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
67-Fix-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
68-Fix-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
69-Fix-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
70-Fix-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
71diff --git a/advisories/GLIBC-SA-2023-0004 b/advisories/GLIBC-SA-2023-0004
72deleted file mode 100644
73index 5286a7aa54..0000000000
74--- a/advisories/GLIBC-SA-2023-0004
75+++ /dev/null
76@@ -1,16 +0,0 @@
77-tunables: local privilege escalation through buffer overflow
78-
79-If a tunable of the form NAME=NAME=VAL is passed in the environment of a
80-setuid program and NAME is valid, it may result in a buffer overflow,
81-which could be exploited to achieve escalated privileges. This flaw was
82-introduced in glibc 2.34.
83-
84-CVE-Id: CVE-2023-4911
85-Public-Date: 2023-10-03
86-Vulnerable-Commit: 2ed18c5b534d9e92fc006202a5af0df6b72e7aca (2.34)
87-Fix-Commit: 1056e5b4c3f2d90ed2b4a55f96add28da2f4c8fa (2.39)
88-Fix-Commit: dcc367f148bc92e7f3778a125f7a416b093964d9 (2.34-423)
89-Fix-Commit: c84018a05aec80f5ee6f682db0da1130b0196aef (2.35-274)
90-Fix-Commit: 22955ad85186ee05834e47e665056148ca07699c (2.36-118)
91-Fix-Commit: b4e23c75aea756b4bddc4abcf27a1c6dca8b6bd3 (2.37-45)
92-Fix-Commit: 750a45a783906a19591fb8ff6b7841470f1f5701 (2.38-27)
93diff --git a/advisories/GLIBC-SA-2023-0005 b/advisories/GLIBC-SA-2023-0005
94deleted file mode 100644
95index cc4eb90b82..0000000000
96--- a/advisories/GLIBC-SA-2023-0005
97+++ /dev/null
98@@ -1,18 +0,0 @@
99-getaddrinfo: DoS due to memory leak
100-
101-The fix for CVE-2023-4806 introduced a memory leak when an application
102-calls getaddrinfo for AF_INET6 with AI_CANONNAME, AI_ALL and AI_V4MAPPED
103-flags set.
104-
105-CVE-Id: CVE-2023-5156
106-Public-Date: 2023-09-25
107-Vulnerable-Commit: e09ee267c03e3150c2c9ba28625ab130705a485e (2.34-420)
108-Vulnerable-Commit: e3ccb230a961b4797510e6a1f5f21fd9021853e7 (2.35-270)
109-Vulnerable-Commit: a9728f798ec7f05454c95637ee6581afaa9b487d (2.36-115)
110-Vulnerable-Commit: 6529a7466c935f36e9006b854d6f4e1d4876f942 (2.37-39)
111-Vulnerable-Commit: 00ae4f10b504bc4564e9f22f00907093f1ab9338 (2.38-20)
112-Fix-Commit: 8006457ab7e1cd556b919f477348a96fe88f2e49 (2.34-421)
113-Fix-Commit: 17092c0311f954e6f3c010f73ce3a78c24ac279a (2.35-272)
114-Fix-Commit: 856bac55f98dc840e7c27cfa82262b933385de90 (2.36-116)
115-Fix-Commit: 4473d1b87d04b25cdd0e0354814eeaa421328268 (2.37-42)
116-Fix-Commit: 5ee59ca371b99984232d7584fe2b1a758b4421d3 (2.38-24)
117diff --git a/advisories/GLIBC-SA-2024-0001 b/advisories/GLIBC-SA-2024-0001
118deleted file mode 100644
119index 28931c75ae..0000000000
120--- a/advisories/GLIBC-SA-2024-0001
121+++ /dev/null
122@@ -1,15 +0,0 @@
123-syslog: Heap buffer overflow in __vsyslog_internal
124-
125-__vsyslog_internal did not handle a case where printing a SYSLOG_HEADER
126-containing a long program name failed to update the required buffer
127-size, leading to the allocation and overflow of a too-small buffer on
128-the heap.
129-
130-CVE-Id: CVE-2023-6246
131-Public-Date: 2024-01-30
132-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
133-Fix-Commit: 6bd0e4efcc78f3c0115e5ea9739a1642807450da (2.39)
134-Fix-Commit: 23514c72b780f3da097ecf33a793b7ba9c2070d2 (2.38-42)
135-Fix-Commit: 97a4292aa4a2642e251472b878d0ec4c46a0e59a (2.37-57)
136-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
137-Fix-Commit: d1a83b6767f68b3cb5b4b4ea2617254acd040c82 (2.36-126)
138diff --git a/advisories/GLIBC-SA-2024-0002 b/advisories/GLIBC-SA-2024-0002
139deleted file mode 100644
140index 940bfcf2fc..0000000000
141--- a/advisories/GLIBC-SA-2024-0002
142+++ /dev/null
143@@ -1,15 +0,0 @@
144-syslog: Heap buffer overflow in __vsyslog_internal
145-
146-__vsyslog_internal used the return value of snprintf/vsnprintf to
147-calculate buffer sizes for memory allocation. If these functions (for
148-any reason) failed and returned -1, the resulting buffer would be too
149-small to hold output.
150-
151-CVE-Id: CVE-2023-6779
152-Public-Date: 2024-01-30
153-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
154-Fix-Commit: 7e5a0c286da33159d47d0122007aac016f3e02cd (2.39)
155-Fix-Commit: d0338312aace5bbfef85e03055e1212dd0e49578 (2.38-43)
156-Fix-Commit: 67062eccd9a65d7fda9976a56aeaaf6c25a80214 (2.37-58)
157-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
158-Fix-Commit: 2bc9d7c002bdac38b5c2a3f11b78e309d7765b83 (2.36-127)
159diff --git a/advisories/GLIBC-SA-2024-0003 b/advisories/GLIBC-SA-2024-0003
160deleted file mode 100644
161index b43a5150ab..0000000000
162--- a/advisories/GLIBC-SA-2024-0003
163+++ /dev/null
164@@ -1,13 +0,0 @@
165-syslog: Integer overflow in __vsyslog_internal
166-
167-__vsyslog_internal calculated a buffer size by adding two integers, but
168-did not first check if the addition would overflow.
169-
170-CVE-Id: CVE-2023-6780
171-Public-Date: 2024-01-30
172-Vulnerable-Commit: 52a5be0df411ef3ff45c10c7c308cb92993d15b1 (2.37)
173-Fix-Commit: ddf542da94caf97ff43cc2875c88749880b7259b (2.39)
174-Fix-Commit: d37c2b20a4787463d192b32041c3406c2bd91de0 (2.38-44)
175-Fix-Commit: 2b58cba076e912961ceaa5fa58588e4b10f791c0 (2.37-59)
176-Vulnerable-Commit: b0e7888d1fa2dbd2d9e1645ec8c796abf78880b9 (2.36-16)
177-Fix-Commit: b9b7d6a27aa0632f334352fa400771115b3c69b7 (2.36-128)
178diff --git a/advisories/GLIBC-SA-2024-0004 b/advisories/GLIBC-SA-2024-0004
179deleted file mode 100644
180index 08df2b3118..0000000000
181--- a/advisories/GLIBC-SA-2024-0004
182+++ /dev/null
183@@ -1,28 +0,0 @@
184-ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence
185-
186-The iconv() function in the GNU C Library versions 2.39 and older may
187-overflow the output buffer passed to it by up to 4 bytes when converting
188-strings to the ISO-2022-CN-EXT character set, which may be used to
189-crash an application or overwrite a neighbouring variable.
190-
191-ISO-2022-CN-EXT uses escape sequences to indicate character set changes
192-(as specified by RFC 1922). While the SOdesignation has the expected
193-bounds checks, neither SS2designation nor SS3designation have its;
194-allowing a write overflow of 1, 2, or 3 bytes with fixed values:
195-'$+I', '$+J', '$+K', '$+L', '$+M', or '$*H'.
196-
197-CVE-Id: CVE-2024-2961
198-Public-Date: 2024-04-17
199-Vulnerable-Commit: 755104edc75c53f4a0e7440334e944ad3c6b32fc (2.1.93-169)
200-Fix-Commit: f9dc609e06b1136bb0408be9605ce7973a767ada (2.40)
201-Fix-Commit: 31da30f23cddd36db29d5b6a1c7619361b271fb4 (2.39-31)
202-Fix-Commit: e1135387deded5d73924f6ca20c72a35dc8e1bda (2.38-66)
203-Fix-Commit: 89ce64b269a897a7780e4c73a7412016381c6ecf (2.37-89)
204-Fix-Commit: 4ed98540a7fd19f458287e783ae59c41e64df7b5 (2.36-164)
205-Fix-Commit: 36280d1ce5e245aabefb877fe4d3c6cff95dabfa (2.35-315)
206-Fix-Commit: a8b0561db4b9847ebfbfec20075697d5492a363c (2.34-459)
207-Fix-Commit: ed4f16ff6bed3037266f1fa682ebd32a18fce29c (2.33-263)
208-Fix-Commit: 682ad4c8623e611a971839990ceef00346289cc9 (2.32-140)
209-Fix-Commit: 3703c32a8d304c1ee12126134ce69be965f38000 (2.31-154)
210-
211-Reported-By: Charles Fol
212diff --git a/advisories/GLIBC-SA-2024-0005 b/advisories/GLIBC-SA-2024-0005
213deleted file mode 100644
214index a59596610a..0000000000
215--- a/advisories/GLIBC-SA-2024-0005
216+++ /dev/null
217@@ -1,22 +0,0 @@
218-nscd: Stack-based buffer overflow in netgroup cache
219-
220-If the Name Service Cache Daemon's (nscd) fixed size cache is exhausted
221-by client requests then a subsequent client request for netgroup data
222-may result in a stack-based buffer overflow. This flaw was introduced
223-in glibc 2.15 when the cache was added to nscd.
224-
225-This vulnerability is only present in the nscd binary.
226-
227-CVE-Id: CVE-2024-33599
228-Public-Date: 2024-04-23
229-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
230-Fix-Commit: 69c58d5ef9f584ea198bd00f7964d364d0e6b921 (2.31-155)
231-Fix-Commit: a77064893bfe8a701770e2f53a4d33805bc47a5a (2.32-141)
232-Fix-Commit: 5c75001a96abcd50cbdb74df24c3f013188d076e (2.33-264)
233-Fix-Commit: 52f73e5c4e29b14e79167272297977f360ae1e97 (2.34-460)
234-Fix-Commit: 7a95873543ce225376faf13bb71c43dea6d24f86 (2.35-316)
235-Fix-Commit: caa3151ca460bdd9330adeedd68c3112d97bffe4 (2.36-165)
236-Fix-Commit: f75c298e747b2b8b41b1c2f551c011a52c41bfd1 (2.37-91)
237-Fix-Commit: 5968aebb86164034b8f8421b4abab2f837a5bdaf (2.38-72)
238-Fix-Commit: 1263d583d2e28afb8be53f8d6922f0842036f35d (2.39-35)
239-Fix-Commit: 87801a8fd06db1d654eea3e4f7626ff476a9bdaa (2.40)
240diff --git a/advisories/GLIBC-SA-2024-0006 b/advisories/GLIBC-SA-2024-0006
241deleted file mode 100644
242index d44148d3d9..0000000000
243--- a/advisories/GLIBC-SA-2024-0006
244+++ /dev/null
245@@ -1,32 +0,0 @@
246-nscd: Null pointer crash after notfound response
247-
248-If the Name Service Cache Daemon's (nscd) cache fails to add a not-found
249-netgroup response to the cache, the client request can result in a null
250-pointer dereference. This flaw was introduced in glibc 2.15 when the
251-cache was added to nscd.
252-
253-This vulnerability is only present in the nscd binary.
254-
255-CVE-Id: CVE-2024-33600
256-Public-Date: 2024-04-24
257-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
258-Fix-Commit: b048a482f088e53144d26a61c390bed0210f49f2 (2.40)
259-Fix-Commit: 7835b00dbce53c3c87bbbb1754a95fb5e58187aa (2.40)
260-Fix-Commit: c99f886de54446cd4447db6b44be93dabbdc2f8b (2.39-37)
261-Fix-Commit: 5a508e0b508c8ad53bd0d2fb48fd71b242626341 (2.39-36)
262-Fix-Commit: 2ae9446c1b7a3064743b4a51c0bbae668ee43e4c (2.38-74)
263-Fix-Commit: 541ea5172aa658c4bd5c6c6d6fd13903c3d5bb0a (2.38-73)
264-Fix-Commit: a8070b31043c7585c36ba68a74298c4f7af075c3 (2.37-93)
265-Fix-Commit: 5eea50c4402e39588de98aa1d4469a79774703d4 (2.37-92)
266-Fix-Commit: f205b3af56740e3b014915b1bd3b162afe3407ef (2.36-167)
267-Fix-Commit: c34f470a615b136170abd16142da5dd0c024f7d1 (2.36-166)
268-Fix-Commit: bafadc589fbe21ae330e8c2af74db9da44a17660 (2.35-318)
269-Fix-Commit: 4370bef52b0f3f3652c6aa13d7a9bb3ac079746d (2.35-317)
270-Fix-Commit: 1f94122289a9bf7dba573f5d60327aaa2b85cf2e (2.34-462)
271-Fix-Commit: 966d6ac9e40222b84bb21674cc4f83c8d72a5a26 (2.34-461)
272-Fix-Commit: e3eef1b8fbdd3a7917af466ca9c4b7477251ca79 (2.33-266)
273-Fix-Commit: f20a8d696b13c6261b52a6434899121f8b19d5a7 (2.33-265)
274-Fix-Commit: be602180146de37582a3da3a0caa4b719645de9c (2.32-143)
275-Fix-Commit: 394eae338199078b7961b051c191539870742d7b (2.32-142)
276-Fix-Commit: 8d7949183760170c61e55def723c1d8050187874 (2.31-157)
277-Fix-Commit: 304ce5fe466c4762b21b36c26926a4657b59b53e (2.31-156)
278diff --git a/advisories/GLIBC-SA-2024-0007 b/advisories/GLIBC-SA-2024-0007
279deleted file mode 100644
280index b6928fa27a..0000000000
281--- a/advisories/GLIBC-SA-2024-0007
282+++ /dev/null
283@@ -1,28 +0,0 @@
284-nscd: netgroup cache may terminate daemon on memory allocation failure
285-
286-The Name Service Cache Daemon's (nscd) netgroup cache uses xmalloc or
287-xrealloc and these functions may terminate the process due to a memory
288-allocation failure resulting in a denial of service to the clients. The
289-flaw was introduced in glibc 2.15 when the cache was added to nscd.
290-
291-This vulnerability is only present in the nscd binary.
292-
293-Subsequent refactoring of the netgroup cache only added more uses of
294-xmalloc and xrealloc. Uses of xmalloc and xrealloc in other parts of
295-nscd only occur during startup of the daemon and so are not affected by
296-client requests that could trigger an out of memory followed by
297-termination.
298-
299-CVE-Id: CVE-2024-33601
300-Public-Date: 2024-04-24
301-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
302-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40)
303-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38)
304-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75)
305-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94)
306-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168)
307-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319)
308-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463)
309-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267)
310-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144)
311-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158)
312diff --git a/advisories/GLIBC-SA-2024-0008 b/advisories/GLIBC-SA-2024-0008
313deleted file mode 100644
314index d93e2a6f0b..0000000000
315--- a/advisories/GLIBC-SA-2024-0008
316+++ /dev/null
317@@ -1,26 +0,0 @@
318-nscd: netgroup cache assumes NSS callback uses in-buffer strings
319-
320-The Name Service Cache Daemon's (nscd) netgroup cache can corrupt memory
321-when the NSS callback does not store all strings in the provided buffer.
322-The flaw was introduced in glibc 2.15 when the cache was added to nscd.
323-
324-This vulnerability is only present in the nscd binary.
325-
326-There is no guarantee from the NSS callback API that the returned
327-strings are all within the buffer. However, the netgroup cache code
328-assumes that the NSS callback uses in-buffer strings and if it doesn't
329-the buffer resizing logic could lead to potential memory corruption.
330-
331-CVE-Id: CVE-2024-33602
332-Public-Date: 2024-04-24
333-Vulnerable-Commit: 684ae515993269277448150a1ca70db3b94aa5bd (2.15)
334-Fix-Commit: c04a21e050d64a1193a6daab872bca2528bda44b (2.40)
335-Fix-Commit: a9a8d3eebb145779a18d90e3966009a1daa63cd8 (2.39-38)
336-Fix-Commit: 71af8ca864345d39b746d5cee84b94b430fad5db (2.38-75)
337-Fix-Commit: 6e106dc214d6a033a4e945d1c6cf58061f1c5f1f (2.37-94)
338-Fix-Commit: b6742463694b1dfdd5120b91ee21cf05d15ec2e2 (2.36-168)
339-Fix-Commit: 7a5864cac60e06000394128a5a2817b03542f5a3 (2.35-319)
340-Fix-Commit: 86f1d5f4129c373ac6fb6df5bcf38273838843cb (2.34-463)
341-Fix-Commit: 4d27d4b9a188786fc6a56745506cec2acfc51f83 (2.33-267)
342-Fix-Commit: 3ed195a8ec89da281e3c4bf887a13d281b72d8f4 (2.32-144)
343-Fix-Commit: bbf5a58ccb55679217f94de706164d15372fbbc0 (2.31-158)
344diff --git a/advisories/README b/advisories/README
345deleted file mode 100644
346index b8f8a829ca..0000000000
347--- a/advisories/README
348+++ /dev/null
349@@ -1,77 +0,0 @@
350-GNU C Library Security Advisory Format
351-======================================
352-
353-Security advisories in this directory follow a simple git commit log
354-format, with a heading and free-format description augmented with tags
355-to allow parsing key information. References to code changes are
356-specific to the glibc repository and follow a specific format:
357-
358- Tag-name: <commit-ref> (release-version)
359-
360-The <commit-ref> indicates a specific commit in the repository. The
361-release-version indicates the publicly consumable release in which this
362-commit is known to exist. The release-version is derived from the
363-git-describe format, (i.e. stripped out from glibc-2.34.NNN-gxxxx) and
364-is of the form 2.34-NNN. If the -NNN suffix is absent, it means that
365-the change is in that release tarball, otherwise the change is on the
366-release/2.YY/master branch and not in any released tarball.
367-
368-The following tags are currently being used:
369-
370-CVE-Id:
371-This is the CVE-Id assigned under the CVE Program
372-(https://www.cve.org/).
373-
374-Public-Date:
375-The date this issue became publicly known.
376-
377-Vulnerable-Commit:
378-The commit that introduced this vulnerability. There could be multiple
379-entries, one for each release branch in the glibc repository; the
380-release-version portion of this tag should tell you which branch this is
381-on.
382-
383-Fix-Commit:
384-The commit that fixed this vulnerability. There could be multiple
385-entries for each release branch in the glibc repository, indicating that
386-all of those commits contributed to fixing that issue in each of those
387-branches.
388-
389-Reported-By:
390-The entity that reported this issue. There could be multiple entries, one for
391-each reporter.
392-
393-Adding an Advisory
394-------------------
395-
396-An advisory for a CVE needs to be added on the master branch in two steps:
397-
398-1. Add the text of the advisory without any Fix-Commit tags along with
399- the fix for the CVE. Add the Vulnerable-Commit tag, if applicable.
400- The advisories directory does not exist in release branches, so keep
401- the advisory text commit distinct from the code changes, to ease
402- backports. Ask for the GLIBC-SA advisory number from the security
403- team.
404-
405-2. Finish all backports on release branches and then back on the msater
406- branch, add all commit refs to the advisory using the Fix-Commit
407- tags. Don't bother adding the release-version subscript since the
408- next step will overwrite it.
409-
410-3. Run the process-advisories.sh script in the scripts directory on the
411- advisory:
412-
413- scripts/process-advisories.sh update GLIBC-SA-YYYY-NNNN
414-
415- (replace YYYY-NNNN with the actual advisory number).
416-
417-4. Verify the updated advisory and push the result.
418-
419-Getting a NEWS snippet from advisories
420---------------------------------------
421-
422-Run:
423-
424- scripts/process-advisories.sh news
425-
426-and copy the content into the NEWS file.
427
428commit 8bbb8d7b16cae777eed06bc9d2e059fc00be24e9
429Author: Florian Weimer <fweimer@redhat.com>
430Date: Wed Jul 24 12:06:47 2024 +0200
431
432 resolv: Allow short error responses to match any query (bug 31890)
433
434 Reviewed-by: DJ Delorie <dj@redhat.com>
435 (cherry picked from commit 691a3b2e9bfaba842e46a5ccb7f5e6ea144c3ade)
436
437diff --git a/NEWS b/NEWS
438index 31281ac408..66b755ed34 100644
439--- a/NEWS
440+++ b/NEWS
441@@ -5,6 +5,12 @@ See the end for copying conditions.
442 Please send GNU C library bug reports via <https://sourceware.org/bugzilla/>
443 using `glibc' in the "product" field.
444
445+Version 2.41
446+
447+The following bugs are resolved with this release:
448+
449+ [31890] resolv: Allow short error responses to match any DNS query
450+
451 Version 2.40
452
453 Major new features:
454diff --git a/resolv/Makefile b/resolv/Makefile
455index 5f44f5896b..d927e337d9 100644
456--- a/resolv/Makefile
457+++ b/resolv/Makefile
458@@ -106,6 +106,7 @@ tests += \
459 tst-resolv-nondecimal \
460 tst-resolv-res_init-multi \
461 tst-resolv-search \
462+ tst-resolv-short-response \
463 tst-resolv-trailing \
464
465 # This test calls __res_context_send directly, which is not exported
466@@ -299,6 +300,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library)
467 $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
468 $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library)
469 $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
470+$(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \
471+ $(shared-thread-library)
472 $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library)
473 $(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library)
474 $(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \
475diff --git a/resolv/res_send.c b/resolv/res_send.c
476index ea7cf192b2..572e72c32f 100644
477--- a/resolv/res_send.c
478+++ b/resolv/res_send.c
479@@ -1199,19 +1199,30 @@ send_dg(res_state statp,
480 }
481
482 /* Check for the correct header layout and a matching
483- question. */
484+ question. Some recursive resolvers send REFUSED
485+ without copying back the question section
486+ (producing a response that is only HFIXEDSZ bytes
487+ long). Skip query matching in this case. */
488+ bool thisansp_error = (anhp->rcode == SERVFAIL ||
489+ anhp->rcode == NOTIMP ||
490+ anhp->rcode == REFUSED);
491+ bool skip_query_match = (*thisresplenp == HFIXEDSZ
492+ && ntohs (anhp->qdcount) == 0
493+ && thisansp_error);
494 int matching_query = 0; /* Default to no matching query. */
495 if (!recvresp1
496 && anhp->id == hp->id
497- && __libc_res_queriesmatch (buf, buf + buflen,
498- *thisansp,
499- *thisansp + *thisanssizp))
500+ && (skip_query_match
501+ || __libc_res_queriesmatch (buf, buf + buflen,
502+ *thisansp,
503+ *thisansp + *thisanssizp)))
504 matching_query = 1;
505 if (!recvresp2
506 && anhp->id == hp2->id
507- && __libc_res_queriesmatch (buf2, buf2 + buflen2,
508- *thisansp,
509- *thisansp + *thisanssizp))
510+ && (skip_query_match
511+ || __libc_res_queriesmatch (buf2, buf2 + buflen2,
512+ *thisansp,
513+ *thisansp + *thisanssizp)))
514 matching_query = 2;
515 if (matching_query == 0)
516 /* Spurious UDP packet. Drop it and continue
517@@ -1221,9 +1232,7 @@ send_dg(res_state statp,
518 goto wait;
519 }
520
521- if (anhp->rcode == SERVFAIL ||
522- anhp->rcode == NOTIMP ||
523- anhp->rcode == REFUSED) {
524+ if (thisansp_error) {
525 next_ns:
526 if (recvresp1 || (buf2 != NULL && recvresp2)) {
527 *resplen2 = 0;
528diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c
529new file mode 100644
530index 0000000000..cf1e39876f
531--- /dev/null
532+++ b/resolv/tst-resolv-short-response.c
533@@ -0,0 +1,112 @@
534+/* Test for spurious timeouts with short 12-byte responses (bug 31890).
535+ Copyright (C) 2024 Free Software Foundation, Inc.
536+ This file is part of the GNU C Library.
537+
538+ The GNU C Library is free software; you can redistribute it and/or
539+ modify it under the terms of the GNU Lesser General Public
540+ License as published by the Free Software Foundation; either
541+ version 2.1 of the License, or (at your option) any later version.
542+
543+ The GNU C Library is distributed in the hope that it will be useful,
544+ but WITHOUT ANY WARRANTY; without even the implied warranty of
545+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
546+ Lesser General Public License for more details.
547+
548+ You should have received a copy of the GNU Lesser General Public
549+ License along with the GNU C Library; if not, see
550+ <https://www.gnu.org/licenses/>. */
551+
552+#include <resolv.h>
553+#include <support/check.h>
554+#include <support/resolv_test.h>
555+#include <support/check_nss.h>
556+
557+/* The rcode in the initial response. */
558+static volatile int rcode;
559+
560+static void
561+response (const struct resolv_response_context *ctx,
562+ struct resolv_response_builder *b,
563+ const char *qname, uint16_t qclass, uint16_t qtype)
564+{
565+ switch (ctx->server_index)
566+ {
567+ case 0:
568+ /* First server times out. */
569+ struct resolv_response_flags flags = {.rcode = rcode};
570+ resolv_response_init (b, flags);
571+ break;
572+ case 1:
573+ /* Second server sends reply. */
574+ resolv_response_init (b, (struct resolv_response_flags) {});
575+ resolv_response_add_question (b, qname, qclass, qtype);
576+ resolv_response_section (b, ns_s_an);
577+ resolv_response_open_record (b, qname, qclass, qtype, 0);
578+ switch (qtype)
579+ {
580+ case T_A:
581+ {
582+ char ipv4[4] = {192, 0, 2, 17};
583+ resolv_response_add_data (b, &ipv4, sizeof (ipv4));
584+ }
585+ break;
586+ case T_AAAA:
587+ {
588+ char ipv6[16]
589+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
590+ resolv_response_add_data (b, &ipv6, sizeof (ipv6));
591+ }
592+ break;
593+ default:
594+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype);
595+ }
596+ resolv_response_close_record (b);
597+ break;
598+ default:
599+ FAIL_EXIT1 ("unexpected query to server %d", ctx->server_index);
600+ }
601+}
602+
603+static void
604+check_one (void)
605+{
606+
607+ /* The buggy 1-second query timeout results in 30 seconds of delay,
608+ which triggers a test timeout failure. */
609+ for (int i = 0; i < 10; ++i)
610+ {
611+ check_hostent ("www.example", gethostbyname ("www.example"),
612+ "name: www.example\n"
613+ "address: 192.0.2.17\n");
614+ check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6),
615+ "name: www.example\n"
616+ "address: 2001:db8::1\n");
617+ }
618+}
619+
620+static int
621+do_test (void)
622+{
623+ struct resolv_test *aux = resolv_test_start
624+ ((struct resolv_redirect_config)
625+ {
626+ .response_callback = response,
627+ });
628+
629+ _res.options |= RES_SNGLKUP;
630+
631+ rcode = 2; /* SERVFAIL. */
632+ check_one ();
633+
634+ rcode = 4; /* NOTIMP. */
635+ check_one ();
636+
637+ rcode = 5; /* REFUSED. */
638+ check_one ();
639+
640+ resolv_test_end (aux);
641+
642+ return 0;
643+}
644+
645+#include <support/test-driver.c>
646
647commit ef141426630da0946f0af8732eddce9b9a52b2d3
648Author: Florian Weimer <fweimer@redhat.com>
649Date: Wed Jul 24 12:06:47 2024 +0200
650
651 resolv: Do not wait for non-existing second DNS response after error (bug 30081)
652
653 In single-request mode, there is no second response after an error
654 because the second query has not been sent yet. Waiting for it
655 introduces an unnecessary timeout.
656
657 Reviewed-by: DJ Delorie <dj@redhat.com>
658 (cherry picked from commit af625987d619388a100b153520d3ee308bda9889)
659
660diff --git a/NEWS b/NEWS
661index 66b755ed34..4d7100b21c 100644
662--- a/NEWS
663+++ b/NEWS
664@@ -9,6 +9,7 @@ Version 2.41
665
666 The following bugs are resolved with this release:
667
668+ [30081] resolv: Do not wait for non-existing second DNS response after error
669 [31890] resolv: Allow short error responses to match any DNS query
670
671 Version 2.40
672diff --git a/resolv/Makefile b/resolv/Makefile
673index d927e337d9..abff7fc007 100644
674--- a/resolv/Makefile
675+++ b/resolv/Makefile
676@@ -106,6 +106,7 @@ tests += \
677 tst-resolv-nondecimal \
678 tst-resolv-res_init-multi \
679 tst-resolv-search \
680+ tst-resolv-semi-failure \
681 tst-resolv-short-response \
682 tst-resolv-trailing \
683
684@@ -300,6 +301,8 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library)
685 $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
686 $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library)
687 $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
688+$(objpfx)tst-resolv-semi-failure: $(objpfx)libresolv.so \
689+ $(shared-thread-library)
690 $(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \
691 $(shared-thread-library)
692 $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library)
693diff --git a/resolv/res_send.c b/resolv/res_send.c
694index 572e72c32f..9c77613f37 100644
695--- a/resolv/res_send.c
696+++ b/resolv/res_send.c
697@@ -1238,7 +1238,7 @@ send_dg(res_state statp,
698 *resplen2 = 0;
699 return resplen;
700 }
701- if (buf2 != NULL)
702+ if (buf2 != NULL && !single_request)
703 {
704 /* No data from the first reply. */
705 resplen = 0;
706diff --git a/resolv/tst-resolv-semi-failure.c b/resolv/tst-resolv-semi-failure.c
707new file mode 100644
708index 0000000000..aa9798b5a7
709--- /dev/null
710+++ b/resolv/tst-resolv-semi-failure.c
711@@ -0,0 +1,133 @@
712+/* Test parallel failure/success responses (bug 30081).
713+ Copyright (C) 2024 Free Software Foundation, Inc.
714+ This file is part of the GNU C Library.
715+
716+ The GNU C Library is free software; you can redistribute it and/or
717+ modify it under the terms of the GNU Lesser General Public
718+ License as published by the Free Software Foundation; either
719+ version 2.1 of the License, or (at your option) any later version.
720+
721+ The GNU C Library is distributed in the hope that it will be useful,
722+ but WITHOUT ANY WARRANTY; without even the implied warranty of
723+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
724+ Lesser General Public License for more details.
725+
726+ You should have received a copy of the GNU Lesser General Public
727+ License along with the GNU C Library; if not, see
728+ <https://www.gnu.org/licenses/>. */
729+
730+#include <resolv.h>
731+#include <support/check.h>
732+#include <support/resolv_test.h>
733+#include <support/check_nss.h>
734+
735+/* The rcode in the initial response. */
736+static volatile int rcode;
737+
738+/* Whether to fail the initial A query (!fail_aaaa) or the initial
739+ AAAA query (fail_aaaa). */
740+static volatile bool fail_aaaa;
741+
742+static void
743+response (const struct resolv_response_context *ctx,
744+ struct resolv_response_builder *b,
745+ const char *qname, uint16_t qclass, uint16_t qtype)
746+{
747+ /* Handle the failing query. */
748+ if ((fail_aaaa && qtype == T_AAAA) && ctx->server_index == 0)
749+ {
750+ struct resolv_response_flags flags = {.rcode = rcode};
751+ resolv_response_init (b, flags);
752+ return;
753+ }
754+
755+ /* Otherwise produce a response. */
756+ resolv_response_init (b, (struct resolv_response_flags) {});
757+ resolv_response_add_question (b, qname, qclass, qtype);
758+ resolv_response_section (b, ns_s_an);
759+ resolv_response_open_record (b, qname, qclass, qtype, 0);
760+ switch (qtype)
761+ {
762+ case T_A:
763+ {
764+ char ipv4[4] = {192, 0, 2, 17};
765+ resolv_response_add_data (b, &ipv4, sizeof (ipv4));
766+ }
767+ break;
768+ case T_AAAA:
769+ {
770+ char ipv6[16]
771+ = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
772+ resolv_response_add_data (b, &ipv6, sizeof (ipv6));
773+ }
774+ break;
775+ default:
776+ FAIL_EXIT1 ("unexpected TYPE%d query", qtype);
777+ }
778+ resolv_response_close_record (b);
779+}
780+
781+static void
782+check_one (void)
783+{
784+
785+ /* The buggy 1-second query timeout results in 30 seconds of delay,
786+ which triggers are test timeout failure. */
787+ for (int i = 0; i < 30; ++i)
788+ {
789+ static const struct addrinfo hints =
790+ {
791+ .ai_family = AF_UNSPEC,
792+ .ai_socktype = SOCK_STREAM,
793+ };
794+ struct addrinfo *ai;
795+ int ret = getaddrinfo ("www.example", "80", &hints, &ai);
796+ const char *expected;
797+ if (ret == 0 && ai->ai_next != NULL)
798+ expected = ("address: STREAM/TCP 192.0.2.17 80\n"
799+ "address: STREAM/TCP 2001:db8::1 80\n");
800+ else
801+ /* Only one response because the AAAA lookup failure is
802+ treated as an ignoreable error. */
803+ expected = "address: STREAM/TCP 192.0.2.17 80\n";
804+ check_addrinfo ("www.example", ai, ret, expected);
805+ if (ret == 0)
806+ freeaddrinfo (ai);
807+ }
808+}
809+
810+static int
811+do_test (void)
812+{
813+ for (int do_single_lookup = 0; do_single_lookup < 2; ++do_single_lookup)
814+ {
815+ struct resolv_test *aux = resolv_test_start
816+ ((struct resolv_redirect_config)
817+ {
818+ .response_callback = response,
819+ });
820+
821+ if (do_single_lookup)
822+ _res.options |= RES_SNGLKUP;
823+
824+ for (int do_fail_aaaa = 0; do_fail_aaaa < 2; ++do_fail_aaaa)
825+ {
826+ fail_aaaa = do_fail_aaaa;
827+
828+ rcode = 2; /* SERVFAIL. */
829+ check_one ();
830+
831+ rcode = 4; /* NOTIMP. */
832+ check_one ();
833+
834+ rcode = 5; /* REFUSED. */
835+ check_one ();
836+ }
837+
838+ resolv_test_end (aux);
839+ }
840+
841+ return 0;
842+}
843+
844+#include <support/test-driver.c>
845diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c
846index cf1e39876f..be354ae1c7 100644
847--- a/resolv/tst-resolv-short-response.c
848+++ b/resolv/tst-resolv-short-response.c
849@@ -81,6 +81,18 @@ check_one (void)
850 check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6),
851 "name: www.example\n"
852 "address: 2001:db8::1\n");
853+ static const struct addrinfo hints =
854+ {
855+ .ai_family = AF_UNSPEC,
856+ .ai_socktype = SOCK_STREAM,
857+ };
858+ struct addrinfo *ai;
859+ int ret = getaddrinfo ("www.example", "80", &hints, &ai);
860+ check_addrinfo ("www.example", ai, ret,
861+ "address: STREAM/TCP 192.0.2.17 80\n"
862+ "address: STREAM/TCP 2001:db8::1 80\n");
863+ if (ret == 0)
864+ freeaddrinfo (ai);
865 }
866 }
867
868
869commit b6aeba2de157ba0cdc8fb0aed67b632b3490f383
870Author: Florian Weimer <fweimer@redhat.com>
871Date: Wed Jul 24 12:50:17 2024 +0200
872
873 manual: Do not mention STATIC_TLS in dynamic linker hardening recommendations
874
875 The current toolchain does not consistently generate it, and
876 glibc does not use it.
877
878 Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
879 (cherry picked from commit 90842d3980064ef410b998b22170ad409b76b9fd)
880
881diff --git a/manual/dynlink.texi b/manual/dynlink.texi
882index 03565d4fb0..1500a53de6 100644
883--- a/manual/dynlink.texi
884+++ b/manual/dynlink.texi
885@@ -993,21 +993,21 @@ The dynamic segment should also mention @code{BIND_NOW} on the
886 enough).
887
888 @item
889-For shared objects (not main programs), if the program header has a
890-@code{PT_TLS} segment, the dynamic segment (as shown by @samp{readelf
891--dW}) should contain the @code{STATIC_TLS} flag on the @code{FLAGS}
892-line.
893-
894-If @code{STATIC_TLS} is missing in shared objects, ensure that the
895-appropriate relocations for GNU2 TLS descriptors are used (for example,
896+Ensure that only static TLS relocations (thread-pointer relative offset
897+locations) are used, for example @code{R_AARCH64_TLS_TPREL} and
898+@code{X86_64_TPOFF64}. As the second-best option, and only if
899+compatibility with non-hardened applications using @code{dlopen} is
900+needed, GNU2 TLS descriptor relocations can be used (for example,
901 @code{R_AARCH64_TLSDESC} or @code{R_X86_64_TLSDESC}).
902
903 @item
904-There should not be a reference to the symbols @code{__tls_get_addr},
905-@code{__tls_get_offset}, @code{__tls_get_addr_opt} in the dynamic symbol
906-table (in the @samp{readelf -sDW} output). Thread-local storage must be
907-accessed using the initial-exec (static) model, or using GNU2 TLS
908-descriptors.
909+There should not be references to the traditional TLS function symbols
910+@code{__tls_get_addr}, @code{__tls_get_offset},
911+@code{__tls_get_addr_opt} in the dynamic symbol table (in the
912+@samp{readelf -sDW} output). Supporting global dynamic TLS relocations
913+(such as @code{R_AARCH64_TLS_DTPMOD}, @code{R_AARCH64_TLS_DTPREL},
914+@code{R_X86_64_DTPMOD64}, @code{R_X86_64_DTPOFF64}) should not be used,
915+either.
916
917 @item
918 Likewise, the functions @code{dlopen}, @code{dlmopen}, @code{dlclose}
919
920commit 145b5886379c8de4f0a1bca3556a4c3d7b6c24b2
921Author: Florian Weimer <fweimer@redhat.com>
922Date: Wed Jul 24 13:42:16 2024 +0200
923
924 Fix version number in NEWS file
925
926diff --git a/NEWS b/NEWS
927index 4d7100b21c..6b62f55658 100644
928--- a/NEWS
929+++ b/NEWS
930@@ -5,7 +5,7 @@ See the end for copying conditions.
931 Please send GNU C library bug reports via <https://sourceware.org/bugzilla/>
932 using `glibc' in the "product" field.
933
934-Version 2.41
935+Version 2.40.1
936
937 The following bugs are resolved with this release:
938
939
940commit 2aebac5e158277d852b87b0cbd4af2b2d10ac387
941Author: Miguel Martín <mmartinv@redhat.com>
942Date: Tue Jul 16 17:14:56 2024 +0200
943
944 malloc: avoid global locks in tst-aligned_alloc-lib.c
945
946 Make sure the DSO used by aligned_alloc/calloc/malloc tests does not get
947 a global lock on multithreaded tests.
948 Reviewed-by: Arjun Shankar <arjun@redhat.com>
949
950 (cherry picked from commit 9a27b566b2048f599048f2f4afe1cce06c4ef43d)
951
952diff --git a/malloc/tst-aligned_alloc-lib.c b/malloc/tst-aligned_alloc-lib.c
953index 0205df5acf..9ef1f839c1 100644
954--- a/malloc/tst-aligned_alloc-lib.c
955+++ b/malloc/tst-aligned_alloc-lib.c
956@@ -17,37 +17,38 @@
957 License along with the GNU C Library; see the file COPYING.LIB. If
958 not, see <https://www.gnu.org/licenses/>. */
959
960-#include <array_length.h>
961 #include <libc-symbols.h>
962 #include <stdlib.h>
963+#include <time.h>
964
965 extern void *__libc_malloc (size_t size);
966 extern void *__libc_calloc (size_t n, size_t size);
967
968+__thread unsigned int seed = 0;
969+
970 int aligned_alloc_count = 0;
971 int libc_malloc_count = 0;
972 int libc_calloc_count = 0;
973
974-/* Get a random alignment value. Biased towards the smaller values. Must be
975- a power of 2. */
976-static size_t get_random_alignment (void)
977-{
978- size_t aligns[] = {
979- 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384
980- };
981-
982- return aligns[random () % array_length (aligns)];
983-}
984-
985-static void *get_random_alloc (size_t size)
986+static void *
987+get_random_alloc (size_t size)
988 {
989 void *retval;
990 size_t align;
991+ struct timespec tp;
992+
993+ if (seed == 0)
994+ {
995+ clock_gettime (CLOCK_REALTIME, &tp);
996+ seed = tp.tv_nsec;
997+ }
998
999- switch (random() % 3)
1000- {
1001+ switch (rand_r (&seed) % 3)
1002+ {
1003 case 1:
1004- align = get_random_alignment ();
1005+ /* Get a random alignment value. Biased towards the smaller
1006+ * values up to 16384. Must be a power of 2. */
1007+ align = 1 << rand_r (&seed) % 15;
1008 retval = aligned_alloc (align, size);
1009 aligned_alloc_count++;
1010 break;
1011@@ -59,13 +60,13 @@ static void *get_random_alloc (size_t size)
1012 retval = __libc_malloc (size);
1013 libc_malloc_count++;
1014 break;
1015- }
1016+ }
1017
1018 return retval;
1019 }
1020
1021-
1022-void * __random_malloc (size_t size)
1023+void *
1024+__random_malloc (size_t size)
1025 {
1026 return get_random_alloc (size);
1027 }
1028
1029commit 5d2a931a8167a288374c3a38dc10fe0492ab5ffe
1030Author: Miguel Martín <mmartinv@redhat.com>
1031Date: Tue Jul 16 17:14:57 2024 +0200
1032
1033 malloc: add multi-threaded tests for aligned_alloc/calloc/malloc
1034
1035 Improve aligned_alloc/calloc/malloc test coverage by adding
1036 multi-threaded tests with random memory allocations and with/without
1037 cross-thread memory deallocations.
1038
1039 Perform a number of memory allocation calls with random sizes limited
1040 to 0xffff.
1041
1042 Use the existing DSO ('malloc/tst-aligned_alloc-lib.c') to randomize
1043 allocator selection.
1044
1045 The multi-threaded allocation/deallocation is staged as described below:
1046
1047 - Stage 1: Half of the threads will be allocating memory and the
1048 other half will be waiting for them to finish the allocation.
1049 - Stage 2: Half of the threads will be allocating memory and the
1050 other half will be deallocating memory.
1051 - Stage 3: Half of the threads will be deallocating memory and the
1052 second half waiting on them to finish.
1053
1054 Add 'malloc/tst-aligned-alloc-random-thread.c' where each thread will
1055 deallocate only the memory that was previously allocated by itself.
1056
1057 Add 'malloc/tst-aligned-alloc-random-thread-cross.c' where each thread
1058 will deallocate memory that was previously allocated by another thread.
1059
1060 The intention is to be able to utilize existing malloc testing to ensure
1061 that similar allocation APIs are also exposed to the same rigors.
1062 Reviewed-by: Arjun Shankar <arjun@redhat.com>
1063
1064 (cherry picked from commit b0fbcb7d0051a68baf26b2aed51a8a31c34d68e5)
1065
1066diff --git a/malloc/Makefile b/malloc/Makefile
1067index 02aff1bd1d..98d507a6eb 100644
1068--- a/malloc/Makefile
1069+++ b/malloc/Makefile
1070@@ -28,6 +28,8 @@ tests := \
1071 mallocbug \
1072 tst-aligned-alloc \
1073 tst-aligned-alloc-random \
1074+ tst-aligned-alloc-random-thread \
1075+ tst-aligned-alloc-random-thread-cross \
1076 tst-alloc_buffer \
1077 tst-calloc \
1078 tst-free-errno \
1079@@ -151,6 +153,8 @@ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes)
1080 # the tests expect specific internal behavior that is changed due to linking to
1081 # libmcheck.a.
1082 tests-exclude-mcheck = \
1083+ tst-aligned-alloc-random-thread \
1084+ tst-aligned-alloc-random-thread-cross \
1085 tst-compathooks-off \
1086 tst-compathooks-on \
1087 tst-malloc-backtrace \
1088@@ -415,7 +419,11 @@ $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so
1089 $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so
1090
1091 $(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
1092+$(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so
1093+$(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so
1094 $(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so
1095
1096 tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
1097+tst-aligned-alloc-random-thread-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
1098+tst-aligned-alloc-random-thread-cross-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
1099 tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so
1100diff --git a/malloc/tst-aligned-alloc-random-thread-cross.c b/malloc/tst-aligned-alloc-random-thread-cross.c
1101new file mode 100644
1102index 0000000000..360ecc56ee
1103--- /dev/null
1104+++ b/malloc/tst-aligned-alloc-random-thread-cross.c
1105@@ -0,0 +1,19 @@
1106+/* multi-threaded memory allocation and cross-thread deallocation test.
1107+ Copyright (C) 2024 Free Software Foundation, Inc.
1108+ This file is part of the GNU C Library.
1109+
1110+ The GNU C Library is free software; you can redistribute it and/or
1111+ modify it under the terms of the GNU Lesser General Public License as
1112+ published by the Free Software Foundation; either version 2.1 of the
1113+ License, or (at your option) any later version.
1114+
1115+ The GNU C Library is distributed in the hope that it will be useful,
1116+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1117+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1118+ Lesser General Public License for more details.
1119+
1120+ You should have received a copy of the GNU Lesser General Public
1121+ License along with the GNU C Library; see the file COPYING.LIB. If
1122+ not, see <https://www.gnu.org/licenses/>. */
1123+#define CROSS_THREAD_DEALLOC
1124+#include "tst-aligned-alloc-random-thread.c"
1125diff --git a/malloc/tst-aligned-alloc-random-thread.c b/malloc/tst-aligned-alloc-random-thread.c
1126new file mode 100644
1127index 0000000000..e95f79250a
1128--- /dev/null
1129+++ b/malloc/tst-aligned-alloc-random-thread.c
1130@@ -0,0 +1,145 @@
1131+/* multi-threaded memory allocation/deallocation test.
1132+ Copyright (C) 2024 Free Software Foundation, Inc.
1133+ This file is part of the GNU C Library.
1134+
1135+ The GNU C Library is free software; you can redistribute it and/or
1136+ modify it under the terms of the GNU Lesser General Public License as
1137+ published by the Free Software Foundation; either version 2.1 of the
1138+ License, or (at your option) any later version.
1139+
1140+ The GNU C Library is distributed in the hope that it will be useful,
1141+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1142+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1143+ Lesser General Public License for more details.
1144+
1145+ You should have received a copy of the GNU Lesser General Public
1146+ License along with the GNU C Library; see the file COPYING.LIB. If
1147+ not, see <https://www.gnu.org/licenses/>. */
1148+
1149+#include <stdio.h>
1150+#include <stdlib.h>
1151+#include <string.h>
1152+#include <support/check.h>
1153+#include <support/support.h>
1154+#include <support/xthread.h>
1155+#include <support/test-driver.h>
1156+#include <sys/sysinfo.h>
1157+#include <unistd.h>
1158+
1159+#ifndef ITERATIONS
1160+# define ITERATIONS 16
1161+#endif
1162+
1163+#ifndef NUM_THREADS
1164+# define NUM_THREADS 8
1165+#endif
1166+
1167+#ifndef NUM_ALLOCATIONS
1168+# define NUM_ALLOCATIONS 2048
1169+#endif
1170+
1171+static pthread_barrier_t barrier;
1172+
1173+__thread unsigned int seed;
1174+
1175+typedef struct
1176+{
1177+ int id;
1178+ pthread_t thread;
1179+} thread;
1180+
1181+thread threads[NUM_THREADS];
1182+
1183+void *allocations[NUM_THREADS][NUM_ALLOCATIONS];
1184+
1185+void
1186+run_thread_dealloc (int id)
1187+{
1188+ for (int i = 0; i < NUM_ALLOCATIONS; i++)
1189+ {
1190+ free (allocations[id][i]);
1191+ allocations[id][i] = NULL;
1192+ }
1193+}
1194+
1195+void
1196+run_thread_alloc (int id)
1197+{
1198+ size_t msb, size;
1199+ for (int i = 0; i < NUM_ALLOCATIONS; i++)
1200+ {
1201+ msb = 1 << rand_r (&seed) % 16;
1202+ size = msb + rand_r (&seed) % msb;
1203+ allocations[id][i] = malloc (size);
1204+ TEST_VERIFY_EXIT (allocations[id][i] != NULL);
1205+ }
1206+}
1207+
1208+void *
1209+run_allocations (void *arg)
1210+{
1211+ int id = *((int *) arg);
1212+ seed = time (NULL) + id;
1213+
1214+ /* Stage 1: First half o the threads allocating memory and the second
1215+ * half waiting for them to finish
1216+ */
1217+ if (id < NUM_THREADS / 2)
1218+ run_thread_alloc (id);
1219+
1220+ xpthread_barrier_wait (&barrier);
1221+
1222+ /* Stage 2: Half of the threads allocationg memory and the other
1223+ * half deallocating:
1224+ * - In the non cross-thread dealloc scenario the first half will be
1225+ * deallocating the memory allocated by themselves in stage 1 and the
1226+ * second half will be allocating memory.
1227+ * - In the cross-thread dealloc scenario the first half will continue
1228+ * to allocate memory and the second half will deallocate the memory
1229+ * allocated by the first half in stage 1.
1230+ */
1231+ if (id < NUM_THREADS / 2)
1232+#ifndef CROSS_THREAD_DEALLOC
1233+ run_thread_dealloc (id);
1234+#else
1235+ run_thread_alloc (id + NUM_THREADS / 2);
1236+#endif
1237+ else
1238+#ifndef CROSS_THREAD_DEALLOC
1239+ run_thread_alloc (id);
1240+#else
1241+ run_thread_dealloc (id - NUM_THREADS / 2);
1242+#endif
1243+
1244+ xpthread_barrier_wait (&barrier);
1245+
1246+ // Stage 3: Second half of the threads deallocating and the first half
1247+ // waiting for them to finish.
1248+ if (id >= NUM_THREADS / 2)
1249+ run_thread_dealloc (id);
1250+
1251+ return NULL;
1252+}
1253+
1254+static int
1255+do_test (void)
1256+{
1257+ xpthread_barrier_init (&barrier, NULL, NUM_THREADS);
1258+
1259+ for (int i = 0; i < ITERATIONS; i++)
1260+ {
1261+ for (int t = 0; t < NUM_THREADS; t++)
1262+ {
1263+ threads[t].id = t;
1264+ threads[t].thread
1265+ = xpthread_create (NULL, run_allocations, &threads[t].id);
1266+ }
1267+
1268+ for (int t = 0; t < NUM_THREADS; t++)
1269+ xpthread_join (threads[t].thread);
1270+ }
1271+
1272+ return 0;
1273+}
1274+
1275+#include <support/test-driver.c>
1276
1277commit 65fbcfe58991194301a7e4fb9c53ab936573e711
1278Author: Arjun Shankar <arjun@redhat.com>
1279Date: Mon Jul 29 14:30:59 2024 +0200
1280
1281 manual/stdio: Clarify putc and putwc
1282
1283 The manual entry for `putc' described what "most systems" do instead of
1284 describing the glibc implementation and its guarantees. This commit
1285 fixes that by warning that putc may be implemented as a macro that
1286 double-evaluates `stream', and removing the performance claim.
1287
1288 Even though the current `putc' implementation does not double-evaluate
1289 `stream', offering this obscure guarantee as an extension to what
1290 POSIX allows does not seem very useful.
1291
1292 The entry for `putwc' is also edited to bring it in line with `putc'.
1293 Reviewed-by: Florian Weimer <fweimer@redhat.com>
1294
1295 (cherry picked from commit 10de4a47ef3f481592e3c62eb07bcda23e9fde4d)
1296
1297diff --git a/manual/stdio.texi b/manual/stdio.texi
1298index f5e289d58a..f9529a098d 100644
1299--- a/manual/stdio.texi
1300+++ b/manual/stdio.texi
1301@@ -903,21 +903,21 @@ This function is a GNU extension.
1302 @deftypefun int putc (int @var{c}, FILE *@var{stream})
1303 @standards{ISO, stdio.h}
1304 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
1305-This is just like @code{fputc}, except that most systems implement it as
1306+This is just like @code{fputc}, except that it may be implemented as
1307 a macro, making it faster. One consequence is that it may evaluate the
1308 @var{stream} argument more than once, which is an exception to the
1309-general rule for macros. @code{putc} is usually the best function to
1310-use for writing a single character.
1311+general rule for macros. Therefore, @var{stream} should never be an
1312+expression with side-effects.
1313 @end deftypefun
1314
1315 @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream})
1316 @standards{ISO, wchar.h}
1317 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
1318-This is just like @code{fputwc}, except that it can be implement as
1319+This is just like @code{fputwc}, except that it may be implemented as
1320 a macro, making it faster. One consequence is that it may evaluate the
1321 @var{stream} argument more than once, which is an exception to the
1322-general rule for macros. @code{putwc} is usually the best function to
1323-use for writing a single wide character.
1324+general rule for macros. Therefore, @var{stream} should never be an
1325+expression with side-effects.
1326 @end deftypefun
1327
1328 @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream})
1329
1330commit 132a72f93cb4ad9f16b8469dc061de5f75f6a44e
1331Author: Lukas Bulwahn <lukas.bulwahn@redhat.com>
1332Date: Mon Jul 29 11:08:17 2024 +0200
1333
1334 manual: make setrlimit() description less ambiguous
1335
1336 The existing description for setrlimit() has some ambiguity. It could be
1337 understood to have the semantics of getrlimit(), i.e., the limits from the
1338 process are stored in the provided rlp pointer.
1339
1340 Make the description more explicit that rlp are the input values, and that
1341 the limits of the process is changed with this function.
1342
1343 Reviewed-by: Florian Weimer <fweimer@redhat.com>
1344 (cherry picked from commit aedbf08891069fc029ed021e4dba933eb877b394)
1345
1346diff --git a/manual/resource.texi b/manual/resource.texi
1347index c9b21dedeb..25966bcb64 100644
1348--- a/manual/resource.texi
1349+++ b/manual/resource.texi
1350@@ -192,8 +192,8 @@ If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
1351 @standards{BSD, sys/resource.h}
1352 @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
1353 @c Direct syscall on most systems; lock-taking critical section on HURD.
1354-Store the current and maximum limits for the resource @var{resource}
1355-in @code{*@var{rlp}}.
1356+Change the current and maximum limits of the process for the resource
1357+@var{resource} to the values provided in @code{*@var{rlp}}.
1358
1359 The return value is @code{0} on success and @code{-1} on failure. The
1360 following @code{errno} error condition is possible:
1361
1362commit 509166c9a53ad81217a28cc67ba2a688f02fc477
1363Author: Florian Weimer <fweimer@redhat.com>
1364Date: Wed Jun 26 11:27:54 2024 +0200
1365
1366 Enhance test coverage for strnlen, wcsnlen
1367
1368 This commit adds string/test-strnlen-nonarray and
1369 wcsmbs/test-wcsnlen-nonarray.
1370
1371 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
1372 (cherry picked from commit 783d4c0b81889c39a9ddf13b60d0fde4040fb1c0)
1373
1374diff --git a/string/Makefile b/string/Makefile
1375index 8f31fa49e6..2e20fc00fd 100644
1376--- a/string/Makefile
1377+++ b/string/Makefile
1378@@ -184,6 +184,7 @@ tests := \
1379 test-strncpy \
1380 test-strndup \
1381 test-strnlen \
1382+ test-strnlen-nonarray \
1383 test-strpbrk \
1384 test-strrchr \
1385 test-strspn \
1386diff --git a/string/test-Xnlen-nonarray.c b/string/test-Xnlen-nonarray.c
1387new file mode 100644
1388index 0000000000..499bef2041
1389--- /dev/null
1390+++ b/string/test-Xnlen-nonarray.c
1391@@ -0,0 +1,133 @@
1392+/* Test non-array inputs to string length functions.
1393+ Copyright (C) 2024 Free Software Foundation, Inc.
1394+ This file is part of the GNU C Library.
1395+
1396+ The GNU C Library is free software; you can redistribute it and/or
1397+ modify it under the terms of the GNU Lesser General Public
1398+ License as published by the Free Software Foundation; either
1399+ version 2.1 of the License, or (at your option) any later version.
1400+
1401+ The GNU C Library is distributed in the hope that it will be useful,
1402+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1403+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1404+ Lesser General Public License for more details.
1405+
1406+ You should have received a copy of the GNU Lesser General Public
1407+ License along with the GNU C Library; if not, see
1408+ <https://www.gnu.org/licenses/>. */
1409+
1410+/* This skeleton file is included from string/test-strnlen-nonarray.c
1411+ and wcsmbs/test-wcsnlen-nonarray.c to test that reading of the array
1412+ stops at the first null character.
1413+
1414+ TEST_IDENTIFIER must be the test function identifier. TEST_NAME is
1415+ the same as a string.
1416+
1417+ CHAR must be defined as the character type. */
1418+
1419+#include <array_length.h>
1420+#include <string.h>
1421+#include <support/check.h>
1422+#include <support/next_to_fault.h>
1423+#include <support/test-driver.h>
1424+#include <sys/param.h>
1425+#include <unistd.h>
1426+
1427+typedef __typeof (TEST_IDENTIFIER) *proto_t;
1428+
1429+#define TEST_MAIN
1430+#include "test-string.h"
1431+
1432+IMPL (TEST_IDENTIFIER, 1)
1433+
1434+static int
1435+test_main (void)
1436+{
1437+ enum { buffer_length = 256 };
1438+ TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length);
1439+
1440+ test_init ();
1441+
1442+ /* Buffer layout: There are a_count 'A' character followed by
1443+ zero_count null character, for a total of buffer_length
1444+ character:
1445+
1446+ AAAAA...AAAAA 00000 ... 00000 (unmapped page follows)
1447+ \ / \ /
1448+ (a_count) (zero_count)
1449+ \___ (buffer_length) ___/
1450+ ^
1451+ |
1452+ start_offset
1453+
1454+ The buffer length does not change, but a_count (and thus _zero)
1455+ and start_offset vary.
1456+
1457+ If start_offset == buffer_length, only 0 is a valid length
1458+ argument. The result is 0.
1459+
1460+ Otherwwise, if zero_count > 0 (if there a null characters in the
1461+ buffer), then any length argument is valid. If start_offset <
1462+ a_count (i.e., there is a non-null character at start_offset), the
1463+ result is the minimum of a_count - start_offset and the length
1464+ argument. Otherwise the result is 0.
1465+
1466+ Otherwise, there are no null characters before the unmapped page.
1467+ The length argument must not be greater than buffer_length -
1468+ start_offset, and the result is the length argument. */
1469+
1470+ struct support_next_to_fault ntf
1471+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR));
1472+ CHAR *buffer = (CHAR *) ntf.buffer;
1473+
1474+ FOR_EACH_IMPL (impl, 0)
1475+ {
1476+ printf ("info: testing %s\n", impl->name);
1477+ for (size_t i = 0; i < buffer_length; ++i)
1478+ buffer[i] = 'A';
1479+
1480+ for (int zero_count = 0; zero_count <= buffer_length; ++zero_count)
1481+ {
1482+ if (zero_count > 0)
1483+ buffer[buffer_length - zero_count] = 0;
1484+ int a_count = buffer_length - zero_count;
1485+ for (int start_offset = 0; start_offset <= buffer_length;
1486+ ++start_offset)
1487+ {
1488+ CHAR *start_pointer = buffer + start_offset;
1489+ if (start_offset == buffer_length)
1490+ TEST_COMPARE (CALL (impl, buffer + start_offset, 0), 0);
1491+ else if (zero_count > 0)
1492+ for (int length_argument = 0;
1493+ length_argument <= 2 * buffer_length;
1494+ ++length_argument)
1495+ {
1496+ if (test_verbose)
1497+ printf ("zero_count=%d a_count=%d start_offset=%d"
1498+ " length_argument=%d\n",
1499+ zero_count, a_count, start_offset,
1500+ length_argument);
1501+ if (start_offset < a_count)
1502+ TEST_COMPARE (CALL (impl, start_pointer, length_argument),
1503+ MIN (a_count - start_offset,
1504+ length_argument));
1505+ else
1506+ TEST_COMPARE (CALL (impl, start_pointer, length_argument),
1507+ 0);
1508+ }
1509+ else
1510+ for (int length_argument = 0;
1511+ length_argument <= buffer_length - start_offset;
1512+ ++length_argument)
1513+ TEST_COMPARE (CALL (impl, start_pointer, length_argument),
1514+ length_argument);
1515+ }
1516+ }
1517+ }
1518+
1519+ support_next_to_fault_free (&ntf);
1520+
1521+ return 0;
1522+}
1523+
1524+#include <support/test-driver.c>
1525diff --git a/string/test-strnlen-nonarray.c b/string/test-strnlen-nonarray.c
1526new file mode 100644
1527index 0000000000..0ad05756d9
1528--- /dev/null
1529+++ b/string/test-strnlen-nonarray.c
1530@@ -0,0 +1,4 @@
1531+#define TEST_IDENTIFIER strnlen
1532+#define TEST_NAME "strnlen"
1533+typedef char CHAR;
1534+#include "test-Xnlen-nonarray.c"
1535diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
1536index 1cddd8cc6d..c51c9b4f1f 100644
1537--- a/wcsmbs/Makefile
1538+++ b/wcsmbs/Makefile
1539@@ -160,6 +160,7 @@ tests := \
1540 test-wcsncmp \
1541 test-wcsncpy \
1542 test-wcsnlen \
1543+ test-wcsnlen-nonarray \
1544 test-wcspbrk \
1545 test-wcsrchr \
1546 test-wcsspn \
1547diff --git a/wcsmbs/test-wcsnlen-nonarray.c b/wcsmbs/test-wcsnlen-nonarray.c
1548new file mode 100644
1549index 0000000000..a4b21fecd3
1550--- /dev/null
1551+++ b/wcsmbs/test-wcsnlen-nonarray.c
1552@@ -0,0 +1,5 @@
1553+#include <wchar.h>
1554+#define TEST_IDENTIFIER wcsnlen
1555+#define TEST_NAME "wcsnlen"
1556+typedef wchar_t CHAR;
1557+#include "../string/test-Xnlen-nonarray.c"
1558
1559commit 46f19b234244f4654b9e3898ac1c27de86068222
1560Author: Florian Weimer <fweimer@redhat.com>
1561Date: Thu Jun 27 16:26:56 2024 +0200
1562
1563 Enhanced test coverage for strncmp, wcsncmp
1564
1565 Add string/test-strncmp-nonarray and
1566 wcsmbs/test-wcsncmp-nonarray.
1567
1568 This is the test that uncovered bug 31934. Test run time
1569 is more than one minute on a fairly current system, so turn
1570 these into xtests that do not run automatically.
1571
1572 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
1573 (cherry picked from commit 54252394c25ddf0062e288d4a6ab7a885f8ae009)
1574
1575diff --git a/string/Makefile b/string/Makefile
1576index 2e20fc00fd..1dff405c27 100644
1577--- a/string/Makefile
1578+++ b/string/Makefile
1579@@ -236,7 +236,10 @@ tests-unsupported += $(tests-translation)
1580 endif
1581
1582 # This test allocates a lot of memory and can run for a long time.
1583-xtests = tst-strcoll-overflow
1584+xtests += tst-strcoll-overflow
1585+
1586+# This test runs for a long time.
1587+xtests += test-strncmp-nonarray
1588
1589 # This test needs libdl.
1590 ifeq (yes,$(build-shared))
1591diff --git a/string/test-Xncmp-nonarray.c b/string/test-Xncmp-nonarray.c
1592new file mode 100644
1593index 0000000000..9f3a3ca75d
1594--- /dev/null
1595+++ b/string/test-Xncmp-nonarray.c
1596@@ -0,0 +1,183 @@
1597+/* Test non-array inputs to string comparison functions.
1598+ Copyright (C) 2024 Free Software Foundation, Inc.
1599+ This file is part of the GNU C Library.
1600+
1601+ The GNU C Library is free software; you can redistribute it and/or
1602+ modify it under the terms of the GNU Lesser General Public
1603+ License as published by the Free Software Foundation; either
1604+ version 2.1 of the License, or (at your option) any later version.
1605+
1606+ The GNU C Library is distributed in the hope that it will be useful,
1607+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1608+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1609+ Lesser General Public License for more details.
1610+
1611+ You should have received a copy of the GNU Lesser General Public
1612+ License along with the GNU C Library; if not, see
1613+ <https://www.gnu.org/licenses/>. */
1614+
1615+/* This skeleton file is included from string/test-strncmp-nonarray.c and
1616+ wcsmbs/test-wcsncmp-nonarray.c to test that reading of the arrays stops
1617+ at the first null character.
1618+
1619+ TEST_IDENTIFIER must be the test function identifier. TEST_NAME is
1620+ the same as a string.
1621+
1622+ CHAR must be defined as the character type. */
1623+
1624+#include <array_length.h>
1625+#include <string.h>
1626+#include <support/check.h>
1627+#include <support/next_to_fault.h>
1628+#include <support/test-driver.h>
1629+#include <sys/param.h>
1630+#include <unistd.h>
1631+
1632+/* Much shorter than test-Xnlen-nonarray.c because of deeply nested loops. */
1633+enum { buffer_length = 80 };
1634+
1635+/* The test buffer layout follows what is described test-Xnlen-nonarray.c,
1636+ except that there two buffers, left and right. The variables
1637+ a_count, zero_count, start_offset are all duplicated. */
1638+
1639+/* Return the maximum string length for a string that starts at
1640+ start_offset. */
1641+static int
1642+string_length (int a_count, int start_offset)
1643+{
1644+ if (start_offset == buffer_length || start_offset >= a_count)
1645+ return 0;
1646+ else
1647+ return a_count - start_offset;
1648+}
1649+
1650+/* This is the valid maximum length argument computation for
1651+ strnlen/wcsnlen. See text-Xnlen-nonarray.c. */
1652+static int
1653+maximum_length (int start_offset, int zero_count)
1654+{
1655+ if (start_offset == buffer_length)
1656+ return 0;
1657+ else if (zero_count > 0)
1658+ /* Effectively unbounded, but we need to stop fairly low,
1659+ otherwise testing takes too long. */
1660+ return buffer_length + 32;
1661+ else
1662+ return buffer_length - start_offset;
1663+}
1664+
1665+typedef __typeof (TEST_IDENTIFIER) *proto_t;
1666+
1667+#define TEST_MAIN
1668+#include "test-string.h"
1669+
1670+IMPL (TEST_IDENTIFIER, 1)
1671+
1672+static int
1673+test_main (void)
1674+{
1675+ TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length);
1676+ test_init ();
1677+
1678+ struct support_next_to_fault left_ntf
1679+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR));
1680+ CHAR *left_buffer = (CHAR *) left_ntf.buffer;
1681+ struct support_next_to_fault right_ntf
1682+ = support_next_to_fault_allocate (buffer_length * sizeof (CHAR));
1683+ CHAR *right_buffer = (CHAR *) right_ntf.buffer;
1684+
1685+ FOR_EACH_IMPL (impl, 0)
1686+ {
1687+ printf ("info: testing %s\n", impl->name);
1688+ for (size_t i = 0; i < buffer_length; ++i)
1689+ left_buffer[i] = 'A';
1690+
1691+ for (int left_zero_count = 0; left_zero_count <= buffer_length;
1692+ ++left_zero_count)
1693+ {
1694+ if (left_zero_count > 0)
1695+ left_buffer[buffer_length - left_zero_count] = 0;
1696+ int left_a_count = buffer_length - left_zero_count;
1697+ for (size_t i = 0; i < buffer_length; ++i)
1698+ right_buffer[i] = 'A';
1699+ for (int right_zero_count = 0; right_zero_count <= buffer_length;
1700+ ++right_zero_count)
1701+ {
1702+ if (right_zero_count > 0)
1703+ right_buffer[buffer_length - right_zero_count] = 0;
1704+ int right_a_count = buffer_length - right_zero_count;
1705+ for (int left_start_offset = 0;
1706+ left_start_offset <= buffer_length;
1707+ ++left_start_offset)
1708+ {
1709+ CHAR *left_start_pointer = left_buffer + left_start_offset;
1710+ int left_maxlen
1711+ = maximum_length (left_start_offset, left_zero_count);
1712+ int left_length
1713+ = string_length (left_a_count, left_start_offset);
1714+ for (int right_start_offset = 0;
1715+ right_start_offset <= buffer_length;
1716+ ++right_start_offset)
1717+ {
1718+ CHAR *right_start_pointer
1719+ = right_buffer + right_start_offset;
1720+ int right_maxlen
1721+ = maximum_length (right_start_offset, right_zero_count);
1722+ int right_length
1723+ = string_length (right_a_count, right_start_offset);
1724+
1725+ /* Maximum length is modelled after strnlen/wcsnlen,
1726+ and must be valid for both pointer arguments at
1727+ the same time. */
1728+ int maxlen = MIN (left_maxlen, right_maxlen);
1729+
1730+ for (int length_argument = 0; length_argument <= maxlen;
1731+ ++length_argument)
1732+ {
1733+ if (test_verbose)
1734+ {
1735+ printf ("left: zero_count=%d"
1736+ " a_count=%d start_offset=%d\n",
1737+ left_zero_count, left_a_count,
1738+ left_start_offset);
1739+ printf ("right: zero_count=%d"
1740+ " a_count=%d start_offset=%d\n",
1741+ right_zero_count, right_a_count,
1742+ right_start_offset);
1743+ printf ("length argument: %d\n",
1744+ length_argument);
1745+ }
1746+
1747+ /* Effective lengths bounded by length argument.
1748+ The effective length determines the
1749+ outcome of the comparison. */
1750+ int left_effective
1751+ = MIN (left_length, length_argument);
1752+ int right_effective
1753+ = MIN (right_length, length_argument);
1754+ if (left_effective == right_effective)
1755+ TEST_COMPARE (CALL (impl,
1756+ left_start_pointer,
1757+ right_start_pointer,
1758+ length_argument), 0);
1759+ else if (left_effective < right_effective)
1760+ TEST_COMPARE (CALL (impl,
1761+ left_start_pointer,
1762+ right_start_pointer,
1763+ length_argument) < 0, 1);
1764+ else
1765+ TEST_COMPARE (CALL (impl,
1766+ left_start_pointer,
1767+ right_start_pointer,
1768+ length_argument) > 0, 1);
1769+ }
1770+ }
1771+ }
1772+ }
1773+ }
1774+ }
1775+
1776+ return 0;
1777+}
1778+
1779+#include <support/test-driver.c>
1780diff --git a/string/test-strncmp-nonarray.c b/string/test-strncmp-nonarray.c
1781new file mode 100644
1782index 0000000000..581e52d01b
1783--- /dev/null
1784+++ b/string/test-strncmp-nonarray.c
1785@@ -0,0 +1,4 @@
1786+#define TEST_IDENTIFIER strncmp
1787+#define TEST_NAME "strncmp"
1788+typedef char CHAR;
1789+#include "test-Xncmp-nonarray.c"
1790diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
1791index c51c9b4f1f..63adf0e8ef 100644
1792--- a/wcsmbs/Makefile
1793+++ b/wcsmbs/Makefile
1794@@ -206,6 +206,10 @@ tests := \
1795 wcsmbs-tst1 \
1796 # tests
1797
1798+# This test runs for a long time.
1799+xtests += test-wcsncmp-nonarray
1800+
1801+
1802 include ../Rules
1803
1804 ifeq ($(run-built-tests),yes)
1805diff --git a/wcsmbs/test-wcsncmp-nonarray.c b/wcsmbs/test-wcsncmp-nonarray.c
1806new file mode 100644
1807index 0000000000..1ad9ebd8fd
1808--- /dev/null
1809+++ b/wcsmbs/test-wcsncmp-nonarray.c
1810@@ -0,0 +1,5 @@
1811+#include <wchar.h>
1812+#define TEST_IDENTIFIER wcsncmp
1813+#define TEST_NAME "wcsncmp"
1814+typedef wchar_t CHAR;
1815+#include "../string/test-Xncmp-nonarray.c"
1816
1817commit 3433a358428bcec2d203fa408b85f442c9a465ca
1818Author: H.J. Lu <hjl.tools@gmail.com>
1819Date: Wed Jul 24 14:05:13 2024 -0700
1820
1821 linux: Update the mremap C implementation [BZ #31968]
1822
1823 Update the mremap C implementation to support the optional argument for
1824 MREMAP_DONTUNMAP added in Linux 5.7 since it may not always be correct
1825 to implement a variadic function as a non-variadic function on all Linux
1826 targets. Return MAP_FAILED and set errno to EINVAL for unknown flag bits.
1827 This fixes BZ #31968.
1828
1829 Note: A test must be added when a new flag bit is introduced.
1830
1831 Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
1832 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
1833 (cherry picked from commit 6c40cb0e9f893d49dc7caee580a055de53562206)
1834
1835diff --git a/NEWS b/NEWS
1836index 6b62f55658..5948704ef9 100644
1837--- a/NEWS
1838+++ b/NEWS
1839@@ -11,6 +11,7 @@ The following bugs are resolved with this release:
1840
1841 [30081] resolv: Do not wait for non-existing second DNS response after error
1842 [31890] resolv: Allow short error responses to match any DNS query
1843+ [31968] mremap implementation in C does not handle arguments correctly
1844
1845 Version 2.40
1846
1847diff --git a/sysdeps/unix/sysv/linux/mremap.c b/sysdeps/unix/sysv/linux/mremap.c
1848index 4f770799c4..1ada5c1f40 100644
1849--- a/sysdeps/unix/sysv/linux/mremap.c
1850+++ b/sysdeps/unix/sysv/linux/mremap.c
1851@@ -20,6 +20,12 @@
1852 #include <sysdep.h>
1853 #include <stdarg.h>
1854 #include <stddef.h>
1855+#include <errno.h>
1856+
1857+#define MREMAP_KNOWN_BITS \
1858+ (MREMAP_MAYMOVE \
1859+ | MREMAP_FIXED \
1860+ | MREMAP_DONTUNMAP)
1861
1862 void *
1863 __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...)
1864@@ -27,7 +33,13 @@ __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...)
1865 va_list va;
1866 void *new_addr = NULL;
1867
1868- if (flags & MREMAP_FIXED)
1869+ if (flags & ~(MREMAP_KNOWN_BITS))
1870+ {
1871+ __set_errno (EINVAL);
1872+ return MAP_FAILED;
1873+ }
1874+
1875+ if (flags & (MREMAP_FIXED | MREMAP_DONTUNMAP))
1876 {
1877 va_start (va, flags);
1878 new_addr = va_arg (va, void *);
1879
1880commit 2eb2d78ca75d7432bd1d11d227f4c899554ea02e
1881Author: H.J. Lu <hjl.tools@gmail.com>
1882Date: Wed Jul 24 14:05:14 2024 -0700
1883
1884 mremap: Update manual entry
1885
1886 Update mremap manual entry:
1887
1888 1. Change mremap to variadic.
1889 2. Document MREMAP_FIXED and MREMAP_DONTUNMAP.
1890
1891 Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
1892 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
1893 (cherry picked from commit cb2dee4eccf46642eef588bee64f9c875c408f1c)
1894
1895diff --git a/NEWS b/NEWS
1896index 5948704ef9..8da0408ad9 100644
1897--- a/NEWS
1898+++ b/NEWS
1899@@ -10,6 +10,7 @@ Version 2.40.1
1900 The following bugs are resolved with this release:
1901
1902 [30081] resolv: Do not wait for non-existing second DNS response after error
1903+ [31968] mremap implementation in C does not handle arguments correctly
1904 [31890] resolv: Allow short error responses to match any DNS query
1905 [31968] mremap implementation in C does not handle arguments correctly
1906
1907diff --git a/manual/llio.texi b/manual/llio.texi
1908index 6f0a48609b..ea84196abd 100644
1909--- a/manual/llio.texi
1910+++ b/manual/llio.texi
1911@@ -1892,7 +1892,7 @@ There is no existing mapping in at least part of the given region.
1912
1913 @end deftypefun
1914
1915-@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag})
1916+@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}, ... /* void *@var{new_address} */)
1917 @standards{GNU, sys/mman.h}
1918 @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
1919
1920@@ -1901,12 +1901,40 @@ area. @var{address} and @var{length} must cover a region entirely mapped
1921 in the same @code{mmap} statement. A new mapping with the same
1922 characteristics will be returned with the length @var{new_length}.
1923
1924-One option is possible, @code{MREMAP_MAYMOVE}. If it is given in
1925-@var{flags}, the system may remove the existing mapping and create a new
1926-one of the desired length in another location.
1927+Possible flags are
1928
1929-The address of the resulting mapping is returned, or @math{-1}. Possible
1930-error codes include:
1931+@table @code
1932+
1933+@item MREMAP_MAYMOVE
1934+If it is given in @var{flags}, the system may remove the existing mapping
1935+and create a new one of the desired length in another location.
1936+
1937+@item MREMAP_FIXED
1938+If it is given in @var{flags}, @code{mremap} accepts a fifth argument,
1939+@code{void *new_address}, which specifies a page-aligned address to
1940+which the mapping must be moved. Any previous mapping at the address
1941+range specified by @var{new_address} and @var{new_size} is unmapped.
1942+
1943+@code{MREMAP_FIXED} must be used together with @code{MREMAP_MAYMOVE}.
1944+
1945+@item MREMAP_DONTUNMAP
1946+If it is given in @var{flags}, @code{mremap} accepts a fifth argument,
1947+@code{void *new_address}, which specifies a page-aligned address. Any
1948+previous mapping at the address range specified by @var{new_address} and
1949+@var{new_size} is unmapped. If @var{new_address} is @code{NULL}, the
1950+kernel chooses the page-aligned address at which to create the mapping.
1951+Otherwise, the kernel takes it as a hint about where to place the mapping.
1952+The mapping at the address range specified by @var{old_address} and
1953+@var{old_size} isn't unmapped.
1954+
1955+@code{MREMAP_DONTUNMAP} must be used together with @code{MREMAP_MAYMOVE}.
1956+@var{old_size} must be the same as @var{new_size}. This flag bit is
1957+Linux-specific.
1958+
1959+@end table
1960+
1961+The address of the resulting mapping is returned, or @code{MAP_FAILED}.
1962+Possible error codes include:
1963
1964 @table @code
1965
1966@@ -1915,7 +1943,7 @@ There is no existing mapping in at least part of the original region, or
1967 the region covers two or more distinct mappings.
1968
1969 @item EINVAL
1970-The address given is misaligned or inappropriate.
1971+Any arguments are inappropriate, including unknown @var{flags} values.
1972
1973 @item EAGAIN
1974 The region has pages locked, and if extended it would exceed the
1975
1976commit ca53bc68ab92ab413a7d53e951227d380a85ebd8
1977Author: H.J. Lu <hjl.tools@gmail.com>
1978Date: Wed Jul 24 14:05:15 2024 -0700
1979
1980 Add mremap tests
1981
1982 Add tests for MREMAP_MAYMOVE and MREMAP_FIXED. On Linux, also test
1983 MREMAP_DONTUNMAP.
1984
1985 Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
1986 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
1987 (cherry picked from commit ff0320bec2810192d453c579623482fab87bfa01)
1988
1989diff --git a/misc/Makefile b/misc/Makefile
1990index 5d17c562fe..7b7f8351bf 100644
1991--- a/misc/Makefile
1992+++ b/misc/Makefile
1993@@ -257,6 +257,8 @@ tests := \
1994 tst-mntent-blank-passno \
1995 tst-mntent-escape \
1996 tst-mntent2 \
1997+ tst-mremap1 \
1998+ tst-mremap2 \
1999 tst-preadvwritev \
2000 tst-preadvwritev2 \
2001 tst-preadvwritev64 \
2002diff --git a/misc/tst-mremap1.c b/misc/tst-mremap1.c
2003new file mode 100644
2004index 0000000000..0469991a6c
2005--- /dev/null
2006+++ b/misc/tst-mremap1.c
2007@@ -0,0 +1,46 @@
2008+/* Test mremap with MREMAP_MAYMOVE.
2009+ Copyright (C) 2024 Free Software Foundation, Inc.
2010+ This file is part of the GNU C Library.
2011+
2012+ The GNU C Library is free software; you can redistribute it and/or
2013+ modify it under the terms of the GNU Lesser General Public
2014+ License as published by the Free Software Foundation; either
2015+ version 2.1 of the License, or (at your option) any later version.
2016+
2017+ The GNU C Library is distributed in the hope that it will be useful,
2018+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2019+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2020+ Lesser General Public License for more details.
2021+
2022+ You should have received a copy of the GNU Lesser General Public
2023+ License along with the GNU C Library; if not, see
2024+ <https://www.gnu.org/licenses/>. */
2025+
2026+#include <errno.h>
2027+#include <sys/mman.h>
2028+#include <support/xstdlib.h>
2029+#include <support/xunistd.h>
2030+#include <support/check.h>
2031+#include <support/test-driver.h>
2032+
2033+static int
2034+do_test (void)
2035+{
2036+ size_t old_size = getpagesize ();
2037+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
2038+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
2039+ old_addr[0] = 1;
2040+ old_addr[old_size - 1] = 2;
2041+
2042+ /* Test MREMAP_MAYMOVE. */
2043+ size_t new_size = old_size + old_size;
2044+ char *new_addr = mremap (old_addr, old_size, new_size, MREMAP_MAYMOVE);
2045+ TEST_VERIFY_EXIT (new_addr != MAP_FAILED);
2046+ new_addr[0] = 1;
2047+ new_addr[new_size - 1] = 2;
2048+ xmunmap (new_addr, new_size);
2049+
2050+ return 0;
2051+}
2052+
2053+#include <support/test-driver.c>
2054diff --git a/misc/tst-mremap2.c b/misc/tst-mremap2.c
2055new file mode 100644
2056index 0000000000..45be7f0369
2057--- /dev/null
2058+++ b/misc/tst-mremap2.c
2059@@ -0,0 +1,54 @@
2060+/* Test mremap with MREMAP_FIXED.
2061+ Copyright (C) 2024 Free Software Foundation, Inc.
2062+ This file is part of the GNU C Library.
2063+
2064+ The GNU C Library is free software; you can redistribute it and/or
2065+ modify it under the terms of the GNU Lesser General Public
2066+ License as published by the Free Software Foundation; either
2067+ version 2.1 of the License, or (at your option) any later version.
2068+
2069+ The GNU C Library is distributed in the hope that it will be useful,
2070+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2071+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2072+ Lesser General Public License for more details.
2073+
2074+ You should have received a copy of the GNU Lesser General Public
2075+ License along with the GNU C Library; if not, see
2076+ <https://www.gnu.org/licenses/>. */
2077+
2078+#include <errno.h>
2079+#include <sys/mman.h>
2080+#include <support/xstdlib.h>
2081+#include <support/xunistd.h>
2082+#include <support/test-driver.h>
2083+#include <mremap-failure.h>
2084+
2085+static int
2086+do_test (void)
2087+{
2088+ size_t old_size = getpagesize ();
2089+ size_t new_size = old_size + old_size;
2090+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
2091+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
2092+ old_addr[0] = 1;
2093+ old_addr[old_size - 1] = 2;
2094+
2095+ char *fixed_addr = xmmap (NULL, new_size, PROT_READ | PROT_WRITE,
2096+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
2097+ fixed_addr[0] = 1;
2098+ fixed_addr[new_size - 1] = 2;
2099+
2100+ /* Test MREMAP_FIXED. */
2101+ char *new_addr = mremap (old_addr, old_size, new_size,
2102+ MREMAP_FIXED | MREMAP_MAYMOVE,
2103+ fixed_addr);
2104+ if (new_addr == MAP_FAILED)
2105+ return mremap_failure_exit (errno);
2106+ new_addr[0] = 1;
2107+ new_addr[new_size - 1] = 2;
2108+ xmunmap (new_addr, new_size);
2109+
2110+ return 0;
2111+}
2112+
2113+#include <support/test-driver.c>
2114diff --git a/sysdeps/generic/mremap-failure.h b/sysdeps/generic/mremap-failure.h
2115new file mode 100644
2116index 0000000000..bc0d476368
2117--- /dev/null
2118+++ b/sysdeps/generic/mremap-failure.h
2119@@ -0,0 +1,25 @@
2120+/* mremap failure handling. Generic version.
2121+ Copyright (C) 2024 Free Software Foundation, Inc.
2122+ This file is part of the GNU C Library.
2123+
2124+ The GNU C Library is free software; you can redistribute it and/or
2125+ modify it under the terms of the GNU Lesser General Public
2126+ License as published by the Free Software Foundation; either
2127+ version 2.1 of the License, or (at your option) any later version.
2128+
2129+ The GNU C Library is distributed in the hope that it will be useful,
2130+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2131+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2132+ Lesser General Public License for more details.
2133+
2134+ You should have received a copy of the GNU Lesser General Public
2135+ License along with the GNU C Library; if not, see
2136+ <https://www.gnu.org/licenses/>. */
2137+
2138+/* Return exit value on mremap failure with errno ERR. */
2139+
2140+static int
2141+mremap_failure_exit (int err)
2142+{
2143+ return EXIT_FAILURE;
2144+}
2145diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
2146index 097b5a26fc..59998c7af4 100644
2147--- a/sysdeps/unix/sysv/linux/Makefile
2148+++ b/sysdeps/unix/sysv/linux/Makefile
2149@@ -206,6 +206,7 @@ tests += \
2150 tst-getauxval \
2151 tst-gettid \
2152 tst-gettid-kill \
2153+ tst-linux-mremap1 \
2154 tst-memfd_create \
2155 tst-misalign-clone \
2156 tst-mlock2 \
2157diff --git a/sysdeps/unix/sysv/linux/mremap-failure.h b/sysdeps/unix/sysv/linux/mremap-failure.h
2158new file mode 100644
2159index 0000000000..c99ab30ca9
2160--- /dev/null
2161+++ b/sysdeps/unix/sysv/linux/mremap-failure.h
2162@@ -0,0 +1,30 @@
2163+/* mremap failure handling. Linux version.
2164+ Copyright (C) 2024 Free Software Foundation, Inc.
2165+ This file is part of the GNU C Library.
2166+
2167+ The GNU C Library is free software; you can redistribute it and/or
2168+ modify it under the terms of the GNU Lesser General Public
2169+ License as published by the Free Software Foundation; either
2170+ version 2.1 of the License, or (at your option) any later version.
2171+
2172+ The GNU C Library is distributed in the hope that it will be useful,
2173+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2174+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2175+ Lesser General Public License for more details.
2176+
2177+ You should have received a copy of the GNU Lesser General Public
2178+ License along with the GNU C Library; if not, see
2179+ <https://www.gnu.org/licenses/>. */
2180+
2181+#include <support/check.h>
2182+
2183+/* Return exit value on mremap failure with errno ERR. */
2184+
2185+static int
2186+mremap_failure_exit (int err)
2187+{
2188+ if (err != EINVAL)
2189+ return EXIT_FAILURE;
2190+
2191+ return EXIT_UNSUPPORTED;
2192+}
2193diff --git a/sysdeps/unix/sysv/linux/tst-linux-mremap1.c b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c
2194new file mode 100644
2195index 0000000000..408e8af2ab
2196--- /dev/null
2197+++ b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c
2198@@ -0,0 +1,63 @@
2199+/* Test mremap with MREMAP_DONTUNMAP.
2200+ Copyright (C) 2024 Free Software Foundation, Inc.
2201+ This file is part of the GNU C Library.
2202+
2203+ The GNU C Library is free software; you can redistribute it and/or
2204+ modify it under the terms of the GNU Lesser General Public
2205+ License as published by the Free Software Foundation; either
2206+ version 2.1 of the License, or (at your option) any later version.
2207+
2208+ The GNU C Library is distributed in the hope that it will be useful,
2209+ but WITHOUT ANY WARRANTY; without even the implied warranty of
2210+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2211+ Lesser General Public License for more details.
2212+
2213+ You should have received a copy of the GNU Lesser General Public
2214+ License along with the GNU C Library; if not, see
2215+ <https://www.gnu.org/licenses/>. */
2216+
2217+#include <errno.h>
2218+#include <sys/mman.h>
2219+#include <support/xstdlib.h>
2220+#include <support/xunistd.h>
2221+#include <support/check.h>
2222+#include <support/test-driver.h>
2223+#include <mremap-failure.h>
2224+
2225+static int
2226+do_test (void)
2227+{
2228+ size_t old_size = getpagesize ();
2229+ size_t new_size = old_size;
2230+ char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE,
2231+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
2232+ old_addr[0] = 1;
2233+ old_addr[old_size - 1] = 2;
2234+
2235+ /* Create an available 64-page mmap region. */
2236+ size_t fixed_size = old_size * 64;
2237+ char *fixed_addr = xmmap (NULL, fixed_size, PROT_READ | PROT_WRITE,
2238+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
2239+ xmunmap (fixed_addr, fixed_size);
2240+
2241+ /* Add 3 * pagesize. */
2242+ fixed_size += 3 * old_size;
2243+
2244+ /* Test MREMAP_DONTUNMAP. It should return FIXED_ADDR created above. */
2245+ char *new_addr = mremap (old_addr, old_size, new_size,
2246+ MREMAP_DONTUNMAP | MREMAP_MAYMOVE,
2247+ fixed_addr);
2248+ if (new_addr == MAP_FAILED)
2249+ return mremap_failure_exit (errno);
2250+ TEST_VERIFY_EXIT (fixed_addr == new_addr);
2251+ old_addr[0] = 3;
2252+ old_addr[old_size - 1] = 4;
2253+ new_addr[0] = 1;
2254+ new_addr[new_size - 1] = 2;
2255+ xmunmap (new_addr, new_size);
2256+ xmunmap (old_addr, old_size);
2257+
2258+ return 0;
2259+}
2260+
2261+#include <support/test-driver.c>
2262
2263commit 928769737c8f0cbb51dfa2a02de0594c2395d802
2264Author: Florian Weimer <fweimer@redhat.com>
2265Date: Thu Aug 1 10:46:10 2024 +0200
2266
2267 resolv: Fix tst-resolv-short-response for older GCC (bug 32042)
2268
2269 Previous GCC versions do not support the C23 change that
2270 allows labels on declarations.
2271
2272 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2273 (cherry picked from commit ec119972cb2598c04ec7d4219e20506006836f64)
2274
2275diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c
2276index be354ae1c7..9b06b0c176 100644
2277--- a/resolv/tst-resolv-short-response.c
2278+++ b/resolv/tst-resolv-short-response.c
2279@@ -33,8 +33,10 @@ response (const struct resolv_response_context *ctx,
2280 {
2281 case 0:
2282 /* First server times out. */
2283- struct resolv_response_flags flags = {.rcode = rcode};
2284- resolv_response_init (b, flags);
2285+ {
2286+ struct resolv_response_flags flags = {.rcode = rcode};
2287+ resolv_response_init (b, flags);
2288+ }
2289 break;
2290 case 1:
2291 /* Second server sends reply. */
2292
2293commit aa533d58ff12e27771d9c960a727d74992a3f2a3
2294Author: Florian Weimer <fweimer@redhat.com>
2295Date: Fri Aug 2 15:22:14 2024 +0200
2296
2297 x86: Tunables may incorrectly set Prefer_PMINUB_for_stringop (bug 32047)
2298
2299 Fixes commit 5bcf6265f215326d14dfacdce8532792c2c7f8f8 ("x86:
2300 Disable non-temporal memset on Skylake Server").
2301
2302 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
2303 (cherry picked from commit 7a630f7d3392ca391a399486ce2846f9e4b4ee63)
2304
2305diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c
2306index ae9dcd6180..ccc6b64dc2 100644
2307--- a/sysdeps/x86/cpu-tunables.c
2308+++ b/sysdeps/x86/cpu-tunables.c
2309@@ -248,6 +248,7 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp)
2310 CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features,
2311 Avoid_Non_Temporal_Memset, 25);
2312 }
2313+ break;
2314 case 26:
2315 {
2316 CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH
2317
2318commit 6a97e2ba144a554809161d488f25e4bae07c9405
2319Author: Andreas Schwab <schwab@suse.de>
2320Date: Mon Aug 5 10:55:51 2024 +0200
2321
2322 Fix name space violation in fortify wrappers (bug 32052)
2323
2324 Rename the identifier sz to __sz everywhere.
2325
2326 Fixes: a643f60c53 ("Make sure that the fortified function conditionals are constant")
2327 (cherry picked from commit 39ca997ab378990d5ac1aadbaa52aaf1db6d526f)
2328
2329diff --git a/NEWS b/NEWS
2330index 8da0408ad9..b9eb4a558b 100644
2331--- a/NEWS
2332+++ b/NEWS
2333@@ -13,6 +13,7 @@ The following bugs are resolved with this release:
2334 [31968] mremap implementation in C does not handle arguments correctly
2335 [31890] resolv: Allow short error responses to match any DNS query
2336 [31968] mremap implementation in C does not handle arguments correctly
2337+ [32052] Name space violation in fortify wrappers
2338
2339 Version 2.40
2340
2341diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h
2342index 91a80dd7c6..4b8bc35bdf 100644
2343--- a/libio/bits/stdio2.h
2344+++ b/libio/bits/stdio2.h
2345@@ -308,14 +308,14 @@ fgets (__fortify_clang_overload_arg (char *, __restrict, __s), int __n,
2346 "fgets called with bigger size than length of "
2347 "destination buffer")
2348 {
2349- size_t sz = __glibc_objsize (__s);
2350- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
2351+ size_t __sz = __glibc_objsize (__s);
2352+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
2353 return __fgets_alias (__s, __n, __stream);
2354 #if !__fortify_use_clang
2355- if (__glibc_unsafe_len (__n, sizeof (char), sz))
2356- return __fgets_chk_warn (__s, sz, __n, __stream);
2357+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
2358+ return __fgets_chk_warn (__s, __sz, __n, __stream);
2359 #endif
2360- return __fgets_chk (__s, sz, __n, __stream);
2361+ return __fgets_chk (__s, __sz, __n, __stream);
2362 }
2363
2364 __fortify_function __wur __nonnull ((4)) __attribute_overloadable__ size_t
2365@@ -326,14 +326,14 @@ fread (__fortify_clang_overload_arg (void *, __restrict, __ptr),
2366 "fread called with bigger size * n than length "
2367 "of destination buffer")
2368 {
2369- size_t sz = __glibc_objsize0 (__ptr);
2370- if (__glibc_safe_or_unknown_len (__n, __size, sz))
2371+ size_t __sz = __glibc_objsize0 (__ptr);
2372+ if (__glibc_safe_or_unknown_len (__n, __size, __sz))
2373 return __fread_alias (__ptr, __size, __n, __stream);
2374 #if !__fortify_use_clang
2375- if (__glibc_unsafe_len (__n, __size, sz))
2376- return __fread_chk_warn (__ptr, sz, __size, __n, __stream);
2377+ if (__glibc_unsafe_len (__n, __size, __sz))
2378+ return __fread_chk_warn (__ptr, __sz, __size, __n, __stream);
2379 #endif
2380- return __fread_chk (__ptr, sz, __size, __n, __stream);
2381+ return __fread_chk (__ptr, __sz, __size, __n, __stream);
2382 }
2383
2384 #ifdef __USE_GNU
2385@@ -345,14 +345,14 @@ fgets_unlocked (__fortify_clang_overload_arg (char *, __restrict, __s),
2386 "fgets called with bigger size than length of "
2387 "destination buffer")
2388 {
2389- size_t sz = __glibc_objsize (__s);
2390- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
2391+ size_t __sz = __glibc_objsize (__s);
2392+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
2393 return __fgets_unlocked_alias (__s, __n, __stream);
2394 #if !__fortify_use_clang
2395- if (__glibc_unsafe_len (__n, sizeof (char), sz))
2396- return __fgets_unlocked_chk_warn (__s, sz, __n, __stream);
2397+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
2398+ return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream);
2399 #endif
2400- return __fgets_unlocked_chk (__s, sz, __n, __stream);
2401+ return __fgets_unlocked_chk (__s, __sz, __n, __stream);
2402 }
2403 #endif
2404
2405@@ -366,8 +366,8 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr),
2406 "fread_unlocked called with bigger size * n than "
2407 "length of destination buffer")
2408 {
2409- size_t sz = __glibc_objsize0 (__ptr);
2410- if (__glibc_safe_or_unknown_len (__n, __size, sz))
2411+ size_t __sz = __glibc_objsize0 (__ptr);
2412+ if (__glibc_safe_or_unknown_len (__n, __size, __sz))
2413 {
2414 # ifdef __USE_EXTERN_INLINES
2415 if (__builtin_constant_p (__size)
2416@@ -393,10 +393,10 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr),
2417 return __fread_unlocked_alias (__ptr, __size, __n, __stream);
2418 }
2419 # if !__fortify_use_clang
2420- if (__glibc_unsafe_len (__n, __size, sz))
2421- return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream);
2422+ if (__glibc_unsafe_len (__n, __size, __sz))
2423+ return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream);
2424 # endif
2425- return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream);
2426+ return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream);
2427
2428 }
2429 #endif
2430diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h
2431index 04780f320e..bd91647f37 100644
2432--- a/socket/bits/socket2.h
2433+++ b/socket/bits/socket2.h
2434@@ -37,14 +37,14 @@ recv (int __fd, __fortify_clang_overload_arg0 (void *, ,__buf), size_t __n,
2435 "recv called with bigger length than "
2436 "size of destination buffer")
2437 {
2438- size_t sz = __glibc_objsize0 (__buf);
2439- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
2440+ size_t __sz = __glibc_objsize0 (__buf);
2441+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
2442 return __recv_alias (__fd, __buf, __n, __flags);
2443 #if !__fortify_use_clang
2444- if (__glibc_unsafe_len (__n, sizeof (char), sz))
2445- return __recv_chk_warn (__fd, __buf, __n, sz, __flags);
2446+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
2447+ return __recv_chk_warn (__fd, __buf, __n, __sz, __flags);
2448 #endif
2449- return __recv_chk (__fd, __buf, __n, sz, __flags);
2450+ return __recv_chk (__fd, __buf, __n, __sz, __flags);
2451 }
2452
2453 extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
2454@@ -71,13 +71,13 @@ recvfrom (int __fd, __fortify_clang_overload_arg0 (void *, __restrict, __buf),
2455 "recvfrom called with bigger length "
2456 "than size of destination buffer")
2457 {
2458- size_t sz = __glibc_objsize0 (__buf);
2459- if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz))
2460+ size_t __sz = __glibc_objsize0 (__buf);
2461+ if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz))
2462 return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len);
2463 #if !__fortify_use_clang
2464- if (__glibc_unsafe_len (__n, sizeof (char), sz))
2465- return __recvfrom_chk_warn (__fd, __buf, __n, sz, __flags, __addr,
2466+ if (__glibc_unsafe_len (__n, sizeof (char), __sz))
2467+ return __recvfrom_chk_warn (__fd, __buf, __n, __sz, __flags, __addr,
2468 __addr_len);
2469 #endif
2470- return __recvfrom_chk (__fd, __buf, __n, sz, __flags, __addr, __addr_len);
2471+ return __recvfrom_chk (__fd, __buf, __n, __sz, __flags, __addr, __addr_len);
2472 }
2473diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h
2474index 1557b862b1..9c78ecf458 100644
2475--- a/stdlib/bits/stdlib.h
2476+++ b/stdlib/bits/stdlib.h
2477@@ -43,16 +43,16 @@ __NTH (realpath (const char *__restrict __name,
2478 "bytes long buffer")
2479 #endif
2480 {
2481- size_t sz = __glibc_objsize (__resolved);
2482+ size_t __sz = __glibc_objsize (__resolved);
2483
2484- if (sz == (size_t) -1)
2485+ if (__sz == (size_t) -1)
2486 return __realpath_alias (__name, __resolved);
2487
2488 #if !__fortify_use_clang && defined _LIBC_LIMITS_H_ && defined PATH_MAX
2489- if (__glibc_unsafe_len (PATH_MAX, sizeof (char), sz))
2490- return __realpath_chk_warn (__name, __resolved, sz);
2491+ if (__glibc_unsafe_len (PATH_MAX, sizeof (char), __sz))
2492+ return __realpath_chk_warn (__name, __resolved, __sz);
2493 #endif
2494- return __realpath_chk (__name, __resolved, sz);
2495+ return __realpath_chk (__name, __resolved, __sz);
2496 }
2497
2498
2499diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h
2500index 9fdff47ee2..43c6b63027 100644
2501--- a/wcsmbs/bits/wchar2.h
2502+++ b/wcsmbs/bits/wchar2.h
2503@@ -74,9 +74,9 @@ __fortify_function __attribute_overloadable__ wchar_t *
2504 __NTH (wcscpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest),
2505 const wchar_t *__restrict __src))
2506 {
2507- size_t sz = __glibc_objsize (__dest);
2508- if (sz != (size_t) -1)
2509- return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t));
2510+ size_t __sz = __glibc_objsize (__dest);
2511+ if (__sz != (size_t) -1)
2512+ return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t));
2513 return __wcscpy_alias (__dest, __src);
2514 }
2515
2516@@ -84,9 +84,9 @@ __fortify_function __attribute_overloadable__ wchar_t *
2517 __NTH (wcpcpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest),
2518 const wchar_t *__restrict __src))
2519 {
2520- size_t sz = __glibc_objsize (__dest);
2521- if (sz != (size_t) -1)
2522- return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t));
2523+ size_t __sz = __glibc_objsize (__dest);
2524+ if (__sz != (size_t) -1)
2525+ return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t));
2526 return __wcpcpy_alias (__dest, __src);
2527 }
2528
2529@@ -118,9 +118,9 @@ __fortify_function __attribute_overloadable__ wchar_t *
2530 __NTH (wcscat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest),
2531 const wchar_t *__restrict __src))
2532 {
2533- size_t sz = __glibc_objsize (__dest);
2534- if (sz != (size_t) -1)
2535- return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t));
2536+ size_t __sz = __glibc_objsize (__dest);
2537+ if (__sz != (size_t) -1)
2538+ return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t));
2539 return __wcscat_alias (__dest, __src);
2540 }
2541
2542@@ -128,9 +128,9 @@ __fortify_function __attribute_overloadable__ wchar_t *
2543 __NTH (wcsncat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest),
2544 const wchar_t *__restrict __src, size_t __n))
2545 {
2546- size_t sz = __glibc_objsize (__dest);
2547- if (sz != (size_t) -1)
2548- return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t));
2549+ size_t __sz = __glibc_objsize (__dest);
2550+ if (__sz != (size_t) -1)
2551+ return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t));
2552 return __wcsncat_alias (__dest, __src, __n);
2553 }
2554
2555@@ -170,10 +170,10 @@ __fortify_function int
2556 __NTH (swprintf (wchar_t *__restrict __s, size_t __n,
2557 const wchar_t *__restrict __fmt, ...))
2558 {
2559- size_t sz = __glibc_objsize (__s);
2560- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
2561+ size_t __sz = __glibc_objsize (__s);
2562+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
2563 return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
2564- sz / sizeof (wchar_t), __fmt, __va_arg_pack ());
2565+ __sz / sizeof (wchar_t), __fmt, __va_arg_pack ());
2566 return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ());
2567 }
2568 #elif __fortify_use_clang
2569@@ -206,10 +206,10 @@ __fortify_function int
2570 __NTH (vswprintf (wchar_t *__restrict __s, size_t __n,
2571 const wchar_t *__restrict __fmt, __gnuc_va_list __ap))
2572 {
2573- size_t sz = __glibc_objsize (__s);
2574- if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
2575+ size_t __sz = __glibc_objsize (__s);
2576+ if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
2577 return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
2578- sz / sizeof (wchar_t), __fmt, __ap);
2579+ __sz / sizeof (wchar_t), __fmt, __ap);
2580 return __vswprintf_alias (__s, __n, __fmt, __ap);
2581 }
2582
2583@@ -257,14 +257,14 @@ fgetws (__fortify_clang_overload_arg (wchar_t *, __restrict, __s), int __n,
2584 "fgetws called with length bigger "
2585 "than size of destination buffer")
2586 {
2587- size_t sz = __glibc_objsize (__s);
2588- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz))
2589+ size_t __sz = __glibc_objsize (__s);
2590+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz))
2591 return __fgetws_alias (__s, __n, __stream);
2592 #if !__fortify_use_clang
2593- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz))
2594- return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream);
2595+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz))
2596+ return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream);
2597 #endif
2598- return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream);
2599+ return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream);
2600 }
2601
2602 #ifdef __USE_GNU
2603@@ -275,15 +275,15 @@ fgetws_unlocked (__fortify_clang_overload_arg (wchar_t *, __restrict, __s),
2604 "fgetws_unlocked called with length bigger "
2605 "than size of destination buffer")
2606 {
2607- size_t sz = __glibc_objsize (__s);
2608- if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz))
2609+ size_t __sz = __glibc_objsize (__s);
2610+ if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz))
2611 return __fgetws_unlocked_alias (__s, __n, __stream);
2612 # if !__fortify_use_clang
2613- if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz))
2614- return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n,
2615+ if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz))
2616+ return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n,
2617 __stream);
2618 # endif
2619- return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream);
2620+ return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream);
2621 }
2622 #endif
2623
2624
2625commit 5641780762723156b0d20a0b9f7df1d76831bab0
2626Author: Arjun Shankar <arjun@redhat.com>
2627Date: Tue Jul 30 11:37:57 2024 +0200
2628
2629 manual/stdio: Further clarify putc, putwc, getc, and getwc
2630
2631 This is a follow-up to 10de4a47ef3f481592e3c62eb07bcda23e9fde4d that
2632 reworded the manual entries for putc and putwc and removed any
2633 performance claims.
2634
2635 This commit further clarifies these entries and brings getc and getwc in
2636 line with the descriptions of putc and putwc, removing any performance
2637 claims from them as well.
2638 Reviewed-by: Florian Weimer <fweimer@redhat.com>
2639
2640 (cherry picked from commit 942670c81dc8071dd75d6213e771daa5d2084cb6)
2641
2642diff --git a/manual/stdio.texi b/manual/stdio.texi
2643index f9529a098d..8517653507 100644
2644--- a/manual/stdio.texi
2645+++ b/manual/stdio.texi
2646@@ -904,20 +904,16 @@ This function is a GNU extension.
2647 @standards{ISO, stdio.h}
2648 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
2649 This is just like @code{fputc}, except that it may be implemented as
2650-a macro, making it faster. One consequence is that it may evaluate the
2651-@var{stream} argument more than once, which is an exception to the
2652-general rule for macros. Therefore, @var{stream} should never be an
2653-expression with side-effects.
2654+a macro and may evaluate the @var{stream} argument more than once.
2655+Therefore, @var{stream} should never be an expression with side-effects.
2656 @end deftypefun
2657
2658 @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream})
2659 @standards{ISO, wchar.h}
2660 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}}
2661 This is just like @code{fputwc}, except that it may be implemented as
2662-a macro, making it faster. One consequence is that it may evaluate the
2663-@var{stream} argument more than once, which is an exception to the
2664-general rule for macros. Therefore, @var{stream} should never be an
2665-expression with side-effects.
2666+a macro and may evaluate the @var{stream} argument more than once.
2667+Therefore, @var{stream} should never be an expression with side-effects.
2668 @end deftypefun
2669
2670 @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream})
2671@@ -1110,20 +1106,17 @@ This function is a GNU extension.
2672 @deftypefun int getc (FILE *@var{stream})
2673 @standards{ISO, stdio.h}
2674 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}}
2675-This is just like @code{fgetc}, except that it is permissible (and
2676-typical) for it to be implemented as a macro that evaluates the
2677-@var{stream} argument more than once. @code{getc} is often highly
2678-optimized, so it is usually the best function to use to read a single
2679-character.
2680+This is just like @code{fgetc}, except that it may be implemented as
2681+a macro and may evaluate the @var{stream} argument more than once.
2682+Therefore, @var{stream} should never be an expression with side-effects.
2683 @end deftypefun
2684
2685 @deftypefun wint_t getwc (FILE *@var{stream})
2686 @standards{ISO, wchar.h}
2687 @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}}
2688-This is just like @code{fgetwc}, except that it is permissible for it to
2689-be implemented as a macro that evaluates the @var{stream} argument more
2690-than once. @code{getwc} can be highly optimized, so it is usually the
2691-best function to use to read a single wide character.
2692+This is just like @code{fgetwc}, except that it may be implemented as
2693+a macro and may evaluate the @var{stream} argument more than once.
2694+Therefore, @var{stream} should never be an expression with side-effects.
2695 @end deftypefun
2696
2697 @deftypefun int getc_unlocked (FILE *@var{stream})
2698
2699commit 39ee60a719eb6ffde76ccc232d79273c473d7a93
2700Author: Florian Weimer <fweimer@redhat.com>
2701Date: Fri Aug 9 17:01:17 2024 +0200
2702
2703 support: Add options list terminator to the test driver
2704
2705 This avoids crashes if a test is passed unknown options.
2706
2707 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2708 (cherry picked from commit c2a474f4617ede7a8bf56b7257acb37dc757b2d1)
2709
2710diff --git a/support/test-driver.c b/support/test-driver.c
2711index f4c3e4d666..04ceebc08f 100644
2712--- a/support/test-driver.c
2713+++ b/support/test-driver.c
2714@@ -155,6 +155,7 @@ main (int argc, char **argv)
2715 {
2716 CMDLINE_OPTIONS
2717 TEST_DEFAULT_OPTIONS
2718+ { 0, }
2719 };
2720 test_config.options = &options;
2721 #endif
2722
2723commit e3556937c2402b8acf2e586bf53168e9f482ba91
2724Author: H.J. Lu <hjl.tools@gmail.com>
2725Date: Mon Jul 22 17:47:21 2024 -0700
2726
2727 x86-64: Remove sysdeps/x86_64/x32/dl-machine.h
2728
2729 Remove sysdeps/x86_64/x32/dl-machine.h by folding x32 ARCH_LA_PLTENTER,
2730 ARCH_LA_PLTEXIT and RTLD_START into sysdeps/x86_64/dl-machine.h. There
2731 are no regressions on x86-64 nor x32. There are no changes in x86-64
2732 _dl_start_user. On x32, _dl_start_user changes are
2733
2734 <_dl_start_user>:
2735 mov %eax,%r12d
2736 + mov %esp,%r13d
2737 mov (%rsp),%edx
2738 mov %edx,%esi
2739 - mov %esp,%r13d
2740 and $0xfffffff0,%esp
2741 mov 0x0(%rip),%edi # <_dl_start_user+0x14>
2742 lea 0x8(%r13,%rdx,4),%ecx
2743
2744 Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2745 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
2746 (cherry picked from commit 652c6cf26927352fc0e37e4e60c6fc98ddf6d3b4)
2747
2748diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
2749index a6de3793e4..4f12955875 100644
2750--- a/sysdeps/x86_64/dl-machine.h
2751+++ b/sysdeps/x86_64/dl-machine.h
2752@@ -139,37 +139,37 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[],
2753 .globl _start\n\
2754 .globl _dl_start_user\n\
2755 _start:\n\
2756- movq %rsp, %rdi\n\
2757+ mov %" RSP_LP ", %" RDI_LP "\n\
2758 call _dl_start\n\
2759 _dl_start_user:\n\
2760 # Save the user entry point address in %r12.\n\
2761- movq %rax, %r12\n\
2762+ mov %" RAX_LP ", %" R12_LP "\n\
2763 # Save %rsp value in %r13.\n\
2764- movq %rsp, %r13\n\
2765+ mov %" RSP_LP ", % " R13_LP "\n\
2766 "\
2767 RTLD_START_ENABLE_X86_FEATURES \
2768 "\
2769 # Read the original argument count.\n\
2770- movq (%rsp), %rdx\n\
2771+ mov (%rsp), %" RDX_LP "\n\
2772 # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\
2773 # argc -> rsi\n\
2774- movq %rdx, %rsi\n\
2775+ mov %" RDX_LP ", %" RSI_LP "\n\
2776 # And align stack for the _dl_init call. \n\
2777- andq $-16, %rsp\n\
2778+ and $-16, %" RSP_LP "\n\
2779 # _dl_loaded -> rdi\n\
2780- movq _rtld_local(%rip), %rdi\n\
2781+ mov _rtld_local(%rip), %" RDI_LP "\n\
2782 # env -> rcx\n\
2783- leaq 16(%r13,%rdx,8), %rcx\n\
2784+ lea 2*" LP_SIZE "(%r13,%rdx," LP_SIZE "), %" RCX_LP "\n\
2785 # argv -> rdx\n\
2786- leaq 8(%r13), %rdx\n\
2787+ lea " LP_SIZE "(%r13), %" RDX_LP "\n\
2788 # Clear %rbp to mark outermost frame obviously even for constructors.\n\
2789 xorl %ebp, %ebp\n\
2790 # Call the function to run the initializers.\n\
2791 call _dl_init\n\
2792 # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\
2793- leaq _dl_fini(%rip), %rdx\n\
2794+ lea _dl_fini(%rip), %" RDX_LP "\n\
2795 # And make sure %rsp points to argc stored on the stack.\n\
2796- movq %r13, %rsp\n\
2797+ mov %" R13_LP ", %" RSP_LP "\n\
2798 # Jump to the user's entry point.\n\
2799 jmp *%r12\n\
2800 .previous\n\
2801@@ -234,8 +234,13 @@ elf_machine_plt_value (struct link_map *map, const ElfW(Rela) *reloc,
2802
2803
2804 /* Names of the architecture-specific auditing callback functions. */
2805+#ifdef __LP64__
2806 #define ARCH_LA_PLTENTER x86_64_gnu_pltenter
2807 #define ARCH_LA_PLTEXIT x86_64_gnu_pltexit
2808+#else
2809+#define ARCH_LA_PLTENTER x32_gnu_pltenter
2810+#define ARCH_LA_PLTEXIT x32_gnu_pltexit
2811+#endif
2812
2813 #endif /* !dl_machine_h */
2814
2815diff --git a/sysdeps/x86_64/x32/dl-machine.h b/sysdeps/x86_64/x32/dl-machine.h
2816deleted file mode 100644
2817index c35cee9261..0000000000
2818--- a/sysdeps/x86_64/x32/dl-machine.h
2819+++ /dev/null
2820@@ -1,76 +0,0 @@
2821-/* Machine-dependent ELF dynamic relocation inline functions. x32 version.
2822- Copyright (C) 2012-2024 Free Software Foundation, Inc.
2823- This file is part of the GNU C Library.
2824-
2825- The GNU C Library is free software; you can redistribute it and/or
2826- modify it under the terms of the GNU Lesser General Public
2827- License as published by the Free Software Foundation; either
2828- version 2.1 of the License, or (at your option) any later version.
2829-
2830- The GNU C Library is distributed in the hope that it will be useful,
2831- but WITHOUT ANY WARRANTY; without even the implied warranty of
2832- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2833- Lesser General Public License for more details.
2834-
2835- You should have received a copy of the GNU Lesser General Public
2836- License along with the GNU C Library; if not, see
2837- <https://www.gnu.org/licenses/>. */
2838-
2839-/* Must allow <sysdeps/x86_64/dl-machine.h> to be included more than once.
2840- See #ifdef RESOLVE_MAP in sysdeps/x86_64/dl-machine.h. */
2841-#include <sysdeps/x86_64/dl-machine.h>
2842-
2843-#ifndef _X32_DL_MACHINE_H
2844-#define _X32_DL_MACHINE_H
2845-
2846-#undef ARCH_LA_PLTENTER
2847-#undef ARCH_LA_PLTEXIT
2848-#undef RTLD_START
2849-
2850-/* Names of the architecture-specific auditing callback functions. */
2851-#define ARCH_LA_PLTENTER x32_gnu_pltenter
2852-#define ARCH_LA_PLTEXIT x32_gnu_pltexit
2853-
2854-/* Initial entry point code for the dynamic linker.
2855- The C function `_dl_start' is the real entry point;
2856- its return value is the user program's entry point. */
2857-#define RTLD_START asm ("\n\
2858-.text\n\
2859- .p2align 4\n\
2860-.globl _start\n\
2861-.globl _dl_start_user\n\
2862-_start:\n\
2863- movl %esp, %edi\n\
2864- call _dl_start\n\
2865-_dl_start_user:\n\
2866- # Save the user entry point address in %r12.\n\
2867- movl %eax, %r12d\n\
2868- # Read the original argument count.\n\
2869- movl (%rsp), %edx\n\
2870- # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\
2871- # argc -> rsi\n\
2872- movl %edx, %esi\n\
2873- # Save %rsp value in %r13.\n\
2874- movl %esp, %r13d\n\
2875- # And align stack for the _dl_init call.\n\
2876- and $-16, %esp\n\
2877- # _dl_loaded -> rdi\n\
2878- movl _rtld_local(%rip), %edi\n\
2879- # env -> rcx\n\
2880- lea 8(%r13,%rdx,4), %ecx\n\
2881- # argv -> rdx\n\
2882- lea 4(%r13), %edx\n\
2883- # Clear %rbp to mark outermost frame obviously even for constructors.\n\
2884- xorl %ebp, %ebp\n\
2885- # Call the function to run the initializers.\n\
2886- call _dl_init\n\
2887- # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\
2888- lea _dl_fini(%rip), %edx\n\
2889- # And make sure %rsp points to argc stored on the stack.\n\
2890- movl %r13d, %esp\n\
2891- # Jump to the user's entry point.\n\
2892- jmp *%r12\n\
2893-.previous\n\
2894-");
2895-
2896-#endif /* !_X32_DL_MACHINE_H */
2897
2898commit 898f25e0b1026be5701d05715600be646e9d0714
2899Author: H.J. Lu <hjl.tools@gmail.com>
2900Date: Mon Jul 22 17:47:22 2024 -0700
2901
2902 x32/cet: Support shadow stack during startup for Linux 6.10
2903
2904 Use RXX_LP in RTLD_START_ENABLE_X86_FEATURES. Support shadow stack during
2905 startup for Linux 6.10:
2906
2907 commit 2883f01ec37dd8668e7222dfdb5980c86fdfe277
2908 Author: H.J. Lu <hjl.tools@gmail.com>
2909 Date: Fri Mar 15 07:04:33 2024 -0700
2910
2911 x86/shstk: Enable shadow stacks for x32
2912
2913 1. Add shadow stack support to x32 signal.
2914 2. Use the 64-bit map_shadow_stack syscall for x32.
2915 3. Set up shadow stack for x32.
2916
2917 Add the map_shadow_stack system call to <fixup-asm-unistd.h> and regenerate
2918 arch-syscall.h. Tested on Intel Tiger Lake with CET enabled x32. There
2919 are no regressions with CET enabled x86-64. There are no changes in CET
2920 enabled x86-64 _dl_start_user.
2921
2922 Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
2923 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
2924 (cherry picked from commit 8344c1f5514b1b5b1c8c6e48f4b802653bd23b71)
2925
2926diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h
2927index 1fe3133406..b4f7e6c9cd 100644
2928--- a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h
2929+++ b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h
2930@@ -92,9 +92,9 @@ dl_cet_ibt_enabled (void)
2931 # Pass GL(dl_x86_feature_1) to _dl_cet_setup_features.\n\
2932 movl %edx, %edi\n\
2933 # Align stack for the _dl_cet_setup_features call.\n\
2934- andq $-16, %rsp\n\
2935+ and $-16, %" RSP_LP "\n\
2936 call _dl_cet_setup_features\n\
2937 # Restore %rax and %rsp from %r12 and %r13.\n\
2938- movq %r12, %rax\n\
2939- movq %r13, %rsp\n\
2940+ mov %" R12_LP ", %" RAX_LP "\n\
2941+ mov %" R13_LP ", %" RSP_LP "\n\
2942 "
2943diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
2944index 3040a47d72..df3e22236d 100644
2945--- a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
2946+++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h
2947@@ -155,6 +155,7 @@
2948 #define __NR_lsm_set_self_attr 1073742284
2949 #define __NR_lstat 1073741830
2950 #define __NR_madvise 1073741852
2951+#define __NR_map_shadow_stack 1073742277
2952 #define __NR_mbind 1073742061
2953 #define __NR_membarrier 1073742148
2954 #define __NR_memfd_create 1073742143
2955diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h
2956index 98124169e6..47fa8af4ce 100644
2957--- a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h
2958+++ b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h
2959@@ -15,6 +15,10 @@
2960 License along with the GNU C Library; if not, see
2961 <http://www.gnu.org/licenses/>. */
2962
2963+#ifndef __NR_map_shadow_stack
2964+# define __NR_map_shadow_stack 1073742277
2965+#endif
2966+
2967 /* X32 uses the same 64-bit syscall interface for set_thread_area. */
2968 #ifndef __NR_set_thread_area
2969 # define __NR_set_thread_area 1073742029
2970
2971commit c0af0c2ba016030c778bc22c55f5f9498f96b8b9
2972Author: Noah Goldstein <goldstein.w.n@gmail.com>
2973Date: Tue Aug 13 23:29:14 2024 +0800
2974
2975 x86: Fix bug in strchrnul-evex512 [BZ #32078]
2976
2977 Issue was we were expecting not matches with CHAR before the start of
2978 the string in the page cross case.
2979
2980 The check code in the page cross case:
2981 ```
2982 and $0xffffffffffffffc0,%rax
2983 vmovdqa64 (%rax),%zmm17
2984 vpcmpneqb %zmm17,%zmm16,%k1
2985 vptestmb %zmm17,%zmm17,%k0{%k1}
2986 kmovq %k0,%rax
2987 inc %rax
2988 shr %cl,%rax
2989 je L(continue)
2990 ```
2991
2992 expects that all characters that neither match null nor CHAR will be
2993 1s in `rax` prior to the `inc`. Then the `inc` will overflow all of
2994 the 1s where no relevant match was found.
2995
2996 This is incorrect in the page-cross case, as the
2997 `vmovdqa64 (%rax),%zmm17` loads from before the start of the input
2998 string.
2999
3000 If there are matches with CHAR before the start of the string, `rax`
3001 won't properly overflow.
3002
3003 The fix is quite simple. Just replace:
3004
3005 ```
3006 inc %rax
3007 shr %cl,%rax
3008 ```
3009 With:
3010 ```
3011 sar %cl,%rax
3012 inc %rax
3013 ```
3014
3015 The arithmetic shift will clear any matches prior to the start of the
3016 string while maintaining the signbit so the 1s can properly overflow
3017 to zero in the case of no matches.
3018 Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
3019
3020 (cherry picked from commit 7da08862471dfec6fdae731c2a5f351ad485c71f)
3021
3022diff --git a/string/test-strchr.c b/string/test-strchr.c
3023index c795eac6fa..72b17af687 100644
3024--- a/string/test-strchr.c
3025+++ b/string/test-strchr.c
3026@@ -255,6 +255,69 @@ check1 (void)
3027 check_result (impl, s, c, exp_result);
3028 }
3029
3030+static void
3031+check2 (void)
3032+{
3033+ CHAR *s = (CHAR *) (buf1 + getpagesize () - 4 * sizeof (CHAR));
3034+ CHAR *s_begin = (CHAR *) (buf1 + getpagesize () - 64);
3035+#ifndef USE_FOR_STRCHRNUL
3036+ CHAR *exp_result = NULL;
3037+#else
3038+ CHAR *exp_result = s + 1;
3039+#endif
3040+ CHAR val = 0x12;
3041+ for (; s_begin != s; ++s_begin)
3042+ *s_begin = val;
3043+
3044+ s[0] = val + 1;
3045+ s[1] = 0;
3046+ s[2] = val + 1;
3047+ s[3] = val + 1;
3048+
3049+ {
3050+ FOR_EACH_IMPL (impl, 0)
3051+ check_result (impl, s, val, exp_result);
3052+ }
3053+ s[3] = val;
3054+ {
3055+ FOR_EACH_IMPL (impl, 0)
3056+ check_result (impl, s, val, exp_result);
3057+ }
3058+ exp_result = s;
3059+ s[0] = val;
3060+ {
3061+ FOR_EACH_IMPL (impl, 0)
3062+ check_result (impl, s, val, exp_result);
3063+ }
3064+
3065+ s[3] = val + 1;
3066+ {
3067+ FOR_EACH_IMPL (impl, 0)
3068+ check_result (impl, s, val, exp_result);
3069+ }
3070+
3071+ s[0] = val + 1;
3072+ s[1] = val + 1;
3073+ s[2] = val + 1;
3074+ s[3] = val + 1;
3075+ s[4] = val;
3076+ exp_result = s + 4;
3077+ {
3078+ FOR_EACH_IMPL (impl, 0)
3079+ check_result (impl, s, val, exp_result);
3080+ }
3081+ s[4] = 0;
3082+#ifndef USE_FOR_STRCHRNUL
3083+ exp_result = NULL;
3084+#else
3085+ exp_result = s + 4;
3086+#endif
3087+ {
3088+ FOR_EACH_IMPL (impl, 0)
3089+ check_result (impl, s, val, exp_result);
3090+ }
3091+}
3092+
3093 int
3094 test_main (void)
3095 {
3096@@ -263,7 +326,7 @@ test_main (void)
3097 test_init ();
3098
3099 check1 ();
3100-
3101+ check2 ();
3102 printf ("%20s", "");
3103 FOR_EACH_IMPL (impl, 0)
3104 printf ("\t%s", impl->name);
3105diff --git a/sysdeps/x86_64/multiarch/strchr-evex-base.S b/sysdeps/x86_64/multiarch/strchr-evex-base.S
3106index 04e2c0e79e..3a0b7c9d64 100644
3107--- a/sysdeps/x86_64/multiarch/strchr-evex-base.S
3108+++ b/sysdeps/x86_64/multiarch/strchr-evex-base.S
3109@@ -124,13 +124,13 @@ L(page_cross):
3110 VPCMPNE %VMM(1), %VMM(0), %k1
3111 VPTEST %VMM(1), %VMM(1), %k0{%k1}
3112 KMOV %k0, %VRAX
3113-# ifdef USE_AS_WCSCHR
3114+ sar %cl, %VRAX
3115+#ifdef USE_AS_WCSCHR
3116 sub $VEC_MATCH_MASK, %VRAX
3117-# else
3118+#else
3119 inc %VRAX
3120-# endif
3121+#endif
3122 /* Ignore number of character for alignment adjustment. */
3123- shr %cl, %VRAX
3124 jz L(align_more)
3125
3126 bsf %VRAX, %VRAX
3127
3128commit 586e4cd8c67df95ebb0bfecea3d007bff618d6d9
3129Author: Florian Weimer <fweimer@redhat.com>
3130Date: Fri Aug 9 16:17:14 2024 +0200
3131
3132 Define __libc_initial for the static libc
3133
3134 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3135 (cherry picked from commit eb0e50e9a1cf80a2ba6f33f990a08ef37a3267fb)
3136
3137diff --git a/include/libc-internal.h b/include/libc-internal.h
3138index 87ac591835..1ef43ffe67 100644
3139--- a/include/libc-internal.h
3140+++ b/include/libc-internal.h
3141@@ -53,6 +53,9 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
3142 is not for an audit module, not loaded via dlmopen, and not loaded
3143 via static dlopen either). */
3144 extern _Bool __libc_initial attribute_hidden;
3145+#else
3146+/* The static libc is always the initial namespace. */
3147+# define __libc_initial ((_Bool) 1)
3148 #endif
3149
3150 #endif /* _LIBC_INTERNAL */
3151
3152commit 709319f9de6f976f9feceb623cb2c96769e9d78b
3153Author: Florian Weimer <fweimer@redhat.com>
3154Date: Mon Aug 19 15:48:03 2024 +0200
3155
3156 string: strerror, strsignal cannot use buffer after dlmopen (bug 32026)
3157
3158 Secondary namespaces have a different malloc. Allocating the
3159 buffer in one namespace and freeing it another results in
3160 heap corruption. Fix this by using a static string (potentially
3161 translated) in secondary namespaces. It would also be possible
3162 to use the malloc from the initial namespace to manage the
3163 buffer, but these functions would still not be safe to use in
3164 auditors etc. because a call to strerror could still free a
3165 buffer while it is used by the application. Another approach
3166 could use proper initial-exec TLS, duplicated in secondary
3167 namespaces, but that would need a callback interface for freeing
3168 libc resources in namespaces on thread exit, which does not exist
3169 today.
3170
3171 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3172 (cherry picked from commit 25a5eb4010df94b412c67db9e346029de316d06b)
3173
3174diff --git a/NEWS b/NEWS
3175index b9eb4a558b..10a125bc66 100644
3176--- a/NEWS
3177+++ b/NEWS
3178@@ -13,6 +13,7 @@ The following bugs are resolved with this release:
3179 [31968] mremap implementation in C does not handle arguments correctly
3180 [31890] resolv: Allow short error responses to match any DNS query
3181 [31968] mremap implementation in C does not handle arguments correctly
3182+ [32026] strerror/strsignal TLS not handled correctly for secondary namespaces
3183 [32052] Name space violation in fortify wrappers
3184
3185 Version 2.40
3186diff --git a/string/strerror_l.c b/string/strerror_l.c
3187index 15cce261e6..70456e5bb4 100644
3188--- a/string/strerror_l.c
3189+++ b/string/strerror_l.c
3190@@ -20,7 +20,7 @@
3191 #include <stdio.h>
3192 #include <string.h>
3193 #include <tls-internal.h>
3194-
3195+#include <libc-internal.h>
3196
3197 static const char *
3198 translate (const char *str, locale_t loc)
3199@@ -31,6 +31,12 @@ translate (const char *str, locale_t loc)
3200 return res;
3201 }
3202
3203+static char *
3204+unknown_error (locale_t loc)
3205+{
3206+ return (char *) translate ("Unknown error", loc);
3207+}
3208+
3209
3210 /* Return a string describing the errno code in ERRNUM. */
3211 char *
3212@@ -40,18 +46,25 @@ __strerror_l (int errnum, locale_t loc)
3213 char *err = (char *) __get_errlist (errnum);
3214 if (__glibc_unlikely (err == NULL))
3215 {
3216- struct tls_internal_t *tls_internal = __glibc_tls_internal ();
3217- free (tls_internal->strerror_l_buf);
3218- if (__asprintf (&tls_internal->strerror_l_buf, "%s%d",
3219- translate ("Unknown error ", loc), errnum) > 0)
3220- err = tls_internal->strerror_l_buf;
3221- else
3222+ if (__libc_initial)
3223 {
3224- /* The memory was freed above. */
3225- tls_internal->strerror_l_buf = NULL;
3226- /* Provide a fallback translation. */
3227- err = (char *) translate ("Unknown error", loc);
3228+ struct tls_internal_t *tls_internal = __glibc_tls_internal ();
3229+ free (tls_internal->strerror_l_buf);
3230+ if (__asprintf (&tls_internal->strerror_l_buf, "%s%d",
3231+ translate ("Unknown error ", loc), errnum) > 0)
3232+ err = tls_internal->strerror_l_buf;
3233+ else
3234+ {
3235+ /* The memory was freed above. */
3236+ tls_internal->strerror_l_buf = NULL;
3237+ /* Provide a fallback translation. */
3238+ err = unknown_error (loc);
3239+ }
3240 }
3241+ else
3242+ /* Secondary namespaces use a different malloc, so cannot
3243+ participate in the buffer management. */
3244+ err = unknown_error (loc);
3245 }
3246 else
3247 err = (char *) translate (err, loc);
3248diff --git a/string/strsignal.c b/string/strsignal.c
3249index 3114601564..d9b0365468 100644
3250--- a/string/strsignal.c
3251+++ b/string/strsignal.c
3252@@ -21,6 +21,7 @@
3253 #include <string.h>
3254 #include <libintl.h>
3255 #include <tls-internal.h>
3256+#include <libc-internal.h>
3257
3258 /* Return a string describing the meaning of the signal number SIGNUM. */
3259 char *
3260@@ -30,21 +31,28 @@ strsignal (int signum)
3261 if (desc != NULL)
3262 return _(desc);
3263
3264- struct tls_internal_t *tls_internal = __glibc_tls_internal ();
3265- free (tls_internal->strsignal_buf);
3266+ if (__libc_initial)
3267+ {
3268+ struct tls_internal_t *tls_internal = __glibc_tls_internal ();
3269+ free (tls_internal->strsignal_buf);
3270
3271- int r;
3272+ int r;
3273 #ifdef SIGRTMIN
3274- if (signum >= SIGRTMIN && signum <= SIGRTMAX)
3275- r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"),
3276- signum - SIGRTMIN);
3277- else
3278+ if (signum >= SIGRTMIN && signum <= SIGRTMAX)
3279+ r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"),
3280+ signum - SIGRTMIN);
3281+ else
3282 #endif
3283- r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"),
3284- signum);
3285-
3286- if (r == -1)
3287- tls_internal->strsignal_buf = NULL;
3288-
3289- return tls_internal->strsignal_buf;
3290+ r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"),
3291+ signum);
3292+
3293+ if (r >= 0)
3294+ return tls_internal->strsignal_buf;
3295+ else
3296+ tls_internal->strsignal_buf = NULL;
3297+ }
3298+ /* Fall through on asprintf error, and for !__libc_initial:
3299+ secondary namespaces use a different malloc and cannot
3300+ participate in the buffer management. */
3301+ return _("Unknown signal");
3302 }
3303
3304commit bc240ba7c86a74bc64d4234feadb49bb8e36e1c9
3305Author: Maciej W. Rozycki <macro@redhat.com>
3306Date: Fri Jul 26 13:21:34 2024 +0100
3307
3308 support: Add FAIL test failure helper
3309
3310 Add a FAIL test failure helper analogous to FAIL_RET, that does not
3311 cause the current function to return, providing a standardized way to
3312 report a test failure with a message supplied while permitting the
3313 caller to continue executing, for further reporting, cleaning up, etc.
3314
3315 Update existing test cases that provide a conflicting definition of FAIL
3316 by removing the local FAIL definition and then as follows:
3317
3318 - tst-fortify-syslog: provide a meaningful message in addition to the
3319 file name already added by <support/check.h>; 'support_record_failure'
3320 is already called by 'support_print_failure_impl' invoked by the new
3321 FAIL test failure helper.
3322
3323 - tst-ctype: no update to FAIL calls required, with the name of the file
3324 and the line number within of the failure site additionally included
3325 by the new FAIL test failure helper, and error counting plus count
3326 reporting upon test program termination also already provided by
3327 'support_record_failure' and 'support_report_failure' respectively,
3328 called by 'support_print_failure_impl' and 'adjust_exit_status' also
3329 respectively. However in a number of places 'printf' is called and
3330 the error count adjusted by hand, so update these places to make use
3331 of FAIL instead. And last but not least adjust the final summary just
3332 to report completion, with any error count following as reported by
3333 the test driver.
3334
3335 - test-tgmath2: no update to FAIL calls required, with the name of the
3336 file of the failure site additionally included by the new FAIL test
3337 failure helper. Also there is no need to track the return status by
3338 hand as any call to FAIL will eventually cause the test case to return
3339 an unsuccesful exit status regardless of the return status from the
3340 test function, via a call to 'adjust_exit_status' made by the test
3341 driver.
3342
3343 Reviewed-by: DJ Delorie <dj@redhat.com>
3344 (cherry picked from commit 1b97a9f23bf605ca608162089c94187573fb2a9e)
3345
3346diff --git a/debug/tst-fortify-syslog.c b/debug/tst-fortify-syslog.c
3347index a7ddbf7c6b..2712acf689 100644
3348--- a/debug/tst-fortify-syslog.c
3349+++ b/debug/tst-fortify-syslog.c
3350@@ -22,7 +22,6 @@
3351 #include <syslog.h>
3352 #include <string.h>
3353 #include <unistd.h>
3354-#include <stdio.h>
3355
3356 #include <support/check.h>
3357 #include <support/support.h>
3358@@ -46,18 +45,13 @@ handler (int sig)
3359 _exit (127);
3360 }
3361
3362-#define FAIL() \
3363- do { \
3364- printf ("Failure on line %d\n", __LINE__); \
3365- support_record_failure (); \
3366- } while (0)
3367 #define CHK_FAIL_START \
3368 chk_fail_ok = 1; \
3369 if (! setjmp (chk_fail_buf)) \
3370 {
3371 #define CHK_FAIL_END \
3372 chk_fail_ok = 0; \
3373- FAIL (); \
3374+ FAIL ("not supposed to reach here"); \
3375 }
3376
3377 static void
3378diff --git a/localedata/tst-ctype.c b/localedata/tst-ctype.c
3379index 9de979a2d7..a23689719c 100644
3380--- a/localedata/tst-ctype.c
3381+++ b/localedata/tst-ctype.c
3382@@ -21,6 +21,8 @@
3383 #include <stdio.h>
3384 #include <string.h>
3385
3386+#include <support/check.h>
3387+
3388
3389 static const char lower[] = "abcdefghijklmnopqrstuvwxyz";
3390 static const char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
3391@@ -53,19 +55,11 @@ static struct classes
3392 #define nclasses (sizeof (classes) / sizeof (classes[0]))
3393
3394
3395-#define FAIL(str, args...) \
3396- { \
3397- printf (" " str "\n", ##args); \
3398- ++errors; \
3399- }
3400-
3401-
3402 static int
3403 do_test (void)
3404 {
3405 const char *cp;
3406 const char *cp2;
3407- int errors = 0;
3408 char *inpline = NULL;
3409 size_t inplinelen = 0;
3410 char *resline = NULL;
3411@@ -394,11 +388,8 @@ punct = %04x alnum = %04x\n",
3412 {
3413 if (((__ctype_b[(unsigned int) *inp] & classes[n].mask) != 0)
3414 != (*resp != '0'))
3415- {
3416- printf (" is%s('%c' = '\\x%02x') %s true\n", inpline,
3417- *inp, *inp, *resp == '1' ? "not" : "is");
3418- ++errors;
3419- }
3420+ FAIL (" is%s('%c' = '\\x%02x') %s true\n", inpline,
3421+ *inp, *inp, *resp == '1' ? "not" : "is");
3422 ++inp;
3423 ++resp;
3424 }
3425@@ -408,11 +399,8 @@ punct = %04x alnum = %04x\n",
3426 while (*inp != '\0')
3427 {
3428 if (tolower (*inp) != *resp)
3429- {
3430- printf (" tolower('%c' = '\\x%02x') != '%c'\n",
3431- *inp, *inp, *resp);
3432- ++errors;
3433- }
3434+ FAIL (" tolower('%c' = '\\x%02x') != '%c'\n",
3435+ *inp, *inp, *resp);
3436 ++inp;
3437 ++resp;
3438 }
3439@@ -422,11 +410,8 @@ punct = %04x alnum = %04x\n",
3440 while (*inp != '\0')
3441 {
3442 if (toupper (*inp) != *resp)
3443- {
3444- printf (" toupper('%c' = '\\x%02x') != '%c'\n",
3445- *inp, *inp, *resp);
3446- ++errors;
3447- }
3448+ FAIL (" toupper('%c' = '\\x%02x') != '%c'\n",
3449+ *inp, *inp, *resp);
3450 ++inp;
3451 ++resp;
3452 }
3453@@ -436,14 +421,7 @@ punct = %04x alnum = %04x\n",
3454 }
3455
3456
3457- if (errors != 0)
3458- {
3459- printf (" %d error%s for `%s' locale\n\n\n", errors,
3460- errors == 1 ? "" : "s", setlocale (LC_ALL, NULL));
3461- return 1;
3462- }
3463-
3464- printf (" No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL));
3465+ printf ("Completed testing for `%s' locale\n\n\n", setlocale (LC_ALL, NULL));
3466 return 0;
3467 }
3468
3469diff --git a/math/test-tgmath2.c b/math/test-tgmath2.c
3470index 37afa8a08a..4aeb877b8e 100644
3471--- a/math/test-tgmath2.c
3472+++ b/math/test-tgmath2.c
3473@@ -24,6 +24,8 @@
3474 #include <string.h>
3475 #include <tgmath.h>
3476
3477+#include <support/check.h>
3478+
3479 //#define DEBUG
3480
3481 typedef complex float cfloat;
3482@@ -87,13 +89,6 @@ enum
3483 int count;
3484 int counts[Tlast][C_last];
3485
3486-#define FAIL(str) \
3487- do \
3488- { \
3489- printf ("%s failure on line %d\n", (str), __LINE__); \
3490- result = 1; \
3491- } \
3492- while (0)
3493 #define TEST_TYPE_ONLY(expr, rettype) \
3494 do \
3495 { \
3496@@ -133,8 +128,6 @@ int counts[Tlast][C_last];
3497 int
3498 test_cos (const int Vint4, const long long int Vllong4)
3499 {
3500- int result = 0;
3501-
3502 TEST (cos (vfloat1), float, cos);
3503 TEST (cos (vdouble1), double, cos);
3504 TEST (cos (vldouble1), ldouble, cos);
3505@@ -152,7 +145,7 @@ test_cos (const int Vint4, const long long int Vllong4)
3506 TEST (cos (Vcdouble1), cdouble, cos);
3507 TEST (cos (Vcldouble1), cldouble, cos);
3508
3509- return result;
3510+ return 0;
3511 }
3512
3513 int
3514diff --git a/support/check.h b/support/check.h
3515index 711f34b83b..7ea22c7a2c 100644
3516--- a/support/check.h
3517+++ b/support/check.h
3518@@ -24,6 +24,11 @@
3519
3520 __BEGIN_DECLS
3521
3522+/* Record a test failure, print the failure message to standard output
3523+ and pass the result of 1 through. */
3524+#define FAIL(...) \
3525+ support_print_failure_impl (__FILE__, __LINE__, __VA_ARGS__)
3526+
3527 /* Record a test failure, print the failure message to standard output
3528 and return 1. */
3529 #define FAIL_RET(...) \
3530
3531commit 27fb563bfee521239316142fa4968282bffa86a6
3532Author: Maciej W. Rozycki <macro@redhat.com>
3533Date: Fri Jul 26 13:21:34 2024 +0100
3534
3535 stdio-common: Add test for vfscanf with matches longer than INT_MAX [BZ #27650]
3536
3537 Complement commit b03e4d7bd25b ("stdio: fix vfscanf with matches longer
3538 than INT_MAX (bug 27650)") and add a test case for the issue, inspired
3539 by the reproducer provided with the bug report.
3540
3541 This has been verified to succeed as from the commit referred and fail
3542 beforehand.
3543
3544 As the test requires 2GiB of data to be passed around its performance
3545 has been evaluated using a choice of systems and the execution time
3546 determined to be respectively in the range of 9s for POWER9@2.166GHz,
3547 24s for FU740@1.2GHz, and 40s for 74Kf@950MHz. As this is on the verge
3548 of and beyond the default timeout it has been increased by the factor of
3549 8. Regardless, following recent practice the test has been added to the
3550 standard rather than extended set.
3551
3552 Reviewed-by: DJ Delorie <dj@redhat.com>
3553 (cherry picked from commit 89cddc8a7096f3d9225868304d2bc0a1aaf07d63)
3554
3555diff --git a/stdio-common/Makefile b/stdio-common/Makefile
3556index a63c05a120..e4f0146d2c 100644
3557--- a/stdio-common/Makefile
3558+++ b/stdio-common/Makefile
3559@@ -240,6 +240,7 @@ tests := \
3560 tst-scanf-binary-c23 \
3561 tst-scanf-binary-gnu11 \
3562 tst-scanf-binary-gnu89 \
3563+ tst-scanf-bz27650 \
3564 tst-scanf-intn \
3565 tst-scanf-round \
3566 tst-scanf-to_inpunct \
3567@@ -328,6 +329,7 @@ generated += \
3568 tst-printf-fp-free.mtrace \
3569 tst-printf-fp-leak-mem.out \
3570 tst-printf-fp-leak.mtrace \
3571+ tst-scanf-bz27650.mtrace \
3572 tst-vfprintf-width-prec-mem.out \
3573 tst-vfprintf-width-prec.mtrace \
3574 # generated
3575@@ -419,6 +421,9 @@ tst-printf-fp-free-ENV = \
3576 tst-printf-fp-leak-ENV = \
3577 MALLOC_TRACE=$(objpfx)tst-printf-fp-leak.mtrace \
3578 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so
3579+tst-scanf-bz27650-ENV = \
3580+ MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \
3581+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
3582
3583 $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
3584 $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
3585diff --git a/stdio-common/tst-scanf-bz27650.c b/stdio-common/tst-scanf-bz27650.c
3586new file mode 100644
3587index 0000000000..3a742bc865
3588--- /dev/null
3589+++ b/stdio-common/tst-scanf-bz27650.c
3590@@ -0,0 +1,108 @@
3591+/* Test for BZ #27650, formatted input matching beyond INT_MAX.
3592+ Copyright (C) 2024 Free Software Foundation, Inc.
3593+ This file is part of the GNU C Library.
3594+
3595+ The GNU C Library is free software; you can redistribute it and/or
3596+ modify it under the terms of the GNU Lesser General Public
3597+ License as published by the Free Software Foundation; either
3598+ version 2.1 of the License, or (at your option) any later version.
3599+
3600+ The GNU C Library is distributed in the hope that it will be useful,
3601+ but WITHOUT ANY WARRANTY; without even the implied warranty of
3602+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3603+ Lesser General Public License for more details.
3604+
3605+ You should have received a copy of the GNU Lesser General Public
3606+ License along with the GNU C Library; if not, see
3607+ <https://www.gnu.org/licenses/>. */
3608+
3609+#include <error.h>
3610+#include <errno.h>
3611+#include <limits.h>
3612+#include <mcheck.h>
3613+#include <stddef.h>
3614+#include <stdio.h>
3615+#include <stdlib.h>
3616+#include <string.h>
3617+
3618+#include <sys/types.h>
3619+
3620+#include <support/check.h>
3621+#include <support/test-driver.h>
3622+
3623+/* Produce a stream of more than INT_MAX characters via buffer BUF of
3624+ size SIZE according to bookkeeping in COOKIE and then return EOF. */
3625+
3626+static ssize_t
3627+io_read (void *cookie, char *buf, size_t size)
3628+{
3629+ unsigned int *written = cookie;
3630+ unsigned int w = *written;
3631+
3632+ if (w > INT_MAX)
3633+ return 0;
3634+
3635+ memset (buf, 'a', size);
3636+ *written = w + size;
3637+ return size;
3638+}
3639+
3640+/* Consume a stream of more than INT_MAX characters from an artificial
3641+ input stream of which none is the new line character. The call to
3642+ fscanf is supposed to complete upon the EOF condition of input,
3643+ however in the presence of BZ #27650 it will terminate prematurely
3644+ with characters still outstanding in input. Diagnose the condition
3645+ and return status accordingly. */
3646+
3647+int
3648+do_test (void)
3649+{
3650+ static cookie_io_functions_t io_funcs = { .read = io_read };
3651+ unsigned int written = 0;
3652+ FILE *in;
3653+ int v;
3654+
3655+ mtrace ();
3656+
3657+ in = fopencookie (&written, "r", io_funcs);
3658+ if (in == NULL)
3659+ {
3660+ FAIL ("fopencookie: %m");
3661+ goto out;
3662+ }
3663+
3664+ v = fscanf (in, "%*[^\n]");
3665+ if (ferror (in))
3666+ {
3667+ FAIL ("fscanf: input failure, at %u: %m", written);
3668+ goto out_close;
3669+ }
3670+ else if (v == EOF)
3671+ {
3672+ FAIL ("fscanf: unexpected end of file, at %u", written);
3673+ goto out_close;
3674+ }
3675+
3676+ if (!feof (in))
3677+ {
3678+ v = fgetc (in);
3679+ if (ferror (in))
3680+ FAIL ("fgetc: input failure: %m");
3681+ else if (v == EOF)
3682+ FAIL ("fgetc: unexpected end of file after missing end of file");
3683+ else if (v == '\n')
3684+ FAIL ("unexpected new line character received");
3685+ else
3686+ FAIL ("character received after end of file expected: \\x%02x", v);
3687+ }
3688+
3689+out_close:
3690+ if (fclose (in) != 0)
3691+ FAIL ("fclose: %m");
3692+
3693+out:
3694+ return EXIT_SUCCESS;
3695+}
3696+
3697+#define TIMEOUT (DEFAULT_TIMEOUT * 8)
3698+#include <support/test-driver.c>
3699
3700commit 2f749d2b15cbc82268d7f8735f21ae1e3b68754f
3701Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
3702Date: Wed Aug 14 19:20:04 2024 -0400
3703
3704 Make tst-ungetc use libsupport
3705
3706 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
3707 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3708 (cherry picked from commit 3f7df7e757f4efec38e45d4068e5492efcac4856)
3709
3710diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c
3711index 1344b2b591..5c808f0734 100644
3712--- a/stdio-common/tst-ungetc.c
3713+++ b/stdio-common/tst-ungetc.c
3714@@ -1,70 +1,72 @@
3715-/* Test for ungetc bugs. */
3716+/* Test for ungetc bugs.
3717+ Copyright (C) 1996-2024 Free Software Foundation, Inc.
3718+ Copyright The GNU Toolchain Authors.
3719+ This file is part of the GNU C Library.
3720+
3721+ The GNU C Library is free software; you can redistribute it and/or
3722+ modify it under the terms of the GNU Lesser General Public
3723+ License as published by the Free Software Foundation; either
3724+ version 2.1 of the License, or (at your option) any later version.
3725+
3726+ The GNU C Library is distributed in the hope that it will be useful,
3727+ but WITHOUT ANY WARRANTY; without even the implied warranty of
3728+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3729+ Lesser General Public License for more details.
3730+
3731+ You should have received a copy of the GNU Lesser General Public
3732+ License along with the GNU C Library; if not, see
3733+ <https://www.gnu.org/licenses/>. */
3734
3735 #include <stdio.h>
3736 #include <stdlib.h>
3737-#include <unistd.h>
3738-
3739-#undef assert
3740-#define assert(x) \
3741- if (!(x)) \
3742- { \
3743- fputs ("test failed: " #x "\n", stderr); \
3744- retval = 1; \
3745- goto the_end; \
3746- }
3747+#include <support/check.h>
3748+#include <support/support.h>
3749+#include <support/temp_file.h>
3750+#include <support/xstdio.h>
3751+#include <support/xunistd.h>
3752
3753-int
3754-main (int argc, char *argv[])
3755+static int
3756+do_test (void)
3757 {
3758- char name[] = "/tmp/tst-ungetc.XXXXXX";
3759+ char *name = NULL;
3760 FILE *fp = NULL;
3761- int retval = 0;
3762 int c;
3763 char buffer[64];
3764
3765- int fd = mkstemp (name);
3766+ int fd = create_temp_file ("tst-ungetc.", &name);
3767 if (fd == -1)
3768- {
3769- printf ("mkstemp failed: %m\n");
3770- return 1;
3771- }
3772- close (fd);
3773- fp = fopen (name, "w");
3774- assert (fp != NULL)
3775- fputs ("bla", fp);
3776- fclose (fp);
3777- fp = NULL;
3778+ FAIL_EXIT1 ("cannot create temporary file: %m");
3779+ xclose (fd);
3780
3781- fp = fopen (name, "r");
3782- assert (fp != NULL);
3783- assert (ungetc ('z', fp) == 'z');
3784- assert (getc (fp) == 'z');
3785- assert (getc (fp) == 'b');
3786- assert (getc (fp) == 'l');
3787- assert (ungetc ('m', fp) == 'm');
3788- assert (getc (fp) == 'm');
3789- assert ((c = getc (fp)) == 'a');
3790- assert (getc (fp) == EOF);
3791- assert (ungetc (c, fp) == c);
3792- assert (feof (fp) == 0);
3793- assert (getc (fp) == c);
3794- assert (getc (fp) == EOF);
3795- fclose (fp);
3796- fp = NULL;
3797+ fp = xfopen (name, "w");
3798+ fputs ("bla", fp);
3799+ xfclose (fp);
3800
3801- fp = fopen (name, "r");
3802- assert (fp != NULL);
3803- assert (getc (fp) == 'b');
3804- assert (getc (fp) == 'l');
3805- assert (ungetc ('b', fp) == 'b');
3806- assert (fread (buffer, 1, 64, fp) == 2);
3807- assert (buffer[0] == 'b');
3808- assert (buffer[1] == 'a');
3809+ fp = xfopen (name, "r");
3810+ TEST_VERIFY_EXIT (ungetc ('z', fp) == 'z');
3811+ TEST_VERIFY_EXIT (getc (fp) == 'z');
3812+ TEST_VERIFY_EXIT (getc (fp) == 'b');
3813+ TEST_VERIFY_EXIT (getc (fp) == 'l');
3814+ TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm');
3815+ TEST_VERIFY_EXIT (getc (fp) == 'm');
3816+ TEST_VERIFY_EXIT ((c = getc (fp)) == 'a');
3817+ TEST_VERIFY_EXIT (getc (fp) == EOF);
3818+ TEST_VERIFY_EXIT (ungetc (c, fp) == c);
3819+ TEST_VERIFY_EXIT (feof (fp) == 0);
3820+ TEST_VERIFY_EXIT (getc (fp) == c);
3821+ TEST_VERIFY_EXIT (getc (fp) == EOF);
3822+ xfclose (fp);
3823
3824-the_end:
3825- if (fp != NULL)
3826- fclose (fp);
3827- unlink (name);
3828+ fp = xfopen (name, "r");
3829+ TEST_VERIFY_EXIT (getc (fp) == 'b');
3830+ TEST_VERIFY_EXIT (getc (fp) == 'l');
3831+ TEST_VERIFY_EXIT (ungetc ('b', fp) == 'b');
3832+ TEST_VERIFY_EXIT (fread (buffer, 1, 64, fp) == 2);
3833+ TEST_VERIFY_EXIT (buffer[0] == 'b');
3834+ TEST_VERIFY_EXIT (buffer[1] == 'a');
3835+ xfclose (fp);
3836
3837- return retval;
3838+ return 0;
3839 }
3840+
3841+#include <support/test-driver.c>
3842
3843commit dac7a0694b5e853f08be518cd5a133ac5804666d
3844Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
3845Date: Tue Aug 13 21:00:06 2024 -0400
3846
3847 ungetc: Fix uninitialized read when putting into unused streams [BZ #27821]
3848
3849 When ungetc is called on an unused stream, the backup buffer is
3850 allocated without the main get area being present. This results in
3851 every subsequent ungetc (as the stream remains in the backup area)
3852 checking uninitialized memory in the backup buffer when trying to put a
3853 character back into the stream.
3854
3855 Avoid comparing the input character with buffer contents when in backup
3856 to avoid this uninitialized read. The uninitialized read is harmless in
3857 this context since the location is promptly overwritten with the input
3858 character, thus fulfilling ungetc functionality.
3859
3860 Also adjust wording in the manual to drop the paragraph that says glibc
3861 cannot do multiple ungetc back to back since with this change, ungetc
3862 can actually do this.
3863
3864 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
3865 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3866 (cherry picked from commit cdf0f88f97b0aaceb894cc02b21159d148d7065c)
3867
3868diff --git a/libio/genops.c b/libio/genops.c
3869index 99f5e80f20..b012fa33d2 100644
3870--- a/libio/genops.c
3871+++ b/libio/genops.c
3872@@ -662,7 +662,7 @@ _IO_sputbackc (FILE *fp, int c)
3873 {
3874 int result;
3875
3876- if (fp->_IO_read_ptr > fp->_IO_read_base
3877+ if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp)
3878 && (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c)
3879 {
3880 fp->_IO_read_ptr--;
3881diff --git a/manual/stdio.texi b/manual/stdio.texi
3882index 8517653507..92614775fa 100644
3883--- a/manual/stdio.texi
3884+++ b/manual/stdio.texi
3885@@ -1467,11 +1467,9 @@ program; usually @code{ungetc} is used only to unread a character that
3886 was just read from the same stream. @Theglibc{} supports this
3887 even on files opened in binary mode, but other systems might not.
3888
3889-@Theglibc{} only supports one character of pushback---in other
3890-words, it does not work to call @code{ungetc} twice without doing input
3891-in between. Other systems might let you push back multiple characters;
3892-then reading from the stream retrieves the characters in the reverse
3893-order that they were pushed.
3894+@Theglibc{} supports pushing back multiple characters; subsequently
3895+reading from the stream retrieves the characters in the reverse order
3896+that they were pushed.
3897
3898 Pushing back characters doesn't alter the file; only the internal
3899 buffering for the stream is affected. If a file positioning function
3900diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c
3901index 5c808f0734..388b202493 100644
3902--- a/stdio-common/tst-ungetc.c
3903+++ b/stdio-common/tst-ungetc.c
3904@@ -48,6 +48,8 @@ do_test (void)
3905 TEST_VERIFY_EXIT (getc (fp) == 'b');
3906 TEST_VERIFY_EXIT (getc (fp) == 'l');
3907 TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm');
3908+ TEST_VERIFY_EXIT (ungetc ('n', fp) == 'n');
3909+ TEST_VERIFY_EXIT (getc (fp) == 'n');
3910 TEST_VERIFY_EXIT (getc (fp) == 'm');
3911 TEST_VERIFY_EXIT ((c = getc (fp)) == 'a');
3912 TEST_VERIFY_EXIT (getc (fp) == EOF);
3913
3914commit e24902f409994f226dbc6fde2476009df452a18f
3915Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
3916Date: Tue Aug 13 21:08:49 2024 -0400
3917
3918 ungetc: Fix backup buffer leak on program exit [BZ #27821]
3919
3920 If a file descriptor is left unclosed and is cleaned up by _IO_cleanup
3921 on exit, its backup buffer remains unfreed, registering as a leak in
3922 valgrind. This is not strictly an issue since (1) the program should
3923 ideally be closing the stream once it's not in use and (2) the program
3924 is about to exit anyway, so keeping the backup buffer around a wee bit
3925 longer isn't a real problem. Free it anyway to keep valgrind happy
3926 when the streams in question are the standard ones, i.e. stdout, stdin
3927 or stderr.
3928
3929 Also, the _IO_have_backup macro checks for _IO_save_base,
3930 which is a roundabout way to check for a backup buffer instead of
3931 directly looking for _IO_backup_base. The roundabout check breaks when
3932 the main get area has not been used and user pushes a char into the
3933 backup buffer with ungetc. Fix this to use the _IO_backup_base
3934 directly.
3935
3936 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
3937 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3938 (cherry picked from commit 3e1d8d1d1dca24ae90df2ea826a8916896fc7e77)
3939
3940diff --git a/libio/genops.c b/libio/genops.c
3941index b012fa33d2..35d8b30710 100644
3942--- a/libio/genops.c
3943+++ b/libio/genops.c
3944@@ -816,6 +816,12 @@ _IO_unbuffer_all (void)
3945 legacy = 1;
3946 #endif
3947
3948+ /* Free up the backup area if it was ever allocated. */
3949+ if (_IO_have_backup (fp))
3950+ _IO_free_backup_area (fp);
3951+ if (fp->_mode > 0 && _IO_have_wbackup (fp))
3952+ _IO_free_wbackup_area (fp);
3953+
3954 if (! (fp->_flags & _IO_UNBUFFERED)
3955 /* Iff stream is un-orientated, it wasn't used. */
3956 && (legacy || fp->_mode != 0))
3957diff --git a/libio/libioP.h b/libio/libioP.h
3958index 1af287b19f..616253fcd0 100644
3959--- a/libio/libioP.h
3960+++ b/libio/libioP.h
3961@@ -577,8 +577,8 @@ extern void _IO_old_init (FILE *fp, int flags) __THROW;
3962 ((__fp)->_wide_data->_IO_write_base \
3963 = (__fp)->_wide_data->_IO_write_ptr = __p, \
3964 (__fp)->_wide_data->_IO_write_end = (__ep))
3965-#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL)
3966-#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL)
3967+#define _IO_have_backup(fp) ((fp)->_IO_backup_base != NULL)
3968+#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_backup_base != NULL)
3969 #define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP)
3970 #define _IO_have_markers(fp) ((fp)->_markers != NULL)
3971 #define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base)
3972diff --git a/stdio-common/Makefile b/stdio-common/Makefile
3973index e4f0146d2c..a91754f52d 100644
3974--- a/stdio-common/Makefile
3975+++ b/stdio-common/Makefile
3976@@ -254,6 +254,7 @@ tests := \
3977 tst-swscanf \
3978 tst-tmpnam \
3979 tst-ungetc \
3980+ tst-ungetc-leak \
3981 tst-unlockedio \
3982 tst-vfprintf-mbs-prec \
3983 tst-vfprintf-user-type \
3984@@ -316,6 +317,7 @@ tests-special += \
3985 $(objpfx)tst-printf-bz25691-mem.out \
3986 $(objpfx)tst-printf-fp-free-mem.out \
3987 $(objpfx)tst-printf-fp-leak-mem.out \
3988+ $(objpfx)tst-ungetc-leak-mem.out \
3989 $(objpfx)tst-vfprintf-width-prec-mem.out \
3990 # tests-special
3991
3992@@ -330,6 +332,8 @@ generated += \
3993 tst-printf-fp-leak-mem.out \
3994 tst-printf-fp-leak.mtrace \
3995 tst-scanf-bz27650.mtrace \
3996+ tst-ungetc-leak-mem.out \
3997+ tst-ungetc-leak.mtrace \
3998 tst-vfprintf-width-prec-mem.out \
3999 tst-vfprintf-width-prec.mtrace \
4000 # generated
4001@@ -424,6 +428,9 @@ tst-printf-fp-leak-ENV = \
4002 tst-scanf-bz27650-ENV = \
4003 MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \
4004 LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
4005+tst-ungetc-leak-ENV = \
4006+ MALLOC_TRACE=$(objpfx)tst-ungetc-leak.mtrace \
4007+ LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so
4008
4009 $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
4010 $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \
4011diff --git a/stdio-common/tst-ungetc-leak.c b/stdio-common/tst-ungetc-leak.c
4012new file mode 100644
4013index 0000000000..6c5152b43f
4014--- /dev/null
4015+++ b/stdio-common/tst-ungetc-leak.c
4016@@ -0,0 +1,32 @@
4017+/* Test for memory leak with ungetc when stream is unused.
4018+ Copyright The GNU Toolchain Authors.
4019+ This file is part of the GNU C Library.
4020+
4021+ The GNU C Library is free software; you can redistribute it and/or
4022+ modify it under the terms of the GNU Lesser General Public
4023+ License as published by the Free Software Foundation; either
4024+ version 2.1 of the License, or (at your option) any later version.
4025+
4026+ The GNU C Library is distributed in the hope that it will be useful,
4027+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4028+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4029+ Lesser General Public License for more details.
4030+
4031+ You should have received a copy of the GNU Lesser General Public
4032+ License along with the GNU C Library; if not, see
4033+ <https://www.gnu.org/licenses/>. */
4034+
4035+#include <stdio.h>
4036+#include <mcheck.h>
4037+#include <support/check.h>
4038+#include <support/support.h>
4039+
4040+static int
4041+do_test (void)
4042+{
4043+ mtrace ();
4044+ TEST_COMPARE (ungetc('y', stdin), 'y');
4045+ return 0;
4046+}
4047+
4048+#include <support/test-driver.c>
4049
4050commit 3b3350d7baa8de70b71c02e964d5b8343749ebf8
4051Author: Maciej W. Rozycki <macro@redhat.com>
4052Date: Fri Jul 26 13:21:34 2024 +0100
4053
4054 posix: Use <support/check.h> facilities in tst-truncate and tst-truncate64
4055
4056 Remove local FAIL macro in favor to FAIL_RET from <support/check.h>,
4057 which provides equivalent reporting, with the name of the file of the
4058 failure site additionally included, for the tst-truncate-common core
4059 shared between the tst-truncate and tst-truncate64 tests.
4060
4061 Reviewed-by: DJ Delorie <dj@redhat.com>
4062 (cherry picked from commit fe47595504a55e7bb992f8928533df154b510383)
4063
4064diff --git a/posix/tst-truncate-common.c b/posix/tst-truncate-common.c
4065index b774fa46b8..b8c561ffdb 100644
4066--- a/posix/tst-truncate-common.c
4067+++ b/posix/tst-truncate-common.c
4068@@ -21,6 +21,8 @@
4069 #include <sys/stat.h>
4070 #include <unistd.h>
4071
4072+#include <support/check.h>
4073+
4074 static void do_prepare (void);
4075 #define PREPARE(argc, argv) do_prepare ()
4076 static int do_test (void);
4077@@ -42,9 +44,6 @@ do_prepare (void)
4078 }
4079 }
4080
4081-#define FAIL(str) \
4082- do { printf ("error: %s (line %d)\n", str, __LINE__); return 1; } while (0)
4083-
4084 static int
4085 do_test_with_offset (off_t offset)
4086 {
4087@@ -54,35 +53,35 @@ do_test_with_offset (off_t offset)
4088 memset (buf, 0xcf, sizeof (buf));
4089
4090 if (pwrite (temp_fd, buf, sizeof (buf), offset) != sizeof (buf))
4091- FAIL ("write failed");
4092+ FAIL_RET ("write failed");
4093 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + sizeof (buf)))
4094- FAIL ("initial size wrong");
4095+ FAIL_RET ("initial size wrong");
4096
4097 if (ftruncate (temp_fd, offset + 800) < 0)
4098- FAIL ("size reduction with ftruncate failed");
4099+ FAIL_RET ("size reduction with ftruncate failed");
4100 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800))
4101- FAIL ("size after reduction with ftruncate is incorrect");
4102+ FAIL_RET ("size after reduction with ftruncate is incorrect");
4103
4104 /* The following test covers more than POSIX. POSIX does not require
4105 that ftruncate() can increase the file size. But we are testing
4106 Unix systems. */
4107 if (ftruncate (temp_fd, offset + 1200) < 0)
4108- FAIL ("size increate with ftruncate failed");
4109+ FAIL_RET ("size increate with ftruncate failed");
4110 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200))
4111- FAIL ("size after increase is incorrect");
4112+ FAIL_RET ("size after increase is incorrect");
4113
4114 if (truncate (temp_filename, offset + 800) < 0)
4115- FAIL ("size reduction with truncate failed");
4116+ FAIL_RET ("size reduction with truncate failed");
4117 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800))
4118- FAIL ("size after reduction with truncate incorrect");
4119+ FAIL_RET ("size after reduction with truncate incorrect");
4120
4121 /* The following test covers more than POSIX. POSIX does not require
4122 that truncate() can increase the file size. But we are testing
4123 Unix systems. */
4124 if (truncate (temp_filename, (offset + 1200)) < 0)
4125- FAIL ("size increase with truncate failed");
4126+ FAIL_RET ("size increase with truncate failed");
4127 if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200))
4128- FAIL ("size increase with truncate is incorrect");
4129+ FAIL_RET ("size increase with truncate is incorrect");
4130
4131 return 0;
4132 }
4133
4134commit 3414b17e9db16c3bc0de5b49555c4f94f155ffc8
4135Author: Maciej W. Rozycki <macro@redhat.com>
4136Date: Fri Jul 26 13:21:34 2024 +0100
4137
4138 nptl: Use <support/check.h> facilities in tst-setuid3
4139
4140 Remove local FAIL macro in favor to FAIL_EXIT1 from <support/check.h>,
4141 which provides equivalent reporting, with the name of the file and the
4142 line number within of the failure site additionally included. Remove
4143 FAIL_ERR altogether and include ": %m" explicitly with the format string
4144 supplied to FAIL_EXIT1 as there seems little value to have a separate
4145 macro just for this.
4146
4147 Reviewed-by: DJ Delorie <dj@redhat.com>
4148 (cherry picked from commit 8c98195af6e6f1ce21743fc26c723e0f7e45bcf2)
4149
4150diff --git a/sysdeps/pthread/tst-setuid3.c b/sysdeps/pthread/tst-setuid3.c
4151index 83f42a0ae5..3845ab03d3 100644
4152--- a/sysdeps/pthread/tst-setuid3.c
4153+++ b/sysdeps/pthread/tst-setuid3.c
4154@@ -15,24 +15,19 @@
4155 License along with the GNU C Library; if not, see
4156 <https://www.gnu.org/licenses/>. */
4157
4158-#include <stdio.h>
4159 #include <errno.h>
4160 #include <pthread.h>
4161 #include <stdbool.h>
4162 #include <unistd.h>
4163
4164+#include <support/check.h>
4165+
4166 /* The test must run under a non-privileged user ID. */
4167 static const uid_t test_uid = 1;
4168
4169 static pthread_barrier_t barrier1;
4170 static pthread_barrier_t barrier2;
4171
4172-#define FAIL(fmt, ...) \
4173- do { printf ("FAIL: " fmt "\n", __VA_ARGS__); _exit (1); } while (0)
4174-
4175-#define FAIL_ERR(fmt, ...) \
4176- do { printf ("FAIL: " fmt ": %m\n", __VA_ARGS__); _exit (1); } while (0)
4177-
4178 /* True if x is not a successful return code from pthread_barrier_wait. */
4179 static inline bool
4180 is_invalid_barrier_ret (int x)
4181@@ -45,10 +40,10 @@ thread_func (void *ctx __attribute__ ((unused)))
4182 {
4183 int ret = pthread_barrier_wait (&barrier1);
4184 if (is_invalid_barrier_ret (ret))
4185- FAIL ("pthread_barrier_wait (barrier1) (on thread): %d", ret);
4186+ FAIL_EXIT1 ("pthread_barrier_wait (barrier1) (on thread): %d", ret);
4187 ret = pthread_barrier_wait (&barrier2);
4188 if (is_invalid_barrier_ret (ret))
4189- FAIL ("pthread_barrier_wait (barrier2) (on thread): %d", ret);
4190+ FAIL_EXIT1 ("pthread_barrier_wait (barrier2) (on thread): %d", ret);
4191 return NULL;
4192 }
4193
4194@@ -59,13 +54,13 @@ setuid_failure (int phase)
4195 switch (ret)
4196 {
4197 case 0:
4198- FAIL ("setuid succeeded unexpectedly in phase %d", phase);
4199+ FAIL_EXIT1 ("setuid succeeded unexpectedly in phase %d", phase);
4200 case -1:
4201 if (errno != EPERM)
4202- FAIL_ERR ("setuid phase %d", phase);
4203+ FAIL_EXIT1 ("setuid phase %d: %m", phase);
4204 break;
4205 default:
4206- FAIL ("invalid setuid return value in phase %d: %d", phase, ret);
4207+ FAIL_EXIT1 ("invalid setuid return value in phase %d: %d", phase, ret);
4208 }
4209 }
4210
4211@@ -74,42 +69,42 @@ do_test (void)
4212 {
4213 if (getuid () == 0)
4214 if (setuid (test_uid) != 0)
4215- FAIL_ERR ("setuid (%u)", (unsigned) test_uid);
4216+ FAIL_EXIT1 ("setuid (%u): %m", (unsigned) test_uid);
4217 if (setuid (getuid ()))
4218- FAIL_ERR ("setuid (%s)", "getuid ()");
4219+ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()");
4220 setuid_failure (1);
4221
4222 int ret = pthread_barrier_init (&barrier1, NULL, 2);
4223 if (ret != 0)
4224- FAIL ("pthread_barrier_init (barrier1): %d", ret);
4225+ FAIL_EXIT1 ("pthread_barrier_init (barrier1): %d", ret);
4226 ret = pthread_barrier_init (&barrier2, NULL, 2);
4227 if (ret != 0)
4228- FAIL ("pthread_barrier_init (barrier2): %d", ret);
4229+ FAIL_EXIT1 ("pthread_barrier_init (barrier2): %d", ret);
4230
4231 pthread_t thread;
4232 ret = pthread_create (&thread, NULL, thread_func, NULL);
4233 if (ret != 0)
4234- FAIL ("pthread_create: %d", ret);
4235+ FAIL_EXIT1 ("pthread_create: %d", ret);
4236
4237 /* Ensure that the thread is running properly. */
4238 ret = pthread_barrier_wait (&barrier1);
4239 if (is_invalid_barrier_ret (ret))
4240- FAIL ("pthread_barrier_wait (barrier1): %d", ret);
4241+ FAIL_EXIT1 ("pthread_barrier_wait (barrier1): %d", ret);
4242
4243 setuid_failure (2);
4244
4245 /* Check success case. */
4246 if (setuid (getuid ()) != 0)
4247- FAIL_ERR ("setuid (%s)", "getuid ()");
4248+ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()");
4249
4250 /* Shutdown. */
4251 ret = pthread_barrier_wait (&barrier2);
4252 if (is_invalid_barrier_ret (ret))
4253- FAIL ("pthread_barrier_wait (barrier2): %d", ret);
4254+ FAIL_EXIT1 ("pthread_barrier_wait (barrier2): %d", ret);
4255
4256 ret = pthread_join (thread, NULL);
4257 if (ret != 0)
4258- FAIL ("pthread_join: %d", ret);
4259+ FAIL_EXIT1 ("pthread_join: %d", ret);
4260
4261 return 0;
4262 }
4263
4264commit b7edcfa0f41ccfaeb665a661d3a6a594c8d95848
4265Author: Florian Weimer <fweimer@redhat.com>
4266Date: Thu Aug 1 23:31:23 2024 +0200
4267
4268 elf: Clarify and invert second argument of _dl_allocate_tls_init
4269
4270 Also remove an outdated comment: _dl_allocate_tls_init is
4271 called as part of pthread_create.
4272
4273 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
4274 (cherry picked from commit fe06fb313bddf7e4530056897d4a706606e49377)
4275
4276diff --git a/elf/dl-tls.c b/elf/dl-tls.c
4277index 3d221273f1..ecb966d282 100644
4278--- a/elf/dl-tls.c
4279+++ b/elf/dl-tls.c
4280@@ -552,9 +552,14 @@ _dl_resize_dtv (dtv_t *dtv, size_t max_modid)
4281 /* Allocate initial TLS. RESULT should be a non-NULL pointer to storage
4282 for the TLS space. The DTV may be resized, and so this function may
4283 call malloc to allocate that space. The loader's GL(dl_load_tls_lock)
4284- is taken when manipulating global TLS-related data in the loader. */
4285+ is taken when manipulating global TLS-related data in the loader.
4286+
4287+ If MAIN_THREAD, this is the first call during process
4288+ initialization. In this case, TLS initialization for secondary
4289+ (audit) namespaces is skipped because that has already been handled
4290+ by dlopen. */
4291 void *
4292-_dl_allocate_tls_init (void *result, bool init_tls)
4293+_dl_allocate_tls_init (void *result, bool main_thread)
4294 {
4295 if (result == NULL)
4296 /* The memory allocation failed. */
4297@@ -633,7 +638,7 @@ _dl_allocate_tls_init (void *result, bool init_tls)
4298 because it would already be set by the audit setup. However,
4299 subsequent thread creation would need to follow the default
4300 behaviour. */
4301- if (map->l_ns != LM_ID_BASE && !init_tls)
4302+ if (map->l_ns != LM_ID_BASE && main_thread)
4303 continue;
4304 memset (__mempcpy (dest, map->l_tls_initimage,
4305 map->l_tls_initimage_size), '\0',
4306@@ -661,7 +666,7 @@ _dl_allocate_tls (void *mem)
4307 {
4308 return _dl_allocate_tls_init (mem == NULL
4309 ? _dl_allocate_tls_storage ()
4310- : allocate_dtv (mem), true);
4311+ : allocate_dtv (mem), false);
4312 }
4313 rtld_hidden_def (_dl_allocate_tls)
4314
4315diff --git a/elf/rtld.c b/elf/rtld.c
4316index bfdf632e77..09b9c9993b 100644
4317--- a/elf/rtld.c
4318+++ b/elf/rtld.c
4319@@ -2338,7 +2338,7 @@ dl_main (const ElfW(Phdr) *phdr,
4320 into the main thread's TLS area, which we allocated above.
4321 Note: thread-local variables must only be accessed after completing
4322 the next step. */
4323- _dl_allocate_tls_init (tcbp, false);
4324+ _dl_allocate_tls_init (tcbp, true);
4325
4326 /* And finally install it for the main thread. */
4327 if (! __rtld_tls_init_tp_called)
4328diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
4329index f35a8369bd..2cb562f8ea 100644
4330--- a/nptl/allocatestack.c
4331+++ b/nptl/allocatestack.c
4332@@ -139,7 +139,7 @@ get_cached_stack (size_t *sizep, void **memp)
4333 memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t));
4334
4335 /* Re-initialize the TLS. */
4336- _dl_allocate_tls_init (TLS_TPADJ (result), true);
4337+ _dl_allocate_tls_init (TLS_TPADJ (result), false);
4338
4339 return result;
4340 }
4341diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
4342index 656e8a3fa0..154efb0e19 100644
4343--- a/sysdeps/generic/ldsodefs.h
4344+++ b/sysdeps/generic/ldsodefs.h
4345@@ -1200,10 +1200,8 @@ extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp);
4346
4347 extern void _dl_allocate_static_tls (struct link_map *map) attribute_hidden;
4348
4349-/* These are internal entry points to the two halves of _dl_allocate_tls,
4350- only used within rtld.c itself at startup time. */
4351 extern void *_dl_allocate_tls_storage (void) attribute_hidden;
4352-extern void *_dl_allocate_tls_init (void *, bool);
4353+extern void *_dl_allocate_tls_init (void *result, bool main_thread);
4354 rtld_hidden_proto (_dl_allocate_tls_init)
4355
4356 /* True if the TCB has been set up. */
4357
4358commit f496b750f135e57da921e975835c44bd199246dd
4359Author: Florian Weimer <fweimer@redhat.com>
4360Date: Thu Aug 1 23:31:30 2024 +0200
4361
4362 elf: Avoid re-initializing already allocated TLS in dlopen (bug 31717)
4363
4364 The old code used l_init_called as an indicator for whether TLS
4365 initialization was complete. However, it is possible that
4366 TLS for an object is initialized, written to, and then dlopen
4367 for this object is called again, and l_init_called is not true at
4368 this point. Previously, this resulted in TLS being initialized
4369 twice, discarding any interim writes (technically introducing a
4370 use-after-free bug even).
4371
4372 This commit introduces an explicit per-object flag, l_tls_in_slotinfo.
4373 It indicates whether _dl_add_to_slotinfo has been called for this
4374 object. This flag is used to avoid double-initialization of TLS.
4375 In update_tls_slotinfo, the first_static_tls micro-optimization
4376 is removed because preserving the initalization flag for subsequent
4377 use by the second loop for static TLS is a bit complicated, and
4378 another per-object flag does not seem to be worth it. Furthermore,
4379 the l_init_called flag is dropped from the second loop (for static
4380 TLS initialization) because l_need_tls_init on its own prevents
4381 double-initialization.
4382
4383 The remaining l_init_called usage in resize_scopes and update_scopes
4384 is just an optimization due to the use of scope_has_map, so it is
4385 not changed in this commit.
4386
4387 The isupper check ensures that libc.so.6 is TLS is not reverted.
4388 Such a revert happens if l_need_tls_init is not cleared in
4389 _dl_allocate_tls_init for the main_thread case, now that
4390 l_init_called is not checked anymore in update_tls_slotinfo
4391 in elf/dl-open.c.
4392
4393 Reported-by: Jonathon Anderson <janderson@rice.edu>
4394 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
4395 (cherry picked from commit 5097cd344fd243fb8deb6dec96e8073753f962f9)
4396
4397diff --git a/NEWS b/NEWS
4398index 10a125bc66..5b20efbf6c 100644
4399--- a/NEWS
4400+++ b/NEWS
4401@@ -10,7 +10,7 @@ Version 2.40.1
4402 The following bugs are resolved with this release:
4403
4404 [30081] resolv: Do not wait for non-existing second DNS response after error
4405- [31968] mremap implementation in C does not handle arguments correctly
4406+ [31717] elf: Avoid re-initializing already allocated TLS in dlopen
4407 [31890] resolv: Allow short error responses to match any DNS query
4408 [31968] mremap implementation in C does not handle arguments correctly
4409 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces
4410diff --git a/elf/Makefile b/elf/Makefile
4411index a3475f3fb5..a03c6520d8 100644
4412--- a/elf/Makefile
4413+++ b/elf/Makefile
4414@@ -416,6 +416,10 @@ tests += \
4415 tst-dlmopen4 \
4416 tst-dlopen-self \
4417 tst-dlopen-tlsmodid \
4418+ tst-dlopen-tlsreinit1 \
4419+ tst-dlopen-tlsreinit2 \
4420+ tst-dlopen-tlsreinit3 \
4421+ tst-dlopen-tlsreinit4 \
4422 tst-dlopenfail \
4423 tst-dlopenfail-2 \
4424 tst-dlopenrpath \
4425@@ -853,6 +857,9 @@ modules-names += \
4426 tst-dlmopen-twice-mod1 \
4427 tst-dlmopen-twice-mod2 \
4428 tst-dlmopen1mod \
4429+ tst-dlopen-tlsreinitmod1 \
4430+ tst-dlopen-tlsreinitmod2 \
4431+ tst-dlopen-tlsreinitmod3 \
4432 tst-dlopenfaillinkmod \
4433 tst-dlopenfailmod1 \
4434 tst-dlopenfailmod2 \
4435@@ -3118,3 +3125,26 @@ $(objpfx)tst-recursive-tls.out: \
4436 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)
4437 $(objpfx)tst-recursive-tlsmod%.os: tst-recursive-tlsmodN.c
4438 $(compile-command.c) -DVAR=thread_$* -DFUNC=get_threadvar_$*
4439+
4440+# Order matters here. The test needs the constructor for
4441+# tst-dlopen-tlsreinitmod2.so to be called first.
4442+LDFLAGS-tst-dlopen-tlsreinitmod1.so = -Wl,--no-as-needed
4443+$(objpfx)tst-dlopen-tlsreinitmod1.so: \
4444+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so
4445+LDFLAGS-tst-dlopen-tlsreinit2 = -Wl,--no-as-needed
4446+$(objpfx)tst-dlopen-tlsreinit2: \
4447+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so
4448+LDFLAGS-tst-dlopen-tlsreinit4 = -Wl,--no-as-needed
4449+$(objpfx)tst-dlopen-tlsreinit4: \
4450+ $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so
4451+# tst-dlopen-tlsreinitmod2.so is underlinked and refers to
4452+# tst-dlopen-tlsreinitmod3.so. The dependency is provided via
4453+# $(objpfx)tst-dlopen-tlsreinitmod1.so.
4454+tst-dlopen-tlsreinitmod2.so-no-z-defs = yes
4455+$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \
4456+ $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so
4457+# Reuse an audit module which provides ample debug logging.
4458+$(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so
4459+tst-dlopen-tlsreinit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
4460+$(objpfx)tst-dlopen-tlsreinit4.out: $(objpfx)tst-auditmod1.so
4461+tst-dlopen-tlsreinit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so
4462diff --git a/elf/dl-open.c b/elf/dl-open.c
4463index c378da16c0..8556e7bd2f 100644
4464--- a/elf/dl-open.c
4465+++ b/elf/dl-open.c
4466@@ -363,17 +363,8 @@ resize_tls_slotinfo (struct link_map *new)
4467 {
4468 bool any_tls = false;
4469 for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
4470- {
4471- struct link_map *imap = new->l_searchlist.r_list[i];
4472-
4473- /* Only add TLS memory if this object is loaded now and
4474- therefore is not yet initialized. */
4475- if (! imap->l_init_called && imap->l_tls_blocksize > 0)
4476- {
4477- _dl_add_to_slotinfo (imap, false);
4478- any_tls = true;
4479- }
4480- }
4481+ if (_dl_add_to_slotinfo (new->l_searchlist.r_list[i], false))
4482+ any_tls = true;
4483 return any_tls;
4484 }
4485
4486@@ -383,22 +374,8 @@ resize_tls_slotinfo (struct link_map *new)
4487 static void
4488 update_tls_slotinfo (struct link_map *new)
4489 {
4490- unsigned int first_static_tls = new->l_searchlist.r_nlist;
4491 for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
4492- {
4493- struct link_map *imap = new->l_searchlist.r_list[i];
4494-
4495- /* Only add TLS memory if this object is loaded now and
4496- therefore is not yet initialized. */
4497- if (! imap->l_init_called && imap->l_tls_blocksize > 0)
4498- {
4499- _dl_add_to_slotinfo (imap, true);
4500-
4501- if (imap->l_need_tls_init
4502- && first_static_tls == new->l_searchlist.r_nlist)
4503- first_static_tls = i;
4504- }
4505- }
4506+ _dl_add_to_slotinfo (new->l_searchlist.r_list[i], true);
4507
4508 size_t newgen = GL(dl_tls_generation) + 1;
4509 if (__glibc_unlikely (newgen == 0))
4510@@ -410,13 +387,11 @@ TLS generation counter wrapped! Please report this."));
4511 /* We need a second pass for static tls data, because
4512 _dl_update_slotinfo must not be run while calls to
4513 _dl_add_to_slotinfo are still pending. */
4514- for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i)
4515+ for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i)
4516 {
4517 struct link_map *imap = new->l_searchlist.r_list[i];
4518
4519- if (imap->l_need_tls_init
4520- && ! imap->l_init_called
4521- && imap->l_tls_blocksize > 0)
4522+ if (imap->l_need_tls_init && imap->l_tls_blocksize > 0)
4523 {
4524 /* For static TLS we have to allocate the memory here and
4525 now, but we can delay updating the DTV. */
4526diff --git a/elf/dl-tls.c b/elf/dl-tls.c
4527index ecb966d282..3d529b722c 100644
4528--- a/elf/dl-tls.c
4529+++ b/elf/dl-tls.c
4530@@ -632,17 +632,21 @@ _dl_allocate_tls_init (void *result, bool main_thread)
4531 some platforms use in static programs requires it. */
4532 dtv[map->l_tls_modid].pointer.val = dest;
4533
4534- /* Copy the initialization image and clear the BSS part. For
4535- audit modules or dependencies with initial-exec TLS, we can not
4536- set the initial TLS image on default loader initialization
4537- because it would already be set by the audit setup. However,
4538- subsequent thread creation would need to follow the default
4539- behaviour. */
4540+ /* Copy the initialization image and clear the BSS part.
4541+ For audit modules or dependencies with initial-exec TLS,
4542+ we can not set the initial TLS image on default loader
4543+ initialization because it would already be set by the
4544+ audit setup, which uses the dlopen code and already
4545+ clears l_need_tls_init. Calls with !main_thread from
4546+ pthread_create need to initialze TLS for the current
4547+ thread regardless of namespace. */
4548 if (map->l_ns != LM_ID_BASE && main_thread)
4549 continue;
4550 memset (__mempcpy (dest, map->l_tls_initimage,
4551 map->l_tls_initimage_size), '\0',
4552 map->l_tls_blocksize - map->l_tls_initimage_size);
4553+ if (main_thread)
4554+ map->l_need_tls_init = 0;
4555 }
4556
4557 total += cnt;
4558@@ -1099,9 +1103,32 @@ _dl_tls_initial_modid_limit_setup (void)
4559 }
4560
4561
4562-void
4563+/* Add module to slot information data. If DO_ADD is false, only the
4564+ required memory is allocated. Must be called with
4565+ GL (dl_load_tls_lock) acquired. If the function has already been
4566+ called for the link map L with !DO_ADD, then this function will not
4567+ raise an exception, otherwise it is possible that it encounters a
4568+ memory allocation failure.
4569+
4570+ Return false if L has already been added to the slotinfo data, or
4571+ if L has no TLS data. If the returned value is true, L has been
4572+ added with this call (DO_ADD), or has been added in a previous call
4573+ (!DO_ADD).
4574+
4575+ The expected usage is as follows: Call _dl_add_to_slotinfo for
4576+ several link maps with DO_ADD set to false, and record if any calls
4577+ result in a true result. If there was a true result, call
4578+ _dl_add_to_slotinfo again, this time with DO_ADD set to true. (For
4579+ simplicity, it's possible to call the function for link maps where
4580+ the previous result was false.) The return value from the second
4581+ round of calls can be ignored. If there was true result initially,
4582+ call _dl_update_slotinfo to update the TLS generation counter. */
4583+bool
4584 _dl_add_to_slotinfo (struct link_map *l, bool do_add)
4585 {
4586+ if (l->l_tls_blocksize == 0 || l->l_tls_in_slotinfo)
4587+ return false;
4588+
4589 /* Now that we know the object is loaded successfully add
4590 modules containing TLS data to the dtv info table. We
4591 might have to increase its size. */
4592@@ -1157,7 +1184,10 @@ cannot create TLS data structures"));
4593 atomic_store_relaxed (&listp->slotinfo[idx].map, l);
4594 atomic_store_relaxed (&listp->slotinfo[idx].gen,
4595 GL(dl_tls_generation) + 1);
4596+ l->l_tls_in_slotinfo = true;
4597 }
4598+
4599+ return true;
4600 }
4601
4602 #if PTHREAD_IN_LIBC
4603diff --git a/elf/tst-dlopen-tlsreinit1.c b/elf/tst-dlopen-tlsreinit1.c
4604new file mode 100644
4605index 0000000000..2016b9b0c6
4606--- /dev/null
4607+++ b/elf/tst-dlopen-tlsreinit1.c
4608@@ -0,0 +1,40 @@
4609+/* Test that dlopen preserves already accessed TLS (bug 31717).
4610+ Copyright (C) 2024 Free Software Foundation, Inc.
4611+ This file is part of the GNU C Library.
4612+
4613+ The GNU C Library is free software; you can redistribute it and/or
4614+ modify it under the terms of the GNU Lesser General Public
4615+ License as published by the Free Software Foundation; either
4616+ version 2.1 of the License, or (at your option) any later version.
4617+
4618+ The GNU C Library is distributed in the hope that it will be useful,
4619+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4620+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4621+ Lesser General Public License for more details.
4622+
4623+ You should have received a copy of the GNU Lesser General Public
4624+ License along with the GNU C Library; if not, see
4625+ <https://www.gnu.org/licenses/>. */
4626+
4627+#include <stdbool.h>
4628+#include <support/check.h>
4629+#include <support/xdlfcn.h>
4630+#include <ctype.h>
4631+
4632+static int
4633+do_test (void)
4634+{
4635+ void *handle = xdlopen ("tst-dlopen-tlsreinitmod1.so", RTLD_NOW);
4636+
4637+ bool *tlsreinitmod3_tested = xdlsym (handle, "tlsreinitmod3_tested");
4638+ TEST_VERIFY (*tlsreinitmod3_tested);
4639+
4640+ xdlclose (handle);
4641+
4642+ /* This crashes if the libc.so.6 TLS image has been reverted. */
4643+ TEST_VERIFY (!isupper ('@'));
4644+
4645+ return 0;
4646+}
4647+
4648+#include <support/test-driver.c>
4649diff --git a/elf/tst-dlopen-tlsreinit2.c b/elf/tst-dlopen-tlsreinit2.c
4650new file mode 100644
4651index 0000000000..90ad2c7713
4652--- /dev/null
4653+++ b/elf/tst-dlopen-tlsreinit2.c
4654@@ -0,0 +1,39 @@
4655+/* Test that dlopen preserves already accessed TLS (bug 31717).
4656+ Variant with initially-linked modules.
4657+ Copyright (C) 2024 Free Software Foundation, Inc.
4658+ This file is part of the GNU C Library.
4659+
4660+ The GNU C Library is free software; you can redistribute it and/or
4661+ modify it under the terms of the GNU Lesser General Public
4662+ License as published by the Free Software Foundation; either
4663+ version 2.1 of the License, or (at your option) any later version.
4664+
4665+ The GNU C Library is distributed in the hope that it will be useful,
4666+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4667+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4668+ Lesser General Public License for more details.
4669+
4670+ You should have received a copy of the GNU Lesser General Public
4671+ License along with the GNU C Library; if not, see
4672+ <https://www.gnu.org/licenses/>. */
4673+
4674+#include <ctype.h>
4675+#include <stdbool.h>
4676+#include <support/check.h>
4677+#include <support/xdlfcn.h>
4678+
4679+
4680+static int
4681+do_test (void)
4682+{
4683+ /* Defined in tst-dlopen-tlsreinitmod3.so. */
4684+ extern bool tlsreinitmod3_tested;
4685+ TEST_VERIFY (tlsreinitmod3_tested);
4686+
4687+ /* This crashes if the libc.so.6 TLS image has been reverted. */
4688+ TEST_VERIFY (!isupper ('@'));
4689+
4690+ return 0;
4691+}
4692+
4693+#include <support/test-driver.c>
4694diff --git a/elf/tst-dlopen-tlsreinit3.c b/elf/tst-dlopen-tlsreinit3.c
4695new file mode 100644
4696index 0000000000..79bd585aff
4697--- /dev/null
4698+++ b/elf/tst-dlopen-tlsreinit3.c
4699@@ -0,0 +1,2 @@
4700+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */
4701+#include "tst-dlopen-tlsreinit1.c"
4702diff --git a/elf/tst-dlopen-tlsreinit4.c b/elf/tst-dlopen-tlsreinit4.c
4703new file mode 100644
4704index 0000000000..344c9211ab
4705--- /dev/null
4706+++ b/elf/tst-dlopen-tlsreinit4.c
4707@@ -0,0 +1,2 @@
4708+/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */
4709+#include "tst-dlopen-tlsreinit2.c"
4710diff --git a/elf/tst-dlopen-tlsreinitmod1.c b/elf/tst-dlopen-tlsreinitmod1.c
4711new file mode 100644
4712index 0000000000..354cc3de51
4713--- /dev/null
4714+++ b/elf/tst-dlopen-tlsreinitmod1.c
4715@@ -0,0 +1,20 @@
4716+/* Test that dlopen preserves already accessed TLS (bug 31717), module 1.
4717+ Copyright (C) 2024 Free Software Foundation, Inc.
4718+ This file is part of the GNU C Library.
4719+
4720+ The GNU C Library is free software; you can redistribute it and/or
4721+ modify it under the terms of the GNU Lesser General Public
4722+ License as published by the Free Software Foundation; either
4723+ version 2.1 of the License, or (at your option) any later version.
4724+
4725+ The GNU C Library is distributed in the hope that it will be useful,
4726+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4727+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4728+ Lesser General Public License for more details.
4729+
4730+ You should have received a copy of the GNU Lesser General Public
4731+ License along with the GNU C Library; if not, see
4732+ <https://www.gnu.org/licenses/>. */
4733+
4734+/* This module triggers loading of tst-dlopen-tlsreinitmod2.so and
4735+ tst-dlopen-tlsreinitmod3.so. */
4736diff --git a/elf/tst-dlopen-tlsreinitmod2.c b/elf/tst-dlopen-tlsreinitmod2.c
4737new file mode 100644
4738index 0000000000..677e69bd35
4739--- /dev/null
4740+++ b/elf/tst-dlopen-tlsreinitmod2.c
4741@@ -0,0 +1,30 @@
4742+/* Test that dlopen preserves already accessed TLS (bug 31717), module 2.
4743+ Copyright (C) 2024 Free Software Foundation, Inc.
4744+ This file is part of the GNU C Library.
4745+
4746+ The GNU C Library is free software; you can redistribute it and/or
4747+ modify it under the terms of the GNU Lesser General Public
4748+ License as published by the Free Software Foundation; either
4749+ version 2.1 of the License, or (at your option) any later version.
4750+
4751+ The GNU C Library is distributed in the hope that it will be useful,
4752+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4753+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4754+ Lesser General Public License for more details.
4755+
4756+ You should have received a copy of the GNU Lesser General Public
4757+ License along with the GNU C Library; if not, see
4758+ <https://www.gnu.org/licenses/>. */
4759+
4760+#include <stdio.h>
4761+
4762+/* Defined in tst-dlopen-tlsreinitmod3.so. This an underlinked symbol
4763+ dependency. */
4764+extern void call_tlsreinitmod3 (void);
4765+
4766+static void __attribute__ ((constructor))
4767+tlsreinitmod2_init (void)
4768+{
4769+ puts ("info: constructor of tst-dlopen-tlsreinitmod2.so invoked");
4770+ call_tlsreinitmod3 ();
4771+}
4772diff --git a/elf/tst-dlopen-tlsreinitmod3.c b/elf/tst-dlopen-tlsreinitmod3.c
4773new file mode 100644
4774index 0000000000..ef769c5131
4775--- /dev/null
4776+++ b/elf/tst-dlopen-tlsreinitmod3.c
4777@@ -0,0 +1,102 @@
4778+/* Test that dlopen preserves already accessed TLS (bug 31717), module 3.
4779+ Copyright (C) 2024 Free Software Foundation, Inc.
4780+ This file is part of the GNU C Library.
4781+
4782+ The GNU C Library is free software; you can redistribute it and/or
4783+ modify it under the terms of the GNU Lesser General Public
4784+ License as published by the Free Software Foundation; either
4785+ version 2.1 of the License, or (at your option) any later version.
4786+
4787+ The GNU C Library is distributed in the hope that it will be useful,
4788+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4789+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4790+ Lesser General Public License for more details.
4791+
4792+ You should have received a copy of the GNU Lesser General Public
4793+ License along with the GNU C Library; if not, see
4794+ <https://www.gnu.org/licenses/>. */
4795+
4796+#include <dlfcn.h>
4797+#include <stdbool.h>
4798+#include <stdio.h>
4799+#include <unistd.h>
4800+
4801+/* Used to verify from the main program that the test ran. */
4802+bool tlsreinitmod3_tested;
4803+
4804+/* This TLS variable must not revert back to the initial state after
4805+ dlopen. */
4806+static __thread int tlsreinitmod3_state = 1;
4807+
4808+/* Set from the ELF constructor during dlopen. */
4809+static bool tlsreinitmod3_constructed;
4810+
4811+/* Second half of test, behind a compiler barrier. The compiler
4812+ barrier is necessary to prevent carrying over TLS address
4813+ information from call_tlsreinitmod3 to call_tlsreinitmod3_tail. */
4814+void call_tlsreinitmod3_tail (void *self) __attribute__ ((weak));
4815+
4816+/* Called from tst-dlopen-tlsreinitmod2.so. */
4817+void
4818+call_tlsreinitmod3 (void)
4819+{
4820+ printf ("info: call_tlsreinitmod3 invoked (state=%d)\n",
4821+ tlsreinitmod3_state);
4822+
4823+ if (tlsreinitmod3_constructed)
4824+ {
4825+ puts ("error: call_tlsreinitmod3 called after ELF constructor");
4826+ fflush (stdout);
4827+ /* Cannot rely on test harness due to dynamic linking. */
4828+ _exit (1);
4829+ }
4830+
4831+ tlsreinitmod3_state = 2;
4832+
4833+ /* Self-dlopen. This will run the ELF constructor. */
4834+ void *self = dlopen ("tst-dlopen-tlsreinitmod3.so", RTLD_NOW);
4835+ if (self == NULL)
4836+ {
4837+ printf ("error: dlopen: %s\n", dlerror ());
4838+ fflush (stdout);
4839+ /* Cannot rely on test harness due to dynamic linking. */
4840+ _exit (1);
4841+ }
4842+
4843+ call_tlsreinitmod3_tail (self);
4844+}
4845+
4846+void
4847+call_tlsreinitmod3_tail (void *self)
4848+{
4849+ printf ("info: dlopen returned in tlsreinitmod3 (state=%d)\n",
4850+ tlsreinitmod3_state);
4851+
4852+ if (!tlsreinitmod3_constructed)
4853+ {
4854+ puts ("error: dlopen did not call tlsreinitmod3 ELF constructor");
4855+ fflush (stdout);
4856+ /* Cannot rely on test harness due to dynamic linking. */
4857+ _exit (1);
4858+ }
4859+
4860+ if (tlsreinitmod3_state != 2)
4861+ {
4862+ puts ("error: TLS state reverted in tlsreinitmod3");
4863+ fflush (stdout);
4864+ /* Cannot rely on test harness due to dynamic linking. */
4865+ _exit (1);
4866+ }
4867+
4868+ dlclose (self);
4869+
4870+ /* Signal test completion to the main program. */
4871+ tlsreinitmod3_tested = true;
4872+}
4873+
4874+static void __attribute__ ((constructor))
4875+tlsreinitmod3_init (void)
4876+{
4877+ puts ("info: constructor of tst-dlopen-tlsreinitmod3.so invoked");
4878+ tlsreinitmod3_constructed = true;
4879+}
4880diff --git a/include/link.h b/include/link.h
4881index cb0d7d8e2f..5ed445d5a6 100644
4882--- a/include/link.h
4883+++ b/include/link.h
4884@@ -212,6 +212,7 @@ struct link_map
4885 unsigned int l_find_object_processed:1; /* Zero if _dl_find_object_update
4886 needs to process this
4887 lt_library map. */
4888+ unsigned int l_tls_in_slotinfo:1; /* TLS slotinfo updated in dlopen. */
4889
4890 /* NODELETE status of the map. Only valid for maps of type
4891 lt_loaded. Lazy binding sets l_nodelete_active directly,
4892diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
4893index 154efb0e19..259ce2e7d6 100644
4894--- a/sysdeps/generic/ldsodefs.h
4895+++ b/sysdeps/generic/ldsodefs.h
4896@@ -1239,13 +1239,7 @@ extern void *_dl_open (const char *name, int mode, const void *caller,
4897 extern int _dl_scope_free (void *) attribute_hidden;
4898
4899
4900-/* Add module to slot information data. If DO_ADD is false, only the
4901- required memory is allocated. Must be called with GL
4902- (dl_load_tls_lock) acquired. If the function has already been called
4903- for the link map L with !do_add, then this function will not raise
4904- an exception, otherwise it is possible that it encounters a memory
4905- allocation failure. */
4906-extern void _dl_add_to_slotinfo (struct link_map *l, bool do_add)
4907+extern bool _dl_add_to_slotinfo (struct link_map *l, bool do_add)
4908 attribute_hidden;
4909
4910 /* Update slot information data for at least the generation of the
4911
4912commit f4a9b6e97bf05cf5a41907e55901f7e9afaafd4d
4913Author: Florian Weimer <fweimer@redhat.com>
4914Date: Mon Sep 9 21:10:23 2024 +0200
4915
4916 elf: Fix tst-dlopen-tlsreinit1.out test dependency
4917
4918 Fixes commit 5097cd344fd243fb8deb6dec96e8073753f962f9
4919 ("elf: Avoid re-initializing already allocated TLS in dlopen
4920 (bug 31717)").
4921
4922 Reported-by: Patsy Griffin <patsy@redhat.com>
4923 Reviewed-by: Patsy Griffin <patsy@redhat.com>
4924 (cherry picked from commit e82a7cb1622bff08d8e3a144d7c5516a088f1cbc)
4925
4926diff --git a/elf/Makefile b/elf/Makefile
4927index a03c6520d8..dc686c3bff 100644
4928--- a/elf/Makefile
4929+++ b/elf/Makefile
4930@@ -3141,7 +3141,7 @@ $(objpfx)tst-dlopen-tlsreinit4: \
4931 # tst-dlopen-tlsreinitmod3.so. The dependency is provided via
4932 # $(objpfx)tst-dlopen-tlsreinitmod1.so.
4933 tst-dlopen-tlsreinitmod2.so-no-z-defs = yes
4934-$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \
4935+$(objpfx)tst-dlopen-tlsreinit1.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \
4936 $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so
4937 # Reuse an audit module which provides ample debug logging.
4938 $(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so
4939
4940commit adfb14e71f240a6bc2a4cbd6e6c50cc3fa1bcc3b
4941Author: Florian Weimer <fweimer@redhat.com>
4942Date: Tue Sep 10 12:40:27 2024 +0200
4943
4944 debug: Fix read error handling in pcprofiledump
4945
4946 The reading loops did not check for read failures. Addresses
4947 a static analysis report.
4948
4949 Manually tested by compiling a program with the GCC's
4950 -finstrument-functions option, running it with
4951 “LD_PRELOAD=debug/libpcprofile.so PCPROFILE_OUTPUT=output-file”,
4952 and reviewing the output of “debug/pcprofiledump output-file”.
4953
4954 (cherry picked from commit 89b088bf70c651c231bf27e644270d093b8f144a)
4955
4956diff --git a/debug/pcprofiledump.c b/debug/pcprofiledump.c
4957index 049a9c2744..94530f0cf9 100644
4958--- a/debug/pcprofiledump.c
4959+++ b/debug/pcprofiledump.c
4960@@ -75,6 +75,44 @@ static struct argp argp =
4961 options, parse_opt, args_doc, doc, NULL, more_help
4962 };
4963
4964+/* Try to read SIZE bytes from FD and store them on BUF. Terminate
4965+ the process upon read error. Also terminate the process if less
4966+ than SIZE bytes are remaining in the file. If !IN_HEADER, do not
4967+ terminate the process if the end of the file is encountered
4968+ immediately, before any bytes are read.
4969+
4970+ Returns true if SIZE bytes have been read, and false if no bytes
4971+ have been read due to an end-of-file condition. */
4972+static bool
4973+read_exactly (int fd, void *buffer, size_t size, bool in_header)
4974+{
4975+ char *p = buffer;
4976+ char *end = p + size;
4977+ while (p < end)
4978+ {
4979+ ssize_t ret = TEMP_FAILURE_RETRY (read (fd, p, end - p));
4980+ if (ret < 0)
4981+ {
4982+ if (in_header)
4983+ error (EXIT_FAILURE, errno, _("cannot read header"));
4984+ else
4985+ error (EXIT_FAILURE, errno, _("cannot read pointer pair"));
4986+ }
4987+ if (ret == 0)
4988+ {
4989+ if (p == buffer && !in_header)
4990+ /* Nothing has been read. */
4991+ return false;
4992+ if (in_header)
4993+ error (EXIT_FAILURE, 0, _("unexpected end of file in header"));
4994+ else
4995+ error (EXIT_FAILURE, 0,
4996+ _("unexpected end of file in pointer pair"));
4997+ }
4998+ p += ret;
4999+ }
5000+ return true;
5001+}
5002
5003 int
5004 main (int argc, char *argv[])
5005@@ -110,8 +148,7 @@ main (int argc, char *argv[])
5006 /* Read the first 4-byte word. It contains the information about
5007 the word size and the endianness. */
5008 uint32_t word;
5009- if (TEMP_FAILURE_RETRY (read (fd, &word, 4)) != 4)
5010- error (EXIT_FAILURE, errno, _("cannot read header"));
5011+ read_exactly (fd, &word, sizeof (word), true);
5012
5013 /* Check whether we have to swap the byte order. */
5014 int must_swap = (word & 0x0fffffff) == bswap_32 (0xdeb00000);
5015@@ -121,56 +158,30 @@ main (int argc, char *argv[])
5016 /* We have two loops, one for 32 bit pointers, one for 64 bit pointers. */
5017 if (word == 0xdeb00004)
5018 {
5019- union
5020- {
5021- uint32_t ptrs[2];
5022- char bytes[8];
5023- } pair;
5024+ uint32_t ptrs[2];
5025
5026 while (1)
5027 {
5028- size_t len = sizeof (pair);
5029- size_t n;
5030-
5031- while (len > 0
5032- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len],
5033- len))) != 0)
5034- len -= n;
5035-
5036- if (len != 0)
5037- /* Nothing to read. */
5038+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false))
5039 break;
5040
5041 printf ("this = %#010" PRIx32 ", caller = %#010" PRIx32 "\n",
5042- must_swap ? bswap_32 (pair.ptrs[0]) : pair.ptrs[0],
5043- must_swap ? bswap_32 (pair.ptrs[1]) : pair.ptrs[1]);
5044+ must_swap ? bswap_32 (ptrs[0]) : ptrs[0],
5045+ must_swap ? bswap_32 (ptrs[1]) : ptrs[1]);
5046 }
5047 }
5048 else if (word == 0xdeb00008)
5049 {
5050- union
5051- {
5052- uint64_t ptrs[2];
5053- char bytes[16];
5054- } pair;
5055+ uint64_t ptrs[2];
5056
5057 while (1)
5058 {
5059- size_t len = sizeof (pair);
5060- size_t n;
5061-
5062- while (len > 0
5063- && (n = TEMP_FAILURE_RETRY (read (fd, &pair.bytes[8 - len],
5064- len))) != 0)
5065- len -= n;
5066-
5067- if (len != 0)
5068- /* Nothing to read. */
5069+ if (!read_exactly (fd, ptrs, sizeof (ptrs), false))
5070 break;
5071
5072 printf ("this = %#018" PRIx64 ", caller = %#018" PRIx64 "\n",
5073- must_swap ? bswap_64 (pair.ptrs[0]) : pair.ptrs[0],
5074- must_swap ? bswap_64 (pair.ptrs[1]) : pair.ptrs[1]);
5075+ must_swap ? bswap_64 (ptrs[0]) : ptrs[0],
5076+ must_swap ? bswap_64 (ptrs[1]) : ptrs[1]);
5077 }
5078 }
5079 else
5080
5081commit 7073164add3b874cf0c19ca0fb84236f6bb0985d
5082Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
5083Date: Tue Sep 3 14:58:33 2024 -0400
5084
5085 libio: Attempt wide backup free only for non-legacy code
5086
5087 _wide_data and _mode are not available in legacy code, so do not attempt
5088 to free the wide backup buffer in legacy code.
5089
5090 Resolves: BZ #32137 and BZ #27821
5091
5092 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
5093 Reviewed-by: Florian Weimer <fweimer@redhat.com>
5094 (cherry picked from commit ae4d44b1d501421ad9a3af95279b8f4d1546f1ce)
5095
5096diff --git a/NEWS b/NEWS
5097index 5b20efbf6c..9033335db1 100644
5098--- a/NEWS
5099+++ b/NEWS
5100@@ -9,12 +9,14 @@ Version 2.40.1
5101
5102 The following bugs are resolved with this release:
5103
5104+ [27821] ungetc: Fix backup buffer leak on program exit
5105 [30081] resolv: Do not wait for non-existing second DNS response after error
5106 [31717] elf: Avoid re-initializing already allocated TLS in dlopen
5107 [31890] resolv: Allow short error responses to match any DNS query
5108 [31968] mremap implementation in C does not handle arguments correctly
5109 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces
5110 [32052] Name space violation in fortify wrappers
5111+ [32137] libio: Attempt wide backup free only for non-legacy code
5112
5113 Version 2.40
5114
5115diff --git a/libio/genops.c b/libio/genops.c
5116index 35d8b30710..6f20d49669 100644
5117--- a/libio/genops.c
5118+++ b/libio/genops.c
5119@@ -819,7 +819,7 @@ _IO_unbuffer_all (void)
5120 /* Free up the backup area if it was ever allocated. */
5121 if (_IO_have_backup (fp))
5122 _IO_free_backup_area (fp);
5123- if (fp->_mode > 0 && _IO_have_wbackup (fp))
5124+ if (!legacy && fp->_mode > 0 && _IO_have_wbackup (fp))
5125 _IO_free_wbackup_area (fp);
5126
5127 if (! (fp->_flags & _IO_UNBUFFERED)
5128
5129commit 77018fd9f99f86a354387219fdf099915857a527
5130Author: Sergey Kolosov <skolosov@redhat.com>
5131Date: Wed Sep 25 15:51:23 2024 +0200
5132
5133 stdio-common: Add new test for fdopen
5134
5135 This commit adds fdopen test with all modes.
5136 Reviewed-by: DJ Delorie <dj@redhat.com>
5137
5138 (cherry picked from commit 1d72fa3cfa046f7293421a7e58f2a272474ea901)
5139
5140diff --git a/stdio-common/Makefile b/stdio-common/Makefile
5141index a91754f52d..5af53d61fd 100644
5142--- a/stdio-common/Makefile
5143+++ b/stdio-common/Makefile
5144@@ -207,6 +207,7 @@ tests := \
5145 tst-cookie \
5146 tst-dprintf-length \
5147 tst-fdopen \
5148+ tst-fdopen2 \
5149 tst-ferror \
5150 tst-fgets \
5151 tst-fileno \
5152diff --git a/stdio-common/tst-fdopen2.c b/stdio-common/tst-fdopen2.c
5153new file mode 100644
5154index 0000000000..0c6625f258
5155--- /dev/null
5156+++ b/stdio-common/tst-fdopen2.c
5157@@ -0,0 +1,246 @@
5158+/* Test the fdopen function.
5159+ Copyright (C) 2024 Free Software Foundation, Inc.
5160+ This file is part of the GNU C Library.
5161+
5162+ The GNU C Library is free software; you can redistribute it and/or
5163+ modify it under the terms of the GNU Lesser General Public
5164+ License as published by the Free Software Foundation; either
5165+ version 2.1 of the License, or (at your option) any later version.
5166+
5167+ The GNU C Library is distributed in the hope that it will be useful,
5168+ but WITHOUT ANY WARRANTY; without even the implied warranty of
5169+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5170+ Lesser General Public License for more details.
5171+
5172+ You should have received a copy of the GNU Lesser General Public
5173+ License along with the GNU C Library; if not, see
5174+ <https://www.gnu.org/licenses/>. */
5175+
5176+#include <stdio.h>
5177+#include <errno.h>
5178+#include <fcntl.h>
5179+#include <support/check.h>
5180+#include <support/support.h>
5181+#include <support/xunistd.h>
5182+#include <support/temp_file.h>
5183+
5184+char *tmp_dir;
5185+char *path_to_file;
5186+
5187+void
5188+prepare_tmp_dir (void)
5189+{
5190+ tmp_dir = support_create_temp_directory ("tst-fdopen2");
5191+ path_to_file = xasprintf ("%s/tst-fdopen2.txt", tmp_dir);
5192+}
5193+
5194+/* open temp file descriptor with mode. */
5195+int
5196+open_tmp_fd (int mode)
5197+{
5198+ int fd = xopen (path_to_file, mode, 0644);
5199+ return fd;
5200+}
5201+
5202+
5203+/* close and remove temp file with close. */
5204+void
5205+close_tmp_fd (int fd)
5206+{
5207+ xclose (fd);
5208+ xunlink (path_to_file);
5209+}
5210+
5211+/* close and remove temp file with fclose. */
5212+void
5213+close_tmp_fp (FILE *fp)
5214+{
5215+ fclose (fp);
5216+ xunlink (path_to_file);
5217+}
5218+
5219+/* test "w" fdopen mode. */
5220+void
5221+do_test_fdopen_w (void)
5222+{
5223+ int fd, ret;
5224+ FILE *fp;
5225+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_TRUNC);
5226+
5227+ /* test mode mismatch. */
5228+ fp = fdopen (fd, "r");
5229+ if (fp != NULL || errno != EINVAL)
5230+ {
5231+ close_tmp_fd (fd);
5232+ FAIL_EXIT1 ("fdopen (%d, r) should fail with EINVAL: %m", fd);
5233+ }
5234+
5235+ fp = fdopen (fd, "w");
5236+ if (fp == NULL)
5237+ {
5238+ close_tmp_fd (fd);
5239+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
5240+ }
5241+
5242+ const void *buf = "AAAA";
5243+ ret = fwrite (buf, 1, 4, fp);
5244+ if (ret != 4)
5245+ {
5246+ close_tmp_fp (fp);
5247+ FAIL_EXIT1 ("fwrite (): %m");
5248+ }
5249+
5250+ unsigned char buf2[4];
5251+ rewind (fp);
5252+ clearerr (fp);
5253+ /* fread should fail in "w" mode */
5254+ ret = fread (buf2, 1, 4, fp);
5255+ if (ret != 0 || ferror (fp) == 0)
5256+ {
5257+ close_tmp_fp (fp);
5258+ FAIL_EXIT1 ("fread should fail in \"w\" mode");
5259+ }
5260+
5261+ fclose (fp);
5262+}
5263+
5264+/* test "r" fdopen mode. */
5265+void
5266+do_test_fdopen_r (void)
5267+{
5268+ int fd, ret;
5269+ FILE *fp;
5270+ fd = open_tmp_fd (O_RDONLY);
5271+
5272+ /* test mode mismatch. */
5273+ fp = fdopen (fd, "w");
5274+ if (fp != NULL || errno != EINVAL)
5275+ {
5276+ close_tmp_fd (fd);
5277+ FAIL_EXIT1 ("fdopen (%d, w) should fail with EINVAL: %m", fd);
5278+ }
5279+
5280+ fp = fdopen (fd, "r");
5281+ if (fp == NULL)
5282+ {
5283+ close_tmp_fd (fd);
5284+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
5285+ }
5286+
5287+ const void *buf = "BBBB";
5288+ /* fwrite should fail in "r" mode. */
5289+ ret = fwrite (buf, 1, 4, fp);
5290+ if (ret != 0 || ferror (fp) == 0)
5291+ {
5292+ close_tmp_fp (fp);
5293+ FAIL_EXIT1 ("fwrite should fail in \"r\" mode");
5294+ }
5295+
5296+ unsigned char buf2[4];
5297+ ret = fread (buf2, 1, 4, fp);
5298+ if (ret != 4)
5299+ {
5300+ close_tmp_fp (fp);
5301+ FAIL_EXIT1 ("fread (): %m");
5302+ }
5303+
5304+ fclose (fp);
5305+}
5306+
5307+/* test "a" fdopen mode. */
5308+void
5309+do_test_fdopen_a (void)
5310+{
5311+ int fd, ret;
5312+ FILE *fp;
5313+ fd = open_tmp_fd (O_WRONLY | O_CREAT | O_APPEND);
5314+
5315+ /* test mode mismatch. */
5316+ fp = fdopen (fd, "r+");
5317+ if (fp != NULL || errno != EINVAL)
5318+ {
5319+ close_tmp_fd (fd);
5320+ FAIL_EXIT1 ("fdopen (%d, \"r+\") should fail with EINVAL: %m", fd);
5321+ }
5322+
5323+ fp = fdopen (fd, "a");
5324+ if (fp == NULL)
5325+ {
5326+ close_tmp_fd (fd);
5327+ FAIL_EXIT1 ("fdopen (%d, w): %m", fd);
5328+ }
5329+
5330+ const void *buf = "CCCC";
5331+ ret = fwrite (buf, 1, 4, fp);
5332+ if (ret != 4)
5333+ {
5334+ close_tmp_fp (fp);
5335+ FAIL_EXIT1 ("fwrite (): %m");
5336+ }
5337+
5338+ /* fread should fail in "a" mode. */
5339+ unsigned char buf2[4];
5340+ clearerr (fp);
5341+ ret = fread (buf2, 1, 4, fp);
5342+ if (ret != 0 || ferror (fp) == 0)
5343+ {
5344+ close_tmp_fp (fp);
5345+ FAIL_EXIT1 ("fread should fail \"a\" mode");
5346+ }
5347+
5348+ fclose (fp);
5349+}
5350+
5351+void
5352+do_test_fdopen_mode (int mode, const char *fmode)
5353+{
5354+ int fd, ret;
5355+ FILE *fp;
5356+ fd = open_tmp_fd (mode);
5357+
5358+ fp = fdopen (fd, fmode);
5359+ if (fp == NULL)
5360+ {
5361+ close_tmp_fd (fd);
5362+ FAIL_EXIT1 ("fdopen (%d, %s): %m", fd, fmode);
5363+ }
5364+
5365+ const void *buf = "EEEE";
5366+ ret = fwrite (buf, 1, 4, fp);
5367+ if (ret != 4)
5368+ {
5369+ close_tmp_fp (fp);
5370+ FAIL_EXIT1 ("fwrite () in mode:%s returns %d: %m", fmode, ret);
5371+ }
5372+
5373+ rewind (fp);
5374+ unsigned char buf2[4];
5375+ ret = fread (buf2, 1, 4, fp);
5376+ if (ret != 4)
5377+ {
5378+ close_tmp_fp (fp);
5379+ FAIL_EXIT1 ("fread () in mode:%s returns %d: %m", fmode, ret);
5380+ }
5381+
5382+ fclose (fp);
5383+}
5384+
5385+static int
5386+do_test (void)
5387+{
5388+
5389+ prepare_tmp_dir ();
5390+
5391+ do_test_fdopen_w ();
5392+ do_test_fdopen_r ();
5393+ do_test_fdopen_a ();
5394+
5395+ /* test r+ w+ a+ fdopen modes. */
5396+ do_test_fdopen_mode (O_RDWR, "r+");
5397+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_TRUNC, "w+");
5398+ do_test_fdopen_mode (O_RDWR | O_CREAT | O_APPEND, "a+");
5399+ xunlink (path_to_file);
5400+ return 0;
5401+}
5402+
5403+#include <support/test-driver.c>
5404
5405commit 61b6464f8d72aef520ee769a2ae317b4f68d5e1d
5406Author: Joseph Myers <josmyers@redhat.com>
5407Date: Tue Sep 24 14:06:22 2024 +0000
5408
5409 Add tests of fread
5410
5411 There seem to be no glibc tests specifically for the fread function.
5412 Add basic tests of that function.
5413
5414 Tested for x86_64.
5415
5416 (cherry picked from commit d14c977c65aac7db35bb59380ef99d6582c4f930)
5417
5418diff --git a/stdio-common/Makefile b/stdio-common/Makefile
5419index 5af53d61fd..3396090be1 100644
5420--- a/stdio-common/Makefile
5421+++ b/stdio-common/Makefile
5422@@ -217,6 +217,7 @@ tests := \
5423 tst-fmemopen4 \
5424 tst-fphex \
5425 tst-fphex-wide \
5426+ tst-fread \
5427 tst-fseek \
5428 tst-fwrite \
5429 tst-gets \
5430diff --git a/stdio-common/tst-fread.c b/stdio-common/tst-fread.c
5431new file mode 100644
5432index 0000000000..4d9a7895f6
5433--- /dev/null
5434+++ b/stdio-common/tst-fread.c
5435@@ -0,0 +1,134 @@
5436+/* Test fread.
5437+ Copyright (C) 2024 Free Software Foundation, Inc.
5438+ This file is part of the GNU C Library.
5439+
5440+ The GNU C Library is free software; you can redistribute it and/or
5441+ modify it under the terms of the GNU Lesser General Public
5442+ License as published by the Free Software Foundation; either
5443+ version 2.1 of the License, or (at your option) any later version.
5444+
5445+ The GNU C Library is distributed in the hope that it will be useful,
5446+ but WITHOUT ANY WARRANTY; without even the implied warranty of
5447+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5448+ Lesser General Public License for more details.
5449+
5450+ You should have received a copy of the GNU Lesser General Public
5451+ License along with the GNU C Library; if not, see
5452+ <https://www.gnu.org/licenses/>. */
5453+
5454+#include <stdio.h>
5455+#include <stdlib.h>
5456+#include <string.h>
5457+
5458+#include <support/check.h>
5459+#include <support/support.h>
5460+#include <support/temp_file.h>
5461+#include <support/test-driver.h>
5462+#include <support/xstdio.h>
5463+#include <support/xunistd.h>
5464+
5465+int
5466+do_test (void)
5467+{
5468+ char *temp_dir = support_create_temp_directory ("tst-fread");
5469+ char *file1 = xasprintf ("%s/file1", temp_dir);
5470+ support_write_file_string (file1, "file1");
5471+ add_temp_file (file1);
5472+ FILE *fp;
5473+ size_t ret;
5474+ char buf[1024];
5475+
5476+ verbose_printf ("test single-byte reads\n");
5477+ fp = xfopen (file1, "r");
5478+ memset (buf, 0, sizeof buf);
5479+ ret = fread (buf, 1, 2, fp);
5480+ TEST_COMPARE (ret, 2);
5481+ TEST_COMPARE (buf[0], 'f');
5482+ TEST_COMPARE (buf[1], 'i');
5483+ TEST_COMPARE (feof (fp), 0);
5484+ TEST_COMPARE (ftell (fp), 2);
5485+ memset (buf, 0, sizeof buf);
5486+ ret = fread (buf, 1, 3, fp);
5487+ TEST_COMPARE (ret, 3);
5488+ TEST_COMPARE (buf[0], 'l');
5489+ TEST_COMPARE (buf[1], 'e');
5490+ TEST_COMPARE (buf[2], '1');
5491+ TEST_COMPARE (ftell (fp), 5);
5492+ TEST_COMPARE (feof (fp), 0);
5493+ memset (buf, 0, sizeof buf);
5494+ ret = fread (buf, 1, 1, fp);
5495+ TEST_COMPARE (ret, 0);
5496+ TEST_COMPARE (!!feof (fp), 1);
5497+ TEST_COMPARE (ferror (fp), 0);
5498+ TEST_COMPARE (ftell (fp), 5);
5499+ xfclose (fp);
5500+
5501+ verbose_printf ("test single-byte reads, EOF part way through\n");
5502+ fp = xfopen (file1, "r");
5503+ memset (buf, 0, sizeof buf);
5504+ ret = fread (buf, 1, sizeof buf, fp);
5505+ TEST_COMPARE (ret, 5);
5506+ TEST_COMPARE (buf[0], 'f');
5507+ TEST_COMPARE (buf[1], 'i');
5508+ TEST_COMPARE (buf[2], 'l');
5509+ TEST_COMPARE (buf[3], 'e');
5510+ TEST_COMPARE (buf[4], '1');
5511+ TEST_COMPARE (!!feof (fp), 1);
5512+ TEST_COMPARE (ferror (fp), 0);
5513+ TEST_COMPARE (ftell (fp), 5);
5514+ xfclose (fp);
5515+
5516+ verbose_printf ("test multi-byte reads\n");
5517+ fp = xfopen (file1, "r");
5518+ memset (buf, 0, sizeof buf);
5519+ ret = fread (buf, 2, 2, fp);
5520+ TEST_COMPARE (ret, 2);
5521+ TEST_COMPARE (buf[0], 'f');
5522+ TEST_COMPARE (buf[1], 'i');
5523+ TEST_COMPARE (buf[2], 'l');
5524+ TEST_COMPARE (buf[3], 'e');
5525+ TEST_COMPARE (feof (fp), 0);
5526+ TEST_COMPARE (ftell (fp), 4);
5527+ memset (buf, 0, sizeof buf);
5528+ ret = fread (buf, 3, 3, fp);
5529+ TEST_COMPARE (ret, 0);
5530+ /* The bytes written for a partial element read are unspecified. */
5531+ TEST_COMPARE (!!feof (fp), 1);
5532+ TEST_COMPARE (ferror (fp), 0);
5533+ TEST_COMPARE (ftell (fp), 5);
5534+ xfclose (fp);
5535+
5536+ verbose_printf ("test read error\n");
5537+ fp = xfopen (file1, "r");
5538+ xclose (fileno (fp));
5539+ memset (buf, 0, sizeof buf);
5540+ ret = fread (buf, 1, sizeof buf, fp);
5541+ TEST_COMPARE (ret, 0);
5542+ TEST_COMPARE (feof (fp), 0);
5543+ TEST_COMPARE (!!ferror (fp), 1);
5544+ fclose (fp);
5545+
5546+ verbose_printf ("test zero size\n");
5547+ fp = xfopen (file1, "r");
5548+ ret = fread (buf, 0, SIZE_MAX, fp);
5549+ TEST_COMPARE (ret, 0);
5550+ TEST_COMPARE (feof (fp), 0);
5551+ TEST_COMPARE (ferror (fp), 0);
5552+ TEST_COMPARE (ftell (fp), 0);
5553+ xfclose (fp);
5554+
5555+ verbose_printf ("test zero items\n");
5556+ fp = xfopen (file1, "r");
5557+ ret = fread (buf, SIZE_MAX, 0, fp);
5558+ TEST_COMPARE (ret, 0);
5559+ TEST_COMPARE (feof (fp), 0);
5560+ TEST_COMPARE (ferror (fp), 0);
5561+ TEST_COMPARE (ftell (fp), 0);
5562+ xfclose (fp);
5563+
5564+ free (temp_dir);
5565+ free (file1);
5566+ return 0;
5567+}
5568+
5569+#include <support/test-driver.c>
5570
5571commit 9bc76c7ca4d6022fd588c274d139813f99e04f35
5572Author: Joseph Myers <josmyers@redhat.com>
5573Date: Wed Aug 14 17:15:46 2024 +0000
5574
5575 Test errno setting on strtod overflow in tst-strtod-round
5576
5577 We have no tests that errno is set to ERANGE on overflow of
5578 strtod-family functions (we do have some tests for underflow, in
5579 tst-strtod-underflow). Add such tests to tst-strtod-round.
5580
5581 Tested for x86_64.
5582
5583 (cherry picked from commit 207d64feb26279e152c50744e3c37e68491aca99)
5584
5585diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c
5586index 6fba4b5228..c3cc0201d4 100644
5587--- a/stdlib/tst-strtod-round-skeleton.c
5588+++ b/stdlib/tst-strtod-round-skeleton.c
5589@@ -21,6 +21,7 @@
5590 declared in the headers. */
5591 #define _LIBC_TEST 1
5592 #define __STDC_WANT_IEC_60559_TYPES_EXT__
5593+#include <errno.h>
5594 #include <fenv.h>
5595 #include <float.h>
5596 #include <math.h>
5597@@ -205,7 +206,9 @@ struct test {
5598 #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
5599 { \
5600 feclearexcept (FE_ALL_EXCEPT); \
5601+ errno = 0; \
5602 FTYPE f = STRTO (FSUF) (s, NULL); \
5603+ int new_errno = errno; \
5604 if (f != expected->FSUF \
5605 || (copysign ## CSUF) (1.0 ## LSUF, f) \
5606 != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \
5607@@ -254,6 +257,14 @@ struct test {
5608 printf ("ignoring this exception error\n"); \
5609 } \
5610 } \
5611+ if (overflow->FSUF && new_errno != ERANGE) \
5612+ { \
5613+ printf (FNPFXS "to" #FSUF \
5614+ " (" STRM ") left errno == %d," \
5615+ " not %d (ERANGE)\n", \
5616+ s, new_errno, ERANGE); \
5617+ result = 1; \
5618+ } \
5619 } \
5620 }
5621
5622
5623commit e06153665fa931e4c7d2a3ecc14e5197e96143a7
5624Author: Joseph Myers <josmyers@redhat.com>
5625Date: Tue Aug 27 12:38:01 2024 +0000
5626
5627 More thoroughly test underflow / errno in tst-strtod-round
5628
5629 Add tests of underflow in tst-strtod-round, and thus also test for
5630 errno being unchanged when there is neither overflow nor underflow.
5631 The errno setting before the function call to test for being unchanged
5632 is adjusted to set errno to 12345 instead of 0, so that any bugs where
5633 strtod sets errno to 0 would be detected.
5634
5635 This doesn't add any new test inputs for tst-strtod-round, and in
5636 particular doesn't cover the edge cases of underflow the way
5637 tst-strtod-underflow does (none of the existing test inputs for
5638 tst-strtod-round actually exercise cases that have underflow with
5639 before-rounding tininess detection but not with after-rounding
5640 tininess detection), but at least it provides some coverage (as per
5641 the recent discussions) that ordinary non-overflowing non-underflowing
5642 inputs to these functions do not set errno.
5643
5644 Tested for x86_64.
5645
5646 (cherry picked from commit d73ed2601b7c3c93c3529149a3d7f7b6177900a8)
5647
5648diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c
5649index e48bf4d6ea..7ce735f81d 100644
5650--- a/stdlib/gen-tst-strtod-round.c
5651+++ b/stdlib/gen-tst-strtod-round.c
5652@@ -46,6 +46,7 @@ static int
5653 string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
5654 {
5655 mpfr_clear_overflow ();
5656+ mpfr_clear_underflow ();
5657 #ifdef WORKAROUND
5658 mpfr_t f2;
5659 mpfr_init2 (f2, 100000);
5660@@ -53,12 +54,16 @@ string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd)
5661 int r = mpfr_set (f, f2, rnd);
5662 r |= mpfr_subnormalize (f, r, rnd);
5663 mpfr_clear (f2);
5664- return r0 | r;
5665+ r |= r0;
5666 #else
5667 int r = mpfr_strtofr (f, s, NULL, 0, rnd);
5668 r |= mpfr_subnormalize (f, r, rnd);
5669- return r;
5670 #endif
5671+ if (r == 0)
5672+ /* The MPFR underflow flag is set for exact subnormal results,
5673+ which is not wanted here. */
5674+ mpfr_clear_underflow ();
5675+ return r;
5676 }
5677
5678 void
5679@@ -70,6 +75,21 @@ print_fp (FILE *fout, mpfr_t f, const char *suffix)
5680 mpfr_fprintf (fout, "\t%Ra%s", f, suffix);
5681 }
5682
5683+static const char *
5684+suffix_to_print (bool overflow, bool underflow, bool underflow_before_rounding,
5685+ bool with_comma)
5686+{
5687+ if (overflow)
5688+ return with_comma ? ", true, false,\n" : ", true, false";
5689+ if (underflow)
5690+ return with_comma ? ", false, true,\n" : ", false, true";
5691+ if (underflow_before_rounding)
5692+ return (with_comma
5693+ ? ", false, !TININESS_AFTER_ROUNDING,\n"
5694+ : ", false, !TININESS_AFTER_ROUNDING");
5695+ return with_comma ? ", false, false,\n" : ", false, false";
5696+}
5697+
5698 static void
5699 round_str (FILE *fout, const char *s, int prec, int emin, int emax,
5700 bool ibm_ld)
5701@@ -80,8 +100,11 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax,
5702 mpfr_set_emin (emin);
5703 mpfr_set_emax (emax);
5704 mpfr_init (f);
5705+ string_to_fp (f, s, MPFR_RNDZ);
5706+ bool underflow_before_rounding = mpfr_underflow_p () != 0;
5707 int r = string_to_fp (f, s, MPFR_RNDD);
5708 bool overflow = mpfr_overflow_p () != 0;
5709+ bool underflow = mpfr_underflow_p () != 0;
5710 if (ibm_ld)
5711 {
5712 assert (prec == 106 && emin == -1073 && emax == 1024);
5713@@ -97,19 +120,27 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax,
5714 }
5715 }
5716 mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true");
5717- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
5718+ print_fp (fout, f,
5719+ suffix_to_print (overflow, underflow, underflow_before_rounding,
5720+ true));
5721 string_to_fp (f, s, MPFR_RNDN);
5722 overflow = (mpfr_overflow_p () != 0
5723 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
5724- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
5725+ print_fp (fout, f,
5726+ suffix_to_print (overflow, underflow, underflow_before_rounding,
5727+ true));
5728 string_to_fp (f, s, MPFR_RNDZ);
5729 overflow = (mpfr_overflow_p () != 0
5730 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
5731- print_fp (fout, f, overflow ? ", true,\n" : ", false,\n");
5732+ print_fp (fout, f,
5733+ suffix_to_print (overflow, underflow, underflow_before_rounding,
5734+ true));
5735 string_to_fp (f, s, MPFR_RNDU);
5736 overflow = (mpfr_overflow_p () != 0
5737 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0));
5738- print_fp (fout, f, overflow ? ", true" : ", false");
5739+ print_fp (fout, f,
5740+ suffix_to_print (overflow, underflow, underflow_before_rounding,
5741+ false));
5742 mpfr_clear (f);
5743 if (ibm_ld)
5744 mpfr_clear (max_value);
5745diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h
5746index 8899d15f9b..13e62dd2b0 100644
5747--- a/stdlib/tst-strtod-round-data.h
5748+++ b/stdlib/tst-strtod-round-data.h
5749@@ -2,1852 +2,1852 @@
5750 static const struct test tests[] = {
5751 TEST ("3.518437208883201171875E+013",
5752 false,
5753- 0x2p+44, false,
5754- 0x2p+44, false,
5755- 0x2p+44, false,
5756- 0x2.000004p+44, false,
5757- false,
5758- 0x2.0000000000002p+44, false,
5759- 0x2.0000000000004p+44, false,
5760- 0x2.0000000000002p+44, false,
5761- 0x2.0000000000004p+44, false,
5762- true,
5763- 0x2.0000000000003p+44, false,
5764- 0x2.0000000000003p+44, false,
5765- 0x2.0000000000003p+44, false,
5766- 0x2.0000000000003p+44, false,
5767- true,
5768- 0x2.0000000000003p+44, false,
5769- 0x2.0000000000003p+44, false,
5770- 0x2.0000000000003p+44, false,
5771- 0x2.0000000000003p+44, false,
5772- true,
5773- 0x2.0000000000003p+44, false,
5774- 0x2.0000000000003p+44, false,
5775- 0x2.0000000000003p+44, false,
5776- 0x2.0000000000003p+44, false,
5777- true,
5778- 0x2.0000000000003p+44, false,
5779- 0x2.0000000000003p+44, false,
5780- 0x2.0000000000003p+44, false,
5781- 0x2.0000000000003p+44, false),
5782+ 0x2p+44, false, false,
5783+ 0x2p+44, false, false,
5784+ 0x2p+44, false, false,
5785+ 0x2.000004p+44, false, false,
5786+ false,
5787+ 0x2.0000000000002p+44, false, false,
5788+ 0x2.0000000000004p+44, false, false,
5789+ 0x2.0000000000002p+44, false, false,
5790+ 0x2.0000000000004p+44, false, false,
5791+ true,
5792+ 0x2.0000000000003p+44, false, false,
5793+ 0x2.0000000000003p+44, false, false,
5794+ 0x2.0000000000003p+44, false, false,
5795+ 0x2.0000000000003p+44, false, false,
5796+ true,
5797+ 0x2.0000000000003p+44, false, false,
5798+ 0x2.0000000000003p+44, false, false,
5799+ 0x2.0000000000003p+44, false, false,
5800+ 0x2.0000000000003p+44, false, false,
5801+ true,
5802+ 0x2.0000000000003p+44, false, false,
5803+ 0x2.0000000000003p+44, false, false,
5804+ 0x2.0000000000003p+44, false, false,
5805+ 0x2.0000000000003p+44, false, false,
5806+ true,
5807+ 0x2.0000000000003p+44, false, false,
5808+ 0x2.0000000000003p+44, false, false,
5809+ 0x2.0000000000003p+44, false, false,
5810+ 0x2.0000000000003p+44, false, false),
5811 TEST ("1.00000005960464477550",
5812 false,
5813- 0x1p+0, false,
5814- 0x1.000002p+0, false,
5815- 0x1p+0, false,
5816- 0x1.000002p+0, false,
5817- false,
5818- 0x1.000001p+0, false,
5819- 0x1.000001p+0, false,
5820- 0x1.000001p+0, false,
5821- 0x1.0000010000001p+0, false,
5822- false,
5823- 0x1.0000010000000002p+0, false,
5824- 0x1.0000010000000002p+0, false,
5825- 0x1.0000010000000002p+0, false,
5826- 0x1.0000010000000004p+0, false,
5827- false,
5828- 0x1.0000010000000002p+0, false,
5829- 0x1.0000010000000002p+0, false,
5830- 0x1.0000010000000002p+0, false,
5831- 0x1.0000010000000004p+0, false,
5832- false,
5833- 0x1.0000010000000002048242f2ffp+0, false,
5834- 0x1.0000010000000002048242f2ff8p+0, false,
5835- 0x1.0000010000000002048242f2ffp+0, false,
5836- 0x1.0000010000000002048242f2ff8p+0, false,
5837- false,
5838- 0x1.0000010000000002048242f2ff66p+0, false,
5839- 0x1.0000010000000002048242f2ff67p+0, false,
5840- 0x1.0000010000000002048242f2ff66p+0, false,
5841- 0x1.0000010000000002048242f2ff67p+0, false),
5842+ 0x1p+0, false, false,
5843+ 0x1.000002p+0, false, false,
5844+ 0x1p+0, false, false,
5845+ 0x1.000002p+0, false, false,
5846+ false,
5847+ 0x1.000001p+0, false, false,
5848+ 0x1.000001p+0, false, false,
5849+ 0x1.000001p+0, false, false,
5850+ 0x1.0000010000001p+0, false, false,
5851+ false,
5852+ 0x1.0000010000000002p+0, false, false,
5853+ 0x1.0000010000000002p+0, false, false,
5854+ 0x1.0000010000000002p+0, false, false,
5855+ 0x1.0000010000000004p+0, false, false,
5856+ false,
5857+ 0x1.0000010000000002p+0, false, false,
5858+ 0x1.0000010000000002p+0, false, false,
5859+ 0x1.0000010000000002p+0, false, false,
5860+ 0x1.0000010000000004p+0, false, false,
5861+ false,
5862+ 0x1.0000010000000002048242f2ffp+0, false, false,
5863+ 0x1.0000010000000002048242f2ff8p+0, false, false,
5864+ 0x1.0000010000000002048242f2ffp+0, false, false,
5865+ 0x1.0000010000000002048242f2ff8p+0, false, false,
5866+ false,
5867+ 0x1.0000010000000002048242f2ff66p+0, false, false,
5868+ 0x1.0000010000000002048242f2ff67p+0, false, false,
5869+ 0x1.0000010000000002048242f2ff66p+0, false, false,
5870+ 0x1.0000010000000002048242f2ff67p+0, false, false),
5871 TEST ("1.0000000596046447755",
5872 false,
5873- 0x1p+0, false,
5874- 0x1.000002p+0, false,
5875- 0x1p+0, false,
5876- 0x1.000002p+0, false,
5877- false,
5878- 0x1.000001p+0, false,
5879- 0x1.000001p+0, false,
5880- 0x1.000001p+0, false,
5881- 0x1.0000010000001p+0, false,
5882- false,
5883- 0x1.0000010000000002p+0, false,
5884- 0x1.0000010000000002p+0, false,
5885- 0x1.0000010000000002p+0, false,
5886- 0x1.0000010000000004p+0, false,
5887- false,
5888- 0x1.0000010000000002p+0, false,
5889- 0x1.0000010000000002p+0, false,
5890- 0x1.0000010000000002p+0, false,
5891- 0x1.0000010000000004p+0, false,
5892- false,
5893- 0x1.0000010000000002048242f2ffp+0, false,
5894- 0x1.0000010000000002048242f2ff8p+0, false,
5895- 0x1.0000010000000002048242f2ffp+0, false,
5896- 0x1.0000010000000002048242f2ff8p+0, false,
5897- false,
5898- 0x1.0000010000000002048242f2ff66p+0, false,
5899- 0x1.0000010000000002048242f2ff67p+0, false,
5900- 0x1.0000010000000002048242f2ff66p+0, false,
5901- 0x1.0000010000000002048242f2ff67p+0, false),
5902+ 0x1p+0, false, false,
5903+ 0x1.000002p+0, false, false,
5904+ 0x1p+0, false, false,
5905+ 0x1.000002p+0, false, false,
5906+ false,
5907+ 0x1.000001p+0, false, false,
5908+ 0x1.000001p+0, false, false,
5909+ 0x1.000001p+0, false, false,
5910+ 0x1.0000010000001p+0, false, false,
5911+ false,
5912+ 0x1.0000010000000002p+0, false, false,
5913+ 0x1.0000010000000002p+0, false, false,
5914+ 0x1.0000010000000002p+0, false, false,
5915+ 0x1.0000010000000004p+0, false, false,
5916+ false,
5917+ 0x1.0000010000000002p+0, false, false,
5918+ 0x1.0000010000000002p+0, false, false,
5919+ 0x1.0000010000000002p+0, false, false,
5920+ 0x1.0000010000000004p+0, false, false,
5921+ false,
5922+ 0x1.0000010000000002048242f2ffp+0, false, false,
5923+ 0x1.0000010000000002048242f2ff8p+0, false, false,
5924+ 0x1.0000010000000002048242f2ffp+0, false, false,
5925+ 0x1.0000010000000002048242f2ff8p+0, false, false,
5926+ false,
5927+ 0x1.0000010000000002048242f2ff66p+0, false, false,
5928+ 0x1.0000010000000002048242f2ff67p+0, false, false,
5929+ 0x1.0000010000000002048242f2ff66p+0, false, false,
5930+ 0x1.0000010000000002048242f2ff67p+0, false, false),
5931 TEST ("1.000000059604644776",
5932 false,
5933- 0x1p+0, false,
5934- 0x1.000002p+0, false,
5935- 0x1p+0, false,
5936- 0x1.000002p+0, false,
5937- false,
5938- 0x1.000001p+0, false,
5939- 0x1.000001p+0, false,
5940- 0x1.000001p+0, false,
5941- 0x1.0000010000001p+0, false,
5942- false,
5943- 0x1.000001000000000ap+0, false,
5944- 0x1.000001000000000cp+0, false,
5945- 0x1.000001000000000ap+0, false,
5946- 0x1.000001000000000cp+0, false,
5947- false,
5948- 0x1.000001000000000ap+0, false,
5949- 0x1.000001000000000cp+0, false,
5950- 0x1.000001000000000ap+0, false,
5951- 0x1.000001000000000cp+0, false,
5952- false,
5953- 0x1.000001000000000b3db12bdc21p+0, false,
5954- 0x1.000001000000000b3db12bdc21p+0, false,
5955- 0x1.000001000000000b3db12bdc21p+0, false,
5956- 0x1.000001000000000b3db12bdc218p+0, false,
5957- false,
5958- 0x1.000001000000000b3db12bdc213cp+0, false,
5959- 0x1.000001000000000b3db12bdc213dp+0, false,
5960- 0x1.000001000000000b3db12bdc213cp+0, false,
5961- 0x1.000001000000000b3db12bdc213dp+0, false),
5962+ 0x1p+0, false, false,
5963+ 0x1.000002p+0, false, false,
5964+ 0x1p+0, false, false,
5965+ 0x1.000002p+0, false, false,
5966+ false,
5967+ 0x1.000001p+0, false, false,
5968+ 0x1.000001p+0, false, false,
5969+ 0x1.000001p+0, false, false,
5970+ 0x1.0000010000001p+0, false, false,
5971+ false,
5972+ 0x1.000001000000000ap+0, false, false,
5973+ 0x1.000001000000000cp+0, false, false,
5974+ 0x1.000001000000000ap+0, false, false,
5975+ 0x1.000001000000000cp+0, false, false,
5976+ false,
5977+ 0x1.000001000000000ap+0, false, false,
5978+ 0x1.000001000000000cp+0, false, false,
5979+ 0x1.000001000000000ap+0, false, false,
5980+ 0x1.000001000000000cp+0, false, false,
5981+ false,
5982+ 0x1.000001000000000b3db12bdc21p+0, false, false,
5983+ 0x1.000001000000000b3db12bdc21p+0, false, false,
5984+ 0x1.000001000000000b3db12bdc21p+0, false, false,
5985+ 0x1.000001000000000b3db12bdc218p+0, false, false,
5986+ false,
5987+ 0x1.000001000000000b3db12bdc213cp+0, false, false,
5988+ 0x1.000001000000000b3db12bdc213dp+0, false, false,
5989+ 0x1.000001000000000b3db12bdc213cp+0, false, false,
5990+ 0x1.000001000000000b3db12bdc213dp+0, false, false),
5991 TEST ("1.000000059604644775",
5992 false,
5993- 0x1p+0, false,
5994- 0x1p+0, false,
5995- 0x1p+0, false,
5996- 0x1.000002p+0, false,
5997- false,
5998- 0x1.000000fffffffp+0, false,
5999- 0x1.000001p+0, false,
6000- 0x1.000000fffffffp+0, false,
6001- 0x1.000001p+0, false,
6002- false,
6003- 0x1.000000fffffffff8p+0, false,
6004- 0x1.000000fffffffff8p+0, false,
6005- 0x1.000000fffffffff8p+0, false,
6006- 0x1.000000fffffffffap+0, false,
6007- false,
6008- 0x1.000000fffffffff8p+0, false,
6009- 0x1.000000fffffffff8p+0, false,
6010- 0x1.000000fffffffff8p+0, false,
6011- 0x1.000000fffffffffap+0, false,
6012- false,
6013- 0x1.000000fffffffff8cb535a09dd8p+0, false,
6014- 0x1.000000fffffffff8cb535a09dd8p+0, false,
6015- 0x1.000000fffffffff8cb535a09dd8p+0, false,
6016- 0x1.000000fffffffff8cb535a09dep+0, false,
6017- false,
6018- 0x1.000000fffffffff8cb535a09dd9p+0, false,
6019- 0x1.000000fffffffff8cb535a09dd91p+0, false,
6020- 0x1.000000fffffffff8cb535a09dd9p+0, false,
6021- 0x1.000000fffffffff8cb535a09dd91p+0, false),
6022+ 0x1p+0, false, false,
6023+ 0x1p+0, false, false,
6024+ 0x1p+0, false, false,
6025+ 0x1.000002p+0, false, false,
6026+ false,
6027+ 0x1.000000fffffffp+0, false, false,
6028+ 0x1.000001p+0, false, false,
6029+ 0x1.000000fffffffp+0, false, false,
6030+ 0x1.000001p+0, false, false,
6031+ false,
6032+ 0x1.000000fffffffff8p+0, false, false,
6033+ 0x1.000000fffffffff8p+0, false, false,
6034+ 0x1.000000fffffffff8p+0, false, false,
6035+ 0x1.000000fffffffffap+0, false, false,
6036+ false,
6037+ 0x1.000000fffffffff8p+0, false, false,
6038+ 0x1.000000fffffffff8p+0, false, false,
6039+ 0x1.000000fffffffff8p+0, false, false,
6040+ 0x1.000000fffffffffap+0, false, false,
6041+ false,
6042+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
6043+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
6044+ 0x1.000000fffffffff8cb535a09dd8p+0, false, false,
6045+ 0x1.000000fffffffff8cb535a09dep+0, false, false,
6046+ false,
6047+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false,
6048+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false,
6049+ 0x1.000000fffffffff8cb535a09dd9p+0, false, false,
6050+ 0x1.000000fffffffff8cb535a09dd91p+0, false, false),
6051 TEST ("1.00000005960464478",
6052 false,
6053- 0x1p+0, false,
6054- 0x1.000002p+0, false,
6055- 0x1p+0, false,
6056- 0x1.000002p+0, false,
6057- false,
6058- 0x1.000001p+0, false,
6059- 0x1.000001p+0, false,
6060- 0x1.000001p+0, false,
6061- 0x1.0000010000001p+0, false,
6062- false,
6063- 0x1.0000010000000054p+0, false,
6064- 0x1.0000010000000056p+0, false,
6065- 0x1.0000010000000054p+0, false,
6066- 0x1.0000010000000056p+0, false,
6067- false,
6068- 0x1.0000010000000054p+0, false,
6069- 0x1.0000010000000056p+0, false,
6070- 0x1.0000010000000054p+0, false,
6071- 0x1.0000010000000056p+0, false,
6072- false,
6073- 0x1.0000010000000055072873252f8p+0, false,
6074- 0x1.0000010000000055072873253p+0, false,
6075- 0x1.0000010000000055072873252f8p+0, false,
6076- 0x1.0000010000000055072873253p+0, false,
6077- false,
6078- 0x1.0000010000000055072873252febp+0, false,
6079- 0x1.0000010000000055072873252febp+0, false,
6080- 0x1.0000010000000055072873252febp+0, false,
6081- 0x1.0000010000000055072873252fecp+0, false),
6082+ 0x1p+0, false, false,
6083+ 0x1.000002p+0, false, false,
6084+ 0x1p+0, false, false,
6085+ 0x1.000002p+0, false, false,
6086+ false,
6087+ 0x1.000001p+0, false, false,
6088+ 0x1.000001p+0, false, false,
6089+ 0x1.000001p+0, false, false,
6090+ 0x1.0000010000001p+0, false, false,
6091+ false,
6092+ 0x1.0000010000000054p+0, false, false,
6093+ 0x1.0000010000000056p+0, false, false,
6094+ 0x1.0000010000000054p+0, false, false,
6095+ 0x1.0000010000000056p+0, false, false,
6096+ false,
6097+ 0x1.0000010000000054p+0, false, false,
6098+ 0x1.0000010000000056p+0, false, false,
6099+ 0x1.0000010000000054p+0, false, false,
6100+ 0x1.0000010000000056p+0, false, false,
6101+ false,
6102+ 0x1.0000010000000055072873252f8p+0, false, false,
6103+ 0x1.0000010000000055072873253p+0, false, false,
6104+ 0x1.0000010000000055072873252f8p+0, false, false,
6105+ 0x1.0000010000000055072873253p+0, false, false,
6106+ false,
6107+ 0x1.0000010000000055072873252febp+0, false, false,
6108+ 0x1.0000010000000055072873252febp+0, false, false,
6109+ 0x1.0000010000000055072873252febp+0, false, false,
6110+ 0x1.0000010000000055072873252fecp+0, false, false),
6111 TEST ("1.0000000596046448",
6112 false,
6113- 0x1p+0, false,
6114- 0x1.000002p+0, false,
6115- 0x1p+0, false,
6116- 0x1.000002p+0, false,
6117- false,
6118- 0x1.000001p+0, false,
6119- 0x1.000001p+0, false,
6120- 0x1.000001p+0, false,
6121- 0x1.0000010000001p+0, false,
6122- false,
6123- 0x1.00000100000001c4p+0, false,
6124- 0x1.00000100000001c6p+0, false,
6125- 0x1.00000100000001c4p+0, false,
6126- 0x1.00000100000001c6p+0, false,
6127- false,
6128- 0x1.00000100000001c4p+0, false,
6129- 0x1.00000100000001c6p+0, false,
6130- 0x1.00000100000001c4p+0, false,
6131- 0x1.00000100000001c6p+0, false,
6132- false,
6133- 0x1.00000100000001c5f67cd79279p+0, false,
6134- 0x1.00000100000001c5f67cd792798p+0, false,
6135- 0x1.00000100000001c5f67cd79279p+0, false,
6136- 0x1.00000100000001c5f67cd792798p+0, false,
6137- false,
6138- 0x1.00000100000001c5f67cd7927953p+0, false,
6139- 0x1.00000100000001c5f67cd7927954p+0, false,
6140- 0x1.00000100000001c5f67cd7927953p+0, false,
6141- 0x1.00000100000001c5f67cd7927954p+0, false),
6142+ 0x1p+0, false, false,
6143+ 0x1.000002p+0, false, false,
6144+ 0x1p+0, false, false,
6145+ 0x1.000002p+0, false, false,
6146+ false,
6147+ 0x1.000001p+0, false, false,
6148+ 0x1.000001p+0, false, false,
6149+ 0x1.000001p+0, false, false,
6150+ 0x1.0000010000001p+0, false, false,
6151+ false,
6152+ 0x1.00000100000001c4p+0, false, false,
6153+ 0x1.00000100000001c6p+0, false, false,
6154+ 0x1.00000100000001c4p+0, false, false,
6155+ 0x1.00000100000001c6p+0, false, false,
6156+ false,
6157+ 0x1.00000100000001c4p+0, false, false,
6158+ 0x1.00000100000001c6p+0, false, false,
6159+ 0x1.00000100000001c4p+0, false, false,
6160+ 0x1.00000100000001c6p+0, false, false,
6161+ false,
6162+ 0x1.00000100000001c5f67cd79279p+0, false, false,
6163+ 0x1.00000100000001c5f67cd792798p+0, false, false,
6164+ 0x1.00000100000001c5f67cd79279p+0, false, false,
6165+ 0x1.00000100000001c5f67cd792798p+0, false, false,
6166+ false,
6167+ 0x1.00000100000001c5f67cd7927953p+0, false, false,
6168+ 0x1.00000100000001c5f67cd7927954p+0, false, false,
6169+ 0x1.00000100000001c5f67cd7927953p+0, false, false,
6170+ 0x1.00000100000001c5f67cd7927954p+0, false, false),
6171 TEST ("1.000000059604645",
6172 false,
6173- 0x1p+0, false,
6174- 0x1.000002p+0, false,
6175- 0x1p+0, false,
6176- 0x1.000002p+0, false,
6177- false,
6178- 0x1.0000010000001p+0, false,
6179- 0x1.0000010000001p+0, false,
6180- 0x1.0000010000001p+0, false,
6181- 0x1.0000010000002p+0, false,
6182- false,
6183- 0x1.000001000000102ep+0, false,
6184- 0x1.000001000000103p+0, false,
6185- 0x1.000001000000102ep+0, false,
6186- 0x1.000001000000103p+0, false,
6187- false,
6188- 0x1.000001000000102ep+0, false,
6189- 0x1.000001000000103p+0, false,
6190- 0x1.000001000000102ep+0, false,
6191- 0x1.000001000000103p+0, false,
6192- false,
6193- 0x1.000001000000102f4fc8c3d757p+0, false,
6194- 0x1.000001000000102f4fc8c3d7578p+0, false,
6195- 0x1.000001000000102f4fc8c3d757p+0, false,
6196- 0x1.000001000000102f4fc8c3d7578p+0, false,
6197- false,
6198- 0x1.000001000000102f4fc8c3d75769p+0, false,
6199- 0x1.000001000000102f4fc8c3d75769p+0, false,
6200- 0x1.000001000000102f4fc8c3d75769p+0, false,
6201- 0x1.000001000000102f4fc8c3d7576ap+0, false),
6202+ 0x1p+0, false, false,
6203+ 0x1.000002p+0, false, false,
6204+ 0x1p+0, false, false,
6205+ 0x1.000002p+0, false, false,
6206+ false,
6207+ 0x1.0000010000001p+0, false, false,
6208+ 0x1.0000010000001p+0, false, false,
6209+ 0x1.0000010000001p+0, false, false,
6210+ 0x1.0000010000002p+0, false, false,
6211+ false,
6212+ 0x1.000001000000102ep+0, false, false,
6213+ 0x1.000001000000103p+0, false, false,
6214+ 0x1.000001000000102ep+0, false, false,
6215+ 0x1.000001000000103p+0, false, false,
6216+ false,
6217+ 0x1.000001000000102ep+0, false, false,
6218+ 0x1.000001000000103p+0, false, false,
6219+ 0x1.000001000000102ep+0, false, false,
6220+ 0x1.000001000000103p+0, false, false,
6221+ false,
6222+ 0x1.000001000000102f4fc8c3d757p+0, false, false,
6223+ 0x1.000001000000102f4fc8c3d7578p+0, false, false,
6224+ 0x1.000001000000102f4fc8c3d757p+0, false, false,
6225+ 0x1.000001000000102f4fc8c3d7578p+0, false, false,
6226+ false,
6227+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
6228+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
6229+ 0x1.000001000000102f4fc8c3d75769p+0, false, false,
6230+ 0x1.000001000000102f4fc8c3d7576ap+0, false, false),
6231 TEST ("1.00000005960464",
6232 false,
6233- 0x1p+0, false,
6234- 0x1p+0, false,
6235- 0x1p+0, false,
6236- 0x1.000002p+0, false,
6237- false,
6238- 0x1.000000fffffeap+0, false,
6239- 0x1.000000fffffeap+0, false,
6240- 0x1.000000fffffeap+0, false,
6241- 0x1.000000fffffebp+0, false,
6242- false,
6243- 0x1.000000fffffea7e4p+0, false,
6244- 0x1.000000fffffea7e6p+0, false,
6245- 0x1.000000fffffea7e4p+0, false,
6246- 0x1.000000fffffea7e6p+0, false,
6247- false,
6248- 0x1.000000fffffea7e4p+0, false,
6249- 0x1.000000fffffea7e6p+0, false,
6250- 0x1.000000fffffea7e4p+0, false,
6251- 0x1.000000fffffea7e6p+0, false,
6252- false,
6253- 0x1.000000fffffea7e5975eb11da7p+0, false,
6254- 0x1.000000fffffea7e5975eb11da78p+0, false,
6255- 0x1.000000fffffea7e5975eb11da7p+0, false,
6256- 0x1.000000fffffea7e5975eb11da78p+0, false,
6257- false,
6258- 0x1.000000fffffea7e5975eb11da74ap+0, false,
6259- 0x1.000000fffffea7e5975eb11da74bp+0, false,
6260- 0x1.000000fffffea7e5975eb11da74ap+0, false,
6261- 0x1.000000fffffea7e5975eb11da74bp+0, false),
6262+ 0x1p+0, false, false,
6263+ 0x1p+0, false, false,
6264+ 0x1p+0, false, false,
6265+ 0x1.000002p+0, false, false,
6266+ false,
6267+ 0x1.000000fffffeap+0, false, false,
6268+ 0x1.000000fffffeap+0, false, false,
6269+ 0x1.000000fffffeap+0, false, false,
6270+ 0x1.000000fffffebp+0, false, false,
6271+ false,
6272+ 0x1.000000fffffea7e4p+0, false, false,
6273+ 0x1.000000fffffea7e6p+0, false, false,
6274+ 0x1.000000fffffea7e4p+0, false, false,
6275+ 0x1.000000fffffea7e6p+0, false, false,
6276+ false,
6277+ 0x1.000000fffffea7e4p+0, false, false,
6278+ 0x1.000000fffffea7e6p+0, false, false,
6279+ 0x1.000000fffffea7e4p+0, false, false,
6280+ 0x1.000000fffffea7e6p+0, false, false,
6281+ false,
6282+ 0x1.000000fffffea7e5975eb11da7p+0, false, false,
6283+ 0x1.000000fffffea7e5975eb11da78p+0, false, false,
6284+ 0x1.000000fffffea7e5975eb11da7p+0, false, false,
6285+ 0x1.000000fffffea7e5975eb11da78p+0, false, false,
6286+ false,
6287+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false,
6288+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false,
6289+ 0x1.000000fffffea7e5975eb11da74ap+0, false, false,
6290+ 0x1.000000fffffea7e5975eb11da74bp+0, false, false),
6291 TEST ("1.0000000596046",
6292 false,
6293- 0x1p+0, false,
6294- 0x1p+0, false,
6295- 0x1p+0, false,
6296- 0x1.000002p+0, false,
6297- false,
6298- 0x1.000000fffff36p+0, false,
6299- 0x1.000000fffff36p+0, false,
6300- 0x1.000000fffff36p+0, false,
6301- 0x1.000000fffff37p+0, false,
6302- false,
6303- 0x1.000000fffff36596p+0, false,
6304- 0x1.000000fffff36598p+0, false,
6305- 0x1.000000fffff36596p+0, false,
6306- 0x1.000000fffff36598p+0, false,
6307- false,
6308- 0x1.000000fffff36596p+0, false,
6309- 0x1.000000fffff36598p+0, false,
6310- 0x1.000000fffff36596p+0, false,
6311- 0x1.000000fffff36598p+0, false,
6312- false,
6313- 0x1.000000fffff36597d40e1b5026p+0, false,
6314- 0x1.000000fffff36597d40e1b50268p+0, false,
6315- 0x1.000000fffff36597d40e1b5026p+0, false,
6316- 0x1.000000fffff36597d40e1b50268p+0, false,
6317- false,
6318- 0x1.000000fffff36597d40e1b502655p+0, false,
6319- 0x1.000000fffff36597d40e1b502656p+0, false,
6320- 0x1.000000fffff36597d40e1b502655p+0, false,
6321- 0x1.000000fffff36597d40e1b502656p+0, false),
6322+ 0x1p+0, false, false,
6323+ 0x1p+0, false, false,
6324+ 0x1p+0, false, false,
6325+ 0x1.000002p+0, false, false,
6326+ false,
6327+ 0x1.000000fffff36p+0, false, false,
6328+ 0x1.000000fffff36p+0, false, false,
6329+ 0x1.000000fffff36p+0, false, false,
6330+ 0x1.000000fffff37p+0, false, false,
6331+ false,
6332+ 0x1.000000fffff36596p+0, false, false,
6333+ 0x1.000000fffff36598p+0, false, false,
6334+ 0x1.000000fffff36596p+0, false, false,
6335+ 0x1.000000fffff36598p+0, false, false,
6336+ false,
6337+ 0x1.000000fffff36596p+0, false, false,
6338+ 0x1.000000fffff36598p+0, false, false,
6339+ 0x1.000000fffff36596p+0, false, false,
6340+ 0x1.000000fffff36598p+0, false, false,
6341+ false,
6342+ 0x1.000000fffff36597d40e1b5026p+0, false, false,
6343+ 0x1.000000fffff36597d40e1b50268p+0, false, false,
6344+ 0x1.000000fffff36597d40e1b5026p+0, false, false,
6345+ 0x1.000000fffff36597d40e1b50268p+0, false, false,
6346+ false,
6347+ 0x1.000000fffff36597d40e1b502655p+0, false, false,
6348+ 0x1.000000fffff36597d40e1b502656p+0, false, false,
6349+ 0x1.000000fffff36597d40e1b502655p+0, false, false,
6350+ 0x1.000000fffff36597d40e1b502656p+0, false, false),
6351 TEST ("1.000000059605",
6352 false,
6353- 0x1p+0, false,
6354- 0x1.000002p+0, false,
6355- 0x1p+0, false,
6356- 0x1.000002p+0, false,
6357- false,
6358- 0x1.000001000063fp+0, false,
6359- 0x1.000001000064p+0, false,
6360- 0x1.000001000063fp+0, false,
6361- 0x1.000001000064p+0, false,
6362- false,
6363- 0x1.000001000063fcap+0, false,
6364- 0x1.000001000063fca2p+0, false,
6365- 0x1.000001000063fcap+0, false,
6366- 0x1.000001000063fca2p+0, false,
6367- false,
6368- 0x1.000001000063fcap+0, false,
6369- 0x1.000001000063fca2p+0, false,
6370- 0x1.000001000063fcap+0, false,
6371- 0x1.000001000063fca2p+0, false,
6372- false,
6373- 0x1.000001000063fca17533f5572f8p+0, false,
6374- 0x1.000001000063fca17533f5573p+0, false,
6375- 0x1.000001000063fca17533f5572f8p+0, false,
6376- 0x1.000001000063fca17533f5573p+0, false,
6377- false,
6378- 0x1.000001000063fca17533f5572fe9p+0, false,
6379- 0x1.000001000063fca17533f5572feap+0, false,
6380- 0x1.000001000063fca17533f5572fe9p+0, false,
6381- 0x1.000001000063fca17533f5572feap+0, false),
6382+ 0x1p+0, false, false,
6383+ 0x1.000002p+0, false, false,
6384+ 0x1p+0, false, false,
6385+ 0x1.000002p+0, false, false,
6386+ false,
6387+ 0x1.000001000063fp+0, false, false,
6388+ 0x1.000001000064p+0, false, false,
6389+ 0x1.000001000063fp+0, false, false,
6390+ 0x1.000001000064p+0, false, false,
6391+ false,
6392+ 0x1.000001000063fcap+0, false, false,
6393+ 0x1.000001000063fca2p+0, false, false,
6394+ 0x1.000001000063fcap+0, false, false,
6395+ 0x1.000001000063fca2p+0, false, false,
6396+ false,
6397+ 0x1.000001000063fcap+0, false, false,
6398+ 0x1.000001000063fca2p+0, false, false,
6399+ 0x1.000001000063fcap+0, false, false,
6400+ 0x1.000001000063fca2p+0, false, false,
6401+ false,
6402+ 0x1.000001000063fca17533f5572f8p+0, false, false,
6403+ 0x1.000001000063fca17533f5573p+0, false, false,
6404+ 0x1.000001000063fca17533f5572f8p+0, false, false,
6405+ 0x1.000001000063fca17533f5573p+0, false, false,
6406+ false,
6407+ 0x1.000001000063fca17533f5572fe9p+0, false, false,
6408+ 0x1.000001000063fca17533f5572feap+0, false, false,
6409+ 0x1.000001000063fca17533f5572fe9p+0, false, false,
6410+ 0x1.000001000063fca17533f5572feap+0, false, false),
6411 TEST ("1.00000005960",
6412 false,
6413- 0x1p+0, false,
6414- 0x1p+0, false,
6415- 0x1p+0, false,
6416- 0x1.000002p+0, false,
6417- false,
6418- 0x1.000000fffae49p+0, false,
6419- 0x1.000000fffae4ap+0, false,
6420- 0x1.000000fffae49p+0, false,
6421- 0x1.000000fffae4ap+0, false,
6422- false,
6423- 0x1.000000fffae49ca8p+0, false,
6424- 0x1.000000fffae49caap+0, false,
6425- 0x1.000000fffae49ca8p+0, false,
6426- 0x1.000000fffae49caap+0, false,
6427- false,
6428- 0x1.000000fffae49ca8p+0, false,
6429- 0x1.000000fffae49caap+0, false,
6430- 0x1.000000fffae49ca8p+0, false,
6431- 0x1.000000fffae49caap+0, false,
6432- false,
6433- 0x1.000000fffae49ca916dacfff38p+0, false,
6434- 0x1.000000fffae49ca916dacfff38p+0, false,
6435- 0x1.000000fffae49ca916dacfff38p+0, false,
6436- 0x1.000000fffae49ca916dacfff388p+0, false,
6437- false,
6438- 0x1.000000fffae49ca916dacfff382dp+0, false,
6439- 0x1.000000fffae49ca916dacfff382dp+0, false,
6440- 0x1.000000fffae49ca916dacfff382dp+0, false,
6441- 0x1.000000fffae49ca916dacfff382ep+0, false),
6442+ 0x1p+0, false, false,
6443+ 0x1p+0, false, false,
6444+ 0x1p+0, false, false,
6445+ 0x1.000002p+0, false, false,
6446+ false,
6447+ 0x1.000000fffae49p+0, false, false,
6448+ 0x1.000000fffae4ap+0, false, false,
6449+ 0x1.000000fffae49p+0, false, false,
6450+ 0x1.000000fffae4ap+0, false, false,
6451+ false,
6452+ 0x1.000000fffae49ca8p+0, false, false,
6453+ 0x1.000000fffae49caap+0, false, false,
6454+ 0x1.000000fffae49ca8p+0, false, false,
6455+ 0x1.000000fffae49caap+0, false, false,
6456+ false,
6457+ 0x1.000000fffae49ca8p+0, false, false,
6458+ 0x1.000000fffae49caap+0, false, false,
6459+ 0x1.000000fffae49ca8p+0, false, false,
6460+ 0x1.000000fffae49caap+0, false, false,
6461+ false,
6462+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
6463+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
6464+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
6465+ 0x1.000000fffae49ca916dacfff388p+0, false, false,
6466+ false,
6467+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
6468+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
6469+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
6470+ 0x1.000000fffae49ca916dacfff382ep+0, false, false),
6471 TEST ("1.0000000596",
6472 false,
6473- 0x1p+0, false,
6474- 0x1p+0, false,
6475- 0x1p+0, false,
6476- 0x1.000002p+0, false,
6477- false,
6478- 0x1.000000fffae49p+0, false,
6479- 0x1.000000fffae4ap+0, false,
6480- 0x1.000000fffae49p+0, false,
6481- 0x1.000000fffae4ap+0, false,
6482- false,
6483- 0x1.000000fffae49ca8p+0, false,
6484- 0x1.000000fffae49caap+0, false,
6485- 0x1.000000fffae49ca8p+0, false,
6486- 0x1.000000fffae49caap+0, false,
6487- false,
6488- 0x1.000000fffae49ca8p+0, false,
6489- 0x1.000000fffae49caap+0, false,
6490- 0x1.000000fffae49ca8p+0, false,
6491- 0x1.000000fffae49caap+0, false,
6492- false,
6493- 0x1.000000fffae49ca916dacfff38p+0, false,
6494- 0x1.000000fffae49ca916dacfff38p+0, false,
6495- 0x1.000000fffae49ca916dacfff38p+0, false,
6496- 0x1.000000fffae49ca916dacfff388p+0, false,
6497- false,
6498- 0x1.000000fffae49ca916dacfff382dp+0, false,
6499- 0x1.000000fffae49ca916dacfff382dp+0, false,
6500- 0x1.000000fffae49ca916dacfff382dp+0, false,
6501- 0x1.000000fffae49ca916dacfff382ep+0, false),
6502+ 0x1p+0, false, false,
6503+ 0x1p+0, false, false,
6504+ 0x1p+0, false, false,
6505+ 0x1.000002p+0, false, false,
6506+ false,
6507+ 0x1.000000fffae49p+0, false, false,
6508+ 0x1.000000fffae4ap+0, false, false,
6509+ 0x1.000000fffae49p+0, false, false,
6510+ 0x1.000000fffae4ap+0, false, false,
6511+ false,
6512+ 0x1.000000fffae49ca8p+0, false, false,
6513+ 0x1.000000fffae49caap+0, false, false,
6514+ 0x1.000000fffae49ca8p+0, false, false,
6515+ 0x1.000000fffae49caap+0, false, false,
6516+ false,
6517+ 0x1.000000fffae49ca8p+0, false, false,
6518+ 0x1.000000fffae49caap+0, false, false,
6519+ 0x1.000000fffae49ca8p+0, false, false,
6520+ 0x1.000000fffae49caap+0, false, false,
6521+ false,
6522+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
6523+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
6524+ 0x1.000000fffae49ca916dacfff38p+0, false, false,
6525+ 0x1.000000fffae49ca916dacfff388p+0, false, false,
6526+ false,
6527+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
6528+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
6529+ 0x1.000000fffae49ca916dacfff382dp+0, false, false,
6530+ 0x1.000000fffae49ca916dacfff382ep+0, false, false),
6531 TEST ("1.000000060",
6532 false,
6533- 0x1p+0, false,
6534- 0x1.000002p+0, false,
6535- 0x1p+0, false,
6536- 0x1.000002p+0, false,
6537- false,
6538- 0x1.00000101b2b29p+0, false,
6539- 0x1.00000101b2b2ap+0, false,
6540- 0x1.00000101b2b29p+0, false,
6541- 0x1.00000101b2b2ap+0, false,
6542- false,
6543- 0x1.00000101b2b29a46p+0, false,
6544- 0x1.00000101b2b29a46p+0, false,
6545- 0x1.00000101b2b29a46p+0, false,
6546- 0x1.00000101b2b29a48p+0, false,
6547- false,
6548- 0x1.00000101b2b29a46p+0, false,
6549- 0x1.00000101b2b29a46p+0, false,
6550- 0x1.00000101b2b29a46p+0, false,
6551- 0x1.00000101b2b29a48p+0, false,
6552- false,
6553- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
6554- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
6555- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
6556- 0x1.00000101b2b29a4692b67b7ca38p+0, false,
6557- false,
6558- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
6559- 0x1.00000101b2b29a4692b67b7ca314p+0, false,
6560- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
6561- 0x1.00000101b2b29a4692b67b7ca314p+0, false),
6562+ 0x1p+0, false, false,
6563+ 0x1.000002p+0, false, false,
6564+ 0x1p+0, false, false,
6565+ 0x1.000002p+0, false, false,
6566+ false,
6567+ 0x1.00000101b2b29p+0, false, false,
6568+ 0x1.00000101b2b2ap+0, false, false,
6569+ 0x1.00000101b2b29p+0, false, false,
6570+ 0x1.00000101b2b2ap+0, false, false,
6571+ false,
6572+ 0x1.00000101b2b29a46p+0, false, false,
6573+ 0x1.00000101b2b29a46p+0, false, false,
6574+ 0x1.00000101b2b29a46p+0, false, false,
6575+ 0x1.00000101b2b29a48p+0, false, false,
6576+ false,
6577+ 0x1.00000101b2b29a46p+0, false, false,
6578+ 0x1.00000101b2b29a46p+0, false, false,
6579+ 0x1.00000101b2b29a46p+0, false, false,
6580+ 0x1.00000101b2b29a48p+0, false, false,
6581+ false,
6582+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
6583+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
6584+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
6585+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false,
6586+ false,
6587+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
6588+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false,
6589+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
6590+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false),
6591 TEST ("1.00000006",
6592 false,
6593- 0x1p+0, false,
6594- 0x1.000002p+0, false,
6595- 0x1p+0, false,
6596- 0x1.000002p+0, false,
6597- false,
6598- 0x1.00000101b2b29p+0, false,
6599- 0x1.00000101b2b2ap+0, false,
6600- 0x1.00000101b2b29p+0, false,
6601- 0x1.00000101b2b2ap+0, false,
6602- false,
6603- 0x1.00000101b2b29a46p+0, false,
6604- 0x1.00000101b2b29a46p+0, false,
6605- 0x1.00000101b2b29a46p+0, false,
6606- 0x1.00000101b2b29a48p+0, false,
6607- false,
6608- 0x1.00000101b2b29a46p+0, false,
6609- 0x1.00000101b2b29a46p+0, false,
6610- 0x1.00000101b2b29a46p+0, false,
6611- 0x1.00000101b2b29a48p+0, false,
6612- false,
6613- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
6614- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
6615- 0x1.00000101b2b29a4692b67b7ca3p+0, false,
6616- 0x1.00000101b2b29a4692b67b7ca38p+0, false,
6617- false,
6618- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
6619- 0x1.00000101b2b29a4692b67b7ca314p+0, false,
6620- 0x1.00000101b2b29a4692b67b7ca313p+0, false,
6621- 0x1.00000101b2b29a4692b67b7ca314p+0, false),
6622+ 0x1p+0, false, false,
6623+ 0x1.000002p+0, false, false,
6624+ 0x1p+0, false, false,
6625+ 0x1.000002p+0, false, false,
6626+ false,
6627+ 0x1.00000101b2b29p+0, false, false,
6628+ 0x1.00000101b2b2ap+0, false, false,
6629+ 0x1.00000101b2b29p+0, false, false,
6630+ 0x1.00000101b2b2ap+0, false, false,
6631+ false,
6632+ 0x1.00000101b2b29a46p+0, false, false,
6633+ 0x1.00000101b2b29a46p+0, false, false,
6634+ 0x1.00000101b2b29a46p+0, false, false,
6635+ 0x1.00000101b2b29a48p+0, false, false,
6636+ false,
6637+ 0x1.00000101b2b29a46p+0, false, false,
6638+ 0x1.00000101b2b29a46p+0, false, false,
6639+ 0x1.00000101b2b29a46p+0, false, false,
6640+ 0x1.00000101b2b29a48p+0, false, false,
6641+ false,
6642+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
6643+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
6644+ 0x1.00000101b2b29a4692b67b7ca3p+0, false, false,
6645+ 0x1.00000101b2b29a4692b67b7ca38p+0, false, false,
6646+ false,
6647+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
6648+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false,
6649+ 0x1.00000101b2b29a4692b67b7ca313p+0, false, false,
6650+ 0x1.00000101b2b29a4692b67b7ca314p+0, false, false),
6651 TEST ("1.0000001",
6652 false,
6653- 0x1p+0, false,
6654- 0x1.000002p+0, false,
6655- 0x1p+0, false,
6656- 0x1.000002p+0, false,
6657- false,
6658- 0x1.000001ad7f29ap+0, false,
6659- 0x1.000001ad7f29bp+0, false,
6660- 0x1.000001ad7f29ap+0, false,
6661- 0x1.000001ad7f29bp+0, false,
6662- false,
6663- 0x1.000001ad7f29abcap+0, false,
6664- 0x1.000001ad7f29abcap+0, false,
6665- 0x1.000001ad7f29abcap+0, false,
6666- 0x1.000001ad7f29abccp+0, false,
6667- false,
6668- 0x1.000001ad7f29abcap+0, false,
6669- 0x1.000001ad7f29abcap+0, false,
6670- 0x1.000001ad7f29abcap+0, false,
6671- 0x1.000001ad7f29abccp+0, false,
6672- false,
6673- 0x1.000001ad7f29abcaf485787a65p+0, false,
6674- 0x1.000001ad7f29abcaf485787a65p+0, false,
6675- 0x1.000001ad7f29abcaf485787a65p+0, false,
6676- 0x1.000001ad7f29abcaf485787a658p+0, false,
6677- false,
6678- 0x1.000001ad7f29abcaf485787a652p+0, false,
6679- 0x1.000001ad7f29abcaf485787a6521p+0, false,
6680- 0x1.000001ad7f29abcaf485787a652p+0, false,
6681- 0x1.000001ad7f29abcaf485787a6521p+0, false),
6682+ 0x1p+0, false, false,
6683+ 0x1.000002p+0, false, false,
6684+ 0x1p+0, false, false,
6685+ 0x1.000002p+0, false, false,
6686+ false,
6687+ 0x1.000001ad7f29ap+0, false, false,
6688+ 0x1.000001ad7f29bp+0, false, false,
6689+ 0x1.000001ad7f29ap+0, false, false,
6690+ 0x1.000001ad7f29bp+0, false, false,
6691+ false,
6692+ 0x1.000001ad7f29abcap+0, false, false,
6693+ 0x1.000001ad7f29abcap+0, false, false,
6694+ 0x1.000001ad7f29abcap+0, false, false,
6695+ 0x1.000001ad7f29abccp+0, false, false,
6696+ false,
6697+ 0x1.000001ad7f29abcap+0, false, false,
6698+ 0x1.000001ad7f29abcap+0, false, false,
6699+ 0x1.000001ad7f29abcap+0, false, false,
6700+ 0x1.000001ad7f29abccp+0, false, false,
6701+ false,
6702+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
6703+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
6704+ 0x1.000001ad7f29abcaf485787a65p+0, false, false,
6705+ 0x1.000001ad7f29abcaf485787a658p+0, false, false,
6706+ false,
6707+ 0x1.000001ad7f29abcaf485787a652p+0, false, false,
6708+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false,
6709+ 0x1.000001ad7f29abcaf485787a652p+0, false, false,
6710+ 0x1.000001ad7f29abcaf485787a6521p+0, false, false),
6711 TEST ("1.000000",
6712 true,
6713- 0x1p+0, false,
6714- 0x1p+0, false,
6715- 0x1p+0, false,
6716- 0x1p+0, false,
6717- true,
6718- 0x1p+0, false,
6719- 0x1p+0, false,
6720- 0x1p+0, false,
6721- 0x1p+0, false,
6722- true,
6723- 0x1p+0, false,
6724- 0x1p+0, false,
6725- 0x1p+0, false,
6726- 0x1p+0, false,
6727- true,
6728- 0x1p+0, false,
6729- 0x1p+0, false,
6730- 0x1p+0, false,
6731- 0x1p+0, false,
6732- true,
6733- 0x1p+0, false,
6734- 0x1p+0, false,
6735- 0x1p+0, false,
6736- 0x1p+0, false,
6737- true,
6738- 0x1p+0, false,
6739- 0x1p+0, false,
6740- 0x1p+0, false,
6741- 0x1p+0, false),
6742+ 0x1p+0, false, false,
6743+ 0x1p+0, false, false,
6744+ 0x1p+0, false, false,
6745+ 0x1p+0, false, false,
6746+ true,
6747+ 0x1p+0, false, false,
6748+ 0x1p+0, false, false,
6749+ 0x1p+0, false, false,
6750+ 0x1p+0, false, false,
6751+ true,
6752+ 0x1p+0, false, false,
6753+ 0x1p+0, false, false,
6754+ 0x1p+0, false, false,
6755+ 0x1p+0, false, false,
6756+ true,
6757+ 0x1p+0, false, false,
6758+ 0x1p+0, false, false,
6759+ 0x1p+0, false, false,
6760+ 0x1p+0, false, false,
6761+ true,
6762+ 0x1p+0, false, false,
6763+ 0x1p+0, false, false,
6764+ 0x1p+0, false, false,
6765+ 0x1p+0, false, false,
6766+ true,
6767+ 0x1p+0, false, false,
6768+ 0x1p+0, false, false,
6769+ 0x1p+0, false, false,
6770+ 0x1p+0, false, false),
6771 TEST ("1.00000000000000011113",
6772 false,
6773- 0x1p+0, false,
6774- 0x1p+0, false,
6775- 0x1p+0, false,
6776- 0x1.000002p+0, false,
6777- false,
6778- 0x1p+0, false,
6779- 0x1.0000000000001p+0, false,
6780- 0x1p+0, false,
6781- 0x1.0000000000001p+0, false,
6782- false,
6783- 0x1.00000000000008p+0, false,
6784- 0x1.0000000000000802p+0, false,
6785- 0x1.00000000000008p+0, false,
6786- 0x1.0000000000000802p+0, false,
6787- false,
6788- 0x1.00000000000008p+0, false,
6789- 0x1.0000000000000802p+0, false,
6790- 0x1.00000000000008p+0, false,
6791- 0x1.0000000000000802p+0, false,
6792- false,
6793- 0x1.0000000000000801fc96557232p+0, false,
6794- 0x1.0000000000000801fc96557232p+0, false,
6795- 0x1.0000000000000801fc96557232p+0, false,
6796- 0x1.0000000000000801fc965572328p+0, false,
6797- false,
6798- 0x1.0000000000000801fc9655723222p+0, false,
6799- 0x1.0000000000000801fc9655723222p+0, false,
6800- 0x1.0000000000000801fc9655723222p+0, false,
6801- 0x1.0000000000000801fc9655723223p+0, false),
6802+ 0x1p+0, false, false,
6803+ 0x1p+0, false, false,
6804+ 0x1p+0, false, false,
6805+ 0x1.000002p+0, false, false,
6806+ false,
6807+ 0x1p+0, false, false,
6808+ 0x1.0000000000001p+0, false, false,
6809+ 0x1p+0, false, false,
6810+ 0x1.0000000000001p+0, false, false,
6811+ false,
6812+ 0x1.00000000000008p+0, false, false,
6813+ 0x1.0000000000000802p+0, false, false,
6814+ 0x1.00000000000008p+0, false, false,
6815+ 0x1.0000000000000802p+0, false, false,
6816+ false,
6817+ 0x1.00000000000008p+0, false, false,
6818+ 0x1.0000000000000802p+0, false, false,
6819+ 0x1.00000000000008p+0, false, false,
6820+ 0x1.0000000000000802p+0, false, false,
6821+ false,
6822+ 0x1.0000000000000801fc96557232p+0, false, false,
6823+ 0x1.0000000000000801fc96557232p+0, false, false,
6824+ 0x1.0000000000000801fc96557232p+0, false, false,
6825+ 0x1.0000000000000801fc965572328p+0, false, false,
6826+ false,
6827+ 0x1.0000000000000801fc9655723222p+0, false, false,
6828+ 0x1.0000000000000801fc9655723222p+0, false, false,
6829+ 0x1.0000000000000801fc9655723222p+0, false, false,
6830+ 0x1.0000000000000801fc9655723223p+0, false, false),
6831 TEST ("1.00000000000000011103",
6832 false,
6833- 0x1p+0, false,
6834- 0x1p+0, false,
6835- 0x1p+0, false,
6836- 0x1.000002p+0, false,
6837- false,
6838- 0x1p+0, false,
6839- 0x1.0000000000001p+0, false,
6840- 0x1p+0, false,
6841- 0x1.0000000000001p+0, false,
6842- false,
6843- 0x1.00000000000008p+0, false,
6844- 0x1.00000000000008p+0, false,
6845- 0x1.00000000000008p+0, false,
6846- 0x1.0000000000000802p+0, false,
6847- false,
6848- 0x1.00000000000008p+0, false,
6849- 0x1.00000000000008p+0, false,
6850- 0x1.00000000000008p+0, false,
6851- 0x1.0000000000000802p+0, false,
6852- false,
6853- 0x1.00000000000008002459c076c48p+0, false,
6854- 0x1.00000000000008002459c076c5p+0, false,
6855- 0x1.00000000000008002459c076c48p+0, false,
6856- 0x1.00000000000008002459c076c5p+0, false,
6857- false,
6858- 0x1.00000000000008002459c076c4f7p+0, false,
6859- 0x1.00000000000008002459c076c4f8p+0, false,
6860- 0x1.00000000000008002459c076c4f7p+0, false,
6861- 0x1.00000000000008002459c076c4f8p+0, false),
6862+ 0x1p+0, false, false,
6863+ 0x1p+0, false, false,
6864+ 0x1p+0, false, false,
6865+ 0x1.000002p+0, false, false,
6866+ false,
6867+ 0x1p+0, false, false,
6868+ 0x1.0000000000001p+0, false, false,
6869+ 0x1p+0, false, false,
6870+ 0x1.0000000000001p+0, false, false,
6871+ false,
6872+ 0x1.00000000000008p+0, false, false,
6873+ 0x1.00000000000008p+0, false, false,
6874+ 0x1.00000000000008p+0, false, false,
6875+ 0x1.0000000000000802p+0, false, false,
6876+ false,
6877+ 0x1.00000000000008p+0, false, false,
6878+ 0x1.00000000000008p+0, false, false,
6879+ 0x1.00000000000008p+0, false, false,
6880+ 0x1.0000000000000802p+0, false, false,
6881+ false,
6882+ 0x1.00000000000008002459c076c48p+0, false, false,
6883+ 0x1.00000000000008002459c076c5p+0, false, false,
6884+ 0x1.00000000000008002459c076c48p+0, false, false,
6885+ 0x1.00000000000008002459c076c5p+0, false, false,
6886+ false,
6887+ 0x1.00000000000008002459c076c4f7p+0, false, false,
6888+ 0x1.00000000000008002459c076c4f8p+0, false, false,
6889+ 0x1.00000000000008002459c076c4f7p+0, false, false,
6890+ 0x1.00000000000008002459c076c4f8p+0, false, false),
6891 TEST ("1.00000000000000011102",
6892 false,
6893- 0x1p+0, false,
6894- 0x1p+0, false,
6895- 0x1p+0, false,
6896- 0x1.000002p+0, false,
6897- false,
6898- 0x1p+0, false,
6899- 0x1p+0, false,
6900- 0x1p+0, false,
6901- 0x1.0000000000001p+0, false,
6902- false,
6903- 0x1.00000000000007fep+0, false,
6904- 0x1.00000000000008p+0, false,
6905- 0x1.00000000000007fep+0, false,
6906- 0x1.00000000000008p+0, false,
6907- false,
6908- 0x1.00000000000007fep+0, false,
6909- 0x1.00000000000008p+0, false,
6910- 0x1.00000000000007fep+0, false,
6911- 0x1.00000000000008p+0, false,
6912- false,
6913- 0x1.00000000000007fff5207e5dap+0, false,
6914- 0x1.00000000000007fff5207e5da08p+0, false,
6915- 0x1.00000000000007fff5207e5dap+0, false,
6916- 0x1.00000000000007fff5207e5da08p+0, false,
6917- false,
6918- 0x1.00000000000007fff5207e5da073p+0, false,
6919- 0x1.00000000000007fff5207e5da073p+0, false,
6920- 0x1.00000000000007fff5207e5da073p+0, false,
6921- 0x1.00000000000007fff5207e5da074p+0, false),
6922+ 0x1p+0, false, false,
6923+ 0x1p+0, false, false,
6924+ 0x1p+0, false, false,
6925+ 0x1.000002p+0, false, false,
6926+ false,
6927+ 0x1p+0, false, false,
6928+ 0x1p+0, false, false,
6929+ 0x1p+0, false, false,
6930+ 0x1.0000000000001p+0, false, false,
6931+ false,
6932+ 0x1.00000000000007fep+0, false, false,
6933+ 0x1.00000000000008p+0, false, false,
6934+ 0x1.00000000000007fep+0, false, false,
6935+ 0x1.00000000000008p+0, false, false,
6936+ false,
6937+ 0x1.00000000000007fep+0, false, false,
6938+ 0x1.00000000000008p+0, false, false,
6939+ 0x1.00000000000007fep+0, false, false,
6940+ 0x1.00000000000008p+0, false, false,
6941+ false,
6942+ 0x1.00000000000007fff5207e5dap+0, false, false,
6943+ 0x1.00000000000007fff5207e5da08p+0, false, false,
6944+ 0x1.00000000000007fff5207e5dap+0, false, false,
6945+ 0x1.00000000000007fff5207e5da08p+0, false, false,
6946+ false,
6947+ 0x1.00000000000007fff5207e5da073p+0, false, false,
6948+ 0x1.00000000000007fff5207e5da073p+0, false, false,
6949+ 0x1.00000000000007fff5207e5da073p+0, false, false,
6950+ 0x1.00000000000007fff5207e5da074p+0, false, false),
6951 TEST ("1.00000000000000011101",
6952 false,
6953- 0x1p+0, false,
6954- 0x1p+0, false,
6955- 0x1p+0, false,
6956- 0x1.000002p+0, false,
6957- false,
6958- 0x1p+0, false,
6959- 0x1p+0, false,
6960- 0x1p+0, false,
6961- 0x1.0000000000001p+0, false,
6962- false,
6963- 0x1.00000000000007fep+0, false,
6964- 0x1.00000000000008p+0, false,
6965- 0x1.00000000000007fep+0, false,
6966- 0x1.00000000000008p+0, false,
6967- false,
6968- 0x1.00000000000007fep+0, false,
6969- 0x1.00000000000008p+0, false,
6970- 0x1.00000000000007fep+0, false,
6971- 0x1.00000000000008p+0, false,
6972- false,
6973- 0x1.00000000000007ffc5e73c447b8p+0, false,
6974- 0x1.00000000000007ffc5e73c447cp+0, false,
6975- 0x1.00000000000007ffc5e73c447b8p+0, false,
6976- 0x1.00000000000007ffc5e73c447cp+0, false,
6977- false,
6978- 0x1.00000000000007ffc5e73c447befp+0, false,
6979- 0x1.00000000000007ffc5e73c447befp+0, false,
6980- 0x1.00000000000007ffc5e73c447befp+0, false,
6981- 0x1.00000000000007ffc5e73c447bfp+0, false),
6982+ 0x1p+0, false, false,
6983+ 0x1p+0, false, false,
6984+ 0x1p+0, false, false,
6985+ 0x1.000002p+0, false, false,
6986+ false,
6987+ 0x1p+0, false, false,
6988+ 0x1p+0, false, false,
6989+ 0x1p+0, false, false,
6990+ 0x1.0000000000001p+0, false, false,
6991+ false,
6992+ 0x1.00000000000007fep+0, false, false,
6993+ 0x1.00000000000008p+0, false, false,
6994+ 0x1.00000000000007fep+0, false, false,
6995+ 0x1.00000000000008p+0, false, false,
6996+ false,
6997+ 0x1.00000000000007fep+0, false, false,
6998+ 0x1.00000000000008p+0, false, false,
6999+ 0x1.00000000000007fep+0, false, false,
7000+ 0x1.00000000000008p+0, false, false,
7001+ false,
7002+ 0x1.00000000000007ffc5e73c447b8p+0, false, false,
7003+ 0x1.00000000000007ffc5e73c447cp+0, false, false,
7004+ 0x1.00000000000007ffc5e73c447b8p+0, false, false,
7005+ 0x1.00000000000007ffc5e73c447cp+0, false, false,
7006+ false,
7007+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
7008+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
7009+ 0x1.00000000000007ffc5e73c447befp+0, false, false,
7010+ 0x1.00000000000007ffc5e73c447bfp+0, false, false),
7011 TEST ("1.0000000000000001111",
7012 false,
7013- 0x1p+0, false,
7014- 0x1p+0, false,
7015- 0x1p+0, false,
7016- 0x1.000002p+0, false,
7017- false,
7018- 0x1p+0, false,
7019- 0x1.0000000000001p+0, false,
7020- 0x1p+0, false,
7021- 0x1.0000000000001p+0, false,
7022- false,
7023- 0x1.00000000000008p+0, false,
7024- 0x1.0000000000000802p+0, false,
7025- 0x1.00000000000008p+0, false,
7026- 0x1.0000000000000802p+0, false,
7027- false,
7028- 0x1.00000000000008p+0, false,
7029- 0x1.0000000000000802p+0, false,
7030- 0x1.00000000000008p+0, false,
7031- 0x1.0000000000000802p+0, false,
7032- false,
7033- 0x1.00000000000008016eea8f26c48p+0, false,
7034- 0x1.00000000000008016eea8f26c48p+0, false,
7035- 0x1.00000000000008016eea8f26c48p+0, false,
7036- 0x1.00000000000008016eea8f26c5p+0, false,
7037- false,
7038- 0x1.00000000000008016eea8f26c495p+0, false,
7039- 0x1.00000000000008016eea8f26c496p+0, false,
7040- 0x1.00000000000008016eea8f26c495p+0, false,
7041- 0x1.00000000000008016eea8f26c496p+0, false),
7042+ 0x1p+0, false, false,
7043+ 0x1p+0, false, false,
7044+ 0x1p+0, false, false,
7045+ 0x1.000002p+0, false, false,
7046+ false,
7047+ 0x1p+0, false, false,
7048+ 0x1.0000000000001p+0, false, false,
7049+ 0x1p+0, false, false,
7050+ 0x1.0000000000001p+0, false, false,
7051+ false,
7052+ 0x1.00000000000008p+0, false, false,
7053+ 0x1.0000000000000802p+0, false, false,
7054+ 0x1.00000000000008p+0, false, false,
7055+ 0x1.0000000000000802p+0, false, false,
7056+ false,
7057+ 0x1.00000000000008p+0, false, false,
7058+ 0x1.0000000000000802p+0, false, false,
7059+ 0x1.00000000000008p+0, false, false,
7060+ 0x1.0000000000000802p+0, false, false,
7061+ false,
7062+ 0x1.00000000000008016eea8f26c48p+0, false, false,
7063+ 0x1.00000000000008016eea8f26c48p+0, false, false,
7064+ 0x1.00000000000008016eea8f26c48p+0, false, false,
7065+ 0x1.00000000000008016eea8f26c5p+0, false, false,
7066+ false,
7067+ 0x1.00000000000008016eea8f26c495p+0, false, false,
7068+ 0x1.00000000000008016eea8f26c496p+0, false, false,
7069+ 0x1.00000000000008016eea8f26c495p+0, false, false,
7070+ 0x1.00000000000008016eea8f26c496p+0, false, false),
7071 TEST ("1.000000000000000111",
7072 false,
7073- 0x1p+0, false,
7074- 0x1p+0, false,
7075- 0x1p+0, false,
7076- 0x1.000002p+0, false,
7077- false,
7078- 0x1p+0, false,
7079- 0x1p+0, false,
7080- 0x1p+0, false,
7081- 0x1.0000000000001p+0, false,
7082- false,
7083- 0x1.00000000000007fep+0, false,
7084- 0x1.00000000000008p+0, false,
7085- 0x1.00000000000007fep+0, false,
7086- 0x1.00000000000008p+0, false,
7087- false,
7088- 0x1.00000000000007fep+0, false,
7089- 0x1.00000000000008p+0, false,
7090- 0x1.00000000000007fep+0, false,
7091- 0x1.00000000000008p+0, false,
7092- false,
7093- 0x1.00000000000007ff96adfa2b57p+0, false,
7094- 0x1.00000000000007ff96adfa2b578p+0, false,
7095- 0x1.00000000000007ff96adfa2b57p+0, false,
7096- 0x1.00000000000007ff96adfa2b578p+0, false,
7097- false,
7098- 0x1.00000000000007ff96adfa2b576ap+0, false,
7099- 0x1.00000000000007ff96adfa2b576bp+0, false,
7100- 0x1.00000000000007ff96adfa2b576ap+0, false,
7101- 0x1.00000000000007ff96adfa2b576bp+0, false),
7102+ 0x1p+0, false, false,
7103+ 0x1p+0, false, false,
7104+ 0x1p+0, false, false,
7105+ 0x1.000002p+0, false, false,
7106+ false,
7107+ 0x1p+0, false, false,
7108+ 0x1p+0, false, false,
7109+ 0x1p+0, false, false,
7110+ 0x1.0000000000001p+0, false, false,
7111+ false,
7112+ 0x1.00000000000007fep+0, false, false,
7113+ 0x1.00000000000008p+0, false, false,
7114+ 0x1.00000000000007fep+0, false, false,
7115+ 0x1.00000000000008p+0, false, false,
7116+ false,
7117+ 0x1.00000000000007fep+0, false, false,
7118+ 0x1.00000000000008p+0, false, false,
7119+ 0x1.00000000000007fep+0, false, false,
7120+ 0x1.00000000000008p+0, false, false,
7121+ false,
7122+ 0x1.00000000000007ff96adfa2b57p+0, false, false,
7123+ 0x1.00000000000007ff96adfa2b578p+0, false, false,
7124+ 0x1.00000000000007ff96adfa2b57p+0, false, false,
7125+ 0x1.00000000000007ff96adfa2b578p+0, false, false,
7126+ false,
7127+ 0x1.00000000000007ff96adfa2b576ap+0, false, false,
7128+ 0x1.00000000000007ff96adfa2b576bp+0, false, false,
7129+ 0x1.00000000000007ff96adfa2b576ap+0, false, false,
7130+ 0x1.00000000000007ff96adfa2b576bp+0, false, false),
7131 TEST ("1.00000000000000011",
7132 false,
7133- 0x1p+0, false,
7134- 0x1p+0, false,
7135- 0x1p+0, false,
7136- 0x1.000002p+0, false,
7137- false,
7138- 0x1p+0, false,
7139- 0x1p+0, false,
7140- 0x1p+0, false,
7141- 0x1.0000000000001p+0, false,
7142- false,
7143- 0x1.00000000000007ecp+0, false,
7144- 0x1.00000000000007eep+0, false,
7145- 0x1.00000000000007ecp+0, false,
7146- 0x1.00000000000007eep+0, false,
7147- false,
7148- 0x1.00000000000007ecp+0, false,
7149- 0x1.00000000000007eep+0, false,
7150- 0x1.00000000000007ecp+0, false,
7151- 0x1.00000000000007eep+0, false,
7152- false,
7153- 0x1.00000000000007ed24502859138p+0, false,
7154- 0x1.00000000000007ed24502859138p+0, false,
7155- 0x1.00000000000007ed24502859138p+0, false,
7156- 0x1.00000000000007ed2450285914p+0, false,
7157- false,
7158- 0x1.00000000000007ed2450285913bfp+0, false,
7159- 0x1.00000000000007ed2450285913bfp+0, false,
7160- 0x1.00000000000007ed2450285913bfp+0, false,
7161- 0x1.00000000000007ed2450285913cp+0, false),
7162+ 0x1p+0, false, false,
7163+ 0x1p+0, false, false,
7164+ 0x1p+0, false, false,
7165+ 0x1.000002p+0, false, false,
7166+ false,
7167+ 0x1p+0, false, false,
7168+ 0x1p+0, false, false,
7169+ 0x1p+0, false, false,
7170+ 0x1.0000000000001p+0, false, false,
7171+ false,
7172+ 0x1.00000000000007ecp+0, false, false,
7173+ 0x1.00000000000007eep+0, false, false,
7174+ 0x1.00000000000007ecp+0, false, false,
7175+ 0x1.00000000000007eep+0, false, false,
7176+ false,
7177+ 0x1.00000000000007ecp+0, false, false,
7178+ 0x1.00000000000007eep+0, false, false,
7179+ 0x1.00000000000007ecp+0, false, false,
7180+ 0x1.00000000000007eep+0, false, false,
7181+ false,
7182+ 0x1.00000000000007ed24502859138p+0, false, false,
7183+ 0x1.00000000000007ed24502859138p+0, false, false,
7184+ 0x1.00000000000007ed24502859138p+0, false, false,
7185+ 0x1.00000000000007ed2450285914p+0, false, false,
7186+ false,
7187+ 0x1.00000000000007ed2450285913bfp+0, false, false,
7188+ 0x1.00000000000007ed2450285913bfp+0, false, false,
7189+ 0x1.00000000000007ed2450285913bfp+0, false, false,
7190+ 0x1.00000000000007ed2450285913cp+0, false, false),
7191 TEST ("1.0000000000000001",
7192 false,
7193- 0x1p+0, false,
7194- 0x1p+0, false,
7195- 0x1p+0, false,
7196- 0x1.000002p+0, false,
7197- false,
7198- 0x1p+0, false,
7199- 0x1p+0, false,
7200- 0x1p+0, false,
7201- 0x1.0000000000001p+0, false,
7202- false,
7203- 0x1.0000000000000734p+0, false,
7204- 0x1.0000000000000734p+0, false,
7205- 0x1.0000000000000734p+0, false,
7206- 0x1.0000000000000736p+0, false,
7207- false,
7208- 0x1.0000000000000734p+0, false,
7209- 0x1.0000000000000734p+0, false,
7210- 0x1.0000000000000734p+0, false,
7211- 0x1.0000000000000736p+0, false,
7212- false,
7213- 0x1.0000000000000734aca5f6226fp+0, false,
7214- 0x1.0000000000000734aca5f6226fp+0, false,
7215- 0x1.0000000000000734aca5f6226fp+0, false,
7216- 0x1.0000000000000734aca5f6226f8p+0, false,
7217- false,
7218- 0x1.0000000000000734aca5f6226f0ap+0, false,
7219- 0x1.0000000000000734aca5f6226f0bp+0, false,
7220- 0x1.0000000000000734aca5f6226f0ap+0, false,
7221- 0x1.0000000000000734aca5f6226f0bp+0, false),
7222+ 0x1p+0, false, false,
7223+ 0x1p+0, false, false,
7224+ 0x1p+0, false, false,
7225+ 0x1.000002p+0, false, false,
7226+ false,
7227+ 0x1p+0, false, false,
7228+ 0x1p+0, false, false,
7229+ 0x1p+0, false, false,
7230+ 0x1.0000000000001p+0, false, false,
7231+ false,
7232+ 0x1.0000000000000734p+0, false, false,
7233+ 0x1.0000000000000734p+0, false, false,
7234+ 0x1.0000000000000734p+0, false, false,
7235+ 0x1.0000000000000736p+0, false, false,
7236+ false,
7237+ 0x1.0000000000000734p+0, false, false,
7238+ 0x1.0000000000000734p+0, false, false,
7239+ 0x1.0000000000000734p+0, false, false,
7240+ 0x1.0000000000000736p+0, false, false,
7241+ false,
7242+ 0x1.0000000000000734aca5f6226fp+0, false, false,
7243+ 0x1.0000000000000734aca5f6226fp+0, false, false,
7244+ 0x1.0000000000000734aca5f6226fp+0, false, false,
7245+ 0x1.0000000000000734aca5f6226f8p+0, false, false,
7246+ false,
7247+ 0x1.0000000000000734aca5f6226f0ap+0, false, false,
7248+ 0x1.0000000000000734aca5f6226f0bp+0, false, false,
7249+ 0x1.0000000000000734aca5f6226f0ap+0, false, false,
7250+ 0x1.0000000000000734aca5f6226f0bp+0, false, false),
7251 TEST ("3929201589819414e-25",
7252 false,
7253- 0x1.b0053p-32, false,
7254- 0x1.b00532p-32, false,
7255- 0x1.b0053p-32, false,
7256- 0x1.b00532p-32, false,
7257- false,
7258- 0x1.b005314e2421ep-32, false,
7259- 0x1.b005314e2421ep-32, false,
7260- 0x1.b005314e2421ep-32, false,
7261- 0x1.b005314e2421fp-32, false,
7262- false,
7263- 0x1.b005314e2421e7fep-32, false,
7264- 0x1.b005314e2421e8p-32, false,
7265- 0x1.b005314e2421e7fep-32, false,
7266- 0x1.b005314e2421e8p-32, false,
7267- false,
7268- 0x1.b005314e2421e7fep-32, false,
7269- 0x1.b005314e2421e8p-32, false,
7270- 0x1.b005314e2421e7fep-32, false,
7271- 0x1.b005314e2421e8p-32, false,
7272- false,
7273- 0x1.b005314e2421e7ffb472840c5ap-32, false,
7274- 0x1.b005314e2421e7ffb472840c5a8p-32, false,
7275- 0x1.b005314e2421e7ffb472840c5ap-32, false,
7276- 0x1.b005314e2421e7ffb472840c5a8p-32, false,
7277- false,
7278- 0x1.b005314e2421e7ffb472840c5a6ep-32, false,
7279- 0x1.b005314e2421e7ffb472840c5a6fp-32, false,
7280- 0x1.b005314e2421e7ffb472840c5a6ep-32, false,
7281- 0x1.b005314e2421e7ffb472840c5a6fp-32, false),
7282+ 0x1.b0053p-32, false, false,
7283+ 0x1.b00532p-32, false, false,
7284+ 0x1.b0053p-32, false, false,
7285+ 0x1.b00532p-32, false, false,
7286+ false,
7287+ 0x1.b005314e2421ep-32, false, false,
7288+ 0x1.b005314e2421ep-32, false, false,
7289+ 0x1.b005314e2421ep-32, false, false,
7290+ 0x1.b005314e2421fp-32, false, false,
7291+ false,
7292+ 0x1.b005314e2421e7fep-32, false, false,
7293+ 0x1.b005314e2421e8p-32, false, false,
7294+ 0x1.b005314e2421e7fep-32, false, false,
7295+ 0x1.b005314e2421e8p-32, false, false,
7296+ false,
7297+ 0x1.b005314e2421e7fep-32, false, false,
7298+ 0x1.b005314e2421e8p-32, false, false,
7299+ 0x1.b005314e2421e7fep-32, false, false,
7300+ 0x1.b005314e2421e8p-32, false, false,
7301+ false,
7302+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false,
7303+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false,
7304+ 0x1.b005314e2421e7ffb472840c5ap-32, false, false,
7305+ 0x1.b005314e2421e7ffb472840c5a8p-32, false, false,
7306+ false,
7307+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false,
7308+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false,
7309+ 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false,
7310+ 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false),
7311 TEST ("0.0000000000000000000000000000000000000000000021019476964872"
7312 "256063855943749348741969203929128147736576356024258346866240"
7313 "28790902229957282543182373046875",
7314 false,
7315- 0x8p-152, false,
7316- 0x1p-148, false,
7317- 0x8p-152, false,
7318- 0x1p-148, false,
7319- true,
7320- 0xcp-152, false,
7321- 0xcp-152, false,
7322- 0xcp-152, false,
7323- 0xcp-152, false,
7324- true,
7325- 0xcp-152, false,
7326- 0xcp-152, false,
7327- 0xcp-152, false,
7328- 0xcp-152, false,
7329- true,
7330- 0xcp-152, false,
7331- 0xcp-152, false,
7332- 0xcp-152, false,
7333- 0xcp-152, false,
7334- true,
7335- 0xcp-152, false,
7336- 0xcp-152, false,
7337- 0xcp-152, false,
7338- 0xcp-152, false,
7339- true,
7340- 0xcp-152, false,
7341- 0xcp-152, false,
7342- 0xcp-152, false,
7343- 0xcp-152, false),
7344+ 0x8p-152, false, true,
7345+ 0x1p-148, false, true,
7346+ 0x8p-152, false, true,
7347+ 0x1p-148, false, true,
7348+ true,
7349+ 0xcp-152, false, false,
7350+ 0xcp-152, false, false,
7351+ 0xcp-152, false, false,
7352+ 0xcp-152, false, false,
7353+ true,
7354+ 0xcp-152, false, false,
7355+ 0xcp-152, false, false,
7356+ 0xcp-152, false, false,
7357+ 0xcp-152, false, false,
7358+ true,
7359+ 0xcp-152, false, false,
7360+ 0xcp-152, false, false,
7361+ 0xcp-152, false, false,
7362+ 0xcp-152, false, false,
7363+ true,
7364+ 0xcp-152, false, false,
7365+ 0xcp-152, false, false,
7366+ 0xcp-152, false, false,
7367+ 0xcp-152, false, false,
7368+ true,
7369+ 0xcp-152, false, false,
7370+ 0xcp-152, false, false,
7371+ 0xcp-152, false, false,
7372+ 0xcp-152, false, false),
7373 TEST ("1.00000005960464477539062499",
7374 false,
7375- 0x1p+0, false,
7376- 0x1p+0, false,
7377- 0x1p+0, false,
7378- 0x1.000002p+0, false,
7379- false,
7380- 0x1.000000fffffffp+0, false,
7381- 0x1.000001p+0, false,
7382- 0x1.000000fffffffp+0, false,
7383- 0x1.000001p+0, false,
7384- false,
7385- 0x1.000000fffffffffep+0, false,
7386- 0x1.000001p+0, false,
7387- 0x1.000000fffffffffep+0, false,
7388- 0x1.000001p+0, false,
7389- false,
7390- 0x1.000000fffffffffep+0, false,
7391- 0x1.000001p+0, false,
7392- 0x1.000000fffffffffep+0, false,
7393- 0x1.000001p+0, false,
7394- false,
7395- 0x1.000000fffffffffffffffce7b78p+0, false,
7396- 0x1.000000fffffffffffffffce7b8p+0, false,
7397- 0x1.000000fffffffffffffffce7b78p+0, false,
7398- 0x1.000000fffffffffffffffce7b8p+0, false,
7399- false,
7400- 0x1.000000fffffffffffffffce7b7e7p+0, false,
7401- 0x1.000000fffffffffffffffce7b7e7p+0, false,
7402- 0x1.000000fffffffffffffffce7b7e7p+0, false,
7403- 0x1.000000fffffffffffffffce7b7e8p+0, false),
7404+ 0x1p+0, false, false,
7405+ 0x1p+0, false, false,
7406+ 0x1p+0, false, false,
7407+ 0x1.000002p+0, false, false,
7408+ false,
7409+ 0x1.000000fffffffp+0, false, false,
7410+ 0x1.000001p+0, false, false,
7411+ 0x1.000000fffffffp+0, false, false,
7412+ 0x1.000001p+0, false, false,
7413+ false,
7414+ 0x1.000000fffffffffep+0, false, false,
7415+ 0x1.000001p+0, false, false,
7416+ 0x1.000000fffffffffep+0, false, false,
7417+ 0x1.000001p+0, false, false,
7418+ false,
7419+ 0x1.000000fffffffffep+0, false, false,
7420+ 0x1.000001p+0, false, false,
7421+ 0x1.000000fffffffffep+0, false, false,
7422+ 0x1.000001p+0, false, false,
7423+ false,
7424+ 0x1.000000fffffffffffffffce7b78p+0, false, false,
7425+ 0x1.000000fffffffffffffffce7b8p+0, false, false,
7426+ 0x1.000000fffffffffffffffce7b78p+0, false, false,
7427+ 0x1.000000fffffffffffffffce7b8p+0, false, false,
7428+ false,
7429+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
7430+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
7431+ 0x1.000000fffffffffffffffce7b7e7p+0, false, false,
7432+ 0x1.000000fffffffffffffffce7b7e8p+0, false, false),
7433 TEST ("1.000000059604644775390625",
7434 false,
7435- 0x1p+0, false,
7436- 0x1p+0, false,
7437- 0x1p+0, false,
7438- 0x1.000002p+0, false,
7439- true,
7440- 0x1.000001p+0, false,
7441- 0x1.000001p+0, false,
7442- 0x1.000001p+0, false,
7443- 0x1.000001p+0, false,
7444- true,
7445- 0x1.000001p+0, false,
7446- 0x1.000001p+0, false,
7447- 0x1.000001p+0, false,
7448- 0x1.000001p+0, false,
7449- true,
7450- 0x1.000001p+0, false,
7451- 0x1.000001p+0, false,
7452- 0x1.000001p+0, false,
7453- 0x1.000001p+0, false,
7454- true,
7455- 0x1.000001p+0, false,
7456- 0x1.000001p+0, false,
7457- 0x1.000001p+0, false,
7458- 0x1.000001p+0, false,
7459- true,
7460- 0x1.000001p+0, false,
7461- 0x1.000001p+0, false,
7462- 0x1.000001p+0, false,
7463- 0x1.000001p+0, false),
7464+ 0x1p+0, false, false,
7465+ 0x1p+0, false, false,
7466+ 0x1p+0, false, false,
7467+ 0x1.000002p+0, false, false,
7468+ true,
7469+ 0x1.000001p+0, false, false,
7470+ 0x1.000001p+0, false, false,
7471+ 0x1.000001p+0, false, false,
7472+ 0x1.000001p+0, false, false,
7473+ true,
7474+ 0x1.000001p+0, false, false,
7475+ 0x1.000001p+0, false, false,
7476+ 0x1.000001p+0, false, false,
7477+ 0x1.000001p+0, false, false,
7478+ true,
7479+ 0x1.000001p+0, false, false,
7480+ 0x1.000001p+0, false, false,
7481+ 0x1.000001p+0, false, false,
7482+ 0x1.000001p+0, false, false,
7483+ true,
7484+ 0x1.000001p+0, false, false,
7485+ 0x1.000001p+0, false, false,
7486+ 0x1.000001p+0, false, false,
7487+ 0x1.000001p+0, false, false,
7488+ true,
7489+ 0x1.000001p+0, false, false,
7490+ 0x1.000001p+0, false, false,
7491+ 0x1.000001p+0, false, false,
7492+ 0x1.000001p+0, false, false),
7493 TEST ("1.00000005960464477539062501",
7494 false,
7495- 0x1p+0, false,
7496- 0x1.000002p+0, false,
7497- 0x1p+0, false,
7498- 0x1.000002p+0, false,
7499- false,
7500- 0x1.000001p+0, false,
7501- 0x1.000001p+0, false,
7502- 0x1.000001p+0, false,
7503- 0x1.0000010000001p+0, false,
7504- false,
7505- 0x1.000001p+0, false,
7506- 0x1.000001p+0, false,
7507- 0x1.000001p+0, false,
7508- 0x1.0000010000000002p+0, false,
7509- false,
7510- 0x1.000001p+0, false,
7511- 0x1.000001p+0, false,
7512- 0x1.000001p+0, false,
7513- 0x1.0000010000000002p+0, false,
7514- false,
7515- 0x1.00000100000000000000031848p+0, false,
7516- 0x1.00000100000000000000031848p+0, false,
7517- 0x1.00000100000000000000031848p+0, false,
7518- 0x1.000001000000000000000318488p+0, false,
7519- false,
7520- 0x1.0000010000000000000003184818p+0, false,
7521- 0x1.0000010000000000000003184819p+0, false,
7522- 0x1.0000010000000000000003184818p+0, false,
7523- 0x1.0000010000000000000003184819p+0, false),
7524+ 0x1p+0, false, false,
7525+ 0x1.000002p+0, false, false,
7526+ 0x1p+0, false, false,
7527+ 0x1.000002p+0, false, false,
7528+ false,
7529+ 0x1.000001p+0, false, false,
7530+ 0x1.000001p+0, false, false,
7531+ 0x1.000001p+0, false, false,
7532+ 0x1.0000010000001p+0, false, false,
7533+ false,
7534+ 0x1.000001p+0, false, false,
7535+ 0x1.000001p+0, false, false,
7536+ 0x1.000001p+0, false, false,
7537+ 0x1.0000010000000002p+0, false, false,
7538+ false,
7539+ 0x1.000001p+0, false, false,
7540+ 0x1.000001p+0, false, false,
7541+ 0x1.000001p+0, false, false,
7542+ 0x1.0000010000000002p+0, false, false,
7543+ false,
7544+ 0x1.00000100000000000000031848p+0, false, false,
7545+ 0x1.00000100000000000000031848p+0, false, false,
7546+ 0x1.00000100000000000000031848p+0, false, false,
7547+ 0x1.000001000000000000000318488p+0, false, false,
7548+ false,
7549+ 0x1.0000010000000000000003184818p+0, false, false,
7550+ 0x1.0000010000000000000003184819p+0, false, false,
7551+ 0x1.0000010000000000000003184818p+0, false, false,
7552+ 0x1.0000010000000000000003184819p+0, false, false),
7553 TEST ("1.00000011920928955078125",
7554 true,
7555- 0x1.000002p+0, false,
7556- 0x1.000002p+0, false,
7557- 0x1.000002p+0, false,
7558- 0x1.000002p+0, false,
7559- true,
7560- 0x1.000002p+0, false,
7561- 0x1.000002p+0, false,
7562- 0x1.000002p+0, false,
7563- 0x1.000002p+0, false,
7564- true,
7565- 0x1.000002p+0, false,
7566- 0x1.000002p+0, false,
7567- 0x1.000002p+0, false,
7568- 0x1.000002p+0, false,
7569- true,
7570- 0x1.000002p+0, false,
7571- 0x1.000002p+0, false,
7572- 0x1.000002p+0, false,
7573- 0x1.000002p+0, false,
7574- true,
7575- 0x1.000002p+0, false,
7576- 0x1.000002p+0, false,
7577- 0x1.000002p+0, false,
7578- 0x1.000002p+0, false,
7579- true,
7580- 0x1.000002p+0, false,
7581- 0x1.000002p+0, false,
7582- 0x1.000002p+0, false,
7583- 0x1.000002p+0, false),
7584+ 0x1.000002p+0, false, false,
7585+ 0x1.000002p+0, false, false,
7586+ 0x1.000002p+0, false, false,
7587+ 0x1.000002p+0, false, false,
7588+ true,
7589+ 0x1.000002p+0, false, false,
7590+ 0x1.000002p+0, false, false,
7591+ 0x1.000002p+0, false, false,
7592+ 0x1.000002p+0, false, false,
7593+ true,
7594+ 0x1.000002p+0, false, false,
7595+ 0x1.000002p+0, false, false,
7596+ 0x1.000002p+0, false, false,
7597+ 0x1.000002p+0, false, false,
7598+ true,
7599+ 0x1.000002p+0, false, false,
7600+ 0x1.000002p+0, false, false,
7601+ 0x1.000002p+0, false, false,
7602+ 0x1.000002p+0, false, false,
7603+ true,
7604+ 0x1.000002p+0, false, false,
7605+ 0x1.000002p+0, false, false,
7606+ 0x1.000002p+0, false, false,
7607+ 0x1.000002p+0, false, false,
7608+ true,
7609+ 0x1.000002p+0, false, false,
7610+ 0x1.000002p+0, false, false,
7611+ 0x1.000002p+0, false, false,
7612+ 0x1.000002p+0, false, false),
7613 TEST ("1.00000017881393432617187499",
7614 false,
7615- 0x1.000002p+0, false,
7616- 0x1.000002p+0, false,
7617- 0x1.000002p+0, false,
7618- 0x1.000004p+0, false,
7619- false,
7620- 0x1.000002fffffffp+0, false,
7621- 0x1.000003p+0, false,
7622- 0x1.000002fffffffp+0, false,
7623- 0x1.000003p+0, false,
7624- false,
7625- 0x1.000002fffffffffep+0, false,
7626- 0x1.000003p+0, false,
7627- 0x1.000002fffffffffep+0, false,
7628- 0x1.000003p+0, false,
7629- false,
7630- 0x1.000002fffffffffep+0, false,
7631- 0x1.000003p+0, false,
7632- 0x1.000002fffffffffep+0, false,
7633- 0x1.000003p+0, false,
7634- false,
7635- 0x1.000002fffffffffffffffce7b78p+0, false,
7636- 0x1.000002fffffffffffffffce7b8p+0, false,
7637- 0x1.000002fffffffffffffffce7b78p+0, false,
7638- 0x1.000002fffffffffffffffce7b8p+0, false,
7639- false,
7640- 0x1.000002fffffffffffffffce7b7e7p+0, false,
7641- 0x1.000002fffffffffffffffce7b7e7p+0, false,
7642- 0x1.000002fffffffffffffffce7b7e7p+0, false,
7643- 0x1.000002fffffffffffffffce7b7e8p+0, false),
7644+ 0x1.000002p+0, false, false,
7645+ 0x1.000002p+0, false, false,
7646+ 0x1.000002p+0, false, false,
7647+ 0x1.000004p+0, false, false,
7648+ false,
7649+ 0x1.000002fffffffp+0, false, false,
7650+ 0x1.000003p+0, false, false,
7651+ 0x1.000002fffffffp+0, false, false,
7652+ 0x1.000003p+0, false, false,
7653+ false,
7654+ 0x1.000002fffffffffep+0, false, false,
7655+ 0x1.000003p+0, false, false,
7656+ 0x1.000002fffffffffep+0, false, false,
7657+ 0x1.000003p+0, false, false,
7658+ false,
7659+ 0x1.000002fffffffffep+0, false, false,
7660+ 0x1.000003p+0, false, false,
7661+ 0x1.000002fffffffffep+0, false, false,
7662+ 0x1.000003p+0, false, false,
7663+ false,
7664+ 0x1.000002fffffffffffffffce7b78p+0, false, false,
7665+ 0x1.000002fffffffffffffffce7b8p+0, false, false,
7666+ 0x1.000002fffffffffffffffce7b78p+0, false, false,
7667+ 0x1.000002fffffffffffffffce7b8p+0, false, false,
7668+ false,
7669+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
7670+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
7671+ 0x1.000002fffffffffffffffce7b7e7p+0, false, false,
7672+ 0x1.000002fffffffffffffffce7b7e8p+0, false, false),
7673 TEST ("1.000000178813934326171875",
7674 false,
7675- 0x1.000002p+0, false,
7676- 0x1.000004p+0, false,
7677- 0x1.000002p+0, false,
7678- 0x1.000004p+0, false,
7679- true,
7680- 0x1.000003p+0, false,
7681- 0x1.000003p+0, false,
7682- 0x1.000003p+0, false,
7683- 0x1.000003p+0, false,
7684- true,
7685- 0x1.000003p+0, false,
7686- 0x1.000003p+0, false,
7687- 0x1.000003p+0, false,
7688- 0x1.000003p+0, false,
7689- true,
7690- 0x1.000003p+0, false,
7691- 0x1.000003p+0, false,
7692- 0x1.000003p+0, false,
7693- 0x1.000003p+0, false,
7694- true,
7695- 0x1.000003p+0, false,
7696- 0x1.000003p+0, false,
7697- 0x1.000003p+0, false,
7698- 0x1.000003p+0, false,
7699- true,
7700- 0x1.000003p+0, false,
7701- 0x1.000003p+0, false,
7702- 0x1.000003p+0, false,
7703- 0x1.000003p+0, false),
7704+ 0x1.000002p+0, false, false,
7705+ 0x1.000004p+0, false, false,
7706+ 0x1.000002p+0, false, false,
7707+ 0x1.000004p+0, false, false,
7708+ true,
7709+ 0x1.000003p+0, false, false,
7710+ 0x1.000003p+0, false, false,
7711+ 0x1.000003p+0, false, false,
7712+ 0x1.000003p+0, false, false,
7713+ true,
7714+ 0x1.000003p+0, false, false,
7715+ 0x1.000003p+0, false, false,
7716+ 0x1.000003p+0, false, false,
7717+ 0x1.000003p+0, false, false,
7718+ true,
7719+ 0x1.000003p+0, false, false,
7720+ 0x1.000003p+0, false, false,
7721+ 0x1.000003p+0, false, false,
7722+ 0x1.000003p+0, false, false,
7723+ true,
7724+ 0x1.000003p+0, false, false,
7725+ 0x1.000003p+0, false, false,
7726+ 0x1.000003p+0, false, false,
7727+ 0x1.000003p+0, false, false,
7728+ true,
7729+ 0x1.000003p+0, false, false,
7730+ 0x1.000003p+0, false, false,
7731+ 0x1.000003p+0, false, false,
7732+ 0x1.000003p+0, false, false),
7733 TEST ("1.00000017881393432617187501",
7734 false,
7735- 0x1.000002p+0, false,
7736- 0x1.000004p+0, false,
7737- 0x1.000002p+0, false,
7738- 0x1.000004p+0, false,
7739- false,
7740- 0x1.000003p+0, false,
7741- 0x1.000003p+0, false,
7742- 0x1.000003p+0, false,
7743- 0x1.0000030000001p+0, false,
7744- false,
7745- 0x1.000003p+0, false,
7746- 0x1.000003p+0, false,
7747- 0x1.000003p+0, false,
7748- 0x1.0000030000000002p+0, false,
7749- false,
7750- 0x1.000003p+0, false,
7751- 0x1.000003p+0, false,
7752- 0x1.000003p+0, false,
7753- 0x1.0000030000000002p+0, false,
7754- false,
7755- 0x1.00000300000000000000031848p+0, false,
7756- 0x1.00000300000000000000031848p+0, false,
7757- 0x1.00000300000000000000031848p+0, false,
7758- 0x1.000003000000000000000318488p+0, false,
7759- false,
7760- 0x1.0000030000000000000003184818p+0, false,
7761- 0x1.0000030000000000000003184819p+0, false,
7762- 0x1.0000030000000000000003184818p+0, false,
7763- 0x1.0000030000000000000003184819p+0, false),
7764+ 0x1.000002p+0, false, false,
7765+ 0x1.000004p+0, false, false,
7766+ 0x1.000002p+0, false, false,
7767+ 0x1.000004p+0, false, false,
7768+ false,
7769+ 0x1.000003p+0, false, false,
7770+ 0x1.000003p+0, false, false,
7771+ 0x1.000003p+0, false, false,
7772+ 0x1.0000030000001p+0, false, false,
7773+ false,
7774+ 0x1.000003p+0, false, false,
7775+ 0x1.000003p+0, false, false,
7776+ 0x1.000003p+0, false, false,
7777+ 0x1.0000030000000002p+0, false, false,
7778+ false,
7779+ 0x1.000003p+0, false, false,
7780+ 0x1.000003p+0, false, false,
7781+ 0x1.000003p+0, false, false,
7782+ 0x1.0000030000000002p+0, false, false,
7783+ false,
7784+ 0x1.00000300000000000000031848p+0, false, false,
7785+ 0x1.00000300000000000000031848p+0, false, false,
7786+ 0x1.00000300000000000000031848p+0, false, false,
7787+ 0x1.000003000000000000000318488p+0, false, false,
7788+ false,
7789+ 0x1.0000030000000000000003184818p+0, false, false,
7790+ 0x1.0000030000000000000003184819p+0, false, false,
7791+ 0x1.0000030000000000000003184818p+0, false, false,
7792+ 0x1.0000030000000000000003184819p+0, false, false),
7793 TEST ("1.0000002384185791015625",
7794 true,
7795- 0x1.000004p+0, false,
7796- 0x1.000004p+0, false,
7797- 0x1.000004p+0, false,
7798- 0x1.000004p+0, false,
7799- true,
7800- 0x1.000004p+0, false,
7801- 0x1.000004p+0, false,
7802- 0x1.000004p+0, false,
7803- 0x1.000004p+0, false,
7804- true,
7805- 0x1.000004p+0, false,
7806- 0x1.000004p+0, false,
7807- 0x1.000004p+0, false,
7808- 0x1.000004p+0, false,
7809- true,
7810- 0x1.000004p+0, false,
7811- 0x1.000004p+0, false,
7812- 0x1.000004p+0, false,
7813- 0x1.000004p+0, false,
7814- true,
7815- 0x1.000004p+0, false,
7816- 0x1.000004p+0, false,
7817- 0x1.000004p+0, false,
7818- 0x1.000004p+0, false,
7819- true,
7820- 0x1.000004p+0, false,
7821- 0x1.000004p+0, false,
7822- 0x1.000004p+0, false,
7823- 0x1.000004p+0, false),
7824+ 0x1.000004p+0, false, false,
7825+ 0x1.000004p+0, false, false,
7826+ 0x1.000004p+0, false, false,
7827+ 0x1.000004p+0, false, false,
7828+ true,
7829+ 0x1.000004p+0, false, false,
7830+ 0x1.000004p+0, false, false,
7831+ 0x1.000004p+0, false, false,
7832+ 0x1.000004p+0, false, false,
7833+ true,
7834+ 0x1.000004p+0, false, false,
7835+ 0x1.000004p+0, false, false,
7836+ 0x1.000004p+0, false, false,
7837+ 0x1.000004p+0, false, false,
7838+ true,
7839+ 0x1.000004p+0, false, false,
7840+ 0x1.000004p+0, false, false,
7841+ 0x1.000004p+0, false, false,
7842+ 0x1.000004p+0, false, false,
7843+ true,
7844+ 0x1.000004p+0, false, false,
7845+ 0x1.000004p+0, false, false,
7846+ 0x1.000004p+0, false, false,
7847+ 0x1.000004p+0, false, false,
7848+ true,
7849+ 0x1.000004p+0, false, false,
7850+ 0x1.000004p+0, false, false,
7851+ 0x1.000004p+0, false, false,
7852+ 0x1.000004p+0, false, false),
7853 TEST ("1.08420217248550443400745280086994171142578125e-19",
7854 true,
7855- 0x2p-64, false,
7856- 0x2p-64, false,
7857- 0x2p-64, false,
7858- 0x2p-64, false,
7859- true,
7860- 0x2p-64, false,
7861- 0x2p-64, false,
7862- 0x2p-64, false,
7863- 0x2p-64, false,
7864- true,
7865- 0x2p-64, false,
7866- 0x2p-64, false,
7867- 0x2p-64, false,
7868- 0x2p-64, false,
7869- true,
7870- 0x2p-64, false,
7871- 0x2p-64, false,
7872- 0x2p-64, false,
7873- 0x2p-64, false,
7874- true,
7875- 0x2p-64, false,
7876- 0x2p-64, false,
7877- 0x2p-64, false,
7878- 0x2p-64, false,
7879- true,
7880- 0x2p-64, false,
7881- 0x2p-64, false,
7882- 0x2p-64, false,
7883- 0x2p-64, false),
7884+ 0x2p-64, false, false,
7885+ 0x2p-64, false, false,
7886+ 0x2p-64, false, false,
7887+ 0x2p-64, false, false,
7888+ true,
7889+ 0x2p-64, false, false,
7890+ 0x2p-64, false, false,
7891+ 0x2p-64, false, false,
7892+ 0x2p-64, false, false,
7893+ true,
7894+ 0x2p-64, false, false,
7895+ 0x2p-64, false, false,
7896+ 0x2p-64, false, false,
7897+ 0x2p-64, false, false,
7898+ true,
7899+ 0x2p-64, false, false,
7900+ 0x2p-64, false, false,
7901+ 0x2p-64, false, false,
7902+ 0x2p-64, false, false,
7903+ true,
7904+ 0x2p-64, false, false,
7905+ 0x2p-64, false, false,
7906+ 0x2p-64, false, false,
7907+ 0x2p-64, false, false,
7908+ true,
7909+ 0x2p-64, false, false,
7910+ 0x2p-64, false, false,
7911+ 0x2p-64, false, false,
7912+ 0x2p-64, false, false),
7913 TEST ("1.0842022371089897897127399001987457793916291848290711641311"
7914 "645507812499e-19",
7915 false,
7916- 0x2p-64, false,
7917- 0x2p-64, false,
7918- 0x2p-64, false,
7919- 0x2.000004p-64, false,
7920- false,
7921- 0x2.000001ffffffep-64, false,
7922- 0x2.000002p-64, false,
7923- 0x2.000001ffffffep-64, false,
7924- 0x2.000002p-64, false,
7925- false,
7926- 0x2.000001fffffffffcp-64, false,
7927- 0x2.000002p-64, false,
7928- 0x2.000001fffffffffcp-64, false,
7929- 0x2.000002p-64, false,
7930- false,
7931- 0x2.000001fffffffffcp-64, false,
7932- 0x2.000002p-64, false,
7933- 0x2.000001fffffffffcp-64, false,
7934- 0x2.000002p-64, false,
7935- false,
7936- 0x2.000001ffffffffffffffffffffp-64, false,
7937- 0x2.000002p-64, false,
7938- 0x2.000001ffffffffffffffffffffp-64, false,
7939- 0x2.000002p-64, false,
7940- false,
7941- 0x2.000001fffffffffffffffffffffep-64, false,
7942- 0x2.000002p-64, false,
7943- 0x2.000001fffffffffffffffffffffep-64, false,
7944- 0x2.000002p-64, false),
7945+ 0x2p-64, false, false,
7946+ 0x2p-64, false, false,
7947+ 0x2p-64, false, false,
7948+ 0x2.000004p-64, false, false,
7949+ false,
7950+ 0x2.000001ffffffep-64, false, false,
7951+ 0x2.000002p-64, false, false,
7952+ 0x2.000001ffffffep-64, false, false,
7953+ 0x2.000002p-64, false, false,
7954+ false,
7955+ 0x2.000001fffffffffcp-64, false, false,
7956+ 0x2.000002p-64, false, false,
7957+ 0x2.000001fffffffffcp-64, false, false,
7958+ 0x2.000002p-64, false, false,
7959+ false,
7960+ 0x2.000001fffffffffcp-64, false, false,
7961+ 0x2.000002p-64, false, false,
7962+ 0x2.000001fffffffffcp-64, false, false,
7963+ 0x2.000002p-64, false, false,
7964+ false,
7965+ 0x2.000001ffffffffffffffffffffp-64, false, false,
7966+ 0x2.000002p-64, false, false,
7967+ 0x2.000001ffffffffffffffffffffp-64, false, false,
7968+ 0x2.000002p-64, false, false,
7969+ false,
7970+ 0x2.000001fffffffffffffffffffffep-64, false, false,
7971+ 0x2.000002p-64, false, false,
7972+ 0x2.000001fffffffffffffffffffffep-64, false, false,
7973+ 0x2.000002p-64, false, false),
7974 TEST ("1.0842022371089897897127399001987457793916291848290711641311"
7975 "6455078125e-19",
7976 false,
7977- 0x2p-64, false,
7978- 0x2p-64, false,
7979- 0x2p-64, false,
7980- 0x2.000004p-64, false,
7981- true,
7982- 0x2.000002p-64, false,
7983- 0x2.000002p-64, false,
7984- 0x2.000002p-64, false,
7985- 0x2.000002p-64, false,
7986- true,
7987- 0x2.000002p-64, false,
7988- 0x2.000002p-64, false,
7989- 0x2.000002p-64, false,
7990- 0x2.000002p-64, false,
7991- true,
7992- 0x2.000002p-64, false,
7993- 0x2.000002p-64, false,
7994- 0x2.000002p-64, false,
7995- 0x2.000002p-64, false,
7996- true,
7997- 0x2.000002p-64, false,
7998- 0x2.000002p-64, false,
7999- 0x2.000002p-64, false,
8000- 0x2.000002p-64, false,
8001- true,
8002- 0x2.000002p-64, false,
8003- 0x2.000002p-64, false,
8004- 0x2.000002p-64, false,
8005- 0x2.000002p-64, false),
8006+ 0x2p-64, false, false,
8007+ 0x2p-64, false, false,
8008+ 0x2p-64, false, false,
8009+ 0x2.000004p-64, false, false,
8010+ true,
8011+ 0x2.000002p-64, false, false,
8012+ 0x2.000002p-64, false, false,
8013+ 0x2.000002p-64, false, false,
8014+ 0x2.000002p-64, false, false,
8015+ true,
8016+ 0x2.000002p-64, false, false,
8017+ 0x2.000002p-64, false, false,
8018+ 0x2.000002p-64, false, false,
8019+ 0x2.000002p-64, false, false,
8020+ true,
8021+ 0x2.000002p-64, false, false,
8022+ 0x2.000002p-64, false, false,
8023+ 0x2.000002p-64, false, false,
8024+ 0x2.000002p-64, false, false,
8025+ true,
8026+ 0x2.000002p-64, false, false,
8027+ 0x2.000002p-64, false, false,
8028+ 0x2.000002p-64, false, false,
8029+ 0x2.000002p-64, false, false,
8030+ true,
8031+ 0x2.000002p-64, false, false,
8032+ 0x2.000002p-64, false, false,
8033+ 0x2.000002p-64, false, false,
8034+ 0x2.000002p-64, false, false),
8035 TEST ("1.0842022371089897897127399001987457793916291848290711641311"
8036 "645507812501e-19",
8037 false,
8038- 0x2p-64, false,
8039- 0x2.000004p-64, false,
8040- 0x2p-64, false,
8041- 0x2.000004p-64, false,
8042- false,
8043- 0x2.000002p-64, false,
8044- 0x2.000002p-64, false,
8045- 0x2.000002p-64, false,
8046- 0x2.0000020000002p-64, false,
8047- false,
8048- 0x2.000002p-64, false,
8049- 0x2.000002p-64, false,
8050- 0x2.000002p-64, false,
8051- 0x2.0000020000000004p-64, false,
8052- false,
8053- 0x2.000002p-64, false,
8054- 0x2.000002p-64, false,
8055- 0x2.000002p-64, false,
8056- 0x2.0000020000000004p-64, false,
8057- false,
8058- 0x2.000002p-64, false,
8059- 0x2.000002p-64, false,
8060- 0x2.000002p-64, false,
8061- 0x2.00000200000000000000000001p-64, false,
8062- false,
8063- 0x2.000002p-64, false,
8064- 0x2.000002p-64, false,
8065- 0x2.000002p-64, false,
8066- 0x2.0000020000000000000000000002p-64, false),
8067+ 0x2p-64, false, false,
8068+ 0x2.000004p-64, false, false,
8069+ 0x2p-64, false, false,
8070+ 0x2.000004p-64, false, false,
8071+ false,
8072+ 0x2.000002p-64, false, false,
8073+ 0x2.000002p-64, false, false,
8074+ 0x2.000002p-64, false, false,
8075+ 0x2.0000020000002p-64, false, false,
8076+ false,
8077+ 0x2.000002p-64, false, false,
8078+ 0x2.000002p-64, false, false,
8079+ 0x2.000002p-64, false, false,
8080+ 0x2.0000020000000004p-64, false, false,
8081+ false,
8082+ 0x2.000002p-64, false, false,
8083+ 0x2.000002p-64, false, false,
8084+ 0x2.000002p-64, false, false,
8085+ 0x2.0000020000000004p-64, false, false,
8086+ false,
8087+ 0x2.000002p-64, false, false,
8088+ 0x2.000002p-64, false, false,
8089+ 0x2.000002p-64, false, false,
8090+ 0x2.00000200000000000000000001p-64, false, false,
8091+ false,
8092+ 0x2.000002p-64, false, false,
8093+ 0x2.000002p-64, false, false,
8094+ 0x2.000002p-64, false, false,
8095+ 0x2.0000020000000000000000000002p-64, false, false),
8096 TEST ("1.0842023017324751454180269995275498473574771196581423282623"
8097 "291015625e-19",
8098 true,
8099- 0x2.000004p-64, false,
8100- 0x2.000004p-64, false,
8101- 0x2.000004p-64, false,
8102- 0x2.000004p-64, false,
8103- true,
8104- 0x2.000004p-64, false,
8105- 0x2.000004p-64, false,
8106- 0x2.000004p-64, false,
8107- 0x2.000004p-64, false,
8108- true,
8109- 0x2.000004p-64, false,
8110- 0x2.000004p-64, false,
8111- 0x2.000004p-64, false,
8112- 0x2.000004p-64, false,
8113- true,
8114- 0x2.000004p-64, false,
8115- 0x2.000004p-64, false,
8116- 0x2.000004p-64, false,
8117- 0x2.000004p-64, false,
8118- true,
8119- 0x2.000004p-64, false,
8120- 0x2.000004p-64, false,
8121- 0x2.000004p-64, false,
8122- 0x2.000004p-64, false,
8123- true,
8124- 0x2.000004p-64, false,
8125- 0x2.000004p-64, false,
8126- 0x2.000004p-64, false,
8127- 0x2.000004p-64, false),
8128+ 0x2.000004p-64, false, false,
8129+ 0x2.000004p-64, false, false,
8130+ 0x2.000004p-64, false, false,
8131+ 0x2.000004p-64, false, false,
8132+ true,
8133+ 0x2.000004p-64, false, false,
8134+ 0x2.000004p-64, false, false,
8135+ 0x2.000004p-64, false, false,
8136+ 0x2.000004p-64, false, false,
8137+ true,
8138+ 0x2.000004p-64, false, false,
8139+ 0x2.000004p-64, false, false,
8140+ 0x2.000004p-64, false, false,
8141+ 0x2.000004p-64, false, false,
8142+ true,
8143+ 0x2.000004p-64, false, false,
8144+ 0x2.000004p-64, false, false,
8145+ 0x2.000004p-64, false, false,
8146+ 0x2.000004p-64, false, false,
8147+ true,
8148+ 0x2.000004p-64, false, false,
8149+ 0x2.000004p-64, false, false,
8150+ 0x2.000004p-64, false, false,
8151+ 0x2.000004p-64, false, false,
8152+ true,
8153+ 0x2.000004p-64, false, false,
8154+ 0x2.000004p-64, false, false,
8155+ 0x2.000004p-64, false, false,
8156+ 0x2.000004p-64, false, false),
8157 TEST ("1.0842023663559605011233140988563539153233250544872134923934"
8158 "936523437499e-19",
8159 false,
8160- 0x2.000004p-64, false,
8161- 0x2.000004p-64, false,
8162- 0x2.000004p-64, false,
8163- 0x2.000008p-64, false,
8164- false,
8165- 0x2.000005ffffffep-64, false,
8166- 0x2.000006p-64, false,
8167- 0x2.000005ffffffep-64, false,
8168- 0x2.000006p-64, false,
8169- false,
8170- 0x2.000005fffffffffcp-64, false,
8171- 0x2.000006p-64, false,
8172- 0x2.000005fffffffffcp-64, false,
8173- 0x2.000006p-64, false,
8174- false,
8175- 0x2.000005fffffffffcp-64, false,
8176- 0x2.000006p-64, false,
8177- 0x2.000005fffffffffcp-64, false,
8178- 0x2.000006p-64, false,
8179- false,
8180- 0x2.000005ffffffffffffffffffffp-64, false,
8181- 0x2.000006p-64, false,
8182- 0x2.000005ffffffffffffffffffffp-64, false,
8183- 0x2.000006p-64, false,
8184- false,
8185- 0x2.000005fffffffffffffffffffffep-64, false,
8186- 0x2.000006p-64, false,
8187- 0x2.000005fffffffffffffffffffffep-64, false,
8188- 0x2.000006p-64, false),
8189+ 0x2.000004p-64, false, false,
8190+ 0x2.000004p-64, false, false,
8191+ 0x2.000004p-64, false, false,
8192+ 0x2.000008p-64, false, false,
8193+ false,
8194+ 0x2.000005ffffffep-64, false, false,
8195+ 0x2.000006p-64, false, false,
8196+ 0x2.000005ffffffep-64, false, false,
8197+ 0x2.000006p-64, false, false,
8198+ false,
8199+ 0x2.000005fffffffffcp-64, false, false,
8200+ 0x2.000006p-64, false, false,
8201+ 0x2.000005fffffffffcp-64, false, false,
8202+ 0x2.000006p-64, false, false,
8203+ false,
8204+ 0x2.000005fffffffffcp-64, false, false,
8205+ 0x2.000006p-64, false, false,
8206+ 0x2.000005fffffffffcp-64, false, false,
8207+ 0x2.000006p-64, false, false,
8208+ false,
8209+ 0x2.000005ffffffffffffffffffffp-64, false, false,
8210+ 0x2.000006p-64, false, false,
8211+ 0x2.000005ffffffffffffffffffffp-64, false, false,
8212+ 0x2.000006p-64, false, false,
8213+ false,
8214+ 0x2.000005fffffffffffffffffffffep-64, false, false,
8215+ 0x2.000006p-64, false, false,
8216+ 0x2.000005fffffffffffffffffffffep-64, false, false,
8217+ 0x2.000006p-64, false, false),
8218 TEST ("1.0842023663559605011233140988563539153233250544872134923934"
8219 "9365234375e-19",
8220 false,
8221- 0x2.000004p-64, false,
8222- 0x2.000008p-64, false,
8223- 0x2.000004p-64, false,
8224- 0x2.000008p-64, false,
8225- true,
8226- 0x2.000006p-64, false,
8227- 0x2.000006p-64, false,
8228- 0x2.000006p-64, false,
8229- 0x2.000006p-64, false,
8230- true,
8231- 0x2.000006p-64, false,
8232- 0x2.000006p-64, false,
8233- 0x2.000006p-64, false,
8234- 0x2.000006p-64, false,
8235- true,
8236- 0x2.000006p-64, false,
8237- 0x2.000006p-64, false,
8238- 0x2.000006p-64, false,
8239- 0x2.000006p-64, false,
8240- true,
8241- 0x2.000006p-64, false,
8242- 0x2.000006p-64, false,
8243- 0x2.000006p-64, false,
8244- 0x2.000006p-64, false,
8245- true,
8246- 0x2.000006p-64, false,
8247- 0x2.000006p-64, false,
8248- 0x2.000006p-64, false,
8249- 0x2.000006p-64, false),
8250+ 0x2.000004p-64, false, false,
8251+ 0x2.000008p-64, false, false,
8252+ 0x2.000004p-64, false, false,
8253+ 0x2.000008p-64, false, false,
8254+ true,
8255+ 0x2.000006p-64, false, false,
8256+ 0x2.000006p-64, false, false,
8257+ 0x2.000006p-64, false, false,
8258+ 0x2.000006p-64, false, false,
8259+ true,
8260+ 0x2.000006p-64, false, false,
8261+ 0x2.000006p-64, false, false,
8262+ 0x2.000006p-64, false, false,
8263+ 0x2.000006p-64, false, false,
8264+ true,
8265+ 0x2.000006p-64, false, false,
8266+ 0x2.000006p-64, false, false,
8267+ 0x2.000006p-64, false, false,
8268+ 0x2.000006p-64, false, false,
8269+ true,
8270+ 0x2.000006p-64, false, false,
8271+ 0x2.000006p-64, false, false,
8272+ 0x2.000006p-64, false, false,
8273+ 0x2.000006p-64, false, false,
8274+ true,
8275+ 0x2.000006p-64, false, false,
8276+ 0x2.000006p-64, false, false,
8277+ 0x2.000006p-64, false, false,
8278+ 0x2.000006p-64, false, false),
8279 TEST ("1.0842023663559605011233140988563539153233250544872134923934"
8280 "936523437501e-19",
8281 false,
8282- 0x2.000004p-64, false,
8283- 0x2.000008p-64, false,
8284- 0x2.000004p-64, false,
8285- 0x2.000008p-64, false,
8286- false,
8287- 0x2.000006p-64, false,
8288- 0x2.000006p-64, false,
8289- 0x2.000006p-64, false,
8290- 0x2.0000060000002p-64, false,
8291- false,
8292- 0x2.000006p-64, false,
8293- 0x2.000006p-64, false,
8294- 0x2.000006p-64, false,
8295- 0x2.0000060000000004p-64, false,
8296- false,
8297- 0x2.000006p-64, false,
8298- 0x2.000006p-64, false,
8299- 0x2.000006p-64, false,
8300- 0x2.0000060000000004p-64, false,
8301- false,
8302- 0x2.000006p-64, false,
8303- 0x2.000006p-64, false,
8304- 0x2.000006p-64, false,
8305- 0x2.00000600000000000000000001p-64, false,
8306- false,
8307- 0x2.000006p-64, false,
8308- 0x2.000006p-64, false,
8309- 0x2.000006p-64, false,
8310- 0x2.0000060000000000000000000002p-64, false),
8311+ 0x2.000004p-64, false, false,
8312+ 0x2.000008p-64, false, false,
8313+ 0x2.000004p-64, false, false,
8314+ 0x2.000008p-64, false, false,
8315+ false,
8316+ 0x2.000006p-64, false, false,
8317+ 0x2.000006p-64, false, false,
8318+ 0x2.000006p-64, false, false,
8319+ 0x2.0000060000002p-64, false, false,
8320+ false,
8321+ 0x2.000006p-64, false, false,
8322+ 0x2.000006p-64, false, false,
8323+ 0x2.000006p-64, false, false,
8324+ 0x2.0000060000000004p-64, false, false,
8325+ false,
8326+ 0x2.000006p-64, false, false,
8327+ 0x2.000006p-64, false, false,
8328+ 0x2.000006p-64, false, false,
8329+ 0x2.0000060000000004p-64, false, false,
8330+ false,
8331+ 0x2.000006p-64, false, false,
8332+ 0x2.000006p-64, false, false,
8333+ 0x2.000006p-64, false, false,
8334+ 0x2.00000600000000000000000001p-64, false, false,
8335+ false,
8336+ 0x2.000006p-64, false, false,
8337+ 0x2.000006p-64, false, false,
8338+ 0x2.000006p-64, false, false,
8339+ 0x2.0000060000000000000000000002p-64, false, false),
8340 TEST ("1.0842024309794458568286011981851579832891729893162846565246"
8341 "58203125e-19",
8342 true,
8343- 0x2.000008p-64, false,
8344- 0x2.000008p-64, false,
8345- 0x2.000008p-64, false,
8346- 0x2.000008p-64, false,
8347- true,
8348- 0x2.000008p-64, false,
8349- 0x2.000008p-64, false,
8350- 0x2.000008p-64, false,
8351- 0x2.000008p-64, false,
8352- true,
8353- 0x2.000008p-64, false,
8354- 0x2.000008p-64, false,
8355- 0x2.000008p-64, false,
8356- 0x2.000008p-64, false,
8357- true,
8358- 0x2.000008p-64, false,
8359- 0x2.000008p-64, false,
8360- 0x2.000008p-64, false,
8361- 0x2.000008p-64, false,
8362- true,
8363- 0x2.000008p-64, false,
8364- 0x2.000008p-64, false,
8365- 0x2.000008p-64, false,
8366- 0x2.000008p-64, false,
8367- true,
8368- 0x2.000008p-64, false,
8369- 0x2.000008p-64, false,
8370- 0x2.000008p-64, false,
8371- 0x2.000008p-64, false),
8372+ 0x2.000008p-64, false, false,
8373+ 0x2.000008p-64, false, false,
8374+ 0x2.000008p-64, false, false,
8375+ 0x2.000008p-64, false, false,
8376+ true,
8377+ 0x2.000008p-64, false, false,
8378+ 0x2.000008p-64, false, false,
8379+ 0x2.000008p-64, false, false,
8380+ 0x2.000008p-64, false, false,
8381+ true,
8382+ 0x2.000008p-64, false, false,
8383+ 0x2.000008p-64, false, false,
8384+ 0x2.000008p-64, false, false,
8385+ 0x2.000008p-64, false, false,
8386+ true,
8387+ 0x2.000008p-64, false, false,
8388+ 0x2.000008p-64, false, false,
8389+ 0x2.000008p-64, false, false,
8390+ 0x2.000008p-64, false, false,
8391+ true,
8392+ 0x2.000008p-64, false, false,
8393+ 0x2.000008p-64, false, false,
8394+ 0x2.000008p-64, false, false,
8395+ 0x2.000008p-64, false, false,
8396+ true,
8397+ 0x2.000008p-64, false, false,
8398+ 0x2.000008p-64, false, false,
8399+ 0x2.000008p-64, false, false,
8400+ 0x2.000008p-64, false, false),
8401 TEST ("7.5231638452626400509999138382223723380394595633413601376560"
8402 "1092018187046051025390625e-37",
8403 true,
8404- 0x1p-120, false,
8405- 0x1p-120, false,
8406- 0x1p-120, false,
8407- 0x1p-120, false,
8408- true,
8409- 0x1p-120, false,
8410- 0x1p-120, false,
8411- 0x1p-120, false,
8412- 0x1p-120, false,
8413- true,
8414- 0x1p-120, false,
8415- 0x1p-120, false,
8416- 0x1p-120, false,
8417- 0x1p-120, false,
8418- true,
8419- 0x1p-120, false,
8420- 0x1p-120, false,
8421- 0x1p-120, false,
8422- 0x1p-120, false,
8423- true,
8424- 0x1p-120, false,
8425- 0x1p-120, false,
8426- 0x1p-120, false,
8427- 0x1p-120, false,
8428- true,
8429- 0x1p-120, false,
8430- 0x1p-120, false,
8431- 0x1p-120, false,
8432- 0x1p-120, false),
8433+ 0x1p-120, false, false,
8434+ 0x1p-120, false, false,
8435+ 0x1p-120, false, false,
8436+ 0x1p-120, false, false,
8437+ true,
8438+ 0x1p-120, false, false,
8439+ 0x1p-120, false, false,
8440+ 0x1p-120, false, false,
8441+ 0x1p-120, false, false,
8442+ true,
8443+ 0x1p-120, false, false,
8444+ 0x1p-120, false, false,
8445+ 0x1p-120, false, false,
8446+ 0x1p-120, false, false,
8447+ true,
8448+ 0x1p-120, false, false,
8449+ 0x1p-120, false, false,
8450+ 0x1p-120, false, false,
8451+ 0x1p-120, false, false,
8452+ true,
8453+ 0x1p-120, false, false,
8454+ 0x1p-120, false, false,
8455+ 0x1p-120, false, false,
8456+ 0x1p-120, false, false,
8457+ true,
8458+ 0x1p-120, false, false,
8459+ 0x1p-120, false, false,
8460+ 0x1p-120, false, false,
8461+ 0x1p-120, false, false),
8462 TEST ("7.5231642936781486349413765338158389908126215730251815381410"
8463 "578824437213052434003657253924757242202758789062499e-37",
8464 false,
8465- 0x1p-120, false,
8466- 0x1p-120, false,
8467- 0x1p-120, false,
8468- 0x1.000002p-120, false,
8469- false,
8470- 0x1.000000fffffffp-120, false,
8471- 0x1.000001p-120, false,
8472- 0x1.000000fffffffp-120, false,
8473- 0x1.000001p-120, false,
8474- false,
8475- 0x1.000000fffffffffep-120, false,
8476- 0x1.000001p-120, false,
8477- 0x1.000000fffffffffep-120, false,
8478- 0x1.000001p-120, false,
8479- false,
8480- 0x1.000000fffffffffep-120, false,
8481- 0x1.000001p-120, false,
8482- 0x1.000000fffffffffep-120, false,
8483- 0x1.000001p-120, false,
8484- false,
8485- 0x1.000000ffffffffffffffffffff8p-120, false,
8486- 0x1.000001p-120, false,
8487- 0x1.000000ffffffffffffffffffff8p-120, false,
8488- 0x1.000001p-120, false,
8489- false,
8490- 0x1.000000ffffffffffffffffffffffp-120, false,
8491- 0x1.000001p-120, false,
8492- 0x1.000000ffffffffffffffffffffffp-120, false,
8493- 0x1.000001p-120, false),
8494+ 0x1p-120, false, false,
8495+ 0x1p-120, false, false,
8496+ 0x1p-120, false, false,
8497+ 0x1.000002p-120, false, false,
8498+ false,
8499+ 0x1.000000fffffffp-120, false, false,
8500+ 0x1.000001p-120, false, false,
8501+ 0x1.000000fffffffp-120, false, false,
8502+ 0x1.000001p-120, false, false,
8503+ false,
8504+ 0x1.000000fffffffffep-120, false, false,
8505+ 0x1.000001p-120, false, false,
8506+ 0x1.000000fffffffffep-120, false, false,
8507+ 0x1.000001p-120, false, false,
8508+ false,
8509+ 0x1.000000fffffffffep-120, false, false,
8510+ 0x1.000001p-120, false, false,
8511+ 0x1.000000fffffffffep-120, false, false,
8512+ 0x1.000001p-120, false, false,
8513+ false,
8514+ 0x1.000000ffffffffffffffffffff8p-120, false, false,
8515+ 0x1.000001p-120, false, false,
8516+ 0x1.000000ffffffffffffffffffff8p-120, false, false,
8517+ 0x1.000001p-120, false, false,
8518+ false,
8519+ 0x1.000000ffffffffffffffffffffffp-120, false, false,
8520+ 0x1.000001p-120, false, false,
8521+ 0x1.000000ffffffffffffffffffffffp-120, false, false,
8522+ 0x1.000001p-120, false, false),
8523 TEST ("7.5231642936781486349413765338158389908126215730251815381410"
8524 "5788244372130524340036572539247572422027587890625e-37",
8525 false,
8526- 0x1p-120, false,
8527- 0x1p-120, false,
8528- 0x1p-120, false,
8529- 0x1.000002p-120, false,
8530- true,
8531- 0x1.000001p-120, false,
8532- 0x1.000001p-120, false,
8533- 0x1.000001p-120, false,
8534- 0x1.000001p-120, false,
8535- true,
8536- 0x1.000001p-120, false,
8537- 0x1.000001p-120, false,
8538- 0x1.000001p-120, false,
8539- 0x1.000001p-120, false,
8540- true,
8541- 0x1.000001p-120, false,
8542- 0x1.000001p-120, false,
8543- 0x1.000001p-120, false,
8544- 0x1.000001p-120, false,
8545- true,
8546- 0x1.000001p-120, false,
8547- 0x1.000001p-120, false,
8548- 0x1.000001p-120, false,
8549- 0x1.000001p-120, false,
8550- true,
8551- 0x1.000001p-120, false,
8552- 0x1.000001p-120, false,
8553- 0x1.000001p-120, false,
8554- 0x1.000001p-120, false),
8555+ 0x1p-120, false, false,
8556+ 0x1p-120, false, false,
8557+ 0x1p-120, false, false,
8558+ 0x1.000002p-120, false, false,
8559+ true,
8560+ 0x1.000001p-120, false, false,
8561+ 0x1.000001p-120, false, false,
8562+ 0x1.000001p-120, false, false,
8563+ 0x1.000001p-120, false, false,
8564+ true,
8565+ 0x1.000001p-120, false, false,
8566+ 0x1.000001p-120, false, false,
8567+ 0x1.000001p-120, false, false,
8568+ 0x1.000001p-120, false, false,
8569+ true,
8570+ 0x1.000001p-120, false, false,
8571+ 0x1.000001p-120, false, false,
8572+ 0x1.000001p-120, false, false,
8573+ 0x1.000001p-120, false, false,
8574+ true,
8575+ 0x1.000001p-120, false, false,
8576+ 0x1.000001p-120, false, false,
8577+ 0x1.000001p-120, false, false,
8578+ 0x1.000001p-120, false, false,
8579+ true,
8580+ 0x1.000001p-120, false, false,
8581+ 0x1.000001p-120, false, false,
8582+ 0x1.000001p-120, false, false,
8583+ 0x1.000001p-120, false, false),
8584 TEST ("7.5231642936781486349413765338158389908126215730251815381410"
8585 "578824437213052434003657253924757242202758789062501e-37",
8586 false,
8587- 0x1p-120, false,
8588- 0x1.000002p-120, false,
8589- 0x1p-120, false,
8590- 0x1.000002p-120, false,
8591- false,
8592- 0x1.000001p-120, false,
8593- 0x1.000001p-120, false,
8594- 0x1.000001p-120, false,
8595- 0x1.0000010000001p-120, false,
8596- false,
8597- 0x1.000001p-120, false,
8598- 0x1.000001p-120, false,
8599- 0x1.000001p-120, false,
8600- 0x1.0000010000000002p-120, false,
8601- false,
8602- 0x1.000001p-120, false,
8603- 0x1.000001p-120, false,
8604- 0x1.000001p-120, false,
8605- 0x1.0000010000000002p-120, false,
8606- false,
8607- 0x1.000001p-120, false,
8608- 0x1.000001p-120, false,
8609- 0x1.000001p-120, false,
8610- 0x1.000001000000000000000000008p-120, false,
8611- false,
8612- 0x1.000001p-120, false,
8613- 0x1.000001p-120, false,
8614- 0x1.000001p-120, false,
8615- 0x1.0000010000000000000000000001p-120, false),
8616+ 0x1p-120, false, false,
8617+ 0x1.000002p-120, false, false,
8618+ 0x1p-120, false, false,
8619+ 0x1.000002p-120, false, false,
8620+ false,
8621+ 0x1.000001p-120, false, false,
8622+ 0x1.000001p-120, false, false,
8623+ 0x1.000001p-120, false, false,
8624+ 0x1.0000010000001p-120, false, false,
8625+ false,
8626+ 0x1.000001p-120, false, false,
8627+ 0x1.000001p-120, false, false,
8628+ 0x1.000001p-120, false, false,
8629+ 0x1.0000010000000002p-120, false, false,
8630+ false,
8631+ 0x1.000001p-120, false, false,
8632+ 0x1.000001p-120, false, false,
8633+ 0x1.000001p-120, false, false,
8634+ 0x1.0000010000000002p-120, false, false,
8635+ false,
8636+ 0x1.000001p-120, false, false,
8637+ 0x1.000001p-120, false, false,
8638+ 0x1.000001p-120, false, false,
8639+ 0x1.000001000000000000000000008p-120, false, false,
8640+ false,
8641+ 0x1.000001p-120, false, false,
8642+ 0x1.000001p-120, false, false,
8643+ 0x1.000001p-120, false, false,
8644+ 0x1.0000010000000000000000000001p-120, false, false),
8645 TEST ("7.5231647420936572188828392294093056435857835827090029386261"
8646 "048447055721499765468252007849514484405517578125e-37",
8647 true,
8648- 0x1.000002p-120, false,
8649- 0x1.000002p-120, false,
8650- 0x1.000002p-120, false,
8651- 0x1.000002p-120, false,
8652- true,
8653- 0x1.000002p-120, false,
8654- 0x1.000002p-120, false,
8655- 0x1.000002p-120, false,
8656- 0x1.000002p-120, false,
8657- true,
8658- 0x1.000002p-120, false,
8659- 0x1.000002p-120, false,
8660- 0x1.000002p-120, false,
8661- 0x1.000002p-120, false,
8662- true,
8663- 0x1.000002p-120, false,
8664- 0x1.000002p-120, false,
8665- 0x1.000002p-120, false,
8666- 0x1.000002p-120, false,
8667- true,
8668- 0x1.000002p-120, false,
8669- 0x1.000002p-120, false,
8670- 0x1.000002p-120, false,
8671- 0x1.000002p-120, false,
8672- true,
8673- 0x1.000002p-120, false,
8674- 0x1.000002p-120, false,
8675- 0x1.000002p-120, false,
8676- 0x1.000002p-120, false),
8677+ 0x1.000002p-120, false, false,
8678+ 0x1.000002p-120, false, false,
8679+ 0x1.000002p-120, false, false,
8680+ 0x1.000002p-120, false, false,
8681+ true,
8682+ 0x1.000002p-120, false, false,
8683+ 0x1.000002p-120, false, false,
8684+ 0x1.000002p-120, false, false,
8685+ 0x1.000002p-120, false, false,
8686+ true,
8687+ 0x1.000002p-120, false, false,
8688+ 0x1.000002p-120, false, false,
8689+ 0x1.000002p-120, false, false,
8690+ 0x1.000002p-120, false, false,
8691+ true,
8692+ 0x1.000002p-120, false, false,
8693+ 0x1.000002p-120, false, false,
8694+ 0x1.000002p-120, false, false,
8695+ 0x1.000002p-120, false, false,
8696+ true,
8697+ 0x1.000002p-120, false, false,
8698+ 0x1.000002p-120, false, false,
8699+ 0x1.000002p-120, false, false,
8700+ 0x1.000002p-120, false, false,
8701+ true,
8702+ 0x1.000002p-120, false, false,
8703+ 0x1.000002p-120, false, false,
8704+ 0x1.000002p-120, false, false,
8705+ 0x1.000002p-120, false, false),
8706 TEST ("7.5231651905091658028243019250027722963589455923928243391111"
8707 "518069674229947096932846761774271726608276367187499e-37",
8708 false,
8709- 0x1.000002p-120, false,
8710- 0x1.000002p-120, false,
8711- 0x1.000002p-120, false,
8712- 0x1.000004p-120, false,
8713- false,
8714- 0x1.000002fffffffp-120, false,
8715- 0x1.000003p-120, false,
8716- 0x1.000002fffffffp-120, false,
8717- 0x1.000003p-120, false,
8718- false,
8719- 0x1.000002fffffffffep-120, false,
8720- 0x1.000003p-120, false,
8721- 0x1.000002fffffffffep-120, false,
8722- 0x1.000003p-120, false,
8723- false,
8724- 0x1.000002fffffffffep-120, false,
8725- 0x1.000003p-120, false,
8726- 0x1.000002fffffffffep-120, false,
8727- 0x1.000003p-120, false,
8728- false,
8729- 0x1.000002ffffffffffffffffffff8p-120, false,
8730- 0x1.000003p-120, false,
8731- 0x1.000002ffffffffffffffffffff8p-120, false,
8732- 0x1.000003p-120, false,
8733- false,
8734- 0x1.000002ffffffffffffffffffffffp-120, false,
8735- 0x1.000003p-120, false,
8736- 0x1.000002ffffffffffffffffffffffp-120, false,
8737- 0x1.000003p-120, false),
8738+ 0x1.000002p-120, false, false,
8739+ 0x1.000002p-120, false, false,
8740+ 0x1.000002p-120, false, false,
8741+ 0x1.000004p-120, false, false,
8742+ false,
8743+ 0x1.000002fffffffp-120, false, false,
8744+ 0x1.000003p-120, false, false,
8745+ 0x1.000002fffffffp-120, false, false,
8746+ 0x1.000003p-120, false, false,
8747+ false,
8748+ 0x1.000002fffffffffep-120, false, false,
8749+ 0x1.000003p-120, false, false,
8750+ 0x1.000002fffffffffep-120, false, false,
8751+ 0x1.000003p-120, false, false,
8752+ false,
8753+ 0x1.000002fffffffffep-120, false, false,
8754+ 0x1.000003p-120, false, false,
8755+ 0x1.000002fffffffffep-120, false, false,
8756+ 0x1.000003p-120, false, false,
8757+ false,
8758+ 0x1.000002ffffffffffffffffffff8p-120, false, false,
8759+ 0x1.000003p-120, false, false,
8760+ 0x1.000002ffffffffffffffffffff8p-120, false, false,
8761+ 0x1.000003p-120, false, false,
8762+ false,
8763+ 0x1.000002ffffffffffffffffffffffp-120, false, false,
8764+ 0x1.000003p-120, false, false,
8765+ 0x1.000002ffffffffffffffffffffffp-120, false, false,
8766+ 0x1.000003p-120, false, false),
8767 TEST ("7.5231651905091658028243019250027722963589455923928243391111"
8768 "5180696742299470969328467617742717266082763671875e-37",
8769 false,
8770- 0x1.000002p-120, false,
8771- 0x1.000004p-120, false,
8772- 0x1.000002p-120, false,
8773- 0x1.000004p-120, false,
8774- true,
8775- 0x1.000003p-120, false,
8776- 0x1.000003p-120, false,
8777- 0x1.000003p-120, false,
8778- 0x1.000003p-120, false,
8779- true,
8780- 0x1.000003p-120, false,
8781- 0x1.000003p-120, false,
8782- 0x1.000003p-120, false,
8783- 0x1.000003p-120, false,
8784- true,
8785- 0x1.000003p-120, false,
8786- 0x1.000003p-120, false,
8787- 0x1.000003p-120, false,
8788- 0x1.000003p-120, false,
8789- true,
8790- 0x1.000003p-120, false,
8791- 0x1.000003p-120, false,
8792- 0x1.000003p-120, false,
8793- 0x1.000003p-120, false,
8794- true,
8795- 0x1.000003p-120, false,
8796- 0x1.000003p-120, false,
8797- 0x1.000003p-120, false,
8798- 0x1.000003p-120, false),
8799+ 0x1.000002p-120, false, false,
8800+ 0x1.000004p-120, false, false,
8801+ 0x1.000002p-120, false, false,
8802+ 0x1.000004p-120, false, false,
8803+ true,
8804+ 0x1.000003p-120, false, false,
8805+ 0x1.000003p-120, false, false,
8806+ 0x1.000003p-120, false, false,
8807+ 0x1.000003p-120, false, false,
8808+ true,
8809+ 0x1.000003p-120, false, false,
8810+ 0x1.000003p-120, false, false,
8811+ 0x1.000003p-120, false, false,
8812+ 0x1.000003p-120, false, false,
8813+ true,
8814+ 0x1.000003p-120, false, false,
8815+ 0x1.000003p-120, false, false,
8816+ 0x1.000003p-120, false, false,
8817+ 0x1.000003p-120, false, false,
8818+ true,
8819+ 0x1.000003p-120, false, false,
8820+ 0x1.000003p-120, false, false,
8821+ 0x1.000003p-120, false, false,
8822+ 0x1.000003p-120, false, false,
8823+ true,
8824+ 0x1.000003p-120, false, false,
8825+ 0x1.000003p-120, false, false,
8826+ 0x1.000003p-120, false, false,
8827+ 0x1.000003p-120, false, false),
8828 TEST ("7.5231651905091658028243019250027722963589455923928243391111"
8829 "518069674229947096932846761774271726608276367187501e-37",
8830 false,
8831- 0x1.000002p-120, false,
8832- 0x1.000004p-120, false,
8833- 0x1.000002p-120, false,
8834- 0x1.000004p-120, false,
8835- false,
8836- 0x1.000003p-120, false,
8837- 0x1.000003p-120, false,
8838- 0x1.000003p-120, false,
8839- 0x1.0000030000001p-120, false,
8840- false,
8841- 0x1.000003p-120, false,
8842- 0x1.000003p-120, false,
8843- 0x1.000003p-120, false,
8844- 0x1.0000030000000002p-120, false,
8845- false,
8846- 0x1.000003p-120, false,
8847- 0x1.000003p-120, false,
8848- 0x1.000003p-120, false,
8849- 0x1.0000030000000002p-120, false,
8850- false,
8851- 0x1.000003p-120, false,
8852- 0x1.000003p-120, false,
8853- 0x1.000003p-120, false,
8854- 0x1.000003000000000000000000008p-120, false,
8855- false,
8856- 0x1.000003p-120, false,
8857- 0x1.000003p-120, false,
8858- 0x1.000003p-120, false,
8859- 0x1.0000030000000000000000000001p-120, false),
8860+ 0x1.000002p-120, false, false,
8861+ 0x1.000004p-120, false, false,
8862+ 0x1.000002p-120, false, false,
8863+ 0x1.000004p-120, false, false,
8864+ false,
8865+ 0x1.000003p-120, false, false,
8866+ 0x1.000003p-120, false, false,
8867+ 0x1.000003p-120, false, false,
8868+ 0x1.0000030000001p-120, false, false,
8869+ false,
8870+ 0x1.000003p-120, false, false,
8871+ 0x1.000003p-120, false, false,
8872+ 0x1.000003p-120, false, false,
8873+ 0x1.0000030000000002p-120, false, false,
8874+ false,
8875+ 0x1.000003p-120, false, false,
8876+ 0x1.000003p-120, false, false,
8877+ 0x1.000003p-120, false, false,
8878+ 0x1.0000030000000002p-120, false, false,
8879+ false,
8880+ 0x1.000003p-120, false, false,
8881+ 0x1.000003p-120, false, false,
8882+ 0x1.000003p-120, false, false,
8883+ 0x1.000003000000000000000000008p-120, false, false,
8884+ false,
8885+ 0x1.000003p-120, false, false,
8886+ 0x1.000003p-120, false, false,
8887+ 0x1.000003p-120, false, false,
8888+ 0x1.0000030000000000000000000001p-120, false, false),
8889 TEST ("7.5231656389246743867657646205962389491321076020766457395961"
8890 "98769229273839442839744151569902896881103515625e-37",
8891 true,
8892- 0x1.000004p-120, false,
8893- 0x1.000004p-120, false,
8894- 0x1.000004p-120, false,
8895- 0x1.000004p-120, false,
8896- true,
8897- 0x1.000004p-120, false,
8898- 0x1.000004p-120, false,
8899- 0x1.000004p-120, false,
8900- 0x1.000004p-120, false,
8901- true,
8902- 0x1.000004p-120, false,
8903- 0x1.000004p-120, false,
8904- 0x1.000004p-120, false,
8905- 0x1.000004p-120, false,
8906- true,
8907- 0x1.000004p-120, false,
8908- 0x1.000004p-120, false,
8909- 0x1.000004p-120, false,
8910- 0x1.000004p-120, false,
8911- true,
8912- 0x1.000004p-120, false,
8913- 0x1.000004p-120, false,
8914- 0x1.000004p-120, false,
8915- 0x1.000004p-120, false,
8916- true,
8917- 0x1.000004p-120, false,
8918- 0x1.000004p-120, false,
8919- 0x1.000004p-120, false,
8920- 0x1.000004p-120, false),
8921+ 0x1.000004p-120, false, false,
8922+ 0x1.000004p-120, false, false,
8923+ 0x1.000004p-120, false, false,
8924+ 0x1.000004p-120, false, false,
8925+ true,
8926+ 0x1.000004p-120, false, false,
8927+ 0x1.000004p-120, false, false,
8928+ 0x1.000004p-120, false, false,
8929+ 0x1.000004p-120, false, false,
8930+ true,
8931+ 0x1.000004p-120, false, false,
8932+ 0x1.000004p-120, false, false,
8933+ 0x1.000004p-120, false, false,
8934+ 0x1.000004p-120, false, false,
8935+ true,
8936+ 0x1.000004p-120, false, false,
8937+ 0x1.000004p-120, false, false,
8938+ 0x1.000004p-120, false, false,
8939+ 0x1.000004p-120, false, false,
8940+ true,
8941+ 0x1.000004p-120, false, false,
8942+ 0x1.000004p-120, false, false,
8943+ 0x1.000004p-120, false, false,
8944+ 0x1.000004p-120, false, false,
8945+ true,
8946+ 0x1.000004p-120, false, false,
8947+ 0x1.000004p-120, false, false,
8948+ 0x1.000004p-120, false, false,
8949+ 0x1.000004p-120, false, false),
8950 TEST ("340282356779733661637539395458142568447.999",
8951 false,
8952- 0xf.fffffp+124, false,
8953- 0xf.fffffp+124, false,
8954- 0xf.fffffp+124, false,
8955- INF, true,
8956- false,
8957- 0xf.fffff7ffffff8p+124, false,
8958- 0xf.fffff8p+124, false,
8959- 0xf.fffff7ffffff8p+124, false,
8960- 0xf.fffff8p+124, false,
8961- false,
8962- 0xf.fffff7fffffffffp+124, false,
8963- 0xf.fffff8p+124, false,
8964- 0xf.fffff7fffffffffp+124, false,
8965- 0xf.fffff8p+124, false,
8966- false,
8967- 0xf.fffff7fffffffffp+124, false,
8968- 0xf.fffff8p+124, false,
8969- 0xf.fffff7fffffffffp+124, false,
8970- 0xf.fffff8p+124, false,
8971- false,
8972- 0xf.fffff7fffffffffffffffffffcp+124, false,
8973- 0xf.fffff8p+124, false,
8974- 0xf.fffff7fffffffffffffffffffcp+124, false,
8975- 0xf.fffff8p+124, false,
8976- false,
8977- 0xf.fffff7fffffffffffffffffffff8p+124, false,
8978- 0xf.fffff8p+124, false,
8979- 0xf.fffff7fffffffffffffffffffff8p+124, false,
8980- 0xf.fffff8p+124, false),
8981+ 0xf.fffffp+124, false, false,
8982+ 0xf.fffffp+124, false, false,
8983+ 0xf.fffffp+124, false, false,
8984+ INF, true, false,
8985+ false,
8986+ 0xf.fffff7ffffff8p+124, false, false,
8987+ 0xf.fffff8p+124, false, false,
8988+ 0xf.fffff7ffffff8p+124, false, false,
8989+ 0xf.fffff8p+124, false, false,
8990+ false,
8991+ 0xf.fffff7fffffffffp+124, false, false,
8992+ 0xf.fffff8p+124, false, false,
8993+ 0xf.fffff7fffffffffp+124, false, false,
8994+ 0xf.fffff8p+124, false, false,
8995+ false,
8996+ 0xf.fffff7fffffffffp+124, false, false,
8997+ 0xf.fffff8p+124, false, false,
8998+ 0xf.fffff7fffffffffp+124, false, false,
8999+ 0xf.fffff8p+124, false, false,
9000+ false,
9001+ 0xf.fffff7fffffffffffffffffffcp+124, false, false,
9002+ 0xf.fffff8p+124, false, false,
9003+ 0xf.fffff7fffffffffffffffffffcp+124, false, false,
9004+ 0xf.fffff8p+124, false, false,
9005+ false,
9006+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false,
9007+ 0xf.fffff8p+124, false, false,
9008+ 0xf.fffff7fffffffffffffffffffff8p+124, false, false,
9009+ 0xf.fffff8p+124, false, false),
9010 TEST ("340282356779733661637539395458142568448",
9011 false,
9012- 0xf.fffffp+124, false,
9013- INF, true,
9014- 0xf.fffffp+124, false,
9015- INF, true,
9016- true,
9017- 0xf.fffff8p+124, false,
9018- 0xf.fffff8p+124, false,
9019- 0xf.fffff8p+124, false,
9020- 0xf.fffff8p+124, false,
9021- true,
9022- 0xf.fffff8p+124, false,
9023- 0xf.fffff8p+124, false,
9024- 0xf.fffff8p+124, false,
9025- 0xf.fffff8p+124, false,
9026- true,
9027- 0xf.fffff8p+124, false,
9028- 0xf.fffff8p+124, false,
9029- 0xf.fffff8p+124, false,
9030- 0xf.fffff8p+124, false,
9031- true,
9032- 0xf.fffff8p+124, false,
9033- 0xf.fffff8p+124, false,
9034- 0xf.fffff8p+124, false,
9035- 0xf.fffff8p+124, false,
9036- true,
9037- 0xf.fffff8p+124, false,
9038- 0xf.fffff8p+124, false,
9039- 0xf.fffff8p+124, false,
9040- 0xf.fffff8p+124, false),
9041+ 0xf.fffffp+124, false, false,
9042+ INF, true, false,
9043+ 0xf.fffffp+124, false, false,
9044+ INF, true, false,
9045+ true,
9046+ 0xf.fffff8p+124, false, false,
9047+ 0xf.fffff8p+124, false, false,
9048+ 0xf.fffff8p+124, false, false,
9049+ 0xf.fffff8p+124, false, false,
9050+ true,
9051+ 0xf.fffff8p+124, false, false,
9052+ 0xf.fffff8p+124, false, false,
9053+ 0xf.fffff8p+124, false, false,
9054+ 0xf.fffff8p+124, false, false,
9055+ true,
9056+ 0xf.fffff8p+124, false, false,
9057+ 0xf.fffff8p+124, false, false,
9058+ 0xf.fffff8p+124, false, false,
9059+ 0xf.fffff8p+124, false, false,
9060+ true,
9061+ 0xf.fffff8p+124, false, false,
9062+ 0xf.fffff8p+124, false, false,
9063+ 0xf.fffff8p+124, false, false,
9064+ 0xf.fffff8p+124, false, false,
9065+ true,
9066+ 0xf.fffff8p+124, false, false,
9067+ 0xf.fffff8p+124, false, false,
9068+ 0xf.fffff8p+124, false, false,
9069+ 0xf.fffff8p+124, false, false),
9070 TEST ("340282356779733661637539395458142568448.001",
9071 false,
9072- 0xf.fffffp+124, false,
9073- INF, true,
9074- 0xf.fffffp+124, false,
9075- INF, true,
9076- false,
9077- 0xf.fffff8p+124, false,
9078- 0xf.fffff8p+124, false,
9079- 0xf.fffff8p+124, false,
9080- 0xf.fffff80000008p+124, false,
9081- false,
9082- 0xf.fffff8p+124, false,
9083- 0xf.fffff8p+124, false,
9084- 0xf.fffff8p+124, false,
9085- 0xf.fffff8000000001p+124, false,
9086- false,
9087- 0xf.fffff8p+124, false,
9088- 0xf.fffff8p+124, false,
9089- 0xf.fffff8p+124, false,
9090- 0xf.fffff8000000001p+124, false,
9091- false,
9092- 0xf.fffff8p+124, false,
9093- 0xf.fffff8p+124, false,
9094- 0xf.fffff8p+124, false,
9095- 0xf.fffff800000000000000000004p+124, false,
9096- false,
9097- 0xf.fffff8p+124, false,
9098- 0xf.fffff8p+124, false,
9099- 0xf.fffff8p+124, false,
9100- 0xf.fffff80000000000000000000008p+124, false),
9101+ 0xf.fffffp+124, false, false,
9102+ INF, true, false,
9103+ 0xf.fffffp+124, false, false,
9104+ INF, true, false,
9105+ false,
9106+ 0xf.fffff8p+124, false, false,
9107+ 0xf.fffff8p+124, false, false,
9108+ 0xf.fffff8p+124, false, false,
9109+ 0xf.fffff80000008p+124, false, false,
9110+ false,
9111+ 0xf.fffff8p+124, false, false,
9112+ 0xf.fffff8p+124, false, false,
9113+ 0xf.fffff8p+124, false, false,
9114+ 0xf.fffff8000000001p+124, false, false,
9115+ false,
9116+ 0xf.fffff8p+124, false, false,
9117+ 0xf.fffff8p+124, false, false,
9118+ 0xf.fffff8p+124, false, false,
9119+ 0xf.fffff8000000001p+124, false, false,
9120+ false,
9121+ 0xf.fffff8p+124, false, false,
9122+ 0xf.fffff8p+124, false, false,
9123+ 0xf.fffff8p+124, false, false,
9124+ 0xf.fffff800000000000000000004p+124, false, false,
9125+ false,
9126+ 0xf.fffff8p+124, false, false,
9127+ 0xf.fffff8p+124, false, false,
9128+ 0xf.fffff8p+124, false, false,
9129+ 0xf.fffff80000000000000000000008p+124, false, false),
9130 TEST ("-340282356779733661637539395458142568447.999",
9131 false,
9132- -INF, true,
9133- -0xf.fffffp+124, false,
9134- -0xf.fffffp+124, false,
9135- -0xf.fffffp+124, false,
9136- false,
9137- -0xf.fffff8p+124, false,
9138- -0xf.fffff8p+124, false,
9139- -0xf.fffff7ffffff8p+124, false,
9140- -0xf.fffff7ffffff8p+124, false,
9141- false,
9142- -0xf.fffff8p+124, false,
9143- -0xf.fffff8p+124, false,
9144- -0xf.fffff7fffffffffp+124, false,
9145- -0xf.fffff7fffffffffp+124, false,
9146- false,
9147- -0xf.fffff8p+124, false,
9148- -0xf.fffff8p+124, false,
9149- -0xf.fffff7fffffffffp+124, false,
9150- -0xf.fffff7fffffffffp+124, false,
9151- false,
9152- -0xf.fffff8p+124, false,
9153- -0xf.fffff8p+124, false,
9154- -0xf.fffff7fffffffffffffffffffcp+124, false,
9155- -0xf.fffff7fffffffffffffffffffcp+124, false,
9156- false,
9157- -0xf.fffff8p+124, false,
9158- -0xf.fffff8p+124, false,
9159- -0xf.fffff7fffffffffffffffffffff8p+124, false,
9160- -0xf.fffff7fffffffffffffffffffff8p+124, false),
9161+ -INF, true, false,
9162+ -0xf.fffffp+124, false, false,
9163+ -0xf.fffffp+124, false, false,
9164+ -0xf.fffffp+124, false, false,
9165+ false,
9166+ -0xf.fffff8p+124, false, false,
9167+ -0xf.fffff8p+124, false, false,
9168+ -0xf.fffff7ffffff8p+124, false, false,
9169+ -0xf.fffff7ffffff8p+124, false, false,
9170+ false,
9171+ -0xf.fffff8p+124, false, false,
9172+ -0xf.fffff8p+124, false, false,
9173+ -0xf.fffff7fffffffffp+124, false, false,
9174+ -0xf.fffff7fffffffffp+124, false, false,
9175+ false,
9176+ -0xf.fffff8p+124, false, false,
9177+ -0xf.fffff8p+124, false, false,
9178+ -0xf.fffff7fffffffffp+124, false, false,
9179+ -0xf.fffff7fffffffffp+124, false, false,
9180+ false,
9181+ -0xf.fffff8p+124, false, false,
9182+ -0xf.fffff8p+124, false, false,
9183+ -0xf.fffff7fffffffffffffffffffcp+124, false, false,
9184+ -0xf.fffff7fffffffffffffffffffcp+124, false, false,
9185+ false,
9186+ -0xf.fffff8p+124, false, false,
9187+ -0xf.fffff8p+124, false, false,
9188+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false,
9189+ -0xf.fffff7fffffffffffffffffffff8p+124, false, false),
9190 TEST ("-340282356779733661637539395458142568448",
9191 false,
9192- -INF, true,
9193- -INF, true,
9194- -0xf.fffffp+124, false,
9195- -0xf.fffffp+124, false,
9196- true,
9197- -0xf.fffff8p+124, false,
9198- -0xf.fffff8p+124, false,
9199- -0xf.fffff8p+124, false,
9200- -0xf.fffff8p+124, false,
9201- true,
9202- -0xf.fffff8p+124, false,
9203- -0xf.fffff8p+124, false,
9204- -0xf.fffff8p+124, false,
9205- -0xf.fffff8p+124, false,
9206- true,
9207- -0xf.fffff8p+124, false,
9208- -0xf.fffff8p+124, false,
9209- -0xf.fffff8p+124, false,
9210- -0xf.fffff8p+124, false,
9211- true,
9212- -0xf.fffff8p+124, false,
9213- -0xf.fffff8p+124, false,
9214- -0xf.fffff8p+124, false,
9215- -0xf.fffff8p+124, false,
9216- true,
9217- -0xf.fffff8p+124, false,
9218- -0xf.fffff8p+124, false,
9219- -0xf.fffff8p+124, false,
9220- -0xf.fffff8p+124, false),
9221+ -INF, true, false,
9222+ -INF, true, false,
9223+ -0xf.fffffp+124, false, false,
9224+ -0xf.fffffp+124, false, false,
9225+ true,
9226+ -0xf.fffff8p+124, false, false,
9227+ -0xf.fffff8p+124, false, false,
9228+ -0xf.fffff8p+124, false, false,
9229+ -0xf.fffff8p+124, false, false,
9230+ true,
9231+ -0xf.fffff8p+124, false, false,
9232+ -0xf.fffff8p+124, false, false,
9233+ -0xf.fffff8p+124, false, false,
9234+ -0xf.fffff8p+124, false, false,
9235+ true,
9236+ -0xf.fffff8p+124, false, false,
9237+ -0xf.fffff8p+124, false, false,
9238+ -0xf.fffff8p+124, false, false,
9239+ -0xf.fffff8p+124, false, false,
9240+ true,
9241+ -0xf.fffff8p+124, false, false,
9242+ -0xf.fffff8p+124, false, false,
9243+ -0xf.fffff8p+124, false, false,
9244+ -0xf.fffff8p+124, false, false,
9245+ true,
9246+ -0xf.fffff8p+124, false, false,
9247+ -0xf.fffff8p+124, false, false,
9248+ -0xf.fffff8p+124, false, false,
9249+ -0xf.fffff8p+124, false, false),
9250 TEST ("-340282356779733661637539395458142568448.001",
9251 false,
9252- -INF, true,
9253- -INF, true,
9254- -0xf.fffffp+124, false,
9255- -0xf.fffffp+124, false,
9256- false,
9257- -0xf.fffff80000008p+124, false,
9258- -0xf.fffff8p+124, false,
9259- -0xf.fffff8p+124, false,
9260- -0xf.fffff8p+124, false,
9261- false,
9262- -0xf.fffff8000000001p+124, false,
9263- -0xf.fffff8p+124, false,
9264- -0xf.fffff8p+124, false,
9265- -0xf.fffff8p+124, false,
9266- false,
9267- -0xf.fffff8000000001p+124, false,
9268- -0xf.fffff8p+124, false,
9269- -0xf.fffff8p+124, false,
9270- -0xf.fffff8p+124, false,
9271- false,
9272- -0xf.fffff800000000000000000004p+124, false,
9273- -0xf.fffff8p+124, false,
9274- -0xf.fffff8p+124, false,
9275- -0xf.fffff8p+124, false,
9276- false,
9277- -0xf.fffff80000000000000000000008p+124, false,
9278- -0xf.fffff8p+124, false,
9279- -0xf.fffff8p+124, false,
9280- -0xf.fffff8p+124, false),
9281+ -INF, true, false,
9282+ -INF, true, false,
9283+ -0xf.fffffp+124, false, false,
9284+ -0xf.fffffp+124, false, false,
9285+ false,
9286+ -0xf.fffff80000008p+124, false, false,
9287+ -0xf.fffff8p+124, false, false,
9288+ -0xf.fffff8p+124, false, false,
9289+ -0xf.fffff8p+124, false, false,
9290+ false,
9291+ -0xf.fffff8000000001p+124, false, false,
9292+ -0xf.fffff8p+124, false, false,
9293+ -0xf.fffff8p+124, false, false,
9294+ -0xf.fffff8p+124, false, false,
9295+ false,
9296+ -0xf.fffff8000000001p+124, false, false,
9297+ -0xf.fffff8p+124, false, false,
9298+ -0xf.fffff8p+124, false, false,
9299+ -0xf.fffff8p+124, false, false,
9300+ false,
9301+ -0xf.fffff800000000000000000004p+124, false, false,
9302+ -0xf.fffff8p+124, false, false,
9303+ -0xf.fffff8p+124, false, false,
9304+ -0xf.fffff8p+124, false, false,
9305+ false,
9306+ -0xf.fffff80000000000000000000008p+124, false, false,
9307+ -0xf.fffff8p+124, false, false,
9308+ -0xf.fffff8p+124, false, false,
9309+ -0xf.fffff8p+124, false, false),
9310 TEST ("179769313486231580793728971405303415079934132710037826936173"
9311 "778980444968292764750946649017977587207096330286416692887910"
9312 "946555547851940402630657488671505820681908902000708383676273"
9313@@ -1855,35 +1855,35 @@ static const struct test tests[] = {
9314 "936475292719074168444365510704342711559699508093042880177904"
9315 "174497791.999",
9316 false,
9317- 0xf.fffffp+124, true,
9318- INF, true,
9319- 0xf.fffffp+124, true,
9320- INF, true,
9321- false,
9322- 0xf.ffffffffffff8p+1020, false,
9323- 0xf.ffffffffffff8p+1020, false,
9324- 0xf.ffffffffffff8p+1020, false,
9325- INF, true,
9326- false,
9327- 0xf.ffffffffffffbffp+1020, false,
9328- 0xf.ffffffffffffcp+1020, false,
9329- 0xf.ffffffffffffbffp+1020, false,
9330- 0xf.ffffffffffffcp+1020, false,
9331- false,
9332- 0xf.ffffffffffffbffp+1020, false,
9333- 0xf.ffffffffffffcp+1020, false,
9334- 0xf.ffffffffffffbffp+1020, false,
9335- 0xf.ffffffffffffcp+1020, false,
9336- false,
9337- 0xf.ffffffffffffbffffffffffffcp+1020, false,
9338- 0xf.ffffffffffffcp+1020, true,
9339- 0xf.ffffffffffffbffffffffffffcp+1020, false,
9340- 0xf.ffffffffffffcp+1020, true,
9341- false,
9342- 0xf.ffffffffffffbffffffffffffff8p+1020, false,
9343- 0xf.ffffffffffffcp+1020, false,
9344- 0xf.ffffffffffffbffffffffffffff8p+1020, false,
9345- 0xf.ffffffffffffcp+1020, false),
9346+ 0xf.fffffp+124, true, false,
9347+ INF, true, false,
9348+ 0xf.fffffp+124, true, false,
9349+ INF, true, false,
9350+ false,
9351+ 0xf.ffffffffffff8p+1020, false, false,
9352+ 0xf.ffffffffffff8p+1020, false, false,
9353+ 0xf.ffffffffffff8p+1020, false, false,
9354+ INF, true, false,
9355+ false,
9356+ 0xf.ffffffffffffbffp+1020, false, false,
9357+ 0xf.ffffffffffffcp+1020, false, false,
9358+ 0xf.ffffffffffffbffp+1020, false, false,
9359+ 0xf.ffffffffffffcp+1020, false, false,
9360+ false,
9361+ 0xf.ffffffffffffbffp+1020, false, false,
9362+ 0xf.ffffffffffffcp+1020, false, false,
9363+ 0xf.ffffffffffffbffp+1020, false, false,
9364+ 0xf.ffffffffffffcp+1020, false, false,
9365+ false,
9366+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false,
9367+ 0xf.ffffffffffffcp+1020, true, false,
9368+ 0xf.ffffffffffffbffffffffffffcp+1020, false, false,
9369+ 0xf.ffffffffffffcp+1020, true, false,
9370+ false,
9371+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
9372+ 0xf.ffffffffffffcp+1020, false, false,
9373+ 0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
9374+ 0xf.ffffffffffffcp+1020, false, false),
9375 TEST ("179769313486231580793728971405303415079934132710037826936173"
9376 "778980444968292764750946649017977587207096330286416692887910"
9377 "946555547851940402630657488671505820681908902000708383676273"
9378@@ -1891,35 +1891,35 @@ static const struct test tests[] = {
9379 "936475292719074168444365510704342711559699508093042880177904"
9380 "174497792",
9381 false,
9382- 0xf.fffffp+124, true,
9383- INF, true,
9384- 0xf.fffffp+124, true,
9385- INF, true,
9386- false,
9387- 0xf.ffffffffffff8p+1020, false,
9388- INF, true,
9389- 0xf.ffffffffffff8p+1020, false,
9390- INF, true,
9391- true,
9392- 0xf.ffffffffffffcp+1020, false,
9393- 0xf.ffffffffffffcp+1020, false,
9394- 0xf.ffffffffffffcp+1020, false,
9395- 0xf.ffffffffffffcp+1020, false,
9396- true,
9397- 0xf.ffffffffffffcp+1020, false,
9398- 0xf.ffffffffffffcp+1020, false,
9399- 0xf.ffffffffffffcp+1020, false,
9400- 0xf.ffffffffffffcp+1020, false,
9401- false,
9402- 0xf.ffffffffffffcp+1020, true,
9403- 0xf.ffffffffffffcp+1020, true,
9404- 0xf.ffffffffffffcp+1020, true,
9405- 0xf.ffffffffffffcp+1020, true,
9406- true,
9407- 0xf.ffffffffffffcp+1020, false,
9408- 0xf.ffffffffffffcp+1020, false,
9409- 0xf.ffffffffffffcp+1020, false,
9410- 0xf.ffffffffffffcp+1020, false),
9411+ 0xf.fffffp+124, true, false,
9412+ INF, true, false,
9413+ 0xf.fffffp+124, true, false,
9414+ INF, true, false,
9415+ false,
9416+ 0xf.ffffffffffff8p+1020, false, false,
9417+ INF, true, false,
9418+ 0xf.ffffffffffff8p+1020, false, false,
9419+ INF, true, false,
9420+ true,
9421+ 0xf.ffffffffffffcp+1020, false, false,
9422+ 0xf.ffffffffffffcp+1020, false, false,
9423+ 0xf.ffffffffffffcp+1020, false, false,
9424+ 0xf.ffffffffffffcp+1020, false, false,
9425+ true,
9426+ 0xf.ffffffffffffcp+1020, false, false,
9427+ 0xf.ffffffffffffcp+1020, false, false,
9428+ 0xf.ffffffffffffcp+1020, false, false,
9429+ 0xf.ffffffffffffcp+1020, false, false,
9430+ false,
9431+ 0xf.ffffffffffffcp+1020, true, false,
9432+ 0xf.ffffffffffffcp+1020, true, false,
9433+ 0xf.ffffffffffffcp+1020, true, false,
9434+ 0xf.ffffffffffffcp+1020, true, false,
9435+ true,
9436+ 0xf.ffffffffffffcp+1020, false, false,
9437+ 0xf.ffffffffffffcp+1020, false, false,
9438+ 0xf.ffffffffffffcp+1020, false, false,
9439+ 0xf.ffffffffffffcp+1020, false, false),
9440 TEST ("179769313486231580793728971405303415079934132710037826936173"
9441 "778980444968292764750946649017977587207096330286416692887910"
9442 "946555547851940402630657488671505820681908902000708383676273"
9443@@ -1927,35 +1927,35 @@ static const struct test tests[] = {
9444 "936475292719074168444365510704342711559699508093042880177904"
9445 "174497792.001",
9446 false,
9447- 0xf.fffffp+124, true,
9448- INF, true,
9449- 0xf.fffffp+124, true,
9450- INF, true,
9451- false,
9452- 0xf.ffffffffffff8p+1020, false,
9453- INF, true,
9454- 0xf.ffffffffffff8p+1020, false,
9455- INF, true,
9456- false,
9457- 0xf.ffffffffffffcp+1020, false,
9458- 0xf.ffffffffffffcp+1020, false,
9459- 0xf.ffffffffffffcp+1020, false,
9460- 0xf.ffffffffffffc01p+1020, false,
9461- false,
9462- 0xf.ffffffffffffcp+1020, false,
9463- 0xf.ffffffffffffcp+1020, false,
9464- 0xf.ffffffffffffcp+1020, false,
9465- 0xf.ffffffffffffc01p+1020, false,
9466- false,
9467- 0xf.ffffffffffffcp+1020, true,
9468- 0xf.ffffffffffffcp+1020, true,
9469- 0xf.ffffffffffffcp+1020, true,
9470- 0xf.ffffffffffffc0000000000004p+1020, true,
9471- false,
9472- 0xf.ffffffffffffcp+1020, false,
9473- 0xf.ffffffffffffcp+1020, false,
9474- 0xf.ffffffffffffcp+1020, false,
9475- 0xf.ffffffffffffc000000000000008p+1020, false),
9476+ 0xf.fffffp+124, true, false,
9477+ INF, true, false,
9478+ 0xf.fffffp+124, true, false,
9479+ INF, true, false,
9480+ false,
9481+ 0xf.ffffffffffff8p+1020, false, false,
9482+ INF, true, false,
9483+ 0xf.ffffffffffff8p+1020, false, false,
9484+ INF, true, false,
9485+ false,
9486+ 0xf.ffffffffffffcp+1020, false, false,
9487+ 0xf.ffffffffffffcp+1020, false, false,
9488+ 0xf.ffffffffffffcp+1020, false, false,
9489+ 0xf.ffffffffffffc01p+1020, false, false,
9490+ false,
9491+ 0xf.ffffffffffffcp+1020, false, false,
9492+ 0xf.ffffffffffffcp+1020, false, false,
9493+ 0xf.ffffffffffffcp+1020, false, false,
9494+ 0xf.ffffffffffffc01p+1020, false, false,
9495+ false,
9496+ 0xf.ffffffffffffcp+1020, true, false,
9497+ 0xf.ffffffffffffcp+1020, true, false,
9498+ 0xf.ffffffffffffcp+1020, true, false,
9499+ 0xf.ffffffffffffc0000000000004p+1020, true, false,
9500+ false,
9501+ 0xf.ffffffffffffcp+1020, false, false,
9502+ 0xf.ffffffffffffcp+1020, false, false,
9503+ 0xf.ffffffffffffcp+1020, false, false,
9504+ 0xf.ffffffffffffc000000000000008p+1020, false, false),
9505 TEST ("-17976931348623158079372897140530341507993413271003782693617"
9506 "377898044496829276475094664901797758720709633028641669288791"
9507 "094655554785194040263065748867150582068190890200070838367627"
9508@@ -1963,35 +1963,35 @@ static const struct test tests[] = {
9509 "493647529271907416844436551070434271155969950809304288017790"
9510 "4174497791.999",
9511 false,
9512- -INF, true,
9513- -INF, true,
9514- -0xf.fffffp+124, true,
9515- -0xf.fffffp+124, true,
9516- false,
9517- -INF, true,
9518- -0xf.ffffffffffff8p+1020, false,
9519- -0xf.ffffffffffff8p+1020, false,
9520- -0xf.ffffffffffff8p+1020, false,
9521- false,
9522- -0xf.ffffffffffffcp+1020, false,
9523- -0xf.ffffffffffffcp+1020, false,
9524- -0xf.ffffffffffffbffp+1020, false,
9525- -0xf.ffffffffffffbffp+1020, false,
9526- false,
9527- -0xf.ffffffffffffcp+1020, false,
9528- -0xf.ffffffffffffcp+1020, false,
9529- -0xf.ffffffffffffbffp+1020, false,
9530- -0xf.ffffffffffffbffp+1020, false,
9531- false,
9532- -0xf.ffffffffffffcp+1020, true,
9533- -0xf.ffffffffffffcp+1020, true,
9534- -0xf.ffffffffffffbffffffffffffcp+1020, false,
9535- -0xf.ffffffffffffbffffffffffffcp+1020, false,
9536- false,
9537- -0xf.ffffffffffffcp+1020, false,
9538- -0xf.ffffffffffffcp+1020, false,
9539- -0xf.ffffffffffffbffffffffffffff8p+1020, false,
9540- -0xf.ffffffffffffbffffffffffffff8p+1020, false),
9541+ -INF, true, false,
9542+ -INF, true, false,
9543+ -0xf.fffffp+124, true, false,
9544+ -0xf.fffffp+124, true, false,
9545+ false,
9546+ -INF, true, false,
9547+ -0xf.ffffffffffff8p+1020, false, false,
9548+ -0xf.ffffffffffff8p+1020, false, false,
9549+ -0xf.ffffffffffff8p+1020, false, false,
9550+ false,
9551+ -0xf.ffffffffffffcp+1020, false, false,
9552+ -0xf.ffffffffffffcp+1020, false, false,
9553+ -0xf.ffffffffffffbffp+1020, false, false,
9554+ -0xf.ffffffffffffbffp+1020, false, false,
9555+ false,
9556+ -0xf.ffffffffffffcp+1020, false, false,
9557+ -0xf.ffffffffffffcp+1020, false, false,
9558+ -0xf.ffffffffffffbffp+1020, false, false,
9559+ -0xf.ffffffffffffbffp+1020, false, false,
9560+ false,
9561+ -0xf.ffffffffffffcp+1020, true, false,
9562+ -0xf.ffffffffffffcp+1020, true, false,
9563+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false,
9564+ -0xf.ffffffffffffbffffffffffffcp+1020, false, false,
9565+ false,
9566+ -0xf.ffffffffffffcp+1020, false, false,
9567+ -0xf.ffffffffffffcp+1020, false, false,
9568+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false,
9569+ -0xf.ffffffffffffbffffffffffffff8p+1020, false, false),
9570 TEST ("-17976931348623158079372897140530341507993413271003782693617"
9571 "377898044496829276475094664901797758720709633028641669288791"
9572 "094655554785194040263065748867150582068190890200070838367627"
9573@@ -1999,35 +1999,35 @@ static const struct test tests[] = {
9574 "493647529271907416844436551070434271155969950809304288017790"
9575 "4174497792",
9576 false,
9577- -INF, true,
9578- -INF, true,
9579- -0xf.fffffp+124, true,
9580- -0xf.fffffp+124, true,
9581- false,
9582- -INF, true,
9583- -INF, true,
9584- -0xf.ffffffffffff8p+1020, false,
9585- -0xf.ffffffffffff8p+1020, false,
9586- true,
9587- -0xf.ffffffffffffcp+1020, false,
9588- -0xf.ffffffffffffcp+1020, false,
9589- -0xf.ffffffffffffcp+1020, false,
9590- -0xf.ffffffffffffcp+1020, false,
9591- true,
9592- -0xf.ffffffffffffcp+1020, false,
9593- -0xf.ffffffffffffcp+1020, false,
9594- -0xf.ffffffffffffcp+1020, false,
9595- -0xf.ffffffffffffcp+1020, false,
9596- false,
9597- -0xf.ffffffffffffcp+1020, true,
9598- -0xf.ffffffffffffcp+1020, true,
9599- -0xf.ffffffffffffcp+1020, true,
9600- -0xf.ffffffffffffcp+1020, true,
9601- true,
9602- -0xf.ffffffffffffcp+1020, false,
9603- -0xf.ffffffffffffcp+1020, false,
9604- -0xf.ffffffffffffcp+1020, false,
9605- -0xf.ffffffffffffcp+1020, false),
9606+ -INF, true, false,
9607+ -INF, true, false,
9608+ -0xf.fffffp+124, true, false,
9609+ -0xf.fffffp+124, true, false,
9610+ false,
9611+ -INF, true, false,
9612+ -INF, true, false,
9613+ -0xf.ffffffffffff8p+1020, false, false,
9614+ -0xf.ffffffffffff8p+1020, false, false,
9615+ true,
9616+ -0xf.ffffffffffffcp+1020, false, false,
9617+ -0xf.ffffffffffffcp+1020, false, false,
9618+ -0xf.ffffffffffffcp+1020, false, false,
9619+ -0xf.ffffffffffffcp+1020, false, false,
9620+ true,
9621+ -0xf.ffffffffffffcp+1020, false, false,
9622+ -0xf.ffffffffffffcp+1020, false, false,
9623+ -0xf.ffffffffffffcp+1020, false, false,
9624+ -0xf.ffffffffffffcp+1020, false, false,
9625+ false,
9626+ -0xf.ffffffffffffcp+1020, true, false,
9627+ -0xf.ffffffffffffcp+1020, true, false,
9628+ -0xf.ffffffffffffcp+1020, true, false,
9629+ -0xf.ffffffffffffcp+1020, true, false,
9630+ true,
9631+ -0xf.ffffffffffffcp+1020, false, false,
9632+ -0xf.ffffffffffffcp+1020, false, false,
9633+ -0xf.ffffffffffffcp+1020, false, false,
9634+ -0xf.ffffffffffffcp+1020, false, false),
9635 TEST ("-17976931348623158079372897140530341507993413271003782693617"
9636 "377898044496829276475094664901797758720709633028641669288791"
9637 "094655554785194040263065748867150582068190890200070838367627"
9638@@ -2035,35 +2035,35 @@ static const struct test tests[] = {
9639 "493647529271907416844436551070434271155969950809304288017790"
9640 "4174497792.001",
9641 false,
9642- -INF, true,
9643- -INF, true,
9644- -0xf.fffffp+124, true,
9645- -0xf.fffffp+124, true,
9646- false,
9647- -INF, true,
9648- -INF, true,
9649- -0xf.ffffffffffff8p+1020, false,
9650- -0xf.ffffffffffff8p+1020, false,
9651- false,
9652- -0xf.ffffffffffffc01p+1020, false,
9653- -0xf.ffffffffffffcp+1020, false,
9654- -0xf.ffffffffffffcp+1020, false,
9655- -0xf.ffffffffffffcp+1020, false,
9656- false,
9657- -0xf.ffffffffffffc01p+1020, false,
9658- -0xf.ffffffffffffcp+1020, false,
9659- -0xf.ffffffffffffcp+1020, false,
9660- -0xf.ffffffffffffcp+1020, false,
9661- false,
9662- -0xf.ffffffffffffc0000000000004p+1020, true,
9663- -0xf.ffffffffffffcp+1020, true,
9664- -0xf.ffffffffffffcp+1020, true,
9665- -0xf.ffffffffffffcp+1020, true,
9666- false,
9667- -0xf.ffffffffffffc000000000000008p+1020, false,
9668- -0xf.ffffffffffffcp+1020, false,
9669- -0xf.ffffffffffffcp+1020, false,
9670- -0xf.ffffffffffffcp+1020, false),
9671+ -INF, true, false,
9672+ -INF, true, false,
9673+ -0xf.fffffp+124, true, false,
9674+ -0xf.fffffp+124, true, false,
9675+ false,
9676+ -INF, true, false,
9677+ -INF, true, false,
9678+ -0xf.ffffffffffff8p+1020, false, false,
9679+ -0xf.ffffffffffff8p+1020, false, false,
9680+ false,
9681+ -0xf.ffffffffffffc01p+1020, false, false,
9682+ -0xf.ffffffffffffcp+1020, false, false,
9683+ -0xf.ffffffffffffcp+1020, false, false,
9684+ -0xf.ffffffffffffcp+1020, false, false,
9685+ false,
9686+ -0xf.ffffffffffffc01p+1020, false, false,
9687+ -0xf.ffffffffffffcp+1020, false, false,
9688+ -0xf.ffffffffffffcp+1020, false, false,
9689+ -0xf.ffffffffffffcp+1020, false, false,
9690+ false,
9691+ -0xf.ffffffffffffc0000000000004p+1020, true, false,
9692+ -0xf.ffffffffffffcp+1020, true, false,
9693+ -0xf.ffffffffffffcp+1020, true, false,
9694+ -0xf.ffffffffffffcp+1020, true, false,
9695+ false,
9696+ -0xf.ffffffffffffc000000000000008p+1020, false, false,
9697+ -0xf.ffffffffffffcp+1020, false, false,
9698+ -0xf.ffffffffffffcp+1020, false, false,
9699+ -0xf.ffffffffffffcp+1020, false, false),
9700 TEST ("118973149535723176505351158982948866796625400469556721895649"
9701 "927756249918185172720476044944290457046138433056764616744328"
9702 "666255526748948793023632513609765434237723241753648908036202"
9703@@ -2148,35 +2148,35 @@ static const struct test tests[] = {
9704 "578031503869424406179027994752890226443351619365453243328968"
9705 "8740976918527.999",
9706 false,
9707- 0xf.fffffp+124, true,
9708- INF, true,
9709- 0xf.fffffp+124, true,
9710- INF, true,
9711- false,
9712- 0xf.ffffffffffff8p+1020, true,
9713- INF, true,
9714- 0xf.ffffffffffff8p+1020, true,
9715- INF, true,
9716- false,
9717- 0xf.fffffffffffffffp+16380, false,
9718- 0xf.fffffffffffffffp+16380, false,
9719- 0xf.fffffffffffffffp+16380, false,
9720- INF, true,
9721- false,
9722- 0xf.fffffffffffffffp+16380, false,
9723- 0xf.fffffffffffffffp+16380, false,
9724- 0xf.fffffffffffffffp+16380, false,
9725- INF, true,
9726- false,
9727- 0xf.fffffffffffffffffffffffffcp+1020, true,
9728- INF, true,
9729- 0xf.fffffffffffffffffffffffffcp+1020, true,
9730- INF, true,
9731- false,
9732- 0xf.fffffffffffffff7fffffffffff8p+16380, false,
9733- 0xf.fffffffffffffff8p+16380, false,
9734- 0xf.fffffffffffffff7fffffffffff8p+16380, false,
9735- 0xf.fffffffffffffff8p+16380, false),
9736+ 0xf.fffffp+124, true, false,
9737+ INF, true, false,
9738+ 0xf.fffffp+124, true, false,
9739+ INF, true, false,
9740+ false,
9741+ 0xf.ffffffffffff8p+1020, true, false,
9742+ INF, true, false,
9743+ 0xf.ffffffffffff8p+1020, true, false,
9744+ INF, true, false,
9745+ false,
9746+ 0xf.fffffffffffffffp+16380, false, false,
9747+ 0xf.fffffffffffffffp+16380, false, false,
9748+ 0xf.fffffffffffffffp+16380, false, false,
9749+ INF, true, false,
9750+ false,
9751+ 0xf.fffffffffffffffp+16380, false, false,
9752+ 0xf.fffffffffffffffp+16380, false, false,
9753+ 0xf.fffffffffffffffp+16380, false, false,
9754+ INF, true, false,
9755+ false,
9756+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
9757+ INF, true, false,
9758+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
9759+ INF, true, false,
9760+ false,
9761+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
9762+ 0xf.fffffffffffffff8p+16380, false, false,
9763+ 0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
9764+ 0xf.fffffffffffffff8p+16380, false, false),
9765 TEST ("118973149535723176505351158982948866796625400469556721895649"
9766 "927756249918185172720476044944290457046138433056764616744328"
9767 "666255526748948793023632513609765434237723241753648908036202"
9768@@ -2261,35 +2261,35 @@ static const struct test tests[] = {
9769 "578031503869424406179027994752890226443351619365453243328968"
9770 "8740976918528",
9771 false,
9772- 0xf.fffffp+124, true,
9773- INF, true,
9774- 0xf.fffffp+124, true,
9775- INF, true,
9776- false,
9777- 0xf.ffffffffffff8p+1020, true,
9778- INF, true,
9779- 0xf.ffffffffffff8p+1020, true,
9780- INF, true,
9781- false,
9782- 0xf.fffffffffffffffp+16380, false,
9783- INF, true,
9784- 0xf.fffffffffffffffp+16380, false,
9785- INF, true,
9786- false,
9787- 0xf.fffffffffffffffp+16380, false,
9788- INF, true,
9789- 0xf.fffffffffffffffp+16380, false,
9790- INF, true,
9791- false,
9792- 0xf.fffffffffffffffffffffffffcp+1020, true,
9793- INF, true,
9794- 0xf.fffffffffffffffffffffffffcp+1020, true,
9795- INF, true,
9796- true,
9797- 0xf.fffffffffffffff8p+16380, false,
9798- 0xf.fffffffffffffff8p+16380, false,
9799- 0xf.fffffffffffffff8p+16380, false,
9800- 0xf.fffffffffffffff8p+16380, false),
9801+ 0xf.fffffp+124, true, false,
9802+ INF, true, false,
9803+ 0xf.fffffp+124, true, false,
9804+ INF, true, false,
9805+ false,
9806+ 0xf.ffffffffffff8p+1020, true, false,
9807+ INF, true, false,
9808+ 0xf.ffffffffffff8p+1020, true, false,
9809+ INF, true, false,
9810+ false,
9811+ 0xf.fffffffffffffffp+16380, false, false,
9812+ INF, true, false,
9813+ 0xf.fffffffffffffffp+16380, false, false,
9814+ INF, true, false,
9815+ false,
9816+ 0xf.fffffffffffffffp+16380, false, false,
9817+ INF, true, false,
9818+ 0xf.fffffffffffffffp+16380, false, false,
9819+ INF, true, false,
9820+ false,
9821+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
9822+ INF, true, false,
9823+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
9824+ INF, true, false,
9825+ true,
9826+ 0xf.fffffffffffffff8p+16380, false, false,
9827+ 0xf.fffffffffffffff8p+16380, false, false,
9828+ 0xf.fffffffffffffff8p+16380, false, false,
9829+ 0xf.fffffffffffffff8p+16380, false, false),
9830 TEST ("118973149535723176505351158982948866796625400469556721895649"
9831 "927756249918185172720476044944290457046138433056764616744328"
9832 "666255526748948793023632513609765434237723241753648908036202"
9833@@ -2374,35 +2374,35 @@ static const struct test tests[] = {
9834 "578031503869424406179027994752890226443351619365453243328968"
9835 "8740976918528.001",
9836 false,
9837- 0xf.fffffp+124, true,
9838- INF, true,
9839- 0xf.fffffp+124, true,
9840- INF, true,
9841- false,
9842- 0xf.ffffffffffff8p+1020, true,
9843- INF, true,
9844- 0xf.ffffffffffff8p+1020, true,
9845- INF, true,
9846- false,
9847- 0xf.fffffffffffffffp+16380, false,
9848- INF, true,
9849- 0xf.fffffffffffffffp+16380, false,
9850- INF, true,
9851- false,
9852- 0xf.fffffffffffffffp+16380, false,
9853- INF, true,
9854- 0xf.fffffffffffffffp+16380, false,
9855- INF, true,
9856- false,
9857- 0xf.fffffffffffffffffffffffffcp+1020, true,
9858- INF, true,
9859- 0xf.fffffffffffffffffffffffffcp+1020, true,
9860- INF, true,
9861- false,
9862- 0xf.fffffffffffffff8p+16380, false,
9863- 0xf.fffffffffffffff8p+16380, false,
9864- 0xf.fffffffffffffff8p+16380, false,
9865- 0xf.fffffffffffffff8000000000008p+16380, false),
9866+ 0xf.fffffp+124, true, false,
9867+ INF, true, false,
9868+ 0xf.fffffp+124, true, false,
9869+ INF, true, false,
9870+ false,
9871+ 0xf.ffffffffffff8p+1020, true, false,
9872+ INF, true, false,
9873+ 0xf.ffffffffffff8p+1020, true, false,
9874+ INF, true, false,
9875+ false,
9876+ 0xf.fffffffffffffffp+16380, false, false,
9877+ INF, true, false,
9878+ 0xf.fffffffffffffffp+16380, false, false,
9879+ INF, true, false,
9880+ false,
9881+ 0xf.fffffffffffffffp+16380, false, false,
9882+ INF, true, false,
9883+ 0xf.fffffffffffffffp+16380, false, false,
9884+ INF, true, false,
9885+ false,
9886+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
9887+ INF, true, false,
9888+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
9889+ INF, true, false,
9890+ false,
9891+ 0xf.fffffffffffffff8p+16380, false, false,
9892+ 0xf.fffffffffffffff8p+16380, false, false,
9893+ 0xf.fffffffffffffff8p+16380, false, false,
9894+ 0xf.fffffffffffffff8000000000008p+16380, false, false),
9895 TEST ("-11897314953572317650535115898294886679662540046955672189564"
9896 "992775624991818517272047604494429045704613843305676461674432"
9897 "866625552674894879302363251360976543423772324175364890803620"
9898@@ -2487,35 +2487,35 @@ static const struct test tests[] = {
9899 "557803150386942440617902799475289022644335161936545324332896"
9900 "88740976918527.999",
9901 false,
9902- -INF, true,
9903- -INF, true,
9904- -0xf.fffffp+124, true,
9905- -0xf.fffffp+124, true,
9906- false,
9907- -INF, true,
9908- -INF, true,
9909- -0xf.ffffffffffff8p+1020, true,
9910- -0xf.ffffffffffff8p+1020, true,
9911- false,
9912- -INF, true,
9913- -0xf.fffffffffffffffp+16380, false,
9914- -0xf.fffffffffffffffp+16380, false,
9915- -0xf.fffffffffffffffp+16380, false,
9916- false,
9917- -INF, true,
9918- -0xf.fffffffffffffffp+16380, false,
9919- -0xf.fffffffffffffffp+16380, false,
9920- -0xf.fffffffffffffffp+16380, false,
9921- false,
9922- -INF, true,
9923- -INF, true,
9924- -0xf.fffffffffffffffffffffffffcp+1020, true,
9925- -0xf.fffffffffffffffffffffffffcp+1020, true,
9926- false,
9927- -0xf.fffffffffffffff8p+16380, false,
9928- -0xf.fffffffffffffff8p+16380, false,
9929- -0xf.fffffffffffffff7fffffffffff8p+16380, false,
9930- -0xf.fffffffffffffff7fffffffffff8p+16380, false),
9931+ -INF, true, false,
9932+ -INF, true, false,
9933+ -0xf.fffffp+124, true, false,
9934+ -0xf.fffffp+124, true, false,
9935+ false,
9936+ -INF, true, false,
9937+ -INF, true, false,
9938+ -0xf.ffffffffffff8p+1020, true, false,
9939+ -0xf.ffffffffffff8p+1020, true, false,
9940+ false,
9941+ -INF, true, false,
9942+ -0xf.fffffffffffffffp+16380, false, false,
9943+ -0xf.fffffffffffffffp+16380, false, false,
9944+ -0xf.fffffffffffffffp+16380, false, false,
9945+ false,
9946+ -INF, true, false,
9947+ -0xf.fffffffffffffffp+16380, false, false,
9948+ -0xf.fffffffffffffffp+16380, false, false,
9949+ -0xf.fffffffffffffffp+16380, false, false,
9950+ false,
9951+ -INF, true, false,
9952+ -INF, true, false,
9953+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
9954+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
9955+ false,
9956+ -0xf.fffffffffffffff8p+16380, false, false,
9957+ -0xf.fffffffffffffff8p+16380, false, false,
9958+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false,
9959+ -0xf.fffffffffffffff7fffffffffff8p+16380, false, false),
9960 TEST ("-11897314953572317650535115898294886679662540046955672189564"
9961 "992775624991818517272047604494429045704613843305676461674432"
9962 "866625552674894879302363251360976543423772324175364890803620"
9963@@ -2600,35 +2600,35 @@ static const struct test tests[] = {
9964 "557803150386942440617902799475289022644335161936545324332896"
9965 "88740976918528",
9966 false,
9967- -INF, true,
9968- -INF, true,
9969- -0xf.fffffp+124, true,
9970- -0xf.fffffp+124, true,
9971- false,
9972- -INF, true,
9973- -INF, true,
9974- -0xf.ffffffffffff8p+1020, true,
9975- -0xf.ffffffffffff8p+1020, true,
9976- false,
9977- -INF, true,
9978- -INF, true,
9979- -0xf.fffffffffffffffp+16380, false,
9980- -0xf.fffffffffffffffp+16380, false,
9981- false,
9982- -INF, true,
9983- -INF, true,
9984- -0xf.fffffffffffffffp+16380, false,
9985- -0xf.fffffffffffffffp+16380, false,
9986- false,
9987- -INF, true,
9988- -INF, true,
9989- -0xf.fffffffffffffffffffffffffcp+1020, true,
9990- -0xf.fffffffffffffffffffffffffcp+1020, true,
9991- true,
9992- -0xf.fffffffffffffff8p+16380, false,
9993- -0xf.fffffffffffffff8p+16380, false,
9994- -0xf.fffffffffffffff8p+16380, false,
9995- -0xf.fffffffffffffff8p+16380, false),
9996+ -INF, true, false,
9997+ -INF, true, false,
9998+ -0xf.fffffp+124, true, false,
9999+ -0xf.fffffp+124, true, false,
10000+ false,
10001+ -INF, true, false,
10002+ -INF, true, false,
10003+ -0xf.ffffffffffff8p+1020, true, false,
10004+ -0xf.ffffffffffff8p+1020, true, false,
10005+ false,
10006+ -INF, true, false,
10007+ -INF, true, false,
10008+ -0xf.fffffffffffffffp+16380, false, false,
10009+ -0xf.fffffffffffffffp+16380, false, false,
10010+ false,
10011+ -INF, true, false,
10012+ -INF, true, false,
10013+ -0xf.fffffffffffffffp+16380, false, false,
10014+ -0xf.fffffffffffffffp+16380, false, false,
10015+ false,
10016+ -INF, true, false,
10017+ -INF, true, false,
10018+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10019+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10020+ true,
10021+ -0xf.fffffffffffffff8p+16380, false, false,
10022+ -0xf.fffffffffffffff8p+16380, false, false,
10023+ -0xf.fffffffffffffff8p+16380, false, false,
10024+ -0xf.fffffffffffffff8p+16380, false, false),
10025 TEST ("-11897314953572317650535115898294886679662540046955672189564"
10026 "992775624991818517272047604494429045704613843305676461674432"
10027 "866625552674894879302363251360976543423772324175364890803620"
10028@@ -2713,35 +2713,35 @@ static const struct test tests[] = {
10029 "557803150386942440617902799475289022644335161936545324332896"
10030 "88740976918528.001",
10031 false,
10032- -INF, true,
10033- -INF, true,
10034- -0xf.fffffp+124, true,
10035- -0xf.fffffp+124, true,
10036- false,
10037- -INF, true,
10038- -INF, true,
10039- -0xf.ffffffffffff8p+1020, true,
10040- -0xf.ffffffffffff8p+1020, true,
10041- false,
10042- -INF, true,
10043- -INF, true,
10044- -0xf.fffffffffffffffp+16380, false,
10045- -0xf.fffffffffffffffp+16380, false,
10046- false,
10047- -INF, true,
10048- -INF, true,
10049- -0xf.fffffffffffffffp+16380, false,
10050- -0xf.fffffffffffffffp+16380, false,
10051- false,
10052- -INF, true,
10053- -INF, true,
10054- -0xf.fffffffffffffffffffffffffcp+1020, true,
10055- -0xf.fffffffffffffffffffffffffcp+1020, true,
10056- false,
10057- -0xf.fffffffffffffff8000000000008p+16380, false,
10058- -0xf.fffffffffffffff8p+16380, false,
10059- -0xf.fffffffffffffff8p+16380, false,
10060- -0xf.fffffffffffffff8p+16380, false),
10061+ -INF, true, false,
10062+ -INF, true, false,
10063+ -0xf.fffffp+124, true, false,
10064+ -0xf.fffffp+124, true, false,
10065+ false,
10066+ -INF, true, false,
10067+ -INF, true, false,
10068+ -0xf.ffffffffffff8p+1020, true, false,
10069+ -0xf.ffffffffffff8p+1020, true, false,
10070+ false,
10071+ -INF, true, false,
10072+ -INF, true, false,
10073+ -0xf.fffffffffffffffp+16380, false, false,
10074+ -0xf.fffffffffffffffp+16380, false, false,
10075+ false,
10076+ -INF, true, false,
10077+ -INF, true, false,
10078+ -0xf.fffffffffffffffp+16380, false, false,
10079+ -0xf.fffffffffffffffp+16380, false, false,
10080+ false,
10081+ -INF, true, false,
10082+ -INF, true, false,
10083+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10084+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10085+ false,
10086+ -0xf.fffffffffffffff8000000000008p+16380, false, false,
10087+ -0xf.fffffffffffffff8p+16380, false, false,
10088+ -0xf.fffffffffffffff8p+16380, false, false,
10089+ -0xf.fffffffffffffff8p+16380, false, false),
10090 TEST ("118973149535723176508575932662800707347995686986910214150118"
10091 "685272271246896789803961473130416053705672050873552479421805"
10092 "932646640744124594447361172514341324846716679654551308018400"
10093@@ -2826,35 +2826,35 @@ static const struct test tests[] = {
10094 "972233447491583165728635513802591543441145939539353470970452"
10095 "5536550715391.999",
10096 false,
10097- 0xf.fffffp+124, true,
10098- INF, true,
10099- 0xf.fffffp+124, true,
10100- INF, true,
10101- false,
10102- 0xf.ffffffffffff8p+1020, true,
10103- INF, true,
10104- 0xf.ffffffffffff8p+1020, true,
10105- INF, true,
10106- false,
10107- 0xf.fffffffffffffffp+16380, false,
10108- INF, true,
10109- 0xf.fffffffffffffffp+16380, false,
10110- INF, true,
10111- false,
10112- 0xf.fffffffffffffffp+16380, false,
10113- INF, true,
10114- 0xf.fffffffffffffffp+16380, false,
10115- INF, true,
10116- false,
10117- 0xf.fffffffffffffffffffffffffcp+1020, true,
10118- INF, true,
10119- 0xf.fffffffffffffffffffffffffcp+1020, true,
10120- INF, true,
10121- false,
10122- 0xf.fffffffffffffffffffffffffff8p+16380, false,
10123- 0xf.fffffffffffffffffffffffffff8p+16380, false,
10124- 0xf.fffffffffffffffffffffffffff8p+16380, false,
10125- INF, true),
10126+ 0xf.fffffp+124, true, false,
10127+ INF, true, false,
10128+ 0xf.fffffp+124, true, false,
10129+ INF, true, false,
10130+ false,
10131+ 0xf.ffffffffffff8p+1020, true, false,
10132+ INF, true, false,
10133+ 0xf.ffffffffffff8p+1020, true, false,
10134+ INF, true, false,
10135+ false,
10136+ 0xf.fffffffffffffffp+16380, false, false,
10137+ INF, true, false,
10138+ 0xf.fffffffffffffffp+16380, false, false,
10139+ INF, true, false,
10140+ false,
10141+ 0xf.fffffffffffffffp+16380, false, false,
10142+ INF, true, false,
10143+ 0xf.fffffffffffffffp+16380, false, false,
10144+ INF, true, false,
10145+ false,
10146+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
10147+ INF, true, false,
10148+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
10149+ INF, true, false,
10150+ false,
10151+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10152+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10153+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10154+ INF, true, false),
10155 TEST ("118973149535723176508575932662800707347995686986910214150118"
10156 "685272271246896789803961473130416053705672050873552479421805"
10157 "932646640744124594447361172514341324846716679654551308018400"
10158@@ -2939,35 +2939,35 @@ static const struct test tests[] = {
10159 "972233447491583165728635513802591543441145939539353470970452"
10160 "5536550715392",
10161 false,
10162- 0xf.fffffp+124, true,
10163- INF, true,
10164- 0xf.fffffp+124, true,
10165- INF, true,
10166- false,
10167- 0xf.ffffffffffff8p+1020, true,
10168- INF, true,
10169- 0xf.ffffffffffff8p+1020, true,
10170- INF, true,
10171- false,
10172- 0xf.fffffffffffffffp+16380, false,
10173- INF, true,
10174- 0xf.fffffffffffffffp+16380, false,
10175- INF, true,
10176- false,
10177- 0xf.fffffffffffffffp+16380, false,
10178- INF, true,
10179- 0xf.fffffffffffffffp+16380, false,
10180- INF, true,
10181- false,
10182- 0xf.fffffffffffffffffffffffffcp+1020, true,
10183- INF, true,
10184- 0xf.fffffffffffffffffffffffffcp+1020, true,
10185- INF, true,
10186- false,
10187- 0xf.fffffffffffffffffffffffffff8p+16380, false,
10188- INF, true,
10189- 0xf.fffffffffffffffffffffffffff8p+16380, false,
10190- INF, true),
10191+ 0xf.fffffp+124, true, false,
10192+ INF, true, false,
10193+ 0xf.fffffp+124, true, false,
10194+ INF, true, false,
10195+ false,
10196+ 0xf.ffffffffffff8p+1020, true, false,
10197+ INF, true, false,
10198+ 0xf.ffffffffffff8p+1020, true, false,
10199+ INF, true, false,
10200+ false,
10201+ 0xf.fffffffffffffffp+16380, false, false,
10202+ INF, true, false,
10203+ 0xf.fffffffffffffffp+16380, false, false,
10204+ INF, true, false,
10205+ false,
10206+ 0xf.fffffffffffffffp+16380, false, false,
10207+ INF, true, false,
10208+ 0xf.fffffffffffffffp+16380, false, false,
10209+ INF, true, false,
10210+ false,
10211+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
10212+ INF, true, false,
10213+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
10214+ INF, true, false,
10215+ false,
10216+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10217+ INF, true, false,
10218+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10219+ INF, true, false),
10220 TEST ("118973149535723176508575932662800707347995686986910214150118"
10221 "685272271246896789803961473130416053705672050873552479421805"
10222 "932646640744124594447361172514341324846716679654551308018400"
10223@@ -3052,35 +3052,35 @@ static const struct test tests[] = {
10224 "972233447491583165728635513802591543441145939539353470970452"
10225 "5536550715392.001",
10226 false,
10227- 0xf.fffffp+124, true,
10228- INF, true,
10229- 0xf.fffffp+124, true,
10230- INF, true,
10231- false,
10232- 0xf.ffffffffffff8p+1020, true,
10233- INF, true,
10234- 0xf.ffffffffffff8p+1020, true,
10235- INF, true,
10236- false,
10237- 0xf.fffffffffffffffp+16380, false,
10238- INF, true,
10239- 0xf.fffffffffffffffp+16380, false,
10240- INF, true,
10241- false,
10242- 0xf.fffffffffffffffp+16380, false,
10243- INF, true,
10244- 0xf.fffffffffffffffp+16380, false,
10245- INF, true,
10246- false,
10247- 0xf.fffffffffffffffffffffffffcp+1020, true,
10248- INF, true,
10249- 0xf.fffffffffffffffffffffffffcp+1020, true,
10250- INF, true,
10251- false,
10252- 0xf.fffffffffffffffffffffffffff8p+16380, false,
10253- INF, true,
10254- 0xf.fffffffffffffffffffffffffff8p+16380, false,
10255- INF, true),
10256+ 0xf.fffffp+124, true, false,
10257+ INF, true, false,
10258+ 0xf.fffffp+124, true, false,
10259+ INF, true, false,
10260+ false,
10261+ 0xf.ffffffffffff8p+1020, true, false,
10262+ INF, true, false,
10263+ 0xf.ffffffffffff8p+1020, true, false,
10264+ INF, true, false,
10265+ false,
10266+ 0xf.fffffffffffffffp+16380, false, false,
10267+ INF, true, false,
10268+ 0xf.fffffffffffffffp+16380, false, false,
10269+ INF, true, false,
10270+ false,
10271+ 0xf.fffffffffffffffp+16380, false, false,
10272+ INF, true, false,
10273+ 0xf.fffffffffffffffp+16380, false, false,
10274+ INF, true, false,
10275+ false,
10276+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
10277+ INF, true, false,
10278+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
10279+ INF, true, false,
10280+ false,
10281+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10282+ INF, true, false,
10283+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10284+ INF, true, false),
10285 TEST ("-11897314953572317650857593266280070734799568698691021415011"
10286 "868527227124689678980396147313041605370567205087355247942180"
10287 "593264664074412459444736117251434132484671667965455130801840"
10288@@ -3165,35 +3165,35 @@ static const struct test tests[] = {
10289 "097223344749158316572863551380259154344114593953935347097045"
10290 "25536550715391.999",
10291 false,
10292- -INF, true,
10293- -INF, true,
10294- -0xf.fffffp+124, true,
10295- -0xf.fffffp+124, true,
10296- false,
10297- -INF, true,
10298- -INF, true,
10299- -0xf.ffffffffffff8p+1020, true,
10300- -0xf.ffffffffffff8p+1020, true,
10301- false,
10302- -INF, true,
10303- -INF, true,
10304- -0xf.fffffffffffffffp+16380, false,
10305- -0xf.fffffffffffffffp+16380, false,
10306- false,
10307- -INF, true,
10308- -INF, true,
10309- -0xf.fffffffffffffffp+16380, false,
10310- -0xf.fffffffffffffffp+16380, false,
10311- false,
10312- -INF, true,
10313- -INF, true,
10314- -0xf.fffffffffffffffffffffffffcp+1020, true,
10315- -0xf.fffffffffffffffffffffffffcp+1020, true,
10316- false,
10317- -INF, true,
10318- -0xf.fffffffffffffffffffffffffff8p+16380, false,
10319- -0xf.fffffffffffffffffffffffffff8p+16380, false,
10320- -0xf.fffffffffffffffffffffffffff8p+16380, false),
10321+ -INF, true, false,
10322+ -INF, true, false,
10323+ -0xf.fffffp+124, true, false,
10324+ -0xf.fffffp+124, true, false,
10325+ false,
10326+ -INF, true, false,
10327+ -INF, true, false,
10328+ -0xf.ffffffffffff8p+1020, true, false,
10329+ -0xf.ffffffffffff8p+1020, true, false,
10330+ false,
10331+ -INF, true, false,
10332+ -INF, true, false,
10333+ -0xf.fffffffffffffffp+16380, false, false,
10334+ -0xf.fffffffffffffffp+16380, false, false,
10335+ false,
10336+ -INF, true, false,
10337+ -INF, true, false,
10338+ -0xf.fffffffffffffffp+16380, false, false,
10339+ -0xf.fffffffffffffffp+16380, false, false,
10340+ false,
10341+ -INF, true, false,
10342+ -INF, true, false,
10343+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10344+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10345+ false,
10346+ -INF, true, false,
10347+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10348+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10349+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
10350 TEST ("-11897314953572317650857593266280070734799568698691021415011"
10351 "868527227124689678980396147313041605370567205087355247942180"
10352 "593264664074412459444736117251434132484671667965455130801840"
10353@@ -3278,35 +3278,35 @@ static const struct test tests[] = {
10354 "097223344749158316572863551380259154344114593953935347097045"
10355 "25536550715392",
10356 false,
10357- -INF, true,
10358- -INF, true,
10359- -0xf.fffffp+124, true,
10360- -0xf.fffffp+124, true,
10361- false,
10362- -INF, true,
10363- -INF, true,
10364- -0xf.ffffffffffff8p+1020, true,
10365- -0xf.ffffffffffff8p+1020, true,
10366- false,
10367- -INF, true,
10368- -INF, true,
10369- -0xf.fffffffffffffffp+16380, false,
10370- -0xf.fffffffffffffffp+16380, false,
10371- false,
10372- -INF, true,
10373- -INF, true,
10374- -0xf.fffffffffffffffp+16380, false,
10375- -0xf.fffffffffffffffp+16380, false,
10376- false,
10377- -INF, true,
10378- -INF, true,
10379- -0xf.fffffffffffffffffffffffffcp+1020, true,
10380- -0xf.fffffffffffffffffffffffffcp+1020, true,
10381- false,
10382- -INF, true,
10383- -INF, true,
10384- -0xf.fffffffffffffffffffffffffff8p+16380, false,
10385- -0xf.fffffffffffffffffffffffffff8p+16380, false),
10386+ -INF, true, false,
10387+ -INF, true, false,
10388+ -0xf.fffffp+124, true, false,
10389+ -0xf.fffffp+124, true, false,
10390+ false,
10391+ -INF, true, false,
10392+ -INF, true, false,
10393+ -0xf.ffffffffffff8p+1020, true, false,
10394+ -0xf.ffffffffffff8p+1020, true, false,
10395+ false,
10396+ -INF, true, false,
10397+ -INF, true, false,
10398+ -0xf.fffffffffffffffp+16380, false, false,
10399+ -0xf.fffffffffffffffp+16380, false, false,
10400+ false,
10401+ -INF, true, false,
10402+ -INF, true, false,
10403+ -0xf.fffffffffffffffp+16380, false, false,
10404+ -0xf.fffffffffffffffp+16380, false, false,
10405+ false,
10406+ -INF, true, false,
10407+ -INF, true, false,
10408+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10409+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10410+ false,
10411+ -INF, true, false,
10412+ -INF, true, false,
10413+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10414+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
10415 TEST ("-11897314953572317650857593266280070734799568698691021415011"
10416 "868527227124689678980396147313041605370567205087355247942180"
10417 "593264664074412459444736117251434132484671667965455130801840"
10418@@ -3391,419 +3391,419 @@ static const struct test tests[] = {
10419 "097223344749158316572863551380259154344114593953935347097045"
10420 "25536550715392.001",
10421 false,
10422- -INF, true,
10423- -INF, true,
10424- -0xf.fffffp+124, true,
10425- -0xf.fffffp+124, true,
10426- false,
10427- -INF, true,
10428- -INF, true,
10429- -0xf.ffffffffffff8p+1020, true,
10430- -0xf.ffffffffffff8p+1020, true,
10431- false,
10432- -INF, true,
10433- -INF, true,
10434- -0xf.fffffffffffffffp+16380, false,
10435- -0xf.fffffffffffffffp+16380, false,
10436- false,
10437- -INF, true,
10438- -INF, true,
10439- -0xf.fffffffffffffffp+16380, false,
10440- -0xf.fffffffffffffffp+16380, false,
10441- false,
10442- -INF, true,
10443- -INF, true,
10444- -0xf.fffffffffffffffffffffffffcp+1020, true,
10445- -0xf.fffffffffffffffffffffffffcp+1020, true,
10446- false,
10447- -INF, true,
10448- -INF, true,
10449- -0xf.fffffffffffffffffffffffffff8p+16380, false,
10450- -0xf.fffffffffffffffffffffffffff8p+16380, false),
10451+ -INF, true, false,
10452+ -INF, true, false,
10453+ -0xf.fffffp+124, true, false,
10454+ -0xf.fffffp+124, true, false,
10455+ false,
10456+ -INF, true, false,
10457+ -INF, true, false,
10458+ -0xf.ffffffffffff8p+1020, true, false,
10459+ -0xf.ffffffffffff8p+1020, true, false,
10460+ false,
10461+ -INF, true, false,
10462+ -INF, true, false,
10463+ -0xf.fffffffffffffffp+16380, false, false,
10464+ -0xf.fffffffffffffffp+16380, false, false,
10465+ false,
10466+ -INF, true, false,
10467+ -INF, true, false,
10468+ -0xf.fffffffffffffffp+16380, false, false,
10469+ -0xf.fffffffffffffffp+16380, false, false,
10470+ false,
10471+ -INF, true, false,
10472+ -INF, true, false,
10473+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10474+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
10475+ false,
10476+ -INF, true, false,
10477+ -INF, true, false,
10478+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
10479+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
10480 TEST ("2.1019476964872256063855943749348741969203929128147736576356"
10481 "0242583468662402879090222995728254318237304687499e-45",
10482 false,
10483- 0x8p-152, false,
10484- 0x8p-152, false,
10485- 0x8p-152, false,
10486- 0x1p-148, false,
10487- false,
10488- 0xb.ffffffffffff8p-152, false,
10489- 0xcp-152, false,
10490- 0xb.ffffffffffff8p-152, false,
10491- 0xcp-152, false,
10492- false,
10493- 0xb.fffffffffffffffp-152, false,
10494- 0xcp-152, false,
10495- 0xb.fffffffffffffffp-152, false,
10496- 0xcp-152, false,
10497- false,
10498- 0xb.fffffffffffffffp-152, false,
10499- 0xcp-152, false,
10500- 0xb.fffffffffffffffp-152, false,
10501- 0xcp-152, false,
10502- false,
10503- 0xb.fffffffffffffffffffffffffcp-152, false,
10504- 0xcp-152, false,
10505- 0xb.fffffffffffffffffffffffffcp-152, false,
10506- 0xcp-152, false,
10507- false,
10508- 0xb.fffffffffffffffffffffffffff8p-152, false,
10509- 0xcp-152, false,
10510- 0xb.fffffffffffffffffffffffffff8p-152, false,
10511- 0xcp-152, false),
10512+ 0x8p-152, false, true,
10513+ 0x8p-152, false, true,
10514+ 0x8p-152, false, true,
10515+ 0x1p-148, false, true,
10516+ false,
10517+ 0xb.ffffffffffff8p-152, false, false,
10518+ 0xcp-152, false, false,
10519+ 0xb.ffffffffffff8p-152, false, false,
10520+ 0xcp-152, false, false,
10521+ false,
10522+ 0xb.fffffffffffffffp-152, false, false,
10523+ 0xcp-152, false, false,
10524+ 0xb.fffffffffffffffp-152, false, false,
10525+ 0xcp-152, false, false,
10526+ false,
10527+ 0xb.fffffffffffffffp-152, false, false,
10528+ 0xcp-152, false, false,
10529+ 0xb.fffffffffffffffp-152, false, false,
10530+ 0xcp-152, false, false,
10531+ false,
10532+ 0xb.fffffffffffffffffffffffffcp-152, false, false,
10533+ 0xcp-152, false, false,
10534+ 0xb.fffffffffffffffffffffffffcp-152, false, false,
10535+ 0xcp-152, false, false,
10536+ false,
10537+ 0xb.fffffffffffffffffffffffffff8p-152, false, false,
10538+ 0xcp-152, false, false,
10539+ 0xb.fffffffffffffffffffffffffff8p-152, false, false,
10540+ 0xcp-152, false, false),
10541 TEST ("2.1019476964872256063855943749348741969203929128147736576356"
10542 "02425834686624028790902229957282543182373046875e-45",
10543 false,
10544- 0x8p-152, false,
10545- 0x1p-148, false,
10546- 0x8p-152, false,
10547- 0x1p-148, false,
10548- true,
10549- 0xcp-152, false,
10550- 0xcp-152, false,
10551- 0xcp-152, false,
10552- 0xcp-152, false,
10553- true,
10554- 0xcp-152, false,
10555- 0xcp-152, false,
10556- 0xcp-152, false,
10557- 0xcp-152, false,
10558- true,
10559- 0xcp-152, false,
10560- 0xcp-152, false,
10561- 0xcp-152, false,
10562- 0xcp-152, false,
10563- true,
10564- 0xcp-152, false,
10565- 0xcp-152, false,
10566- 0xcp-152, false,
10567- 0xcp-152, false,
10568- true,
10569- 0xcp-152, false,
10570- 0xcp-152, false,
10571- 0xcp-152, false,
10572- 0xcp-152, false),
10573+ 0x8p-152, false, true,
10574+ 0x1p-148, false, true,
10575+ 0x8p-152, false, true,
10576+ 0x1p-148, false, true,
10577+ true,
10578+ 0xcp-152, false, false,
10579+ 0xcp-152, false, false,
10580+ 0xcp-152, false, false,
10581+ 0xcp-152, false, false,
10582+ true,
10583+ 0xcp-152, false, false,
10584+ 0xcp-152, false, false,
10585+ 0xcp-152, false, false,
10586+ 0xcp-152, false, false,
10587+ true,
10588+ 0xcp-152, false, false,
10589+ 0xcp-152, false, false,
10590+ 0xcp-152, false, false,
10591+ 0xcp-152, false, false,
10592+ true,
10593+ 0xcp-152, false, false,
10594+ 0xcp-152, false, false,
10595+ 0xcp-152, false, false,
10596+ 0xcp-152, false, false,
10597+ true,
10598+ 0xcp-152, false, false,
10599+ 0xcp-152, false, false,
10600+ 0xcp-152, false, false,
10601+ 0xcp-152, false, false),
10602 TEST ("2.1019476964872256063855943749348741969203929128147736576356"
10603 "0242583468662402879090222995728254318237304687501e-45",
10604 false,
10605- 0x8p-152, false,
10606- 0x1p-148, false,
10607- 0x8p-152, false,
10608- 0x1p-148, false,
10609- false,
10610- 0xcp-152, false,
10611- 0xcp-152, false,
10612- 0xcp-152, false,
10613- 0xc.0000000000008p-152, false,
10614- false,
10615- 0xcp-152, false,
10616- 0xcp-152, false,
10617- 0xcp-152, false,
10618- 0xc.000000000000001p-152, false,
10619- false,
10620- 0xcp-152, false,
10621- 0xcp-152, false,
10622- 0xcp-152, false,
10623- 0xc.000000000000001p-152, false,
10624- false,
10625- 0xcp-152, false,
10626- 0xcp-152, false,
10627- 0xcp-152, false,
10628- 0xc.00000000000000000000000004p-152, false,
10629- false,
10630- 0xcp-152, false,
10631- 0xcp-152, false,
10632- 0xcp-152, false,
10633- 0xc.0000000000000000000000000008p-152, false),
10634+ 0x8p-152, false, true,
10635+ 0x1p-148, false, true,
10636+ 0x8p-152, false, true,
10637+ 0x1p-148, false, true,
10638+ false,
10639+ 0xcp-152, false, false,
10640+ 0xcp-152, false, false,
10641+ 0xcp-152, false, false,
10642+ 0xc.0000000000008p-152, false, false,
10643+ false,
10644+ 0xcp-152, false, false,
10645+ 0xcp-152, false, false,
10646+ 0xcp-152, false, false,
10647+ 0xc.000000000000001p-152, false, false,
10648+ false,
10649+ 0xcp-152, false, false,
10650+ 0xcp-152, false, false,
10651+ 0xcp-152, false, false,
10652+ 0xc.000000000000001p-152, false, false,
10653+ false,
10654+ 0xcp-152, false, false,
10655+ 0xcp-152, false, false,
10656+ 0xcp-152, false, false,
10657+ 0xc.00000000000000000000000004p-152, false, false,
10658+ false,
10659+ 0xcp-152, false, false,
10660+ 0xcp-152, false, false,
10661+ 0xcp-152, false, false,
10662+ 0xc.0000000000000000000000000008p-152, false, false),
10663 TEST ("-2.101947696487225606385594374934874196920392912814773657635"
10664 "60242583468662402879090222995728254318237304687499e-45",
10665 false,
10666- -0x1p-148, false,
10667- -0x8p-152, false,
10668- -0x8p-152, false,
10669- -0x8p-152, false,
10670- false,
10671- -0xcp-152, false,
10672- -0xcp-152, false,
10673- -0xb.ffffffffffff8p-152, false,
10674- -0xb.ffffffffffff8p-152, false,
10675- false,
10676- -0xcp-152, false,
10677- -0xcp-152, false,
10678- -0xb.fffffffffffffffp-152, false,
10679- -0xb.fffffffffffffffp-152, false,
10680- false,
10681- -0xcp-152, false,
10682- -0xcp-152, false,
10683- -0xb.fffffffffffffffp-152, false,
10684- -0xb.fffffffffffffffp-152, false,
10685- false,
10686- -0xcp-152, false,
10687- -0xcp-152, false,
10688- -0xb.fffffffffffffffffffffffffcp-152, false,
10689- -0xb.fffffffffffffffffffffffffcp-152, false,
10690- false,
10691- -0xcp-152, false,
10692- -0xcp-152, false,
10693- -0xb.fffffffffffffffffffffffffff8p-152, false,
10694- -0xb.fffffffffffffffffffffffffff8p-152, false),
10695+ -0x1p-148, false, true,
10696+ -0x8p-152, false, true,
10697+ -0x8p-152, false, true,
10698+ -0x8p-152, false, true,
10699+ false,
10700+ -0xcp-152, false, false,
10701+ -0xcp-152, false, false,
10702+ -0xb.ffffffffffff8p-152, false, false,
10703+ -0xb.ffffffffffff8p-152, false, false,
10704+ false,
10705+ -0xcp-152, false, false,
10706+ -0xcp-152, false, false,
10707+ -0xb.fffffffffffffffp-152, false, false,
10708+ -0xb.fffffffffffffffp-152, false, false,
10709+ false,
10710+ -0xcp-152, false, false,
10711+ -0xcp-152, false, false,
10712+ -0xb.fffffffffffffffp-152, false, false,
10713+ -0xb.fffffffffffffffp-152, false, false,
10714+ false,
10715+ -0xcp-152, false, false,
10716+ -0xcp-152, false, false,
10717+ -0xb.fffffffffffffffffffffffffcp-152, false, false,
10718+ -0xb.fffffffffffffffffffffffffcp-152, false, false,
10719+ false,
10720+ -0xcp-152, false, false,
10721+ -0xcp-152, false, false,
10722+ -0xb.fffffffffffffffffffffffffff8p-152, false, false,
10723+ -0xb.fffffffffffffffffffffffffff8p-152, false, false),
10724 TEST ("-2.101947696487225606385594374934874196920392912814773657635"
10725 "602425834686624028790902229957282543182373046875e-45",
10726 false,
10727- -0x1p-148, false,
10728- -0x1p-148, false,
10729- -0x8p-152, false,
10730- -0x8p-152, false,
10731- true,
10732- -0xcp-152, false,
10733- -0xcp-152, false,
10734- -0xcp-152, false,
10735- -0xcp-152, false,
10736- true,
10737- -0xcp-152, false,
10738- -0xcp-152, false,
10739- -0xcp-152, false,
10740- -0xcp-152, false,
10741- true,
10742- -0xcp-152, false,
10743- -0xcp-152, false,
10744- -0xcp-152, false,
10745- -0xcp-152, false,
10746- true,
10747- -0xcp-152, false,
10748- -0xcp-152, false,
10749- -0xcp-152, false,
10750- -0xcp-152, false,
10751- true,
10752- -0xcp-152, false,
10753- -0xcp-152, false,
10754- -0xcp-152, false,
10755- -0xcp-152, false),
10756+ -0x1p-148, false, true,
10757+ -0x1p-148, false, true,
10758+ -0x8p-152, false, true,
10759+ -0x8p-152, false, true,
10760+ true,
10761+ -0xcp-152, false, false,
10762+ -0xcp-152, false, false,
10763+ -0xcp-152, false, false,
10764+ -0xcp-152, false, false,
10765+ true,
10766+ -0xcp-152, false, false,
10767+ -0xcp-152, false, false,
10768+ -0xcp-152, false, false,
10769+ -0xcp-152, false, false,
10770+ true,
10771+ -0xcp-152, false, false,
10772+ -0xcp-152, false, false,
10773+ -0xcp-152, false, false,
10774+ -0xcp-152, false, false,
10775+ true,
10776+ -0xcp-152, false, false,
10777+ -0xcp-152, false, false,
10778+ -0xcp-152, false, false,
10779+ -0xcp-152, false, false,
10780+ true,
10781+ -0xcp-152, false, false,
10782+ -0xcp-152, false, false,
10783+ -0xcp-152, false, false,
10784+ -0xcp-152, false, false),
10785 TEST ("-2.101947696487225606385594374934874196920392912814773657635"
10786 "60242583468662402879090222995728254318237304687501e-45",
10787 false,
10788- -0x1p-148, false,
10789- -0x1p-148, false,
10790- -0x8p-152, false,
10791- -0x8p-152, false,
10792- false,
10793- -0xc.0000000000008p-152, false,
10794- -0xcp-152, false,
10795- -0xcp-152, false,
10796- -0xcp-152, false,
10797- false,
10798- -0xc.000000000000001p-152, false,
10799- -0xcp-152, false,
10800- -0xcp-152, false,
10801- -0xcp-152, false,
10802- false,
10803- -0xc.000000000000001p-152, false,
10804- -0xcp-152, false,
10805- -0xcp-152, false,
10806- -0xcp-152, false,
10807- false,
10808- -0xc.00000000000000000000000004p-152, false,
10809- -0xcp-152, false,
10810- -0xcp-152, false,
10811- -0xcp-152, false,
10812- false,
10813- -0xc.0000000000000000000000000008p-152, false,
10814- -0xcp-152, false,
10815- -0xcp-152, false,
10816- -0xcp-152, false),
10817+ -0x1p-148, false, true,
10818+ -0x1p-148, false, true,
10819+ -0x8p-152, false, true,
10820+ -0x8p-152, false, true,
10821+ false,
10822+ -0xc.0000000000008p-152, false, false,
10823+ -0xcp-152, false, false,
10824+ -0xcp-152, false, false,
10825+ -0xcp-152, false, false,
10826+ false,
10827+ -0xc.000000000000001p-152, false, false,
10828+ -0xcp-152, false, false,
10829+ -0xcp-152, false, false,
10830+ -0xcp-152, false, false,
10831+ false,
10832+ -0xc.000000000000001p-152, false, false,
10833+ -0xcp-152, false, false,
10834+ -0xcp-152, false, false,
10835+ -0xcp-152, false, false,
10836+ false,
10837+ -0xc.00000000000000000000000004p-152, false, false,
10838+ -0xcp-152, false, false,
10839+ -0xcp-152, false, false,
10840+ -0xcp-152, false, false,
10841+ false,
10842+ -0xc.0000000000000000000000000008p-152, false, false,
10843+ -0xcp-152, false, false,
10844+ -0xcp-152, false, false,
10845+ -0xcp-152, false, false),
10846 TEST ("3.5032461608120426773093239582247903282006548546912894293926"
10847 "7070972447770671465150371659547090530395507812499e-45",
10848 false,
10849- 0x1p-148, false,
10850- 0x1p-148, false,
10851- 0x1p-148, false,
10852- 0x1.8p-148, false,
10853- false,
10854- 0x1.3ffffffffffffp-148, false,
10855- 0x1.4p-148, false,
10856- 0x1.3ffffffffffffp-148, false,
10857- 0x1.4p-148, false,
10858- false,
10859- 0x1.3ffffffffffffffep-148, false,
10860- 0x1.4p-148, false,
10861- 0x1.3ffffffffffffffep-148, false,
10862- 0x1.4p-148, false,
10863- false,
10864- 0x1.3ffffffffffffffep-148, false,
10865- 0x1.4p-148, false,
10866- 0x1.3ffffffffffffffep-148, false,
10867- 0x1.4p-148, false,
10868- false,
10869- 0x1.3fffffffffffffffffffffffff8p-148, false,
10870- 0x1.4p-148, false,
10871- 0x1.3fffffffffffffffffffffffff8p-148, false,
10872- 0x1.4p-148, false,
10873- false,
10874- 0x1.3fffffffffffffffffffffffffffp-148, false,
10875- 0x1.4p-148, false,
10876- 0x1.3fffffffffffffffffffffffffffp-148, false,
10877- 0x1.4p-148, false),
10878+ 0x1p-148, false, true,
10879+ 0x1p-148, false, true,
10880+ 0x1p-148, false, true,
10881+ 0x1.8p-148, false, true,
10882+ false,
10883+ 0x1.3ffffffffffffp-148, false, false,
10884+ 0x1.4p-148, false, false,
10885+ 0x1.3ffffffffffffp-148, false, false,
10886+ 0x1.4p-148, false, false,
10887+ false,
10888+ 0x1.3ffffffffffffffep-148, false, false,
10889+ 0x1.4p-148, false, false,
10890+ 0x1.3ffffffffffffffep-148, false, false,
10891+ 0x1.4p-148, false, false,
10892+ false,
10893+ 0x1.3ffffffffffffffep-148, false, false,
10894+ 0x1.4p-148, false, false,
10895+ 0x1.3ffffffffffffffep-148, false, false,
10896+ 0x1.4p-148, false, false,
10897+ false,
10898+ 0x1.3fffffffffffffffffffffffff8p-148, false, false,
10899+ 0x1.4p-148, false, false,
10900+ 0x1.3fffffffffffffffffffffffff8p-148, false, false,
10901+ 0x1.4p-148, false, false,
10902+ false,
10903+ 0x1.3fffffffffffffffffffffffffffp-148, false, false,
10904+ 0x1.4p-148, false, false,
10905+ 0x1.3fffffffffffffffffffffffffffp-148, false, false,
10906+ 0x1.4p-148, false, false),
10907 TEST ("3.5032461608120426773093239582247903282006548546912894293926"
10908 "70709724477706714651503716595470905303955078125e-45",
10909 false,
10910- 0x1p-148, false,
10911- 0x1p-148, false,
10912- 0x1p-148, false,
10913- 0x1.8p-148, false,
10914- true,
10915- 0x1.4p-148, false,
10916- 0x1.4p-148, false,
10917- 0x1.4p-148, false,
10918- 0x1.4p-148, false,
10919- true,
10920- 0x1.4p-148, false,
10921- 0x1.4p-148, false,
10922- 0x1.4p-148, false,
10923- 0x1.4p-148, false,
10924- true,
10925- 0x1.4p-148, false,
10926- 0x1.4p-148, false,
10927- 0x1.4p-148, false,
10928- 0x1.4p-148, false,
10929- true,
10930- 0x1.4p-148, false,
10931- 0x1.4p-148, false,
10932- 0x1.4p-148, false,
10933- 0x1.4p-148, false,
10934- true,
10935- 0x1.4p-148, false,
10936- 0x1.4p-148, false,
10937- 0x1.4p-148, false,
10938- 0x1.4p-148, false),
10939+ 0x1p-148, false, true,
10940+ 0x1p-148, false, true,
10941+ 0x1p-148, false, true,
10942+ 0x1.8p-148, false, true,
10943+ true,
10944+ 0x1.4p-148, false, false,
10945+ 0x1.4p-148, false, false,
10946+ 0x1.4p-148, false, false,
10947+ 0x1.4p-148, false, false,
10948+ true,
10949+ 0x1.4p-148, false, false,
10950+ 0x1.4p-148, false, false,
10951+ 0x1.4p-148, false, false,
10952+ 0x1.4p-148, false, false,
10953+ true,
10954+ 0x1.4p-148, false, false,
10955+ 0x1.4p-148, false, false,
10956+ 0x1.4p-148, false, false,
10957+ 0x1.4p-148, false, false,
10958+ true,
10959+ 0x1.4p-148, false, false,
10960+ 0x1.4p-148, false, false,
10961+ 0x1.4p-148, false, false,
10962+ 0x1.4p-148, false, false,
10963+ true,
10964+ 0x1.4p-148, false, false,
10965+ 0x1.4p-148, false, false,
10966+ 0x1.4p-148, false, false,
10967+ 0x1.4p-148, false, false),
10968 TEST ("3.5032461608120426773093239582247903282006548546912894293926"
10969 "7070972447770671465150371659547090530395507812501e-45",
10970 false,
10971- 0x1p-148, false,
10972- 0x1.8p-148, false,
10973- 0x1p-148, false,
10974- 0x1.8p-148, false,
10975- false,
10976- 0x1.4p-148, false,
10977- 0x1.4p-148, false,
10978- 0x1.4p-148, false,
10979- 0x1.4000000000001p-148, false,
10980- false,
10981- 0x1.4p-148, false,
10982- 0x1.4p-148, false,
10983- 0x1.4p-148, false,
10984- 0x1.4000000000000002p-148, false,
10985- false,
10986- 0x1.4p-148, false,
10987- 0x1.4p-148, false,
10988- 0x1.4p-148, false,
10989- 0x1.4000000000000002p-148, false,
10990- false,
10991- 0x1.4p-148, false,
10992- 0x1.4p-148, false,
10993- 0x1.4p-148, false,
10994- 0x1.400000000000000000000000008p-148, false,
10995- false,
10996- 0x1.4p-148, false,
10997- 0x1.4p-148, false,
10998- 0x1.4p-148, false,
10999- 0x1.4000000000000000000000000001p-148, false),
11000+ 0x1p-148, false, true,
11001+ 0x1.8p-148, false, true,
11002+ 0x1p-148, false, true,
11003+ 0x1.8p-148, false, true,
11004+ false,
11005+ 0x1.4p-148, false, false,
11006+ 0x1.4p-148, false, false,
11007+ 0x1.4p-148, false, false,
11008+ 0x1.4000000000001p-148, false, false,
11009+ false,
11010+ 0x1.4p-148, false, false,
11011+ 0x1.4p-148, false, false,
11012+ 0x1.4p-148, false, false,
11013+ 0x1.4000000000000002p-148, false, false,
11014+ false,
11015+ 0x1.4p-148, false, false,
11016+ 0x1.4p-148, false, false,
11017+ 0x1.4p-148, false, false,
11018+ 0x1.4000000000000002p-148, false, false,
11019+ false,
11020+ 0x1.4p-148, false, false,
11021+ 0x1.4p-148, false, false,
11022+ 0x1.4p-148, false, false,
11023+ 0x1.400000000000000000000000008p-148, false, false,
11024+ false,
11025+ 0x1.4p-148, false, false,
11026+ 0x1.4p-148, false, false,
11027+ 0x1.4p-148, false, false,
11028+ 0x1.4000000000000000000000000001p-148, false, false),
11029 TEST ("-3.503246160812042677309323958224790328200654854691289429392"
11030 "67070972447770671465150371659547090530395507812499e-45",
11031 false,
11032- -0x1.8p-148, false,
11033- -0x1p-148, false,
11034- -0x1p-148, false,
11035- -0x1p-148, false,
11036- false,
11037- -0x1.4p-148, false,
11038- -0x1.4p-148, false,
11039- -0x1.3ffffffffffffp-148, false,
11040- -0x1.3ffffffffffffp-148, false,
11041- false,
11042- -0x1.4p-148, false,
11043- -0x1.4p-148, false,
11044- -0x1.3ffffffffffffffep-148, false,
11045- -0x1.3ffffffffffffffep-148, false,
11046- false,
11047- -0x1.4p-148, false,
11048- -0x1.4p-148, false,
11049- -0x1.3ffffffffffffffep-148, false,
11050- -0x1.3ffffffffffffffep-148, false,
11051- false,
11052- -0x1.4p-148, false,
11053- -0x1.4p-148, false,
11054- -0x1.3fffffffffffffffffffffffff8p-148, false,
11055- -0x1.3fffffffffffffffffffffffff8p-148, false,
11056- false,
11057- -0x1.4p-148, false,
11058- -0x1.4p-148, false,
11059- -0x1.3fffffffffffffffffffffffffffp-148, false,
11060- -0x1.3fffffffffffffffffffffffffffp-148, false),
11061+ -0x1.8p-148, false, true,
11062+ -0x1p-148, false, true,
11063+ -0x1p-148, false, true,
11064+ -0x1p-148, false, true,
11065+ false,
11066+ -0x1.4p-148, false, false,
11067+ -0x1.4p-148, false, false,
11068+ -0x1.3ffffffffffffp-148, false, false,
11069+ -0x1.3ffffffffffffp-148, false, false,
11070+ false,
11071+ -0x1.4p-148, false, false,
11072+ -0x1.4p-148, false, false,
11073+ -0x1.3ffffffffffffffep-148, false, false,
11074+ -0x1.3ffffffffffffffep-148, false, false,
11075+ false,
11076+ -0x1.4p-148, false, false,
11077+ -0x1.4p-148, false, false,
11078+ -0x1.3ffffffffffffffep-148, false, false,
11079+ -0x1.3ffffffffffffffep-148, false, false,
11080+ false,
11081+ -0x1.4p-148, false, false,
11082+ -0x1.4p-148, false, false,
11083+ -0x1.3fffffffffffffffffffffffff8p-148, false, false,
11084+ -0x1.3fffffffffffffffffffffffff8p-148, false, false,
11085+ false,
11086+ -0x1.4p-148, false, false,
11087+ -0x1.4p-148, false, false,
11088+ -0x1.3fffffffffffffffffffffffffffp-148, false, false,
11089+ -0x1.3fffffffffffffffffffffffffffp-148, false, false),
11090 TEST ("-3.503246160812042677309323958224790328200654854691289429392"
11091 "670709724477706714651503716595470905303955078125e-45",
11092 false,
11093- -0x1.8p-148, false,
11094- -0x1p-148, false,
11095- -0x1p-148, false,
11096- -0x1p-148, false,
11097- true,
11098- -0x1.4p-148, false,
11099- -0x1.4p-148, false,
11100- -0x1.4p-148, false,
11101- -0x1.4p-148, false,
11102- true,
11103- -0x1.4p-148, false,
11104- -0x1.4p-148, false,
11105- -0x1.4p-148, false,
11106- -0x1.4p-148, false,
11107- true,
11108- -0x1.4p-148, false,
11109- -0x1.4p-148, false,
11110- -0x1.4p-148, false,
11111- -0x1.4p-148, false,
11112- true,
11113- -0x1.4p-148, false,
11114- -0x1.4p-148, false,
11115- -0x1.4p-148, false,
11116- -0x1.4p-148, false,
11117- true,
11118- -0x1.4p-148, false,
11119- -0x1.4p-148, false,
11120- -0x1.4p-148, false,
11121- -0x1.4p-148, false),
11122+ -0x1.8p-148, false, true,
11123+ -0x1p-148, false, true,
11124+ -0x1p-148, false, true,
11125+ -0x1p-148, false, true,
11126+ true,
11127+ -0x1.4p-148, false, false,
11128+ -0x1.4p-148, false, false,
11129+ -0x1.4p-148, false, false,
11130+ -0x1.4p-148, false, false,
11131+ true,
11132+ -0x1.4p-148, false, false,
11133+ -0x1.4p-148, false, false,
11134+ -0x1.4p-148, false, false,
11135+ -0x1.4p-148, false, false,
11136+ true,
11137+ -0x1.4p-148, false, false,
11138+ -0x1.4p-148, false, false,
11139+ -0x1.4p-148, false, false,
11140+ -0x1.4p-148, false, false,
11141+ true,
11142+ -0x1.4p-148, false, false,
11143+ -0x1.4p-148, false, false,
11144+ -0x1.4p-148, false, false,
11145+ -0x1.4p-148, false, false,
11146+ true,
11147+ -0x1.4p-148, false, false,
11148+ -0x1.4p-148, false, false,
11149+ -0x1.4p-148, false, false,
11150+ -0x1.4p-148, false, false),
11151 TEST ("-3.503246160812042677309323958224790328200654854691289429392"
11152 "67070972447770671465150371659547090530395507812501e-45",
11153 false,
11154- -0x1.8p-148, false,
11155- -0x1.8p-148, false,
11156- -0x1p-148, false,
11157- -0x1p-148, false,
11158- false,
11159- -0x1.4000000000001p-148, false,
11160- -0x1.4p-148, false,
11161- -0x1.4p-148, false,
11162- -0x1.4p-148, false,
11163- false,
11164- -0x1.4000000000000002p-148, false,
11165- -0x1.4p-148, false,
11166- -0x1.4p-148, false,
11167- -0x1.4p-148, false,
11168- false,
11169- -0x1.4000000000000002p-148, false,
11170- -0x1.4p-148, false,
11171- -0x1.4p-148, false,
11172- -0x1.4p-148, false,
11173- false,
11174- -0x1.400000000000000000000000008p-148, false,
11175- -0x1.4p-148, false,
11176- -0x1.4p-148, false,
11177- -0x1.4p-148, false,
11178- false,
11179- -0x1.4000000000000000000000000001p-148, false,
11180- -0x1.4p-148, false,
11181- -0x1.4p-148, false,
11182- -0x1.4p-148, false),
11183+ -0x1.8p-148, false, true,
11184+ -0x1.8p-148, false, true,
11185+ -0x1p-148, false, true,
11186+ -0x1p-148, false, true,
11187+ false,
11188+ -0x1.4000000000001p-148, false, false,
11189+ -0x1.4p-148, false, false,
11190+ -0x1.4p-148, false, false,
11191+ -0x1.4p-148, false, false,
11192+ false,
11193+ -0x1.4000000000000002p-148, false, false,
11194+ -0x1.4p-148, false, false,
11195+ -0x1.4p-148, false, false,
11196+ -0x1.4p-148, false, false,
11197+ false,
11198+ -0x1.4000000000000002p-148, false, false,
11199+ -0x1.4p-148, false, false,
11200+ -0x1.4p-148, false, false,
11201+ -0x1.4p-148, false, false,
11202+ false,
11203+ -0x1.400000000000000000000000008p-148, false, false,
11204+ -0x1.4p-148, false, false,
11205+ -0x1.4p-148, false, false,
11206+ -0x1.4p-148, false, false,
11207+ false,
11208+ -0x1.4000000000000000000000000001p-148, false, false,
11209+ -0x1.4p-148, false, false,
11210+ -0x1.4p-148, false, false,
11211+ -0x1.4p-148, false, false),
11212 TEST ("7.4109846876186981626485318930233205854758970392148714663837"
11213 "852375101326090531312779794975454245398856969484704316857659"
11214 "638998506553390969459816219401617281718945106978546710679176"
11215@@ -3818,35 +3818,35 @@ static const struct test tests[] = {
11216 "337560846003984904972149117463085539556354188641513168478436"
11217 "31308023759629577398300170898437499e-324",
11218 false,
11219- 0x0p+0, false,
11220- 0x0p+0, false,
11221- 0x0p+0, false,
11222- 0x8p-152, false,
11223- false,
11224- 0x4p-1076, false,
11225- 0x4p-1076, false,
11226- 0x4p-1076, false,
11227- 0x8p-1076, false,
11228- false,
11229- 0x5.fffffffffffffff8p-1076, false,
11230- 0x6p-1076, false,
11231- 0x5.fffffffffffffff8p-1076, false,
11232- 0x6p-1076, false,
11233- false,
11234- 0x5.fffffffffffffff8p-1076, false,
11235- 0x6p-1076, false,
11236- 0x5.fffffffffffffff8p-1076, false,
11237- 0x6p-1076, false,
11238- false,
11239- 0x4p-1076, false,
11240- 0x4p-1076, false,
11241- 0x4p-1076, false,
11242- 0x8p-1076, false,
11243- false,
11244- 0x5.fffffffffffffffffffffffffffcp-1076, false,
11245- 0x6p-1076, false,
11246- 0x5.fffffffffffffffffffffffffffcp-1076, false,
11247- 0x6p-1076, false),
11248+ 0x0p+0, false, true,
11249+ 0x0p+0, false, true,
11250+ 0x0p+0, false, true,
11251+ 0x8p-152, false, true,
11252+ false,
11253+ 0x4p-1076, false, true,
11254+ 0x4p-1076, false, true,
11255+ 0x4p-1076, false, true,
11256+ 0x8p-1076, false, true,
11257+ false,
11258+ 0x5.fffffffffffffff8p-1076, false, false,
11259+ 0x6p-1076, false, false,
11260+ 0x5.fffffffffffffff8p-1076, false, false,
11261+ 0x6p-1076, false, false,
11262+ false,
11263+ 0x5.fffffffffffffff8p-1076, false, false,
11264+ 0x6p-1076, false, false,
11265+ 0x5.fffffffffffffff8p-1076, false, false,
11266+ 0x6p-1076, false, false,
11267+ false,
11268+ 0x4p-1076, false, true,
11269+ 0x4p-1076, false, true,
11270+ 0x4p-1076, false, true,
11271+ 0x8p-1076, false, true,
11272+ false,
11273+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false,
11274+ 0x6p-1076, false, false,
11275+ 0x5.fffffffffffffffffffffffffffcp-1076, false, false,
11276+ 0x6p-1076, false, false),
11277 TEST ("7.4109846876186981626485318930233205854758970392148714663837"
11278 "852375101326090531312779794975454245398856969484704316857659"
11279 "638998506553390969459816219401617281718945106978546710679176"
11280@@ -3861,35 +3861,35 @@ static const struct test tests[] = {
11281 "337560846003984904972149117463085539556354188641513168478436"
11282 "313080237596295773983001708984375e-324",
11283 false,
11284- 0x0p+0, false,
11285- 0x0p+0, false,
11286- 0x0p+0, false,
11287- 0x8p-152, false,
11288- false,
11289- 0x4p-1076, false,
11290- 0x8p-1076, false,
11291- 0x4p-1076, false,
11292- 0x8p-1076, false,
11293- true,
11294- 0x6p-1076, false,
11295- 0x6p-1076, false,
11296- 0x6p-1076, false,
11297- 0x6p-1076, false,
11298- true,
11299- 0x6p-1076, false,
11300- 0x6p-1076, false,
11301- 0x6p-1076, false,
11302- 0x6p-1076, false,
11303- false,
11304- 0x4p-1076, false,
11305- 0x8p-1076, false,
11306- 0x4p-1076, false,
11307- 0x8p-1076, false,
11308- true,
11309- 0x6p-1076, false,
11310- 0x6p-1076, false,
11311- 0x6p-1076, false,
11312- 0x6p-1076, false),
11313+ 0x0p+0, false, true,
11314+ 0x0p+0, false, true,
11315+ 0x0p+0, false, true,
11316+ 0x8p-152, false, true,
11317+ false,
11318+ 0x4p-1076, false, true,
11319+ 0x8p-1076, false, true,
11320+ 0x4p-1076, false, true,
11321+ 0x8p-1076, false, true,
11322+ true,
11323+ 0x6p-1076, false, false,
11324+ 0x6p-1076, false, false,
11325+ 0x6p-1076, false, false,
11326+ 0x6p-1076, false, false,
11327+ true,
11328+ 0x6p-1076, false, false,
11329+ 0x6p-1076, false, false,
11330+ 0x6p-1076, false, false,
11331+ 0x6p-1076, false, false,
11332+ false,
11333+ 0x4p-1076, false, true,
11334+ 0x8p-1076, false, true,
11335+ 0x4p-1076, false, true,
11336+ 0x8p-1076, false, true,
11337+ true,
11338+ 0x6p-1076, false, false,
11339+ 0x6p-1076, false, false,
11340+ 0x6p-1076, false, false,
11341+ 0x6p-1076, false, false),
11342 TEST ("7.4109846876186981626485318930233205854758970392148714663837"
11343 "852375101326090531312779794975454245398856969484704316857659"
11344 "638998506553390969459816219401617281718945106978546710679176"
11345@@ -3904,35 +3904,35 @@ static const struct test tests[] = {
11346 "337560846003984904972149117463085539556354188641513168478436"
11347 "31308023759629577398300170898437501e-324",
11348 false,
11349- 0x0p+0, false,
11350- 0x0p+0, false,
11351- 0x0p+0, false,
11352- 0x8p-152, false,
11353- false,
11354- 0x4p-1076, false,
11355- 0x8p-1076, false,
11356- 0x4p-1076, false,
11357- 0x8p-1076, false,
11358- false,
11359- 0x6p-1076, false,
11360- 0x6p-1076, false,
11361- 0x6p-1076, false,
11362- 0x6.0000000000000008p-1076, false,
11363- false,
11364- 0x6p-1076, false,
11365- 0x6p-1076, false,
11366- 0x6p-1076, false,
11367- 0x6.0000000000000008p-1076, false,
11368- false,
11369- 0x4p-1076, false,
11370- 0x8p-1076, false,
11371- 0x4p-1076, false,
11372- 0x8p-1076, false,
11373- false,
11374- 0x6p-1076, false,
11375- 0x6p-1076, false,
11376- 0x6p-1076, false,
11377- 0x6.0000000000000000000000000004p-1076, false),
11378+ 0x0p+0, false, true,
11379+ 0x0p+0, false, true,
11380+ 0x0p+0, false, true,
11381+ 0x8p-152, false, true,
11382+ false,
11383+ 0x4p-1076, false, true,
11384+ 0x8p-1076, false, true,
11385+ 0x4p-1076, false, true,
11386+ 0x8p-1076, false, true,
11387+ false,
11388+ 0x6p-1076, false, false,
11389+ 0x6p-1076, false, false,
11390+ 0x6p-1076, false, false,
11391+ 0x6.0000000000000008p-1076, false, false,
11392+ false,
11393+ 0x6p-1076, false, false,
11394+ 0x6p-1076, false, false,
11395+ 0x6p-1076, false, false,
11396+ 0x6.0000000000000008p-1076, false, false,
11397+ false,
11398+ 0x4p-1076, false, true,
11399+ 0x8p-1076, false, true,
11400+ 0x4p-1076, false, true,
11401+ 0x8p-1076, false, true,
11402+ false,
11403+ 0x6p-1076, false, false,
11404+ 0x6p-1076, false, false,
11405+ 0x6p-1076, false, false,
11406+ 0x6.0000000000000000000000000004p-1076, false, false),
11407 TEST ("-7.410984687618698162648531893023320585475897039214871466383"
11408 "785237510132609053131277979497545424539885696948470431685765"
11409 "963899850655339096945981621940161728171894510697854671067917"
11410@@ -3947,35 +3947,35 @@ static const struct test tests[] = {
11411 "433756084600398490497214911746308553955635418864151316847843"
11412 "631308023759629577398300170898437499e-324",
11413 false,
11414- -0x8p-152, false,
11415- -0x0p+0, false,
11416- -0x0p+0, false,
11417- -0x0p+0, false,
11418- false,
11419- -0x8p-1076, false,
11420- -0x4p-1076, false,
11421- -0x4p-1076, false,
11422- -0x4p-1076, false,
11423- false,
11424- -0x6p-1076, false,
11425- -0x6p-1076, false,
11426- -0x5.fffffffffffffff8p-1076, false,
11427- -0x5.fffffffffffffff8p-1076, false,
11428- false,
11429- -0x6p-1076, false,
11430- -0x6p-1076, false,
11431- -0x5.fffffffffffffff8p-1076, false,
11432- -0x5.fffffffffffffff8p-1076, false,
11433- false,
11434- -0x8p-1076, false,
11435- -0x4p-1076, false,
11436- -0x4p-1076, false,
11437- -0x4p-1076, false,
11438- false,
11439- -0x6p-1076, false,
11440- -0x6p-1076, false,
11441- -0x5.fffffffffffffffffffffffffffcp-1076, false,
11442- -0x5.fffffffffffffffffffffffffffcp-1076, false),
11443+ -0x8p-152, false, true,
11444+ -0x0p+0, false, true,
11445+ -0x0p+0, false, true,
11446+ -0x0p+0, false, true,
11447+ false,
11448+ -0x8p-1076, false, true,
11449+ -0x4p-1076, false, true,
11450+ -0x4p-1076, false, true,
11451+ -0x4p-1076, false, true,
11452+ false,
11453+ -0x6p-1076, false, false,
11454+ -0x6p-1076, false, false,
11455+ -0x5.fffffffffffffff8p-1076, false, false,
11456+ -0x5.fffffffffffffff8p-1076, false, false,
11457+ false,
11458+ -0x6p-1076, false, false,
11459+ -0x6p-1076, false, false,
11460+ -0x5.fffffffffffffff8p-1076, false, false,
11461+ -0x5.fffffffffffffff8p-1076, false, false,
11462+ false,
11463+ -0x8p-1076, false, true,
11464+ -0x4p-1076, false, true,
11465+ -0x4p-1076, false, true,
11466+ -0x4p-1076, false, true,
11467+ false,
11468+ -0x6p-1076, false, false,
11469+ -0x6p-1076, false, false,
11470+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false,
11471+ -0x5.fffffffffffffffffffffffffffcp-1076, false, false),
11472 TEST ("-7.410984687618698162648531893023320585475897039214871466383"
11473 "785237510132609053131277979497545424539885696948470431685765"
11474 "963899850655339096945981621940161728171894510697854671067917"
11475@@ -3990,35 +3990,35 @@ static const struct test tests[] = {
11476 "433756084600398490497214911746308553955635418864151316847843"
11477 "6313080237596295773983001708984375e-324",
11478 false,
11479- -0x8p-152, false,
11480- -0x0p+0, false,
11481- -0x0p+0, false,
11482- -0x0p+0, false,
11483- false,
11484- -0x8p-1076, false,
11485- -0x8p-1076, false,
11486- -0x4p-1076, false,
11487- -0x4p-1076, false,
11488- true,
11489- -0x6p-1076, false,
11490- -0x6p-1076, false,
11491- -0x6p-1076, false,
11492- -0x6p-1076, false,
11493- true,
11494- -0x6p-1076, false,
11495- -0x6p-1076, false,
11496- -0x6p-1076, false,
11497- -0x6p-1076, false,
11498- false,
11499- -0x8p-1076, false,
11500- -0x8p-1076, false,
11501- -0x4p-1076, false,
11502- -0x4p-1076, false,
11503- true,
11504- -0x6p-1076, false,
11505- -0x6p-1076, false,
11506- -0x6p-1076, false,
11507- -0x6p-1076, false),
11508+ -0x8p-152, false, true,
11509+ -0x0p+0, false, true,
11510+ -0x0p+0, false, true,
11511+ -0x0p+0, false, true,
11512+ false,
11513+ -0x8p-1076, false, true,
11514+ -0x8p-1076, false, true,
11515+ -0x4p-1076, false, true,
11516+ -0x4p-1076, false, true,
11517+ true,
11518+ -0x6p-1076, false, false,
11519+ -0x6p-1076, false, false,
11520+ -0x6p-1076, false, false,
11521+ -0x6p-1076, false, false,
11522+ true,
11523+ -0x6p-1076, false, false,
11524+ -0x6p-1076, false, false,
11525+ -0x6p-1076, false, false,
11526+ -0x6p-1076, false, false,
11527+ false,
11528+ -0x8p-1076, false, true,
11529+ -0x8p-1076, false, true,
11530+ -0x4p-1076, false, true,
11531+ -0x4p-1076, false, true,
11532+ true,
11533+ -0x6p-1076, false, false,
11534+ -0x6p-1076, false, false,
11535+ -0x6p-1076, false, false,
11536+ -0x6p-1076, false, false),
11537 TEST ("-7.410984687618698162648531893023320585475897039214871466383"
11538 "785237510132609053131277979497545424539885696948470431685765"
11539 "963899850655339096945981621940161728171894510697854671067917"
11540@@ -4033,35 +4033,35 @@ static const struct test tests[] = {
11541 "433756084600398490497214911746308553955635418864151316847843"
11542 "631308023759629577398300170898437501e-324",
11543 false,
11544- -0x8p-152, false,
11545- -0x0p+0, false,
11546- -0x0p+0, false,
11547- -0x0p+0, false,
11548- false,
11549- -0x8p-1076, false,
11550- -0x8p-1076, false,
11551- -0x4p-1076, false,
11552- -0x4p-1076, false,
11553- false,
11554- -0x6.0000000000000008p-1076, false,
11555- -0x6p-1076, false,
11556- -0x6p-1076, false,
11557- -0x6p-1076, false,
11558- false,
11559- -0x6.0000000000000008p-1076, false,
11560- -0x6p-1076, false,
11561- -0x6p-1076, false,
11562- -0x6p-1076, false,
11563- false,
11564- -0x8p-1076, false,
11565- -0x8p-1076, false,
11566- -0x4p-1076, false,
11567- -0x4p-1076, false,
11568- false,
11569- -0x6.0000000000000000000000000004p-1076, false,
11570- -0x6p-1076, false,
11571- -0x6p-1076, false,
11572- -0x6p-1076, false),
11573+ -0x8p-152, false, true,
11574+ -0x0p+0, false, true,
11575+ -0x0p+0, false, true,
11576+ -0x0p+0, false, true,
11577+ false,
11578+ -0x8p-1076, false, true,
11579+ -0x8p-1076, false, true,
11580+ -0x4p-1076, false, true,
11581+ -0x4p-1076, false, true,
11582+ false,
11583+ -0x6.0000000000000008p-1076, false, false,
11584+ -0x6p-1076, false, false,
11585+ -0x6p-1076, false, false,
11586+ -0x6p-1076, false, false,
11587+ false,
11588+ -0x6.0000000000000008p-1076, false, false,
11589+ -0x6p-1076, false, false,
11590+ -0x6p-1076, false, false,
11591+ -0x6p-1076, false, false,
11592+ false,
11593+ -0x8p-1076, false, true,
11594+ -0x8p-1076, false, true,
11595+ -0x4p-1076, false, true,
11596+ -0x4p-1076, false, true,
11597+ false,
11598+ -0x6.0000000000000000000000000004p-1076, false, false,
11599+ -0x6p-1076, false, false,
11600+ -0x6p-1076, false, false,
11601+ -0x6p-1076, false, false),
11602 TEST ("5.4677992978237119037926089004291297245985762235403450155814"
11603 "707305425575329500966052143410629387408077958710210208052966"
11604 "529504784489330482549602621133847135082257338717668975178538"
11605@@ -4255,35 +4255,35 @@ static const struct test tests[] = {
11606 "866268925981702690270202829595794350800918257913991744455922"
11607 "683343374046671669930219650268554687499e-4951",
11608 false,
11609- 0x0p+0, false,
11610- 0x0p+0, false,
11611- 0x0p+0, false,
11612- 0x8p-152, false,
11613- false,
11614- 0x0p+0, false,
11615- 0x0p+0, false,
11616- 0x0p+0, false,
11617- 0x4p-1076, false,
11618- false,
11619- 0x8p-16448, false,
11620- 0x8p-16448, false,
11621- 0x8p-16448, false,
11622- 0x1p-16444, false,
11623- false,
11624- 0x8p-16448, false,
11625- 0xcp-16448, false,
11626- 0x8p-16448, false,
11627- 0xcp-16448, false,
11628- false,
11629- 0x0p+0, false,
11630- 0x0p+0, false,
11631- 0x0p+0, false,
11632- 0x4p-1076, false,
11633- false,
11634- 0xb.fffffffffffcp-16448, false,
11635- 0xcp-16448, false,
11636- 0xb.fffffffffffcp-16448, false,
11637- 0xcp-16448, false),
11638+ 0x0p+0, false, true,
11639+ 0x0p+0, false, true,
11640+ 0x0p+0, false, true,
11641+ 0x8p-152, false, true,
11642+ false,
11643+ 0x0p+0, false, true,
11644+ 0x0p+0, false, true,
11645+ 0x0p+0, false, true,
11646+ 0x4p-1076, false, true,
11647+ false,
11648+ 0x8p-16448, false, true,
11649+ 0x8p-16448, false, true,
11650+ 0x8p-16448, false, true,
11651+ 0x1p-16444, false, true,
11652+ false,
11653+ 0x8p-16448, false, true,
11654+ 0xcp-16448, false, true,
11655+ 0x8p-16448, false, true,
11656+ 0xcp-16448, false, true,
11657+ false,
11658+ 0x0p+0, false, true,
11659+ 0x0p+0, false, true,
11660+ 0x0p+0, false, true,
11661+ 0x4p-1076, false, true,
11662+ false,
11663+ 0xb.fffffffffffcp-16448, false, true,
11664+ 0xcp-16448, false, true,
11665+ 0xb.fffffffffffcp-16448, false, true,
11666+ 0xcp-16448, false, true),
11667 TEST ("5.4677992978237119037926089004291297245985762235403450155814"
11668 "707305425575329500966052143410629387408077958710210208052966"
11669 "529504784489330482549602621133847135082257338717668975178538"
11670@@ -4477,35 +4477,35 @@ static const struct test tests[] = {
11671 "866268925981702690270202829595794350800918257913991744455922"
11672 "6833433740466716699302196502685546875e-4951",
11673 false,
11674- 0x0p+0, false,
11675- 0x0p+0, false,
11676- 0x0p+0, false,
11677- 0x8p-152, false,
11678- false,
11679- 0x0p+0, false,
11680- 0x0p+0, false,
11681- 0x0p+0, false,
11682- 0x4p-1076, false,
11683- false,
11684- 0x8p-16448, false,
11685- 0x1p-16444, false,
11686- 0x8p-16448, false,
11687- 0x1p-16444, false,
11688- true,
11689- 0xcp-16448, false,
11690- 0xcp-16448, false,
11691- 0xcp-16448, false,
11692- 0xcp-16448, false,
11693- false,
11694- 0x0p+0, false,
11695- 0x0p+0, false,
11696- 0x0p+0, false,
11697- 0x4p-1076, false,
11698- true,
11699- 0xcp-16448, false,
11700- 0xcp-16448, false,
11701- 0xcp-16448, false,
11702- 0xcp-16448, false),
11703+ 0x0p+0, false, true,
11704+ 0x0p+0, false, true,
11705+ 0x0p+0, false, true,
11706+ 0x8p-152, false, true,
11707+ false,
11708+ 0x0p+0, false, true,
11709+ 0x0p+0, false, true,
11710+ 0x0p+0, false, true,
11711+ 0x4p-1076, false, true,
11712+ false,
11713+ 0x8p-16448, false, true,
11714+ 0x1p-16444, false, true,
11715+ 0x8p-16448, false, true,
11716+ 0x1p-16444, false, true,
11717+ true,
11718+ 0xcp-16448, false, false,
11719+ 0xcp-16448, false, false,
11720+ 0xcp-16448, false, false,
11721+ 0xcp-16448, false, false,
11722+ false,
11723+ 0x0p+0, false, true,
11724+ 0x0p+0, false, true,
11725+ 0x0p+0, false, true,
11726+ 0x4p-1076, false, true,
11727+ true,
11728+ 0xcp-16448, false, false,
11729+ 0xcp-16448, false, false,
11730+ 0xcp-16448, false, false,
11731+ 0xcp-16448, false, false),
11732 TEST ("5.4677992978237119037926089004291297245985762235403450155814"
11733 "707305425575329500966052143410629387408077958710210208052966"
11734 "529504784489330482549602621133847135082257338717668975178538"
11735@@ -4699,35 +4699,35 @@ static const struct test tests[] = {
11736 "866268925981702690270202829595794350800918257913991744455922"
11737 "683343374046671669930219650268554687501e-4951",
11738 false,
11739- 0x0p+0, false,
11740- 0x0p+0, false,
11741- 0x0p+0, false,
11742- 0x8p-152, false,
11743- false,
11744- 0x0p+0, false,
11745- 0x0p+0, false,
11746- 0x0p+0, false,
11747- 0x4p-1076, false,
11748- false,
11749- 0x8p-16448, false,
11750- 0x1p-16444, false,
11751- 0x8p-16448, false,
11752- 0x1p-16444, false,
11753- false,
11754- 0xcp-16448, false,
11755- 0xcp-16448, false,
11756- 0xcp-16448, false,
11757- 0x1p-16444, false,
11758- false,
11759- 0x0p+0, false,
11760- 0x0p+0, false,
11761- 0x0p+0, false,
11762- 0x4p-1076, false,
11763- false,
11764- 0xcp-16448, false,
11765- 0xcp-16448, false,
11766- 0xcp-16448, false,
11767- 0xc.000000000004p-16448, false),
11768+ 0x0p+0, false, true,
11769+ 0x0p+0, false, true,
11770+ 0x0p+0, false, true,
11771+ 0x8p-152, false, true,
11772+ false,
11773+ 0x0p+0, false, true,
11774+ 0x0p+0, false, true,
11775+ 0x0p+0, false, true,
11776+ 0x4p-1076, false, true,
11777+ false,
11778+ 0x8p-16448, false, true,
11779+ 0x1p-16444, false, true,
11780+ 0x8p-16448, false, true,
11781+ 0x1p-16444, false, true,
11782+ false,
11783+ 0xcp-16448, false, true,
11784+ 0xcp-16448, false, true,
11785+ 0xcp-16448, false, true,
11786+ 0x1p-16444, false, true,
11787+ false,
11788+ 0x0p+0, false, true,
11789+ 0x0p+0, false, true,
11790+ 0x0p+0, false, true,
11791+ 0x4p-1076, false, true,
11792+ false,
11793+ 0xcp-16448, false, true,
11794+ 0xcp-16448, false, true,
11795+ 0xcp-16448, false, true,
11796+ 0xc.000000000004p-16448, false, true),
11797 TEST ("-5.467799297823711903792608900429129724598576223540345015581"
11798 "470730542557532950096605214341062938740807795871021020805296"
11799 "652950478448933048254960262113384713508225733871766897517853"
11800@@ -4921,35 +4921,35 @@ static const struct test tests[] = {
11801 "386626892598170269027020282959579435080091825791399174445592"
11802 "2683343374046671669930219650268554687499e-4951",
11803 false,
11804- -0x8p-152, false,
11805- -0x0p+0, false,
11806- -0x0p+0, false,
11807- -0x0p+0, false,
11808- false,
11809- -0x4p-1076, false,
11810- -0x0p+0, false,
11811- -0x0p+0, false,
11812- -0x0p+0, false,
11813- false,
11814- -0x1p-16444, false,
11815- -0x8p-16448, false,
11816- -0x8p-16448, false,
11817- -0x8p-16448, false,
11818- false,
11819- -0xcp-16448, false,
11820- -0xcp-16448, false,
11821- -0x8p-16448, false,
11822- -0x8p-16448, false,
11823- false,
11824- -0x4p-1076, false,
11825- -0x0p+0, false,
11826- -0x0p+0, false,
11827- -0x0p+0, false,
11828- false,
11829- -0xcp-16448, false,
11830- -0xcp-16448, false,
11831- -0xb.fffffffffffcp-16448, false,
11832- -0xb.fffffffffffcp-16448, false),
11833+ -0x8p-152, false, true,
11834+ -0x0p+0, false, true,
11835+ -0x0p+0, false, true,
11836+ -0x0p+0, false, true,
11837+ false,
11838+ -0x4p-1076, false, true,
11839+ -0x0p+0, false, true,
11840+ -0x0p+0, false, true,
11841+ -0x0p+0, false, true,
11842+ false,
11843+ -0x1p-16444, false, true,
11844+ -0x8p-16448, false, true,
11845+ -0x8p-16448, false, true,
11846+ -0x8p-16448, false, true,
11847+ false,
11848+ -0xcp-16448, false, true,
11849+ -0xcp-16448, false, true,
11850+ -0x8p-16448, false, true,
11851+ -0x8p-16448, false, true,
11852+ false,
11853+ -0x4p-1076, false, true,
11854+ -0x0p+0, false, true,
11855+ -0x0p+0, false, true,
11856+ -0x0p+0, false, true,
11857+ false,
11858+ -0xcp-16448, false, true,
11859+ -0xcp-16448, false, true,
11860+ -0xb.fffffffffffcp-16448, false, true,
11861+ -0xb.fffffffffffcp-16448, false, true),
11862 TEST ("-5.467799297823711903792608900429129724598576223540345015581"
11863 "470730542557532950096605214341062938740807795871021020805296"
11864 "652950478448933048254960262113384713508225733871766897517853"
11865@@ -5143,35 +5143,35 @@ static const struct test tests[] = {
11866 "386626892598170269027020282959579435080091825791399174445592"
11867 "26833433740466716699302196502685546875e-4951",
11868 false,
11869- -0x8p-152, false,
11870- -0x0p+0, false,
11871- -0x0p+0, false,
11872- -0x0p+0, false,
11873- false,
11874- -0x4p-1076, false,
11875- -0x0p+0, false,
11876- -0x0p+0, false,
11877- -0x0p+0, false,
11878- false,
11879- -0x1p-16444, false,
11880- -0x1p-16444, false,
11881- -0x8p-16448, false,
11882- -0x8p-16448, false,
11883- true,
11884- -0xcp-16448, false,
11885- -0xcp-16448, false,
11886- -0xcp-16448, false,
11887- -0xcp-16448, false,
11888- false,
11889- -0x4p-1076, false,
11890- -0x0p+0, false,
11891- -0x0p+0, false,
11892- -0x0p+0, false,
11893- true,
11894- -0xcp-16448, false,
11895- -0xcp-16448, false,
11896- -0xcp-16448, false,
11897- -0xcp-16448, false),
11898+ -0x8p-152, false, true,
11899+ -0x0p+0, false, true,
11900+ -0x0p+0, false, true,
11901+ -0x0p+0, false, true,
11902+ false,
11903+ -0x4p-1076, false, true,
11904+ -0x0p+0, false, true,
11905+ -0x0p+0, false, true,
11906+ -0x0p+0, false, true,
11907+ false,
11908+ -0x1p-16444, false, true,
11909+ -0x1p-16444, false, true,
11910+ -0x8p-16448, false, true,
11911+ -0x8p-16448, false, true,
11912+ true,
11913+ -0xcp-16448, false, false,
11914+ -0xcp-16448, false, false,
11915+ -0xcp-16448, false, false,
11916+ -0xcp-16448, false, false,
11917+ false,
11918+ -0x4p-1076, false, true,
11919+ -0x0p+0, false, true,
11920+ -0x0p+0, false, true,
11921+ -0x0p+0, false, true,
11922+ true,
11923+ -0xcp-16448, false, false,
11924+ -0xcp-16448, false, false,
11925+ -0xcp-16448, false, false,
11926+ -0xcp-16448, false, false),
11927 TEST ("-5.467799297823711903792608900429129724598576223540345015581"
11928 "470730542557532950096605214341062938740807795871021020805296"
11929 "652950478448933048254960262113384713508225733871766897517853"
11930@@ -5365,35 +5365,35 @@ static const struct test tests[] = {
11931 "386626892598170269027020282959579435080091825791399174445592"
11932 "2683343374046671669930219650268554687501e-4951",
11933 false,
11934- -0x8p-152, false,
11935- -0x0p+0, false,
11936- -0x0p+0, false,
11937- -0x0p+0, false,
11938- false,
11939- -0x4p-1076, false,
11940- -0x0p+0, false,
11941- -0x0p+0, false,
11942- -0x0p+0, false,
11943- false,
11944- -0x1p-16444, false,
11945- -0x1p-16444, false,
11946- -0x8p-16448, false,
11947- -0x8p-16448, false,
11948- false,
11949- -0x1p-16444, false,
11950- -0xcp-16448, false,
11951- -0xcp-16448, false,
11952- -0xcp-16448, false,
11953- false,
11954- -0x4p-1076, false,
11955- -0x0p+0, false,
11956- -0x0p+0, false,
11957- -0x0p+0, false,
11958- false,
11959- -0xc.000000000004p-16448, false,
11960- -0xcp-16448, false,
11961- -0xcp-16448, false,
11962- -0xcp-16448, false),
11963+ -0x8p-152, false, true,
11964+ -0x0p+0, false, true,
11965+ -0x0p+0, false, true,
11966+ -0x0p+0, false, true,
11967+ false,
11968+ -0x4p-1076, false, true,
11969+ -0x0p+0, false, true,
11970+ -0x0p+0, false, true,
11971+ -0x0p+0, false, true,
11972+ false,
11973+ -0x1p-16444, false, true,
11974+ -0x1p-16444, false, true,
11975+ -0x8p-16448, false, true,
11976+ -0x8p-16448, false, true,
11977+ false,
11978+ -0x1p-16444, false, true,
11979+ -0xcp-16448, false, true,
11980+ -0xcp-16448, false, true,
11981+ -0xcp-16448, false, true,
11982+ false,
11983+ -0x4p-1076, false, true,
11984+ -0x0p+0, false, true,
11985+ -0x0p+0, false, true,
11986+ -0x0p+0, false, true,
11987+ false,
11988+ -0xc.000000000004p-16448, false, true,
11989+ -0xcp-16448, false, true,
11990+ -0xcp-16448, false, true,
11991+ -0xcp-16448, false, true),
11992 TEST ("5.4677992978237119037926089004291297245985762235403450155814"
11993 "707305425575329500966052143410629387408077958710210208052966"
11994 "529504784489330482549602621133847135082257338717668975178538"
11995@@ -5587,35 +5587,35 @@ static const struct test tests[] = {
11996 "866268925981702690270202829595794350800918257913991744455922"
11997 "683343374046671669930219650268554687499e-4951",
11998 false,
11999- 0x0p+0, false,
12000- 0x0p+0, false,
12001- 0x0p+0, false,
12002- 0x8p-152, false,
12003- false,
12004- 0x0p+0, false,
12005- 0x0p+0, false,
12006- 0x0p+0, false,
12007- 0x4p-1076, false,
12008- false,
12009- 0x8p-16448, false,
12010- 0x8p-16448, false,
12011- 0x8p-16448, false,
12012- 0x1p-16444, false,
12013- false,
12014- 0x8p-16448, false,
12015- 0xcp-16448, false,
12016- 0x8p-16448, false,
12017- 0xcp-16448, false,
12018- false,
12019- 0x0p+0, false,
12020- 0x0p+0, false,
12021- 0x0p+0, false,
12022- 0x4p-1076, false,
12023- false,
12024- 0xb.fffffffffffcp-16448, false,
12025- 0xcp-16448, false,
12026- 0xb.fffffffffffcp-16448, false,
12027- 0xcp-16448, false),
12028+ 0x0p+0, false, true,
12029+ 0x0p+0, false, true,
12030+ 0x0p+0, false, true,
12031+ 0x8p-152, false, true,
12032+ false,
12033+ 0x0p+0, false, true,
12034+ 0x0p+0, false, true,
12035+ 0x0p+0, false, true,
12036+ 0x4p-1076, false, true,
12037+ false,
12038+ 0x8p-16448, false, true,
12039+ 0x8p-16448, false, true,
12040+ 0x8p-16448, false, true,
12041+ 0x1p-16444, false, true,
12042+ false,
12043+ 0x8p-16448, false, true,
12044+ 0xcp-16448, false, true,
12045+ 0x8p-16448, false, true,
12046+ 0xcp-16448, false, true,
12047+ false,
12048+ 0x0p+0, false, true,
12049+ 0x0p+0, false, true,
12050+ 0x0p+0, false, true,
12051+ 0x4p-1076, false, true,
12052+ false,
12053+ 0xb.fffffffffffcp-16448, false, true,
12054+ 0xcp-16448, false, true,
12055+ 0xb.fffffffffffcp-16448, false, true,
12056+ 0xcp-16448, false, true),
12057 TEST ("5.4677992978237119037926089004291297245985762235403450155814"
12058 "707305425575329500966052143410629387408077958710210208052966"
12059 "529504784489330482549602621133847135082257338717668975178538"
12060@@ -5809,35 +5809,35 @@ static const struct test tests[] = {
12061 "866268925981702690270202829595794350800918257913991744455922"
12062 "6833433740466716699302196502685546875e-4951",
12063 false,
12064- 0x0p+0, false,
12065- 0x0p+0, false,
12066- 0x0p+0, false,
12067- 0x8p-152, false,
12068- false,
12069- 0x0p+0, false,
12070- 0x0p+0, false,
12071- 0x0p+0, false,
12072- 0x4p-1076, false,
12073- false,
12074- 0x8p-16448, false,
12075- 0x1p-16444, false,
12076- 0x8p-16448, false,
12077- 0x1p-16444, false,
12078- true,
12079- 0xcp-16448, false,
12080- 0xcp-16448, false,
12081- 0xcp-16448, false,
12082- 0xcp-16448, false,
12083- false,
12084- 0x0p+0, false,
12085- 0x0p+0, false,
12086- 0x0p+0, false,
12087- 0x4p-1076, false,
12088- true,
12089- 0xcp-16448, false,
12090- 0xcp-16448, false,
12091- 0xcp-16448, false,
12092- 0xcp-16448, false),
12093+ 0x0p+0, false, true,
12094+ 0x0p+0, false, true,
12095+ 0x0p+0, false, true,
12096+ 0x8p-152, false, true,
12097+ false,
12098+ 0x0p+0, false, true,
12099+ 0x0p+0, false, true,
12100+ 0x0p+0, false, true,
12101+ 0x4p-1076, false, true,
12102+ false,
12103+ 0x8p-16448, false, true,
12104+ 0x1p-16444, false, true,
12105+ 0x8p-16448, false, true,
12106+ 0x1p-16444, false, true,
12107+ true,
12108+ 0xcp-16448, false, false,
12109+ 0xcp-16448, false, false,
12110+ 0xcp-16448, false, false,
12111+ 0xcp-16448, false, false,
12112+ false,
12113+ 0x0p+0, false, true,
12114+ 0x0p+0, false, true,
12115+ 0x0p+0, false, true,
12116+ 0x4p-1076, false, true,
12117+ true,
12118+ 0xcp-16448, false, false,
12119+ 0xcp-16448, false, false,
12120+ 0xcp-16448, false, false,
12121+ 0xcp-16448, false, false),
12122 TEST ("5.4677992978237119037926089004291297245985762235403450155814"
12123 "707305425575329500966052143410629387408077958710210208052966"
12124 "529504784489330482549602621133847135082257338717668975178538"
12125@@ -6031,35 +6031,35 @@ static const struct test tests[] = {
12126 "866268925981702690270202829595794350800918257913991744455922"
12127 "683343374046671669930219650268554687501e-4951",
12128 false,
12129- 0x0p+0, false,
12130- 0x0p+0, false,
12131- 0x0p+0, false,
12132- 0x8p-152, false,
12133- false,
12134- 0x0p+0, false,
12135- 0x0p+0, false,
12136- 0x0p+0, false,
12137- 0x4p-1076, false,
12138- false,
12139- 0x8p-16448, false,
12140- 0x1p-16444, false,
12141- 0x8p-16448, false,
12142- 0x1p-16444, false,
12143- false,
12144- 0xcp-16448, false,
12145- 0xcp-16448, false,
12146- 0xcp-16448, false,
12147- 0x1p-16444, false,
12148- false,
12149- 0x0p+0, false,
12150- 0x0p+0, false,
12151- 0x0p+0, false,
12152- 0x4p-1076, false,
12153- false,
12154- 0xcp-16448, false,
12155- 0xcp-16448, false,
12156- 0xcp-16448, false,
12157- 0xc.000000000004p-16448, false),
12158+ 0x0p+0, false, true,
12159+ 0x0p+0, false, true,
12160+ 0x0p+0, false, true,
12161+ 0x8p-152, false, true,
12162+ false,
12163+ 0x0p+0, false, true,
12164+ 0x0p+0, false, true,
12165+ 0x0p+0, false, true,
12166+ 0x4p-1076, false, true,
12167+ false,
12168+ 0x8p-16448, false, true,
12169+ 0x1p-16444, false, true,
12170+ 0x8p-16448, false, true,
12171+ 0x1p-16444, false, true,
12172+ false,
12173+ 0xcp-16448, false, true,
12174+ 0xcp-16448, false, true,
12175+ 0xcp-16448, false, true,
12176+ 0x1p-16444, false, true,
12177+ false,
12178+ 0x0p+0, false, true,
12179+ 0x0p+0, false, true,
12180+ 0x0p+0, false, true,
12181+ 0x4p-1076, false, true,
12182+ false,
12183+ 0xcp-16448, false, true,
12184+ 0xcp-16448, false, true,
12185+ 0xcp-16448, false, true,
12186+ 0xc.000000000004p-16448, false, true),
12187 TEST ("-5.467799297823711903792608900429129724598576223540345015581"
12188 "470730542557532950096605214341062938740807795871021020805296"
12189 "652950478448933048254960262113384713508225733871766897517853"
12190@@ -6253,35 +6253,35 @@ static const struct test tests[] = {
12191 "386626892598170269027020282959579435080091825791399174445592"
12192 "2683343374046671669930219650268554687499e-4951",
12193 false,
12194- -0x8p-152, false,
12195- -0x0p+0, false,
12196- -0x0p+0, false,
12197- -0x0p+0, false,
12198- false,
12199- -0x4p-1076, false,
12200- -0x0p+0, false,
12201- -0x0p+0, false,
12202- -0x0p+0, false,
12203- false,
12204- -0x1p-16444, false,
12205- -0x8p-16448, false,
12206- -0x8p-16448, false,
12207- -0x8p-16448, false,
12208- false,
12209- -0xcp-16448, false,
12210- -0xcp-16448, false,
12211- -0x8p-16448, false,
12212- -0x8p-16448, false,
12213- false,
12214- -0x4p-1076, false,
12215- -0x0p+0, false,
12216- -0x0p+0, false,
12217- -0x0p+0, false,
12218- false,
12219- -0xcp-16448, false,
12220- -0xcp-16448, false,
12221- -0xb.fffffffffffcp-16448, false,
12222- -0xb.fffffffffffcp-16448, false),
12223+ -0x8p-152, false, true,
12224+ -0x0p+0, false, true,
12225+ -0x0p+0, false, true,
12226+ -0x0p+0, false, true,
12227+ false,
12228+ -0x4p-1076, false, true,
12229+ -0x0p+0, false, true,
12230+ -0x0p+0, false, true,
12231+ -0x0p+0, false, true,
12232+ false,
12233+ -0x1p-16444, false, true,
12234+ -0x8p-16448, false, true,
12235+ -0x8p-16448, false, true,
12236+ -0x8p-16448, false, true,
12237+ false,
12238+ -0xcp-16448, false, true,
12239+ -0xcp-16448, false, true,
12240+ -0x8p-16448, false, true,
12241+ -0x8p-16448, false, true,
12242+ false,
12243+ -0x4p-1076, false, true,
12244+ -0x0p+0, false, true,
12245+ -0x0p+0, false, true,
12246+ -0x0p+0, false, true,
12247+ false,
12248+ -0xcp-16448, false, true,
12249+ -0xcp-16448, false, true,
12250+ -0xb.fffffffffffcp-16448, false, true,
12251+ -0xb.fffffffffffcp-16448, false, true),
12252 TEST ("-5.467799297823711903792608900429129724598576223540345015581"
12253 "470730542557532950096605214341062938740807795871021020805296"
12254 "652950478448933048254960262113384713508225733871766897517853"
12255@@ -6475,35 +6475,35 @@ static const struct test tests[] = {
12256 "386626892598170269027020282959579435080091825791399174445592"
12257 "26833433740466716699302196502685546875e-4951",
12258 false,
12259- -0x8p-152, false,
12260- -0x0p+0, false,
12261- -0x0p+0, false,
12262- -0x0p+0, false,
12263- false,
12264- -0x4p-1076, false,
12265- -0x0p+0, false,
12266- -0x0p+0, false,
12267- -0x0p+0, false,
12268- false,
12269- -0x1p-16444, false,
12270- -0x1p-16444, false,
12271- -0x8p-16448, false,
12272- -0x8p-16448, false,
12273- true,
12274- -0xcp-16448, false,
12275- -0xcp-16448, false,
12276- -0xcp-16448, false,
12277- -0xcp-16448, false,
12278- false,
12279- -0x4p-1076, false,
12280- -0x0p+0, false,
12281- -0x0p+0, false,
12282- -0x0p+0, false,
12283- true,
12284- -0xcp-16448, false,
12285- -0xcp-16448, false,
12286- -0xcp-16448, false,
12287- -0xcp-16448, false),
12288+ -0x8p-152, false, true,
12289+ -0x0p+0, false, true,
12290+ -0x0p+0, false, true,
12291+ -0x0p+0, false, true,
12292+ false,
12293+ -0x4p-1076, false, true,
12294+ -0x0p+0, false, true,
12295+ -0x0p+0, false, true,
12296+ -0x0p+0, false, true,
12297+ false,
12298+ -0x1p-16444, false, true,
12299+ -0x1p-16444, false, true,
12300+ -0x8p-16448, false, true,
12301+ -0x8p-16448, false, true,
12302+ true,
12303+ -0xcp-16448, false, false,
12304+ -0xcp-16448, false, false,
12305+ -0xcp-16448, false, false,
12306+ -0xcp-16448, false, false,
12307+ false,
12308+ -0x4p-1076, false, true,
12309+ -0x0p+0, false, true,
12310+ -0x0p+0, false, true,
12311+ -0x0p+0, false, true,
12312+ true,
12313+ -0xcp-16448, false, false,
12314+ -0xcp-16448, false, false,
12315+ -0xcp-16448, false, false,
12316+ -0xcp-16448, false, false),
12317 TEST ("-5.467799297823711903792608900429129724598576223540345015581"
12318 "470730542557532950096605214341062938740807795871021020805296"
12319 "652950478448933048254960262113384713508225733871766897517853"
12320@@ -6697,630 +6697,630 @@ static const struct test tests[] = {
12321 "386626892598170269027020282959579435080091825791399174445592"
12322 "2683343374046671669930219650268554687501e-4951",
12323 false,
12324- -0x8p-152, false,
12325- -0x0p+0, false,
12326- -0x0p+0, false,
12327- -0x0p+0, false,
12328- false,
12329- -0x4p-1076, false,
12330- -0x0p+0, false,
12331- -0x0p+0, false,
12332- -0x0p+0, false,
12333- false,
12334- -0x1p-16444, false,
12335- -0x1p-16444, false,
12336- -0x8p-16448, false,
12337- -0x8p-16448, false,
12338- false,
12339- -0x1p-16444, false,
12340- -0xcp-16448, false,
12341- -0xcp-16448, false,
12342- -0xcp-16448, false,
12343- false,
12344- -0x4p-1076, false,
12345- -0x0p+0, false,
12346- -0x0p+0, false,
12347- -0x0p+0, false,
12348- false,
12349- -0xc.000000000004p-16448, false,
12350- -0xcp-16448, false,
12351- -0xcp-16448, false,
12352- -0xcp-16448, false),
12353+ -0x8p-152, false, true,
12354+ -0x0p+0, false, true,
12355+ -0x0p+0, false, true,
12356+ -0x0p+0, false, true,
12357+ false,
12358+ -0x4p-1076, false, true,
12359+ -0x0p+0, false, true,
12360+ -0x0p+0, false, true,
12361+ -0x0p+0, false, true,
12362+ false,
12363+ -0x1p-16444, false, true,
12364+ -0x1p-16444, false, true,
12365+ -0x8p-16448, false, true,
12366+ -0x8p-16448, false, true,
12367+ false,
12368+ -0x1p-16444, false, true,
12369+ -0xcp-16448, false, true,
12370+ -0xcp-16448, false, true,
12371+ -0xcp-16448, false, true,
12372+ false,
12373+ -0x4p-1076, false, true,
12374+ -0x0p+0, false, true,
12375+ -0x0p+0, false, true,
12376+ -0x0p+0, false, true,
12377+ false,
12378+ -0xc.000000000004p-16448, false, true,
12379+ -0xcp-16448, false, true,
12380+ -0xcp-16448, false, true,
12381+ -0xcp-16448, false, true),
12382 TEST ("-0x0.7p-149",
12383 false,
12384- -0x8p-152, false,
12385- -0x0p+0, false,
12386- -0x0p+0, false,
12387- -0x0p+0, false,
12388- true,
12389- -0x3.8p-152, false,
12390- -0x3.8p-152, false,
12391- -0x3.8p-152, false,
12392- -0x3.8p-152, false,
12393- true,
12394- -0x3.8p-152, false,
12395- -0x3.8p-152, false,
12396- -0x3.8p-152, false,
12397- -0x3.8p-152, false,
12398- true,
12399- -0x3.8p-152, false,
12400- -0x3.8p-152, false,
12401- -0x3.8p-152, false,
12402- -0x3.8p-152, false,
12403- true,
12404- -0x3.8p-152, false,
12405- -0x3.8p-152, false,
12406- -0x3.8p-152, false,
12407- -0x3.8p-152, false,
12408- true,
12409- -0x3.8p-152, false,
12410- -0x3.8p-152, false,
12411- -0x3.8p-152, false,
12412- -0x3.8p-152, false),
12413+ -0x8p-152, false, true,
12414+ -0x0p+0, false, true,
12415+ -0x0p+0, false, true,
12416+ -0x0p+0, false, true,
12417+ true,
12418+ -0x3.8p-152, false, false,
12419+ -0x3.8p-152, false, false,
12420+ -0x3.8p-152, false, false,
12421+ -0x3.8p-152, false, false,
12422+ true,
12423+ -0x3.8p-152, false, false,
12424+ -0x3.8p-152, false, false,
12425+ -0x3.8p-152, false, false,
12426+ -0x3.8p-152, false, false,
12427+ true,
12428+ -0x3.8p-152, false, false,
12429+ -0x3.8p-152, false, false,
12430+ -0x3.8p-152, false, false,
12431+ -0x3.8p-152, false, false,
12432+ true,
12433+ -0x3.8p-152, false, false,
12434+ -0x3.8p-152, false, false,
12435+ -0x3.8p-152, false, false,
12436+ -0x3.8p-152, false, false,
12437+ true,
12438+ -0x3.8p-152, false, false,
12439+ -0x3.8p-152, false, false,
12440+ -0x3.8p-152, false, false,
12441+ -0x3.8p-152, false, false),
12442 TEST ("-0x0.7p-1074",
12443 false,
12444- -0x8p-152, false,
12445- -0x0p+0, false,
12446- -0x0p+0, false,
12447- -0x0p+0, false,
12448- false,
12449- -0x4p-1076, false,
12450- -0x0p+0, false,
12451- -0x0p+0, false,
12452- -0x0p+0, false,
12453- true,
12454- -0x1.cp-1076, false,
12455- -0x1.cp-1076, false,
12456- -0x1.cp-1076, false,
12457- -0x1.cp-1076, false,
12458- true,
12459- -0x1.cp-1076, false,
12460- -0x1.cp-1076, false,
12461- -0x1.cp-1076, false,
12462- -0x1.cp-1076, false,
12463- false,
12464- -0x4p-1076, false,
12465- -0x0p+0, false,
12466- -0x0p+0, false,
12467- -0x0p+0, false,
12468- true,
12469- -0x1.cp-1076, false,
12470- -0x1.cp-1076, false,
12471- -0x1.cp-1076, false,
12472- -0x1.cp-1076, false),
12473+ -0x8p-152, false, true,
12474+ -0x0p+0, false, true,
12475+ -0x0p+0, false, true,
12476+ -0x0p+0, false, true,
12477+ false,
12478+ -0x4p-1076, false, true,
12479+ -0x0p+0, false, true,
12480+ -0x0p+0, false, true,
12481+ -0x0p+0, false, true,
12482+ true,
12483+ -0x1.cp-1076, false, false,
12484+ -0x1.cp-1076, false, false,
12485+ -0x1.cp-1076, false, false,
12486+ -0x1.cp-1076, false, false,
12487+ true,
12488+ -0x1.cp-1076, false, false,
12489+ -0x1.cp-1076, false, false,
12490+ -0x1.cp-1076, false, false,
12491+ -0x1.cp-1076, false, false,
12492+ false,
12493+ -0x4p-1076, false, true,
12494+ -0x0p+0, false, true,
12495+ -0x0p+0, false, true,
12496+ -0x0p+0, false, true,
12497+ true,
12498+ -0x1.cp-1076, false, false,
12499+ -0x1.cp-1076, false, false,
12500+ -0x1.cp-1076, false, false,
12501+ -0x1.cp-1076, false, false),
12502 TEST ("-0x0.7p-16445",
12503 false,
12504- -0x8p-152, false,
12505- -0x0p+0, false,
12506- -0x0p+0, false,
12507- -0x0p+0, false,
12508- false,
12509- -0x4p-1076, false,
12510- -0x0p+0, false,
12511- -0x0p+0, false,
12512- -0x0p+0, false,
12513- false,
12514- -0x8p-16448, false,
12515- -0x0p+0, false,
12516- -0x0p+0, false,
12517- -0x0p+0, false,
12518- false,
12519- -0x4p-16448, false,
12520- -0x4p-16448, false,
12521- -0x0p+0, false,
12522- -0x0p+0, false,
12523- false,
12524- -0x4p-1076, false,
12525- -0x0p+0, false,
12526- -0x0p+0, false,
12527- -0x0p+0, false,
12528- true,
12529- -0x3.8p-16448, false,
12530- -0x3.8p-16448, false,
12531- -0x3.8p-16448, false,
12532- -0x3.8p-16448, false),
12533+ -0x8p-152, false, true,
12534+ -0x0p+0, false, true,
12535+ -0x0p+0, false, true,
12536+ -0x0p+0, false, true,
12537+ false,
12538+ -0x4p-1076, false, true,
12539+ -0x0p+0, false, true,
12540+ -0x0p+0, false, true,
12541+ -0x0p+0, false, true,
12542+ false,
12543+ -0x8p-16448, false, true,
12544+ -0x0p+0, false, true,
12545+ -0x0p+0, false, true,
12546+ -0x0p+0, false, true,
12547+ false,
12548+ -0x4p-16448, false, true,
12549+ -0x4p-16448, false, true,
12550+ -0x0p+0, false, true,
12551+ -0x0p+0, false, true,
12552+ false,
12553+ -0x4p-1076, false, true,
12554+ -0x0p+0, false, true,
12555+ -0x0p+0, false, true,
12556+ -0x0p+0, false, true,
12557+ true,
12558+ -0x3.8p-16448, false, false,
12559+ -0x3.8p-16448, false, false,
12560+ -0x3.8p-16448, false, false,
12561+ -0x3.8p-16448, false, false),
12562 TEST ("-0x0.7p-16494",
12563 false,
12564- -0x8p-152, false,
12565- -0x0p+0, false,
12566- -0x0p+0, false,
12567- -0x0p+0, false,
12568- false,
12569- -0x4p-1076, false,
12570- -0x0p+0, false,
12571- -0x0p+0, false,
12572- -0x0p+0, false,
12573- false,
12574- -0x8p-16448, false,
12575- -0x0p+0, false,
12576- -0x0p+0, false,
12577- -0x0p+0, false,
12578- false,
12579- -0x4p-16448, false,
12580- -0x0p+0, false,
12581- -0x0p+0, false,
12582- -0x0p+0, false,
12583- false,
12584- -0x4p-1076, false,
12585- -0x0p+0, false,
12586- -0x0p+0, false,
12587- -0x0p+0, false,
12588- false,
12589- -0x4p-16496, false,
12590- -0x0p+0, false,
12591- -0x0p+0, false,
12592- -0x0p+0, false),
12593+ -0x8p-152, false, true,
12594+ -0x0p+0, false, true,
12595+ -0x0p+0, false, true,
12596+ -0x0p+0, false, true,
12597+ false,
12598+ -0x4p-1076, false, true,
12599+ -0x0p+0, false, true,
12600+ -0x0p+0, false, true,
12601+ -0x0p+0, false, true,
12602+ false,
12603+ -0x8p-16448, false, true,
12604+ -0x0p+0, false, true,
12605+ -0x0p+0, false, true,
12606+ -0x0p+0, false, true,
12607+ false,
12608+ -0x4p-16448, false, true,
12609+ -0x0p+0, false, true,
12610+ -0x0p+0, false, true,
12611+ -0x0p+0, false, true,
12612+ false,
12613+ -0x4p-1076, false, true,
12614+ -0x0p+0, false, true,
12615+ -0x0p+0, false, true,
12616+ -0x0p+0, false, true,
12617+ false,
12618+ -0x4p-16496, false, true,
12619+ -0x0p+0, false, true,
12620+ -0x0p+0, false, true,
12621+ -0x0p+0, false, true),
12622 TEST ("0x1p-150",
12623 false,
12624- 0x0p+0, false,
12625- 0x0p+0, false,
12626- 0x0p+0, false,
12627- 0x8p-152, false,
12628- true,
12629- 0x4p-152, false,
12630- 0x4p-152, false,
12631- 0x4p-152, false,
12632- 0x4p-152, false,
12633- true,
12634- 0x4p-152, false,
12635- 0x4p-152, false,
12636- 0x4p-152, false,
12637- 0x4p-152, false,
12638- true,
12639- 0x4p-152, false,
12640- 0x4p-152, false,
12641- 0x4p-152, false,
12642- 0x4p-152, false,
12643- true,
12644- 0x4p-152, false,
12645- 0x4p-152, false,
12646- 0x4p-152, false,
12647- 0x4p-152, false,
12648- true,
12649- 0x4p-152, false,
12650- 0x4p-152, false,
12651- 0x4p-152, false,
12652- 0x4p-152, false),
12653+ 0x0p+0, false, true,
12654+ 0x0p+0, false, true,
12655+ 0x0p+0, false, true,
12656+ 0x8p-152, false, true,
12657+ true,
12658+ 0x4p-152, false, false,
12659+ 0x4p-152, false, false,
12660+ 0x4p-152, false, false,
12661+ 0x4p-152, false, false,
12662+ true,
12663+ 0x4p-152, false, false,
12664+ 0x4p-152, false, false,
12665+ 0x4p-152, false, false,
12666+ 0x4p-152, false, false,
12667+ true,
12668+ 0x4p-152, false, false,
12669+ 0x4p-152, false, false,
12670+ 0x4p-152, false, false,
12671+ 0x4p-152, false, false,
12672+ true,
12673+ 0x4p-152, false, false,
12674+ 0x4p-152, false, false,
12675+ 0x4p-152, false, false,
12676+ 0x4p-152, false, false,
12677+ true,
12678+ 0x4p-152, false, false,
12679+ 0x4p-152, false, false,
12680+ 0x4p-152, false, false,
12681+ 0x4p-152, false, false),
12682 TEST ("0x1p-1075",
12683 false,
12684- 0x0p+0, false,
12685- 0x0p+0, false,
12686- 0x0p+0, false,
12687- 0x8p-152, false,
12688- false,
12689- 0x0p+0, false,
12690- 0x0p+0, false,
12691- 0x0p+0, false,
12692- 0x4p-1076, false,
12693- true,
12694- 0x2p-1076, false,
12695- 0x2p-1076, false,
12696- 0x2p-1076, false,
12697- 0x2p-1076, false,
12698- true,
12699- 0x2p-1076, false,
12700- 0x2p-1076, false,
12701- 0x2p-1076, false,
12702- 0x2p-1076, false,
12703- false,
12704- 0x0p+0, false,
12705- 0x0p+0, false,
12706- 0x0p+0, false,
12707- 0x4p-1076, false,
12708- true,
12709- 0x2p-1076, false,
12710- 0x2p-1076, false,
12711- 0x2p-1076, false,
12712- 0x2p-1076, false),
12713+ 0x0p+0, false, true,
12714+ 0x0p+0, false, true,
12715+ 0x0p+0, false, true,
12716+ 0x8p-152, false, true,
12717+ false,
12718+ 0x0p+0, false, true,
12719+ 0x0p+0, false, true,
12720+ 0x0p+0, false, true,
12721+ 0x4p-1076, false, true,
12722+ true,
12723+ 0x2p-1076, false, false,
12724+ 0x2p-1076, false, false,
12725+ 0x2p-1076, false, false,
12726+ 0x2p-1076, false, false,
12727+ true,
12728+ 0x2p-1076, false, false,
12729+ 0x2p-1076, false, false,
12730+ 0x2p-1076, false, false,
12731+ 0x2p-1076, false, false,
12732+ false,
12733+ 0x0p+0, false, true,
12734+ 0x0p+0, false, true,
12735+ 0x0p+0, false, true,
12736+ 0x4p-1076, false, true,
12737+ true,
12738+ 0x2p-1076, false, false,
12739+ 0x2p-1076, false, false,
12740+ 0x2p-1076, false, false,
12741+ 0x2p-1076, false, false),
12742 TEST ("0x1p-16446",
12743 false,
12744- 0x0p+0, false,
12745- 0x0p+0, false,
12746- 0x0p+0, false,
12747- 0x8p-152, false,
12748- false,
12749- 0x0p+0, false,
12750- 0x0p+0, false,
12751- 0x0p+0, false,
12752- 0x4p-1076, false,
12753- false,
12754- 0x0p+0, false,
12755- 0x0p+0, false,
12756- 0x0p+0, false,
12757- 0x8p-16448, false,
12758- true,
12759- 0x4p-16448, false,
12760- 0x4p-16448, false,
12761- 0x4p-16448, false,
12762- 0x4p-16448, false,
12763- false,
12764- 0x0p+0, false,
12765- 0x0p+0, false,
12766- 0x0p+0, false,
12767- 0x4p-1076, false,
12768- true,
12769- 0x4p-16448, false,
12770- 0x4p-16448, false,
12771- 0x4p-16448, false,
12772- 0x4p-16448, false),
12773+ 0x0p+0, false, true,
12774+ 0x0p+0, false, true,
12775+ 0x0p+0, false, true,
12776+ 0x8p-152, false, true,
12777+ false,
12778+ 0x0p+0, false, true,
12779+ 0x0p+0, false, true,
12780+ 0x0p+0, false, true,
12781+ 0x4p-1076, false, true,
12782+ false,
12783+ 0x0p+0, false, true,
12784+ 0x0p+0, false, true,
12785+ 0x0p+0, false, true,
12786+ 0x8p-16448, false, true,
12787+ true,
12788+ 0x4p-16448, false, false,
12789+ 0x4p-16448, false, false,
12790+ 0x4p-16448, false, false,
12791+ 0x4p-16448, false, false,
12792+ false,
12793+ 0x0p+0, false, true,
12794+ 0x0p+0, false, true,
12795+ 0x0p+0, false, true,
12796+ 0x4p-1076, false, true,
12797+ true,
12798+ 0x4p-16448, false, false,
12799+ 0x4p-16448, false, false,
12800+ 0x4p-16448, false, false,
12801+ 0x4p-16448, false, false),
12802 TEST ("0x1p-16495",
12803 false,
12804- 0x0p+0, false,
12805- 0x0p+0, false,
12806- 0x0p+0, false,
12807- 0x8p-152, false,
12808- false,
12809- 0x0p+0, false,
12810- 0x0p+0, false,
12811- 0x0p+0, false,
12812- 0x4p-1076, false,
12813- false,
12814- 0x0p+0, false,
12815- 0x0p+0, false,
12816- 0x0p+0, false,
12817- 0x8p-16448, false,
12818- false,
12819- 0x0p+0, false,
12820- 0x0p+0, false,
12821- 0x0p+0, false,
12822- 0x4p-16448, false,
12823- false,
12824- 0x0p+0, false,
12825- 0x0p+0, false,
12826- 0x0p+0, false,
12827- 0x4p-1076, false,
12828- false,
12829- 0x0p+0, false,
12830- 0x0p+0, false,
12831- 0x0p+0, false,
12832- 0x4p-16496, false),
12833+ 0x0p+0, false, true,
12834+ 0x0p+0, false, true,
12835+ 0x0p+0, false, true,
12836+ 0x8p-152, false, true,
12837+ false,
12838+ 0x0p+0, false, true,
12839+ 0x0p+0, false, true,
12840+ 0x0p+0, false, true,
12841+ 0x4p-1076, false, true,
12842+ false,
12843+ 0x0p+0, false, true,
12844+ 0x0p+0, false, true,
12845+ 0x0p+0, false, true,
12846+ 0x8p-16448, false, true,
12847+ false,
12848+ 0x0p+0, false, true,
12849+ 0x0p+0, false, true,
12850+ 0x0p+0, false, true,
12851+ 0x4p-16448, false, true,
12852+ false,
12853+ 0x0p+0, false, true,
12854+ 0x0p+0, false, true,
12855+ 0x0p+0, false, true,
12856+ 0x4p-1076, false, true,
12857+ false,
12858+ 0x0p+0, false, true,
12859+ 0x0p+0, false, true,
12860+ 0x0p+0, false, true,
12861+ 0x4p-16496, false, true),
12862 TEST ("-0x1p-150",
12863 false,
12864- -0x8p-152, false,
12865- -0x0p+0, false,
12866- -0x0p+0, false,
12867- -0x0p+0, false,
12868- true,
12869- -0x4p-152, false,
12870- -0x4p-152, false,
12871- -0x4p-152, false,
12872- -0x4p-152, false,
12873- true,
12874- -0x4p-152, false,
12875- -0x4p-152, false,
12876- -0x4p-152, false,
12877- -0x4p-152, false,
12878- true,
12879- -0x4p-152, false,
12880- -0x4p-152, false,
12881- -0x4p-152, false,
12882- -0x4p-152, false,
12883- true,
12884- -0x4p-152, false,
12885- -0x4p-152, false,
12886- -0x4p-152, false,
12887- -0x4p-152, false,
12888- true,
12889- -0x4p-152, false,
12890- -0x4p-152, false,
12891- -0x4p-152, false,
12892- -0x4p-152, false),
12893+ -0x8p-152, false, true,
12894+ -0x0p+0, false, true,
12895+ -0x0p+0, false, true,
12896+ -0x0p+0, false, true,
12897+ true,
12898+ -0x4p-152, false, false,
12899+ -0x4p-152, false, false,
12900+ -0x4p-152, false, false,
12901+ -0x4p-152, false, false,
12902+ true,
12903+ -0x4p-152, false, false,
12904+ -0x4p-152, false, false,
12905+ -0x4p-152, false, false,
12906+ -0x4p-152, false, false,
12907+ true,
12908+ -0x4p-152, false, false,
12909+ -0x4p-152, false, false,
12910+ -0x4p-152, false, false,
12911+ -0x4p-152, false, false,
12912+ true,
12913+ -0x4p-152, false, false,
12914+ -0x4p-152, false, false,
12915+ -0x4p-152, false, false,
12916+ -0x4p-152, false, false,
12917+ true,
12918+ -0x4p-152, false, false,
12919+ -0x4p-152, false, false,
12920+ -0x4p-152, false, false,
12921+ -0x4p-152, false, false),
12922 TEST ("-0x1p-1075",
12923 false,
12924- -0x8p-152, false,
12925- -0x0p+0, false,
12926- -0x0p+0, false,
12927- -0x0p+0, false,
12928- false,
12929- -0x4p-1076, false,
12930- -0x0p+0, false,
12931- -0x0p+0, false,
12932- -0x0p+0, false,
12933- true,
12934- -0x2p-1076, false,
12935- -0x2p-1076, false,
12936- -0x2p-1076, false,
12937- -0x2p-1076, false,
12938- true,
12939- -0x2p-1076, false,
12940- -0x2p-1076, false,
12941- -0x2p-1076, false,
12942- -0x2p-1076, false,
12943- false,
12944- -0x4p-1076, false,
12945- -0x0p+0, false,
12946- -0x0p+0, false,
12947- -0x0p+0, false,
12948- true,
12949- -0x2p-1076, false,
12950- -0x2p-1076, false,
12951- -0x2p-1076, false,
12952- -0x2p-1076, false),
12953+ -0x8p-152, false, true,
12954+ -0x0p+0, false, true,
12955+ -0x0p+0, false, true,
12956+ -0x0p+0, false, true,
12957+ false,
12958+ -0x4p-1076, false, true,
12959+ -0x0p+0, false, true,
12960+ -0x0p+0, false, true,
12961+ -0x0p+0, false, true,
12962+ true,
12963+ -0x2p-1076, false, false,
12964+ -0x2p-1076, false, false,
12965+ -0x2p-1076, false, false,
12966+ -0x2p-1076, false, false,
12967+ true,
12968+ -0x2p-1076, false, false,
12969+ -0x2p-1076, false, false,
12970+ -0x2p-1076, false, false,
12971+ -0x2p-1076, false, false,
12972+ false,
12973+ -0x4p-1076, false, true,
12974+ -0x0p+0, false, true,
12975+ -0x0p+0, false, true,
12976+ -0x0p+0, false, true,
12977+ true,
12978+ -0x2p-1076, false, false,
12979+ -0x2p-1076, false, false,
12980+ -0x2p-1076, false, false,
12981+ -0x2p-1076, false, false),
12982 TEST ("-0x1p-16446",
12983 false,
12984- -0x8p-152, false,
12985- -0x0p+0, false,
12986- -0x0p+0, false,
12987- -0x0p+0, false,
12988- false,
12989- -0x4p-1076, false,
12990- -0x0p+0, false,
12991- -0x0p+0, false,
12992- -0x0p+0, false,
12993- false,
12994- -0x8p-16448, false,
12995- -0x0p+0, false,
12996- -0x0p+0, false,
12997- -0x0p+0, false,
12998- true,
12999- -0x4p-16448, false,
13000- -0x4p-16448, false,
13001- -0x4p-16448, false,
13002- -0x4p-16448, false,
13003- false,
13004- -0x4p-1076, false,
13005- -0x0p+0, false,
13006- -0x0p+0, false,
13007- -0x0p+0, false,
13008- true,
13009- -0x4p-16448, false,
13010- -0x4p-16448, false,
13011- -0x4p-16448, false,
13012- -0x4p-16448, false),
13013+ -0x8p-152, false, true,
13014+ -0x0p+0, false, true,
13015+ -0x0p+0, false, true,
13016+ -0x0p+0, false, true,
13017+ false,
13018+ -0x4p-1076, false, true,
13019+ -0x0p+0, false, true,
13020+ -0x0p+0, false, true,
13021+ -0x0p+0, false, true,
13022+ false,
13023+ -0x8p-16448, false, true,
13024+ -0x0p+0, false, true,
13025+ -0x0p+0, false, true,
13026+ -0x0p+0, false, true,
13027+ true,
13028+ -0x4p-16448, false, false,
13029+ -0x4p-16448, false, false,
13030+ -0x4p-16448, false, false,
13031+ -0x4p-16448, false, false,
13032+ false,
13033+ -0x4p-1076, false, true,
13034+ -0x0p+0, false, true,
13035+ -0x0p+0, false, true,
13036+ -0x0p+0, false, true,
13037+ true,
13038+ -0x4p-16448, false, false,
13039+ -0x4p-16448, false, false,
13040+ -0x4p-16448, false, false,
13041+ -0x4p-16448, false, false),
13042 TEST ("-0x1p-16495",
13043 false,
13044- -0x8p-152, false,
13045- -0x0p+0, false,
13046- -0x0p+0, false,
13047- -0x0p+0, false,
13048- false,
13049- -0x4p-1076, false,
13050- -0x0p+0, false,
13051- -0x0p+0, false,
13052- -0x0p+0, false,
13053- false,
13054- -0x8p-16448, false,
13055- -0x0p+0, false,
13056- -0x0p+0, false,
13057- -0x0p+0, false,
13058- false,
13059- -0x4p-16448, false,
13060- -0x0p+0, false,
13061- -0x0p+0, false,
13062- -0x0p+0, false,
13063- false,
13064- -0x4p-1076, false,
13065- -0x0p+0, false,
13066- -0x0p+0, false,
13067- -0x0p+0, false,
13068- false,
13069- -0x4p-16496, false,
13070- -0x0p+0, false,
13071- -0x0p+0, false,
13072- -0x0p+0, false),
13073+ -0x8p-152, false, true,
13074+ -0x0p+0, false, true,
13075+ -0x0p+0, false, true,
13076+ -0x0p+0, false, true,
13077+ false,
13078+ -0x4p-1076, false, true,
13079+ -0x0p+0, false, true,
13080+ -0x0p+0, false, true,
13081+ -0x0p+0, false, true,
13082+ false,
13083+ -0x8p-16448, false, true,
13084+ -0x0p+0, false, true,
13085+ -0x0p+0, false, true,
13086+ -0x0p+0, false, true,
13087+ false,
13088+ -0x4p-16448, false, true,
13089+ -0x0p+0, false, true,
13090+ -0x0p+0, false, true,
13091+ -0x0p+0, false, true,
13092+ false,
13093+ -0x4p-1076, false, true,
13094+ -0x0p+0, false, true,
13095+ -0x0p+0, false, true,
13096+ -0x0p+0, false, true,
13097+ false,
13098+ -0x4p-16496, false, true,
13099+ -0x0p+0, false, true,
13100+ -0x0p+0, false, true,
13101+ -0x0p+0, false, true),
13102 TEST (".70064923216240853546186479164495807e-45",
13103 false,
13104- 0x0p+0, false,
13105- 0x8p-152, false,
13106- 0x0p+0, false,
13107- 0x8p-152, false,
13108- false,
13109- 0x4p-152, false,
13110- 0x4p-152, false,
13111- 0x4p-152, false,
13112- 0x4.0000000000004p-152, false,
13113- false,
13114- 0x4p-152, false,
13115- 0x4p-152, false,
13116- 0x4p-152, false,
13117- 0x4.0000000000000008p-152, false,
13118- false,
13119- 0x4p-152, false,
13120- 0x4p-152, false,
13121- 0x4p-152, false,
13122- 0x4.0000000000000008p-152, false,
13123- false,
13124- 0x4p-152, false,
13125- 0x4p-152, false,
13126- 0x4p-152, false,
13127- 0x4.00000000000000000000000002p-152, false,
13128- false,
13129- 0x4p-152, false,
13130- 0x4p-152, false,
13131- 0x4p-152, false,
13132- 0x4.0000000000000000000000000004p-152, false),
13133+ 0x0p+0, false, true,
13134+ 0x8p-152, false, true,
13135+ 0x0p+0, false, true,
13136+ 0x8p-152, false, true,
13137+ false,
13138+ 0x4p-152, false, false,
13139+ 0x4p-152, false, false,
13140+ 0x4p-152, false, false,
13141+ 0x4.0000000000004p-152, false, false,
13142+ false,
13143+ 0x4p-152, false, false,
13144+ 0x4p-152, false, false,
13145+ 0x4p-152, false, false,
13146+ 0x4.0000000000000008p-152, false, false,
13147+ false,
13148+ 0x4p-152, false, false,
13149+ 0x4p-152, false, false,
13150+ 0x4p-152, false, false,
13151+ 0x4.0000000000000008p-152, false, false,
13152+ false,
13153+ 0x4p-152, false, false,
13154+ 0x4p-152, false, false,
13155+ 0x4p-152, false, false,
13156+ 0x4.00000000000000000000000002p-152, false, false,
13157+ false,
13158+ 0x4p-152, false, false,
13159+ 0x4p-152, false, false,
13160+ 0x4p-152, false, false,
13161+ 0x4.0000000000000000000000000004p-152, false, false),
13162 TEST ("7.0064923216240853546186479164495806564013097093825788587853"
13163 "4141944895541342930300743319094181060791015624e-46",
13164 false,
13165- 0x0p+0, false,
13166- 0x0p+0, false,
13167- 0x0p+0, false,
13168- 0x8p-152, false,
13169- false,
13170- 0x3.ffffffffffffep-152, false,
13171- 0x4p-152, false,
13172- 0x3.ffffffffffffep-152, false,
13173- 0x4p-152, false,
13174- false,
13175- 0x3.fffffffffffffffcp-152, false,
13176- 0x4p-152, false,
13177- 0x3.fffffffffffffffcp-152, false,
13178- 0x4p-152, false,
13179- false,
13180- 0x3.fffffffffffffffcp-152, false,
13181- 0x4p-152, false,
13182- 0x3.fffffffffffffffcp-152, false,
13183- 0x4p-152, false,
13184- false,
13185- 0x3.ffffffffffffffffffffffffffp-152, false,
13186- 0x4p-152, false,
13187- 0x3.ffffffffffffffffffffffffffp-152, false,
13188- 0x4p-152, false,
13189- false,
13190- 0x3.fffffffffffffffffffffffffffep-152, false,
13191- 0x4p-152, false,
13192- 0x3.fffffffffffffffffffffffffffep-152, false,
13193- 0x4p-152, false),
13194+ 0x0p+0, false, true,
13195+ 0x0p+0, false, true,
13196+ 0x0p+0, false, true,
13197+ 0x8p-152, false, true,
13198+ false,
13199+ 0x3.ffffffffffffep-152, false, false,
13200+ 0x4p-152, false, false,
13201+ 0x3.ffffffffffffep-152, false, false,
13202+ 0x4p-152, false, false,
13203+ false,
13204+ 0x3.fffffffffffffffcp-152, false, false,
13205+ 0x4p-152, false, false,
13206+ 0x3.fffffffffffffffcp-152, false, false,
13207+ 0x4p-152, false, false,
13208+ false,
13209+ 0x3.fffffffffffffffcp-152, false, false,
13210+ 0x4p-152, false, false,
13211+ 0x3.fffffffffffffffcp-152, false, false,
13212+ 0x4p-152, false, false,
13213+ false,
13214+ 0x3.ffffffffffffffffffffffffffp-152, false, false,
13215+ 0x4p-152, false, false,
13216+ 0x3.ffffffffffffffffffffffffffp-152, false, false,
13217+ 0x4p-152, false, false,
13218+ false,
13219+ 0x3.fffffffffffffffffffffffffffep-152, false, false,
13220+ 0x4p-152, false, false,
13221+ 0x3.fffffffffffffffffffffffffffep-152, false, false,
13222+ 0x4p-152, false, false),
13223 TEST ("7.0064923216240853546186479164495806564013097093825788587853"
13224 "4141944895541342930300743319094181060791015625e-46",
13225 false,
13226- 0x0p+0, false,
13227- 0x0p+0, false,
13228- 0x0p+0, false,
13229- 0x8p-152, false,
13230- true,
13231- 0x4p-152, false,
13232- 0x4p-152, false,
13233- 0x4p-152, false,
13234- 0x4p-152, false,
13235- true,
13236- 0x4p-152, false,
13237- 0x4p-152, false,
13238- 0x4p-152, false,
13239- 0x4p-152, false,
13240- true,
13241- 0x4p-152, false,
13242- 0x4p-152, false,
13243- 0x4p-152, false,
13244- 0x4p-152, false,
13245- true,
13246- 0x4p-152, false,
13247- 0x4p-152, false,
13248- 0x4p-152, false,
13249- 0x4p-152, false,
13250- true,
13251- 0x4p-152, false,
13252- 0x4p-152, false,
13253- 0x4p-152, false,
13254- 0x4p-152, false),
13255+ 0x0p+0, false, true,
13256+ 0x0p+0, false, true,
13257+ 0x0p+0, false, true,
13258+ 0x8p-152, false, true,
13259+ true,
13260+ 0x4p-152, false, false,
13261+ 0x4p-152, false, false,
13262+ 0x4p-152, false, false,
13263+ 0x4p-152, false, false,
13264+ true,
13265+ 0x4p-152, false, false,
13266+ 0x4p-152, false, false,
13267+ 0x4p-152, false, false,
13268+ 0x4p-152, false, false,
13269+ true,
13270+ 0x4p-152, false, false,
13271+ 0x4p-152, false, false,
13272+ 0x4p-152, false, false,
13273+ 0x4p-152, false, false,
13274+ true,
13275+ 0x4p-152, false, false,
13276+ 0x4p-152, false, false,
13277+ 0x4p-152, false, false,
13278+ 0x4p-152, false, false,
13279+ true,
13280+ 0x4p-152, false, false,
13281+ 0x4p-152, false, false,
13282+ 0x4p-152, false, false,
13283+ 0x4p-152, false, false),
13284 TEST ("7.0064923216240853546186479164495806564013097093825788587853"
13285 "4141944895541342930300743319094181060791015626e-46",
13286 false,
13287- 0x0p+0, false,
13288- 0x8p-152, false,
13289- 0x0p+0, false,
13290- 0x8p-152, false,
13291- false,
13292- 0x4p-152, false,
13293- 0x4p-152, false,
13294- 0x4p-152, false,
13295- 0x4.0000000000004p-152, false,
13296- false,
13297- 0x4p-152, false,
13298- 0x4p-152, false,
13299- 0x4p-152, false,
13300- 0x4.0000000000000008p-152, false,
13301- false,
13302- 0x4p-152, false,
13303- 0x4p-152, false,
13304- 0x4p-152, false,
13305- 0x4.0000000000000008p-152, false,
13306- false,
13307- 0x4p-152, false,
13308- 0x4p-152, false,
13309- 0x4p-152, false,
13310- 0x4.00000000000000000000000002p-152, false,
13311- false,
13312- 0x4p-152, false,
13313- 0x4p-152, false,
13314- 0x4p-152, false,
13315- 0x4.0000000000000000000000000004p-152, false),
13316+ 0x0p+0, false, true,
13317+ 0x8p-152, false, true,
13318+ 0x0p+0, false, true,
13319+ 0x8p-152, false, true,
13320+ false,
13321+ 0x4p-152, false, false,
13322+ 0x4p-152, false, false,
13323+ 0x4p-152, false, false,
13324+ 0x4.0000000000004p-152, false, false,
13325+ false,
13326+ 0x4p-152, false, false,
13327+ 0x4p-152, false, false,
13328+ 0x4p-152, false, false,
13329+ 0x4.0000000000000008p-152, false, false,
13330+ false,
13331+ 0x4p-152, false, false,
13332+ 0x4p-152, false, false,
13333+ 0x4p-152, false, false,
13334+ 0x4.0000000000000008p-152, false, false,
13335+ false,
13336+ 0x4p-152, false, false,
13337+ 0x4p-152, false, false,
13338+ 0x4p-152, false, false,
13339+ 0x4.00000000000000000000000002p-152, false, false,
13340+ false,
13341+ 0x4p-152, false, false,
13342+ 0x4p-152, false, false,
13343+ 0x4p-152, false, false,
13344+ 0x4.0000000000000000000000000004p-152, false, false),
13345 TEST ("-7.006492321624085354618647916449580656401309709382578858785"
13346 "34141944895541342930300743319094181060791015624e-46",
13347 false,
13348- -0x8p-152, false,
13349- -0x0p+0, false,
13350- -0x0p+0, false,
13351- -0x0p+0, false,
13352- false,
13353- -0x4p-152, false,
13354- -0x4p-152, false,
13355- -0x3.ffffffffffffep-152, false,
13356- -0x3.ffffffffffffep-152, false,
13357- false,
13358- -0x4p-152, false,
13359- -0x4p-152, false,
13360- -0x3.fffffffffffffffcp-152, false,
13361- -0x3.fffffffffffffffcp-152, false,
13362- false,
13363- -0x4p-152, false,
13364- -0x4p-152, false,
13365- -0x3.fffffffffffffffcp-152, false,
13366- -0x3.fffffffffffffffcp-152, false,
13367- false,
13368- -0x4p-152, false,
13369- -0x4p-152, false,
13370- -0x3.ffffffffffffffffffffffffffp-152, false,
13371- -0x3.ffffffffffffffffffffffffffp-152, false,
13372- false,
13373- -0x4p-152, false,
13374- -0x4p-152, false,
13375- -0x3.fffffffffffffffffffffffffffep-152, false,
13376- -0x3.fffffffffffffffffffffffffffep-152, false),
13377+ -0x8p-152, false, true,
13378+ -0x0p+0, false, true,
13379+ -0x0p+0, false, true,
13380+ -0x0p+0, false, true,
13381+ false,
13382+ -0x4p-152, false, false,
13383+ -0x4p-152, false, false,
13384+ -0x3.ffffffffffffep-152, false, false,
13385+ -0x3.ffffffffffffep-152, false, false,
13386+ false,
13387+ -0x4p-152, false, false,
13388+ -0x4p-152, false, false,
13389+ -0x3.fffffffffffffffcp-152, false, false,
13390+ -0x3.fffffffffffffffcp-152, false, false,
13391+ false,
13392+ -0x4p-152, false, false,
13393+ -0x4p-152, false, false,
13394+ -0x3.fffffffffffffffcp-152, false, false,
13395+ -0x3.fffffffffffffffcp-152, false, false,
13396+ false,
13397+ -0x4p-152, false, false,
13398+ -0x4p-152, false, false,
13399+ -0x3.ffffffffffffffffffffffffffp-152, false, false,
13400+ -0x3.ffffffffffffffffffffffffffp-152, false, false,
13401+ false,
13402+ -0x4p-152, false, false,
13403+ -0x4p-152, false, false,
13404+ -0x3.fffffffffffffffffffffffffffep-152, false, false,
13405+ -0x3.fffffffffffffffffffffffffffep-152, false, false),
13406 TEST ("-7.006492321624085354618647916449580656401309709382578858785"
13407 "34141944895541342930300743319094181060791015625e-46",
13408 false,
13409- -0x8p-152, false,
13410- -0x0p+0, false,
13411- -0x0p+0, false,
13412- -0x0p+0, false,
13413- true,
13414- -0x4p-152, false,
13415- -0x4p-152, false,
13416- -0x4p-152, false,
13417- -0x4p-152, false,
13418- true,
13419- -0x4p-152, false,
13420- -0x4p-152, false,
13421- -0x4p-152, false,
13422- -0x4p-152, false,
13423- true,
13424- -0x4p-152, false,
13425- -0x4p-152, false,
13426- -0x4p-152, false,
13427- -0x4p-152, false,
13428- true,
13429- -0x4p-152, false,
13430- -0x4p-152, false,
13431- -0x4p-152, false,
13432- -0x4p-152, false,
13433- true,
13434- -0x4p-152, false,
13435- -0x4p-152, false,
13436- -0x4p-152, false,
13437- -0x4p-152, false),
13438+ -0x8p-152, false, true,
13439+ -0x0p+0, false, true,
13440+ -0x0p+0, false, true,
13441+ -0x0p+0, false, true,
13442+ true,
13443+ -0x4p-152, false, false,
13444+ -0x4p-152, false, false,
13445+ -0x4p-152, false, false,
13446+ -0x4p-152, false, false,
13447+ true,
13448+ -0x4p-152, false, false,
13449+ -0x4p-152, false, false,
13450+ -0x4p-152, false, false,
13451+ -0x4p-152, false, false,
13452+ true,
13453+ -0x4p-152, false, false,
13454+ -0x4p-152, false, false,
13455+ -0x4p-152, false, false,
13456+ -0x4p-152, false, false,
13457+ true,
13458+ -0x4p-152, false, false,
13459+ -0x4p-152, false, false,
13460+ -0x4p-152, false, false,
13461+ -0x4p-152, false, false,
13462+ true,
13463+ -0x4p-152, false, false,
13464+ -0x4p-152, false, false,
13465+ -0x4p-152, false, false,
13466+ -0x4p-152, false, false),
13467 TEST ("-7.006492321624085354618647916449580656401309709382578858785"
13468 "34141944895541342930300743319094181060791015626e-46",
13469 false,
13470- -0x8p-152, false,
13471- -0x8p-152, false,
13472- -0x0p+0, false,
13473- -0x0p+0, false,
13474- false,
13475- -0x4.0000000000004p-152, false,
13476- -0x4p-152, false,
13477- -0x4p-152, false,
13478- -0x4p-152, false,
13479- false,
13480- -0x4.0000000000000008p-152, false,
13481- -0x4p-152, false,
13482- -0x4p-152, false,
13483- -0x4p-152, false,
13484- false,
13485- -0x4.0000000000000008p-152, false,
13486- -0x4p-152, false,
13487- -0x4p-152, false,
13488- -0x4p-152, false,
13489- false,
13490- -0x4.00000000000000000000000002p-152, false,
13491- -0x4p-152, false,
13492- -0x4p-152, false,
13493- -0x4p-152, false,
13494- false,
13495- -0x4.0000000000000000000000000004p-152, false,
13496- -0x4p-152, false,
13497- -0x4p-152, false,
13498- -0x4p-152, false),
13499+ -0x8p-152, false, true,
13500+ -0x8p-152, false, true,
13501+ -0x0p+0, false, true,
13502+ -0x0p+0, false, true,
13503+ false,
13504+ -0x4.0000000000004p-152, false, false,
13505+ -0x4p-152, false, false,
13506+ -0x4p-152, false, false,
13507+ -0x4p-152, false, false,
13508+ false,
13509+ -0x4.0000000000000008p-152, false, false,
13510+ -0x4p-152, false, false,
13511+ -0x4p-152, false, false,
13512+ -0x4p-152, false, false,
13513+ false,
13514+ -0x4.0000000000000008p-152, false, false,
13515+ -0x4p-152, false, false,
13516+ -0x4p-152, false, false,
13517+ -0x4p-152, false, false,
13518+ false,
13519+ -0x4.00000000000000000000000002p-152, false, false,
13520+ -0x4p-152, false, false,
13521+ -0x4p-152, false, false,
13522+ -0x4p-152, false, false,
13523+ false,
13524+ -0x4.0000000000000000000000000004p-152, false, false,
13525+ -0x4p-152, false, false,
13526+ -0x4p-152, false, false,
13527+ -0x4p-152, false, false),
13528 TEST ("2.4703282292062327208828439643411068618252990130716238221279"
13529 "284125033775363510437593264991818081799618989828234772285886"
13530 "546332835517796989819938739800539093906315035659515570226392"
13531@@ -7335,35 +7335,35 @@ static const struct test tests[] = {
13532 "779186948667994968324049705821028513185451396213837722826145"
13533 "437693412532098591327667236328124e-324",
13534 false,
13535- 0x0p+0, false,
13536- 0x0p+0, false,
13537- 0x0p+0, false,
13538- 0x8p-152, false,
13539- false,
13540- 0x0p+0, false,
13541- 0x0p+0, false,
13542- 0x0p+0, false,
13543- 0x4p-1076, false,
13544- false,
13545- 0x1.fffffffffffffffep-1076, false,
13546- 0x2p-1076, false,
13547- 0x1.fffffffffffffffep-1076, false,
13548- 0x2p-1076, false,
13549- false,
13550- 0x1.fffffffffffffffep-1076, false,
13551- 0x2p-1076, false,
13552- 0x1.fffffffffffffffep-1076, false,
13553- 0x2p-1076, false,
13554- false,
13555- 0x0p+0, false,
13556- 0x0p+0, false,
13557- 0x0p+0, false,
13558- 0x4p-1076, false,
13559- false,
13560- 0x1.ffffffffffffffffffffffffffffp-1076, false,
13561- 0x2p-1076, false,
13562- 0x1.ffffffffffffffffffffffffffffp-1076, false,
13563- 0x2p-1076, false),
13564+ 0x0p+0, false, true,
13565+ 0x0p+0, false, true,
13566+ 0x0p+0, false, true,
13567+ 0x8p-152, false, true,
13568+ false,
13569+ 0x0p+0, false, true,
13570+ 0x0p+0, false, true,
13571+ 0x0p+0, false, true,
13572+ 0x4p-1076, false, true,
13573+ false,
13574+ 0x1.fffffffffffffffep-1076, false, false,
13575+ 0x2p-1076, false, false,
13576+ 0x1.fffffffffffffffep-1076, false, false,
13577+ 0x2p-1076, false, false,
13578+ false,
13579+ 0x1.fffffffffffffffep-1076, false, false,
13580+ 0x2p-1076, false, false,
13581+ 0x1.fffffffffffffffep-1076, false, false,
13582+ 0x2p-1076, false, false,
13583+ false,
13584+ 0x0p+0, false, true,
13585+ 0x0p+0, false, true,
13586+ 0x0p+0, false, true,
13587+ 0x4p-1076, false, true,
13588+ false,
13589+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false,
13590+ 0x2p-1076, false, false,
13591+ 0x1.ffffffffffffffffffffffffffffp-1076, false, false,
13592+ 0x2p-1076, false, false),
13593 TEST ("2.4703282292062327208828439643411068618252990130716238221279"
13594 "284125033775363510437593264991818081799618989828234772285886"
13595 "546332835517796989819938739800539093906315035659515570226392"
13596@@ -7378,35 +7378,35 @@ static const struct test tests[] = {
13597 "779186948667994968324049705821028513185451396213837722826145"
13598 "437693412532098591327667236328125e-324",
13599 false,
13600- 0x0p+0, false,
13601- 0x0p+0, false,
13602- 0x0p+0, false,
13603- 0x8p-152, false,
13604- false,
13605- 0x0p+0, false,
13606- 0x0p+0, false,
13607- 0x0p+0, false,
13608- 0x4p-1076, false,
13609- true,
13610- 0x2p-1076, false,
13611- 0x2p-1076, false,
13612- 0x2p-1076, false,
13613- 0x2p-1076, false,
13614- true,
13615- 0x2p-1076, false,
13616- 0x2p-1076, false,
13617- 0x2p-1076, false,
13618- 0x2p-1076, false,
13619- false,
13620- 0x0p+0, false,
13621- 0x0p+0, false,
13622- 0x0p+0, false,
13623- 0x4p-1076, false,
13624- true,
13625- 0x2p-1076, false,
13626- 0x2p-1076, false,
13627- 0x2p-1076, false,
13628- 0x2p-1076, false),
13629+ 0x0p+0, false, true,
13630+ 0x0p+0, false, true,
13631+ 0x0p+0, false, true,
13632+ 0x8p-152, false, true,
13633+ false,
13634+ 0x0p+0, false, true,
13635+ 0x0p+0, false, true,
13636+ 0x0p+0, false, true,
13637+ 0x4p-1076, false, true,
13638+ true,
13639+ 0x2p-1076, false, false,
13640+ 0x2p-1076, false, false,
13641+ 0x2p-1076, false, false,
13642+ 0x2p-1076, false, false,
13643+ true,
13644+ 0x2p-1076, false, false,
13645+ 0x2p-1076, false, false,
13646+ 0x2p-1076, false, false,
13647+ 0x2p-1076, false, false,
13648+ false,
13649+ 0x0p+0, false, true,
13650+ 0x0p+0, false, true,
13651+ 0x0p+0, false, true,
13652+ 0x4p-1076, false, true,
13653+ true,
13654+ 0x2p-1076, false, false,
13655+ 0x2p-1076, false, false,
13656+ 0x2p-1076, false, false,
13657+ 0x2p-1076, false, false),
13658 TEST ("2.4703282292062327208828439643411068618252990130716238221279"
13659 "284125033775363510437593264991818081799618989828234772285886"
13660 "546332835517796989819938739800539093906315035659515570226392"
13661@@ -7421,35 +7421,35 @@ static const struct test tests[] = {
13662 "779186948667994968324049705821028513185451396213837722826145"
13663 "437693412532098591327667236328126e-324",
13664 false,
13665- 0x0p+0, false,
13666- 0x0p+0, false,
13667- 0x0p+0, false,
13668- 0x8p-152, false,
13669- false,
13670- 0x0p+0, false,
13671- 0x4p-1076, false,
13672- 0x0p+0, false,
13673- 0x4p-1076, false,
13674- false,
13675- 0x2p-1076, false,
13676- 0x2p-1076, false,
13677- 0x2p-1076, false,
13678- 0x2.0000000000000004p-1076, false,
13679- false,
13680- 0x2p-1076, false,
13681- 0x2p-1076, false,
13682- 0x2p-1076, false,
13683- 0x2.0000000000000004p-1076, false,
13684- false,
13685- 0x0p+0, false,
13686- 0x4p-1076, false,
13687- 0x0p+0, false,
13688- 0x4p-1076, false,
13689- false,
13690- 0x2p-1076, false,
13691- 0x2p-1076, false,
13692- 0x2p-1076, false,
13693- 0x2.0000000000000000000000000002p-1076, false),
13694+ 0x0p+0, false, true,
13695+ 0x0p+0, false, true,
13696+ 0x0p+0, false, true,
13697+ 0x8p-152, false, true,
13698+ false,
13699+ 0x0p+0, false, true,
13700+ 0x4p-1076, false, true,
13701+ 0x0p+0, false, true,
13702+ 0x4p-1076, false, true,
13703+ false,
13704+ 0x2p-1076, false, false,
13705+ 0x2p-1076, false, false,
13706+ 0x2p-1076, false, false,
13707+ 0x2.0000000000000004p-1076, false, false,
13708+ false,
13709+ 0x2p-1076, false, false,
13710+ 0x2p-1076, false, false,
13711+ 0x2p-1076, false, false,
13712+ 0x2.0000000000000004p-1076, false, false,
13713+ false,
13714+ 0x0p+0, false, true,
13715+ 0x4p-1076, false, true,
13716+ 0x0p+0, false, true,
13717+ 0x4p-1076, false, true,
13718+ false,
13719+ 0x2p-1076, false, false,
13720+ 0x2p-1076, false, false,
13721+ 0x2p-1076, false, false,
13722+ 0x2.0000000000000000000000000002p-1076, false, false),
13723 TEST ("-2.470328229206232720882843964341106861825299013071623822127"
13724 "928412503377536351043759326499181808179961898982823477228588"
13725 "654633283551779698981993873980053909390631503565951557022639"
13726@@ -7464,35 +7464,35 @@ static const struct test tests[] = {
13727 "477918694866799496832404970582102851318545139621383772282614"
13728 "5437693412532098591327667236328124e-324",
13729 false,
13730- -0x8p-152, false,
13731- -0x0p+0, false,
13732- -0x0p+0, false,
13733- -0x0p+0, false,
13734- false,
13735- -0x4p-1076, false,
13736- -0x0p+0, false,
13737- -0x0p+0, false,
13738- -0x0p+0, false,
13739- false,
13740- -0x2p-1076, false,
13741- -0x2p-1076, false,
13742- -0x1.fffffffffffffffep-1076, false,
13743- -0x1.fffffffffffffffep-1076, false,
13744- false,
13745- -0x2p-1076, false,
13746- -0x2p-1076, false,
13747- -0x1.fffffffffffffffep-1076, false,
13748- -0x1.fffffffffffffffep-1076, false,
13749- false,
13750- -0x4p-1076, false,
13751- -0x0p+0, false,
13752- -0x0p+0, false,
13753- -0x0p+0, false,
13754- false,
13755- -0x2p-1076, false,
13756- -0x2p-1076, false,
13757- -0x1.ffffffffffffffffffffffffffffp-1076, false,
13758- -0x1.ffffffffffffffffffffffffffffp-1076, false),
13759+ -0x8p-152, false, true,
13760+ -0x0p+0, false, true,
13761+ -0x0p+0, false, true,
13762+ -0x0p+0, false, true,
13763+ false,
13764+ -0x4p-1076, false, true,
13765+ -0x0p+0, false, true,
13766+ -0x0p+0, false, true,
13767+ -0x0p+0, false, true,
13768+ false,
13769+ -0x2p-1076, false, false,
13770+ -0x2p-1076, false, false,
13771+ -0x1.fffffffffffffffep-1076, false, false,
13772+ -0x1.fffffffffffffffep-1076, false, false,
13773+ false,
13774+ -0x2p-1076, false, false,
13775+ -0x2p-1076, false, false,
13776+ -0x1.fffffffffffffffep-1076, false, false,
13777+ -0x1.fffffffffffffffep-1076, false, false,
13778+ false,
13779+ -0x4p-1076, false, true,
13780+ -0x0p+0, false, true,
13781+ -0x0p+0, false, true,
13782+ -0x0p+0, false, true,
13783+ false,
13784+ -0x2p-1076, false, false,
13785+ -0x2p-1076, false, false,
13786+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false,
13787+ -0x1.ffffffffffffffffffffffffffffp-1076, false, false),
13788 TEST ("-2.470328229206232720882843964341106861825299013071623822127"
13789 "928412503377536351043759326499181808179961898982823477228588"
13790 "654633283551779698981993873980053909390631503565951557022639"
13791@@ -7507,35 +7507,35 @@ static const struct test tests[] = {
13792 "477918694866799496832404970582102851318545139621383772282614"
13793 "5437693412532098591327667236328125e-324",
13794 false,
13795- -0x8p-152, false,
13796- -0x0p+0, false,
13797- -0x0p+0, false,
13798- -0x0p+0, false,
13799- false,
13800- -0x4p-1076, false,
13801- -0x0p+0, false,
13802- -0x0p+0, false,
13803- -0x0p+0, false,
13804- true,
13805- -0x2p-1076, false,
13806- -0x2p-1076, false,
13807- -0x2p-1076, false,
13808- -0x2p-1076, false,
13809- true,
13810- -0x2p-1076, false,
13811- -0x2p-1076, false,
13812- -0x2p-1076, false,
13813- -0x2p-1076, false,
13814- false,
13815- -0x4p-1076, false,
13816- -0x0p+0, false,
13817- -0x0p+0, false,
13818- -0x0p+0, false,
13819- true,
13820- -0x2p-1076, false,
13821- -0x2p-1076, false,
13822- -0x2p-1076, false,
13823- -0x2p-1076, false),
13824+ -0x8p-152, false, true,
13825+ -0x0p+0, false, true,
13826+ -0x0p+0, false, true,
13827+ -0x0p+0, false, true,
13828+ false,
13829+ -0x4p-1076, false, true,
13830+ -0x0p+0, false, true,
13831+ -0x0p+0, false, true,
13832+ -0x0p+0, false, true,
13833+ true,
13834+ -0x2p-1076, false, false,
13835+ -0x2p-1076, false, false,
13836+ -0x2p-1076, false, false,
13837+ -0x2p-1076, false, false,
13838+ true,
13839+ -0x2p-1076, false, false,
13840+ -0x2p-1076, false, false,
13841+ -0x2p-1076, false, false,
13842+ -0x2p-1076, false, false,
13843+ false,
13844+ -0x4p-1076, false, true,
13845+ -0x0p+0, false, true,
13846+ -0x0p+0, false, true,
13847+ -0x0p+0, false, true,
13848+ true,
13849+ -0x2p-1076, false, false,
13850+ -0x2p-1076, false, false,
13851+ -0x2p-1076, false, false,
13852+ -0x2p-1076, false, false),
13853 TEST ("-2.470328229206232720882843964341106861825299013071623822127"
13854 "928412503377536351043759326499181808179961898982823477228588"
13855 "654633283551779698981993873980053909390631503565951557022639"
13856@@ -7550,35 +7550,35 @@ static const struct test tests[] = {
13857 "477918694866799496832404970582102851318545139621383772282614"
13858 "5437693412532098591327667236328126e-324",
13859 false,
13860- -0x8p-152, false,
13861- -0x0p+0, false,
13862- -0x0p+0, false,
13863- -0x0p+0, false,
13864- false,
13865- -0x4p-1076, false,
13866- -0x4p-1076, false,
13867- -0x0p+0, false,
13868- -0x0p+0, false,
13869- false,
13870- -0x2.0000000000000004p-1076, false,
13871- -0x2p-1076, false,
13872- -0x2p-1076, false,
13873- -0x2p-1076, false,
13874- false,
13875- -0x2.0000000000000004p-1076, false,
13876- -0x2p-1076, false,
13877- -0x2p-1076, false,
13878- -0x2p-1076, false,
13879- false,
13880- -0x4p-1076, false,
13881- -0x4p-1076, false,
13882- -0x0p+0, false,
13883- -0x0p+0, false,
13884- false,
13885- -0x2.0000000000000000000000000002p-1076, false,
13886- -0x2p-1076, false,
13887- -0x2p-1076, false,
13888- -0x2p-1076, false),
13889+ -0x8p-152, false, true,
13890+ -0x0p+0, false, true,
13891+ -0x0p+0, false, true,
13892+ -0x0p+0, false, true,
13893+ false,
13894+ -0x4p-1076, false, true,
13895+ -0x4p-1076, false, true,
13896+ -0x0p+0, false, true,
13897+ -0x0p+0, false, true,
13898+ false,
13899+ -0x2.0000000000000004p-1076, false, false,
13900+ -0x2p-1076, false, false,
13901+ -0x2p-1076, false, false,
13902+ -0x2p-1076, false, false,
13903+ false,
13904+ -0x2.0000000000000004p-1076, false, false,
13905+ -0x2p-1076, false, false,
13906+ -0x2p-1076, false, false,
13907+ -0x2p-1076, false, false,
13908+ false,
13909+ -0x4p-1076, false, true,
13910+ -0x4p-1076, false, true,
13911+ -0x0p+0, false, true,
13912+ -0x0p+0, false, true,
13913+ false,
13914+ -0x2.0000000000000000000000000002p-1076, false, false,
13915+ -0x2p-1076, false, false,
13916+ -0x2p-1076, false, false,
13917+ -0x2p-1076, false, false),
13918 TEST ("1.8225997659412373012642029668097099081995254078467816718604"
13919 "902435141858443166988684047803543129136025986236736736017655"
13920 "509834928163110160849867540377949045027419112905889658392846"
13921@@ -7772,35 +7772,35 @@ static const struct test tests[] = {
13922 "622089641993900896756734276531931450266972752637997248151974"
13923 "2277811246822238899767398834228515624e-4951",
13924 false,
13925- 0x0p+0, false,
13926- 0x0p+0, false,
13927- 0x0p+0, false,
13928- 0x8p-152, false,
13929- false,
13930- 0x0p+0, false,
13931- 0x0p+0, false,
13932- 0x0p+0, false,
13933- 0x4p-1076, false,
13934- false,
13935- 0x0p+0, false,
13936- 0x0p+0, false,
13937- 0x0p+0, false,
13938- 0x8p-16448, false,
13939- false,
13940- 0x0p+0, false,
13941- 0x4p-16448, false,
13942- 0x0p+0, false,
13943- 0x4p-16448, false,
13944- false,
13945- 0x0p+0, false,
13946- 0x0p+0, false,
13947- 0x0p+0, false,
13948- 0x4p-1076, false,
13949- false,
13950- 0x3.fffffffffffcp-16448, false,
13951- 0x4p-16448, false,
13952- 0x3.fffffffffffcp-16448, false,
13953- 0x4p-16448, false),
13954+ 0x0p+0, false, true,
13955+ 0x0p+0, false, true,
13956+ 0x0p+0, false, true,
13957+ 0x8p-152, false, true,
13958+ false,
13959+ 0x0p+0, false, true,
13960+ 0x0p+0, false, true,
13961+ 0x0p+0, false, true,
13962+ 0x4p-1076, false, true,
13963+ false,
13964+ 0x0p+0, false, true,
13965+ 0x0p+0, false, true,
13966+ 0x0p+0, false, true,
13967+ 0x8p-16448, false, true,
13968+ false,
13969+ 0x0p+0, false, true,
13970+ 0x4p-16448, false, true,
13971+ 0x0p+0, false, true,
13972+ 0x4p-16448, false, true,
13973+ false,
13974+ 0x0p+0, false, true,
13975+ 0x0p+0, false, true,
13976+ 0x0p+0, false, true,
13977+ 0x4p-1076, false, true,
13978+ false,
13979+ 0x3.fffffffffffcp-16448, false, true,
13980+ 0x4p-16448, false, true,
13981+ 0x3.fffffffffffcp-16448, false, true,
13982+ 0x4p-16448, false, true),
13983 TEST ("1.8225997659412373012642029668097099081995254078467816718604"
13984 "902435141858443166988684047803543129136025986236736736017655"
13985 "509834928163110160849867540377949045027419112905889658392846"
13986@@ -7994,35 +7994,35 @@ static const struct test tests[] = {
13987 "622089641993900896756734276531931450266972752637997248151974"
13988 "2277811246822238899767398834228515625e-4951",
13989 false,
13990- 0x0p+0, false,
13991- 0x0p+0, false,
13992- 0x0p+0, false,
13993- 0x8p-152, false,
13994- false,
13995- 0x0p+0, false,
13996- 0x0p+0, false,
13997- 0x0p+0, false,
13998- 0x4p-1076, false,
13999- false,
14000- 0x0p+0, false,
14001- 0x0p+0, false,
14002- 0x0p+0, false,
14003- 0x8p-16448, false,
14004- true,
14005- 0x4p-16448, false,
14006- 0x4p-16448, false,
14007- 0x4p-16448, false,
14008- 0x4p-16448, false,
14009- false,
14010- 0x0p+0, false,
14011- 0x0p+0, false,
14012- 0x0p+0, false,
14013- 0x4p-1076, false,
14014- true,
14015- 0x4p-16448, false,
14016- 0x4p-16448, false,
14017- 0x4p-16448, false,
14018- 0x4p-16448, false),
14019+ 0x0p+0, false, true,
14020+ 0x0p+0, false, true,
14021+ 0x0p+0, false, true,
14022+ 0x8p-152, false, true,
14023+ false,
14024+ 0x0p+0, false, true,
14025+ 0x0p+0, false, true,
14026+ 0x0p+0, false, true,
14027+ 0x4p-1076, false, true,
14028+ false,
14029+ 0x0p+0, false, true,
14030+ 0x0p+0, false, true,
14031+ 0x0p+0, false, true,
14032+ 0x8p-16448, false, true,
14033+ true,
14034+ 0x4p-16448, false, false,
14035+ 0x4p-16448, false, false,
14036+ 0x4p-16448, false, false,
14037+ 0x4p-16448, false, false,
14038+ false,
14039+ 0x0p+0, false, true,
14040+ 0x0p+0, false, true,
14041+ 0x0p+0, false, true,
14042+ 0x4p-1076, false, true,
14043+ true,
14044+ 0x4p-16448, false, false,
14045+ 0x4p-16448, false, false,
14046+ 0x4p-16448, false, false,
14047+ 0x4p-16448, false, false),
14048 TEST ("1.8225997659412373012642029668097099081995254078467816718604"
14049 "902435141858443166988684047803543129136025986236736736017655"
14050 "509834928163110160849867540377949045027419112905889658392846"
14051@@ -8216,35 +8216,35 @@ static const struct test tests[] = {
14052 "622089641993900896756734276531931450266972752637997248151974"
14053 "2277811246822238899767398834228515626e-4951",
14054 false,
14055- 0x0p+0, false,
14056- 0x0p+0, false,
14057- 0x0p+0, false,
14058- 0x8p-152, false,
14059- false,
14060- 0x0p+0, false,
14061- 0x0p+0, false,
14062- 0x0p+0, false,
14063- 0x4p-1076, false,
14064- false,
14065- 0x0p+0, false,
14066- 0x8p-16448, false,
14067- 0x0p+0, false,
14068- 0x8p-16448, false,
14069- false,
14070- 0x4p-16448, false,
14071- 0x4p-16448, false,
14072- 0x4p-16448, false,
14073- 0x8p-16448, false,
14074- false,
14075- 0x0p+0, false,
14076- 0x0p+0, false,
14077- 0x0p+0, false,
14078- 0x4p-1076, false,
14079- false,
14080- 0x4p-16448, false,
14081- 0x4p-16448, false,
14082- 0x4p-16448, false,
14083- 0x4.000000000004p-16448, false),
14084+ 0x0p+0, false, true,
14085+ 0x0p+0, false, true,
14086+ 0x0p+0, false, true,
14087+ 0x8p-152, false, true,
14088+ false,
14089+ 0x0p+0, false, true,
14090+ 0x0p+0, false, true,
14091+ 0x0p+0, false, true,
14092+ 0x4p-1076, false, true,
14093+ false,
14094+ 0x0p+0, false, true,
14095+ 0x8p-16448, false, true,
14096+ 0x0p+0, false, true,
14097+ 0x8p-16448, false, true,
14098+ false,
14099+ 0x4p-16448, false, true,
14100+ 0x4p-16448, false, true,
14101+ 0x4p-16448, false, true,
14102+ 0x8p-16448, false, true,
14103+ false,
14104+ 0x0p+0, false, true,
14105+ 0x0p+0, false, true,
14106+ 0x0p+0, false, true,
14107+ 0x4p-1076, false, true,
14108+ false,
14109+ 0x4p-16448, false, true,
14110+ 0x4p-16448, false, true,
14111+ 0x4p-16448, false, true,
14112+ 0x4.000000000004p-16448, false, true),
14113 TEST ("-1.822599765941237301264202966809709908199525407846781671860"
14114 "490243514185844316698868404780354312913602598623673673601765"
14115 "550983492816311016084986754037794904502741911290588965839284"
14116@@ -8438,35 +8438,35 @@ static const struct test tests[] = {
14117 "462208964199390089675673427653193145026697275263799724815197"
14118 "42277811246822238899767398834228515624e-4951",
14119 false,
14120- -0x8p-152, false,
14121- -0x0p+0, false,
14122- -0x0p+0, false,
14123- -0x0p+0, false,
14124- false,
14125- -0x4p-1076, false,
14126- -0x0p+0, false,
14127- -0x0p+0, false,
14128- -0x0p+0, false,
14129- false,
14130- -0x8p-16448, false,
14131- -0x0p+0, false,
14132- -0x0p+0, false,
14133- -0x0p+0, false,
14134- false,
14135- -0x4p-16448, false,
14136- -0x4p-16448, false,
14137- -0x0p+0, false,
14138- -0x0p+0, false,
14139- false,
14140- -0x4p-1076, false,
14141- -0x0p+0, false,
14142- -0x0p+0, false,
14143- -0x0p+0, false,
14144- false,
14145- -0x4p-16448, false,
14146- -0x4p-16448, false,
14147- -0x3.fffffffffffcp-16448, false,
14148- -0x3.fffffffffffcp-16448, false),
14149+ -0x8p-152, false, true,
14150+ -0x0p+0, false, true,
14151+ -0x0p+0, false, true,
14152+ -0x0p+0, false, true,
14153+ false,
14154+ -0x4p-1076, false, true,
14155+ -0x0p+0, false, true,
14156+ -0x0p+0, false, true,
14157+ -0x0p+0, false, true,
14158+ false,
14159+ -0x8p-16448, false, true,
14160+ -0x0p+0, false, true,
14161+ -0x0p+0, false, true,
14162+ -0x0p+0, false, true,
14163+ false,
14164+ -0x4p-16448, false, true,
14165+ -0x4p-16448, false, true,
14166+ -0x0p+0, false, true,
14167+ -0x0p+0, false, true,
14168+ false,
14169+ -0x4p-1076, false, true,
14170+ -0x0p+0, false, true,
14171+ -0x0p+0, false, true,
14172+ -0x0p+0, false, true,
14173+ false,
14174+ -0x4p-16448, false, true,
14175+ -0x4p-16448, false, true,
14176+ -0x3.fffffffffffcp-16448, false, true,
14177+ -0x3.fffffffffffcp-16448, false, true),
14178 TEST ("-1.822599765941237301264202966809709908199525407846781671860"
14179 "490243514185844316698868404780354312913602598623673673601765"
14180 "550983492816311016084986754037794904502741911290588965839284"
14181@@ -8660,35 +8660,35 @@ static const struct test tests[] = {
14182 "462208964199390089675673427653193145026697275263799724815197"
14183 "42277811246822238899767398834228515625e-4951",
14184 false,
14185- -0x8p-152, false,
14186- -0x0p+0, false,
14187- -0x0p+0, false,
14188- -0x0p+0, false,
14189- false,
14190- -0x4p-1076, false,
14191- -0x0p+0, false,
14192- -0x0p+0, false,
14193- -0x0p+0, false,
14194- false,
14195- -0x8p-16448, false,
14196- -0x0p+0, false,
14197- -0x0p+0, false,
14198- -0x0p+0, false,
14199- true,
14200- -0x4p-16448, false,
14201- -0x4p-16448, false,
14202- -0x4p-16448, false,
14203- -0x4p-16448, false,
14204- false,
14205- -0x4p-1076, false,
14206- -0x0p+0, false,
14207- -0x0p+0, false,
14208- -0x0p+0, false,
14209- true,
14210- -0x4p-16448, false,
14211- -0x4p-16448, false,
14212- -0x4p-16448, false,
14213- -0x4p-16448, false),
14214+ -0x8p-152, false, true,
14215+ -0x0p+0, false, true,
14216+ -0x0p+0, false, true,
14217+ -0x0p+0, false, true,
14218+ false,
14219+ -0x4p-1076, false, true,
14220+ -0x0p+0, false, true,
14221+ -0x0p+0, false, true,
14222+ -0x0p+0, false, true,
14223+ false,
14224+ -0x8p-16448, false, true,
14225+ -0x0p+0, false, true,
14226+ -0x0p+0, false, true,
14227+ -0x0p+0, false, true,
14228+ true,
14229+ -0x4p-16448, false, false,
14230+ -0x4p-16448, false, false,
14231+ -0x4p-16448, false, false,
14232+ -0x4p-16448, false, false,
14233+ false,
14234+ -0x4p-1076, false, true,
14235+ -0x0p+0, false, true,
14236+ -0x0p+0, false, true,
14237+ -0x0p+0, false, true,
14238+ true,
14239+ -0x4p-16448, false, false,
14240+ -0x4p-16448, false, false,
14241+ -0x4p-16448, false, false,
14242+ -0x4p-16448, false, false),
14243 TEST ("-1.822599765941237301264202966809709908199525407846781671860"
14244 "490243514185844316698868404780354312913602598623673673601765"
14245 "550983492816311016084986754037794904502741911290588965839284"
14246@@ -8882,35 +8882,35 @@ static const struct test tests[] = {
14247 "462208964199390089675673427653193145026697275263799724815197"
14248 "42277811246822238899767398834228515626e-4951",
14249 false,
14250- -0x8p-152, false,
14251- -0x0p+0, false,
14252- -0x0p+0, false,
14253- -0x0p+0, false,
14254- false,
14255- -0x4p-1076, false,
14256- -0x0p+0, false,
14257- -0x0p+0, false,
14258- -0x0p+0, false,
14259- false,
14260- -0x8p-16448, false,
14261- -0x8p-16448, false,
14262- -0x0p+0, false,
14263- -0x0p+0, false,
14264- false,
14265- -0x8p-16448, false,
14266- -0x4p-16448, false,
14267- -0x4p-16448, false,
14268- -0x4p-16448, false,
14269- false,
14270- -0x4p-1076, false,
14271- -0x0p+0, false,
14272- -0x0p+0, false,
14273- -0x0p+0, false,
14274- false,
14275- -0x4.000000000004p-16448, false,
14276- -0x4p-16448, false,
14277- -0x4p-16448, false,
14278- -0x4p-16448, false),
14279+ -0x8p-152, false, true,
14280+ -0x0p+0, false, true,
14281+ -0x0p+0, false, true,
14282+ -0x0p+0, false, true,
14283+ false,
14284+ -0x4p-1076, false, true,
14285+ -0x0p+0, false, true,
14286+ -0x0p+0, false, true,
14287+ -0x0p+0, false, true,
14288+ false,
14289+ -0x8p-16448, false, true,
14290+ -0x8p-16448, false, true,
14291+ -0x0p+0, false, true,
14292+ -0x0p+0, false, true,
14293+ false,
14294+ -0x8p-16448, false, true,
14295+ -0x4p-16448, false, true,
14296+ -0x4p-16448, false, true,
14297+ -0x4p-16448, false, true,
14298+ false,
14299+ -0x4p-1076, false, true,
14300+ -0x0p+0, false, true,
14301+ -0x0p+0, false, true,
14302+ -0x0p+0, false, true,
14303+ false,
14304+ -0x4.000000000004p-16448, false, true,
14305+ -0x4p-16448, false, true,
14306+ -0x4p-16448, false, true,
14307+ -0x4p-16448, false, true),
14308 TEST ("9.1129988297061865063210148340485495409976270392339083593024"
14309 "512175709292215834943420239017715645680129931183683680088277"
14310 "549174640815550804249337701889745225137095564529448291964230"
14311@@ -9104,35 +9104,35 @@ static const struct test tests[] = {
14312 "110448209969504483783671382659657251334863763189986240759871"
14313 "1389056234111194498836994171142578124e-4952",
14314 false,
14315- 0x0p+0, false,
14316- 0x0p+0, false,
14317- 0x0p+0, false,
14318- 0x8p-152, false,
14319- false,
14320- 0x0p+0, false,
14321- 0x0p+0, false,
14322- 0x0p+0, false,
14323- 0x4p-1076, false,
14324- false,
14325- 0x0p+0, false,
14326- 0x0p+0, false,
14327- 0x0p+0, false,
14328- 0x8p-16448, false,
14329- false,
14330- 0x0p+0, false,
14331- 0x0p+0, false,
14332- 0x0p+0, false,
14333- 0x4p-16448, false,
14334- false,
14335- 0x0p+0, false,
14336- 0x0p+0, false,
14337- 0x0p+0, false,
14338- 0x4p-1076, false,
14339- false,
14340- 0x1.fffffffffffcp-16448, false,
14341- 0x2p-16448, false,
14342- 0x1.fffffffffffcp-16448, false,
14343- 0x2p-16448, false),
14344+ 0x0p+0, false, true,
14345+ 0x0p+0, false, true,
14346+ 0x0p+0, false, true,
14347+ 0x8p-152, false, true,
14348+ false,
14349+ 0x0p+0, false, true,
14350+ 0x0p+0, false, true,
14351+ 0x0p+0, false, true,
14352+ 0x4p-1076, false, true,
14353+ false,
14354+ 0x0p+0, false, true,
14355+ 0x0p+0, false, true,
14356+ 0x0p+0, false, true,
14357+ 0x8p-16448, false, true,
14358+ false,
14359+ 0x0p+0, false, true,
14360+ 0x0p+0, false, true,
14361+ 0x0p+0, false, true,
14362+ 0x4p-16448, false, true,
14363+ false,
14364+ 0x0p+0, false, true,
14365+ 0x0p+0, false, true,
14366+ 0x0p+0, false, true,
14367+ 0x4p-1076, false, true,
14368+ false,
14369+ 0x1.fffffffffffcp-16448, false, true,
14370+ 0x2p-16448, false, true,
14371+ 0x1.fffffffffffcp-16448, false, true,
14372+ 0x2p-16448, false, true),
14373 TEST ("9.1129988297061865063210148340485495409976270392339083593024"
14374 "512175709292215834943420239017715645680129931183683680088277"
14375 "549174640815550804249337701889745225137095564529448291964230"
14376@@ -9326,35 +9326,35 @@ static const struct test tests[] = {
14377 "110448209969504483783671382659657251334863763189986240759871"
14378 "1389056234111194498836994171142578125e-4952",
14379 false,
14380- 0x0p+0, false,
14381- 0x0p+0, false,
14382- 0x0p+0, false,
14383- 0x8p-152, false,
14384- false,
14385- 0x0p+0, false,
14386- 0x0p+0, false,
14387- 0x0p+0, false,
14388- 0x4p-1076, false,
14389- false,
14390- 0x0p+0, false,
14391- 0x0p+0, false,
14392- 0x0p+0, false,
14393- 0x8p-16448, false,
14394- false,
14395- 0x0p+0, false,
14396- 0x0p+0, false,
14397- 0x0p+0, false,
14398- 0x4p-16448, false,
14399- false,
14400- 0x0p+0, false,
14401- 0x0p+0, false,
14402- 0x0p+0, false,
14403- 0x4p-1076, false,
14404- true,
14405- 0x2p-16448, false,
14406- 0x2p-16448, false,
14407- 0x2p-16448, false,
14408- 0x2p-16448, false),
14409+ 0x0p+0, false, true,
14410+ 0x0p+0, false, true,
14411+ 0x0p+0, false, true,
14412+ 0x8p-152, false, true,
14413+ false,
14414+ 0x0p+0, false, true,
14415+ 0x0p+0, false, true,
14416+ 0x0p+0, false, true,
14417+ 0x4p-1076, false, true,
14418+ false,
14419+ 0x0p+0, false, true,
14420+ 0x0p+0, false, true,
14421+ 0x0p+0, false, true,
14422+ 0x8p-16448, false, true,
14423+ false,
14424+ 0x0p+0, false, true,
14425+ 0x0p+0, false, true,
14426+ 0x0p+0, false, true,
14427+ 0x4p-16448, false, true,
14428+ false,
14429+ 0x0p+0, false, true,
14430+ 0x0p+0, false, true,
14431+ 0x0p+0, false, true,
14432+ 0x4p-1076, false, true,
14433+ true,
14434+ 0x2p-16448, false, false,
14435+ 0x2p-16448, false, false,
14436+ 0x2p-16448, false, false,
14437+ 0x2p-16448, false, false),
14438 TEST ("9.1129988297061865063210148340485495409976270392339083593024"
14439 "512175709292215834943420239017715645680129931183683680088277"
14440 "549174640815550804249337701889745225137095564529448291964230"
14441@@ -9548,35 +9548,35 @@ static const struct test tests[] = {
14442 "110448209969504483783671382659657251334863763189986240759871"
14443 "1389056234111194498836994171142578126e-4952",
14444 false,
14445- 0x0p+0, false,
14446- 0x0p+0, false,
14447- 0x0p+0, false,
14448- 0x8p-152, false,
14449- false,
14450- 0x0p+0, false,
14451- 0x0p+0, false,
14452- 0x0p+0, false,
14453- 0x4p-1076, false,
14454- false,
14455- 0x0p+0, false,
14456- 0x0p+0, false,
14457- 0x0p+0, false,
14458- 0x8p-16448, false,
14459- false,
14460- 0x0p+0, false,
14461- 0x4p-16448, false,
14462- 0x0p+0, false,
14463- 0x4p-16448, false,
14464- false,
14465- 0x0p+0, false,
14466- 0x0p+0, false,
14467- 0x0p+0, false,
14468- 0x4p-1076, false,
14469- false,
14470- 0x2p-16448, false,
14471- 0x2p-16448, false,
14472- 0x2p-16448, false,
14473- 0x2.000000000004p-16448, false),
14474+ 0x0p+0, false, true,
14475+ 0x0p+0, false, true,
14476+ 0x0p+0, false, true,
14477+ 0x8p-152, false, true,
14478+ false,
14479+ 0x0p+0, false, true,
14480+ 0x0p+0, false, true,
14481+ 0x0p+0, false, true,
14482+ 0x4p-1076, false, true,
14483+ false,
14484+ 0x0p+0, false, true,
14485+ 0x0p+0, false, true,
14486+ 0x0p+0, false, true,
14487+ 0x8p-16448, false, true,
14488+ false,
14489+ 0x0p+0, false, true,
14490+ 0x4p-16448, false, true,
14491+ 0x0p+0, false, true,
14492+ 0x4p-16448, false, true,
14493+ false,
14494+ 0x0p+0, false, true,
14495+ 0x0p+0, false, true,
14496+ 0x0p+0, false, true,
14497+ 0x4p-1076, false, true,
14498+ false,
14499+ 0x2p-16448, false, true,
14500+ 0x2p-16448, false, true,
14501+ 0x2p-16448, false, true,
14502+ 0x2.000000000004p-16448, false, true),
14503 TEST ("-9.112998829706186506321014834048549540997627039233908359302"
14504 "451217570929221583494342023901771564568012993118368368008827"
14505 "754917464081555080424933770188974522513709556452944829196423"
14506@@ -9770,35 +9770,35 @@ static const struct test tests[] = {
14507 "311044820996950448378367138265965725133486376318998624075987"
14508 "11389056234111194498836994171142578124e-4952",
14509 false,
14510- -0x8p-152, false,
14511- -0x0p+0, false,
14512- -0x0p+0, false,
14513- -0x0p+0, false,
14514- false,
14515- -0x4p-1076, false,
14516- -0x0p+0, false,
14517- -0x0p+0, false,
14518- -0x0p+0, false,
14519- false,
14520- -0x8p-16448, false,
14521- -0x0p+0, false,
14522- -0x0p+0, false,
14523- -0x0p+0, false,
14524- false,
14525- -0x4p-16448, false,
14526- -0x0p+0, false,
14527- -0x0p+0, false,
14528- -0x0p+0, false,
14529- false,
14530- -0x4p-1076, false,
14531- -0x0p+0, false,
14532- -0x0p+0, false,
14533- -0x0p+0, false,
14534- false,
14535- -0x2p-16448, false,
14536- -0x2p-16448, false,
14537- -0x1.fffffffffffcp-16448, false,
14538- -0x1.fffffffffffcp-16448, false),
14539+ -0x8p-152, false, true,
14540+ -0x0p+0, false, true,
14541+ -0x0p+0, false, true,
14542+ -0x0p+0, false, true,
14543+ false,
14544+ -0x4p-1076, false, true,
14545+ -0x0p+0, false, true,
14546+ -0x0p+0, false, true,
14547+ -0x0p+0, false, true,
14548+ false,
14549+ -0x8p-16448, false, true,
14550+ -0x0p+0, false, true,
14551+ -0x0p+0, false, true,
14552+ -0x0p+0, false, true,
14553+ false,
14554+ -0x4p-16448, false, true,
14555+ -0x0p+0, false, true,
14556+ -0x0p+0, false, true,
14557+ -0x0p+0, false, true,
14558+ false,
14559+ -0x4p-1076, false, true,
14560+ -0x0p+0, false, true,
14561+ -0x0p+0, false, true,
14562+ -0x0p+0, false, true,
14563+ false,
14564+ -0x2p-16448, false, true,
14565+ -0x2p-16448, false, true,
14566+ -0x1.fffffffffffcp-16448, false, true,
14567+ -0x1.fffffffffffcp-16448, false, true),
14568 TEST ("-9.112998829706186506321014834048549540997627039233908359302"
14569 "451217570929221583494342023901771564568012993118368368008827"
14570 "754917464081555080424933770188974522513709556452944829196423"
14571@@ -9992,35 +9992,35 @@ static const struct test tests[] = {
14572 "311044820996950448378367138265965725133486376318998624075987"
14573 "11389056234111194498836994171142578125e-4952",
14574 false,
14575- -0x8p-152, false,
14576- -0x0p+0, false,
14577- -0x0p+0, false,
14578- -0x0p+0, false,
14579- false,
14580- -0x4p-1076, false,
14581- -0x0p+0, false,
14582- -0x0p+0, false,
14583- -0x0p+0, false,
14584- false,
14585- -0x8p-16448, false,
14586- -0x0p+0, false,
14587- -0x0p+0, false,
14588- -0x0p+0, false,
14589- false,
14590- -0x4p-16448, false,
14591- -0x0p+0, false,
14592- -0x0p+0, false,
14593- -0x0p+0, false,
14594- false,
14595- -0x4p-1076, false,
14596- -0x0p+0, false,
14597- -0x0p+0, false,
14598- -0x0p+0, false,
14599- true,
14600- -0x2p-16448, false,
14601- -0x2p-16448, false,
14602- -0x2p-16448, false,
14603- -0x2p-16448, false),
14604+ -0x8p-152, false, true,
14605+ -0x0p+0, false, true,
14606+ -0x0p+0, false, true,
14607+ -0x0p+0, false, true,
14608+ false,
14609+ -0x4p-1076, false, true,
14610+ -0x0p+0, false, true,
14611+ -0x0p+0, false, true,
14612+ -0x0p+0, false, true,
14613+ false,
14614+ -0x8p-16448, false, true,
14615+ -0x0p+0, false, true,
14616+ -0x0p+0, false, true,
14617+ -0x0p+0, false, true,
14618+ false,
14619+ -0x4p-16448, false, true,
14620+ -0x0p+0, false, true,
14621+ -0x0p+0, false, true,
14622+ -0x0p+0, false, true,
14623+ false,
14624+ -0x4p-1076, false, true,
14625+ -0x0p+0, false, true,
14626+ -0x0p+0, false, true,
14627+ -0x0p+0, false, true,
14628+ true,
14629+ -0x2p-16448, false, false,
14630+ -0x2p-16448, false, false,
14631+ -0x2p-16448, false, false,
14632+ -0x2p-16448, false, false),
14633 TEST ("-9.112998829706186506321014834048549540997627039233908359302"
14634 "451217570929221583494342023901771564568012993118368368008827"
14635 "754917464081555080424933770188974522513709556452944829196423"
14636@@ -10214,35 +10214,35 @@ static const struct test tests[] = {
14637 "311044820996950448378367138265965725133486376318998624075987"
14638 "11389056234111194498836994171142578126e-4952",
14639 false,
14640- -0x8p-152, false,
14641- -0x0p+0, false,
14642- -0x0p+0, false,
14643- -0x0p+0, false,
14644- false,
14645- -0x4p-1076, false,
14646- -0x0p+0, false,
14647- -0x0p+0, false,
14648- -0x0p+0, false,
14649- false,
14650- -0x8p-16448, false,
14651- -0x0p+0, false,
14652- -0x0p+0, false,
14653- -0x0p+0, false,
14654- false,
14655- -0x4p-16448, false,
14656- -0x4p-16448, false,
14657- -0x0p+0, false,
14658- -0x0p+0, false,
14659- false,
14660- -0x4p-1076, false,
14661- -0x0p+0, false,
14662- -0x0p+0, false,
14663- -0x0p+0, false,
14664- false,
14665- -0x2.000000000004p-16448, false,
14666- -0x2p-16448, false,
14667- -0x2p-16448, false,
14668- -0x2p-16448, false),
14669+ -0x8p-152, false, true,
14670+ -0x0p+0, false, true,
14671+ -0x0p+0, false, true,
14672+ -0x0p+0, false, true,
14673+ false,
14674+ -0x4p-1076, false, true,
14675+ -0x0p+0, false, true,
14676+ -0x0p+0, false, true,
14677+ -0x0p+0, false, true,
14678+ false,
14679+ -0x8p-16448, false, true,
14680+ -0x0p+0, false, true,
14681+ -0x0p+0, false, true,
14682+ -0x0p+0, false, true,
14683+ false,
14684+ -0x4p-16448, false, true,
14685+ -0x4p-16448, false, true,
14686+ -0x0p+0, false, true,
14687+ -0x0p+0, false, true,
14688+ false,
14689+ -0x4p-1076, false, true,
14690+ -0x0p+0, false, true,
14691+ -0x0p+0, false, true,
14692+ -0x0p+0, false, true,
14693+ false,
14694+ -0x2.000000000004p-16448, false, true,
14695+ -0x2p-16448, false, true,
14696+ -0x2p-16448, false, true,
14697+ -0x2p-16448, false, true),
14698 TEST ("3.2375875597190125554622194791138232762497846690173405048449"
14699 "421945985197700620596855088357456383249701279390707384240598"
14700 "382936099431912710233425550359863089915213963553756674672083"
14701@@ -10437,35 +10437,35 @@ static const struct test tests[] = {
14702 "182358152808745703724362178773168996492870519432472065091133"
14703 "11767578124e-4966",
14704 false,
14705- 0x0p+0, false,
14706- 0x0p+0, false,
14707- 0x0p+0, false,
14708- 0x8p-152, false,
14709- false,
14710- 0x0p+0, false,
14711- 0x0p+0, false,
14712- 0x0p+0, false,
14713- 0x4p-1076, false,
14714- false,
14715- 0x0p+0, false,
14716- 0x0p+0, false,
14717- 0x0p+0, false,
14718- 0x8p-16448, false,
14719- false,
14720- 0x0p+0, false,
14721- 0x0p+0, false,
14722- 0x0p+0, false,
14723- 0x4p-16448, false,
14724- false,
14725- 0x0p+0, false,
14726- 0x0p+0, false,
14727- 0x0p+0, false,
14728- 0x4p-1076, false,
14729- false,
14730- 0x0p+0, false,
14731- 0x0p+0, false,
14732- 0x0p+0, false,
14733- 0x4p-16496, false),
14734+ 0x0p+0, false, true,
14735+ 0x0p+0, false, true,
14736+ 0x0p+0, false, true,
14737+ 0x8p-152, false, true,
14738+ false,
14739+ 0x0p+0, false, true,
14740+ 0x0p+0, false, true,
14741+ 0x0p+0, false, true,
14742+ 0x4p-1076, false, true,
14743+ false,
14744+ 0x0p+0, false, true,
14745+ 0x0p+0, false, true,
14746+ 0x0p+0, false, true,
14747+ 0x8p-16448, false, true,
14748+ false,
14749+ 0x0p+0, false, true,
14750+ 0x0p+0, false, true,
14751+ 0x0p+0, false, true,
14752+ 0x4p-16448, false, true,
14753+ false,
14754+ 0x0p+0, false, true,
14755+ 0x0p+0, false, true,
14756+ 0x0p+0, false, true,
14757+ 0x4p-1076, false, true,
14758+ false,
14759+ 0x0p+0, false, true,
14760+ 0x0p+0, false, true,
14761+ 0x0p+0, false, true,
14762+ 0x4p-16496, false, true),
14763 TEST ("3.2375875597190125554622194791138232762497846690173405048449"
14764 "421945985197700620596855088357456383249701279390707384240598"
14765 "382936099431912710233425550359863089915213963553756674672083"
14766@@ -10660,35 +10660,35 @@ static const struct test tests[] = {
14767 "182358152808745703724362178773168996492870519432472065091133"
14768 "11767578125e-4966",
14769 false,
14770- 0x0p+0, false,
14771- 0x0p+0, false,
14772- 0x0p+0, false,
14773- 0x8p-152, false,
14774- false,
14775- 0x0p+0, false,
14776- 0x0p+0, false,
14777- 0x0p+0, false,
14778- 0x4p-1076, false,
14779- false,
14780- 0x0p+0, false,
14781- 0x0p+0, false,
14782- 0x0p+0, false,
14783- 0x8p-16448, false,
14784- false,
14785- 0x0p+0, false,
14786- 0x0p+0, false,
14787- 0x0p+0, false,
14788- 0x4p-16448, false,
14789- false,
14790- 0x0p+0, false,
14791- 0x0p+0, false,
14792- 0x0p+0, false,
14793- 0x4p-1076, false,
14794- false,
14795- 0x0p+0, false,
14796- 0x0p+0, false,
14797- 0x0p+0, false,
14798- 0x4p-16496, false),
14799+ 0x0p+0, false, true,
14800+ 0x0p+0, false, true,
14801+ 0x0p+0, false, true,
14802+ 0x8p-152, false, true,
14803+ false,
14804+ 0x0p+0, false, true,
14805+ 0x0p+0, false, true,
14806+ 0x0p+0, false, true,
14807+ 0x4p-1076, false, true,
14808+ false,
14809+ 0x0p+0, false, true,
14810+ 0x0p+0, false, true,
14811+ 0x0p+0, false, true,
14812+ 0x8p-16448, false, true,
14813+ false,
14814+ 0x0p+0, false, true,
14815+ 0x0p+0, false, true,
14816+ 0x0p+0, false, true,
14817+ 0x4p-16448, false, true,
14818+ false,
14819+ 0x0p+0, false, true,
14820+ 0x0p+0, false, true,
14821+ 0x0p+0, false, true,
14822+ 0x4p-1076, false, true,
14823+ false,
14824+ 0x0p+0, false, true,
14825+ 0x0p+0, false, true,
14826+ 0x0p+0, false, true,
14827+ 0x4p-16496, false, true),
14828 TEST ("3.2375875597190125554622194791138232762497846690173405048449"
14829 "421945985197700620596855088357456383249701279390707384240598"
14830 "382936099431912710233425550359863089915213963553756674672083"
14831@@ -10883,35 +10883,35 @@ static const struct test tests[] = {
14832 "182358152808745703724362178773168996492870519432472065091133"
14833 "11767578126e-4966",
14834 false,
14835- 0x0p+0, false,
14836- 0x0p+0, false,
14837- 0x0p+0, false,
14838- 0x8p-152, false,
14839- false,
14840- 0x0p+0, false,
14841- 0x0p+0, false,
14842- 0x0p+0, false,
14843- 0x4p-1076, false,
14844- false,
14845- 0x0p+0, false,
14846- 0x0p+0, false,
14847- 0x0p+0, false,
14848- 0x8p-16448, false,
14849- false,
14850- 0x0p+0, false,
14851- 0x0p+0, false,
14852- 0x0p+0, false,
14853- 0x4p-16448, false,
14854- false,
14855- 0x0p+0, false,
14856- 0x0p+0, false,
14857- 0x0p+0, false,
14858- 0x4p-1076, false,
14859- false,
14860- 0x0p+0, false,
14861- 0x4p-16496, false,
14862- 0x0p+0, false,
14863- 0x4p-16496, false),
14864+ 0x0p+0, false, true,
14865+ 0x0p+0, false, true,
14866+ 0x0p+0, false, true,
14867+ 0x8p-152, false, true,
14868+ false,
14869+ 0x0p+0, false, true,
14870+ 0x0p+0, false, true,
14871+ 0x0p+0, false, true,
14872+ 0x4p-1076, false, true,
14873+ false,
14874+ 0x0p+0, false, true,
14875+ 0x0p+0, false, true,
14876+ 0x0p+0, false, true,
14877+ 0x8p-16448, false, true,
14878+ false,
14879+ 0x0p+0, false, true,
14880+ 0x0p+0, false, true,
14881+ 0x0p+0, false, true,
14882+ 0x4p-16448, false, true,
14883+ false,
14884+ 0x0p+0, false, true,
14885+ 0x0p+0, false, true,
14886+ 0x0p+0, false, true,
14887+ 0x4p-1076, false, true,
14888+ false,
14889+ 0x0p+0, false, true,
14890+ 0x4p-16496, false, true,
14891+ 0x0p+0, false, true,
14892+ 0x4p-16496, false, true),
14893 TEST ("-3.237587559719012555462219479113823276249784669017340504844"
14894 "942194598519770062059685508835745638324970127939070738424059"
14895 "838293609943191271023342555035986308991521396355375667467208"
14896@@ -11106,35 +11106,35 @@ static const struct test tests[] = {
14897 "218235815280874570372436217877316899649287051943247206509113"
14898 "311767578124e-4966",
14899 false,
14900- -0x8p-152, false,
14901- -0x0p+0, false,
14902- -0x0p+0, false,
14903- -0x0p+0, false,
14904- false,
14905- -0x4p-1076, false,
14906- -0x0p+0, false,
14907- -0x0p+0, false,
14908- -0x0p+0, false,
14909- false,
14910- -0x8p-16448, false,
14911- -0x0p+0, false,
14912- -0x0p+0, false,
14913- -0x0p+0, false,
14914- false,
14915- -0x4p-16448, false,
14916- -0x0p+0, false,
14917- -0x0p+0, false,
14918- -0x0p+0, false,
14919- false,
14920- -0x4p-1076, false,
14921- -0x0p+0, false,
14922- -0x0p+0, false,
14923- -0x0p+0, false,
14924- false,
14925- -0x4p-16496, false,
14926- -0x0p+0, false,
14927- -0x0p+0, false,
14928- -0x0p+0, false),
14929+ -0x8p-152, false, true,
14930+ -0x0p+0, false, true,
14931+ -0x0p+0, false, true,
14932+ -0x0p+0, false, true,
14933+ false,
14934+ -0x4p-1076, false, true,
14935+ -0x0p+0, false, true,
14936+ -0x0p+0, false, true,
14937+ -0x0p+0, false, true,
14938+ false,
14939+ -0x8p-16448, false, true,
14940+ -0x0p+0, false, true,
14941+ -0x0p+0, false, true,
14942+ -0x0p+0, false, true,
14943+ false,
14944+ -0x4p-16448, false, true,
14945+ -0x0p+0, false, true,
14946+ -0x0p+0, false, true,
14947+ -0x0p+0, false, true,
14948+ false,
14949+ -0x4p-1076, false, true,
14950+ -0x0p+0, false, true,
14951+ -0x0p+0, false, true,
14952+ -0x0p+0, false, true,
14953+ false,
14954+ -0x4p-16496, false, true,
14955+ -0x0p+0, false, true,
14956+ -0x0p+0, false, true,
14957+ -0x0p+0, false, true),
14958 TEST ("-3.237587559719012555462219479113823276249784669017340504844"
14959 "942194598519770062059685508835745638324970127939070738424059"
14960 "838293609943191271023342555035986308991521396355375667467208"
14961@@ -11329,35 +11329,35 @@ static const struct test tests[] = {
14962 "218235815280874570372436217877316899649287051943247206509113"
14963 "311767578125e-4966",
14964 false,
14965- -0x8p-152, false,
14966- -0x0p+0, false,
14967- -0x0p+0, false,
14968- -0x0p+0, false,
14969- false,
14970- -0x4p-1076, false,
14971- -0x0p+0, false,
14972- -0x0p+0, false,
14973- -0x0p+0, false,
14974- false,
14975- -0x8p-16448, false,
14976- -0x0p+0, false,
14977- -0x0p+0, false,
14978- -0x0p+0, false,
14979- false,
14980- -0x4p-16448, false,
14981- -0x0p+0, false,
14982- -0x0p+0, false,
14983- -0x0p+0, false,
14984- false,
14985- -0x4p-1076, false,
14986- -0x0p+0, false,
14987- -0x0p+0, false,
14988- -0x0p+0, false,
14989- false,
14990- -0x4p-16496, false,
14991- -0x0p+0, false,
14992- -0x0p+0, false,
14993- -0x0p+0, false),
14994+ -0x8p-152, false, true,
14995+ -0x0p+0, false, true,
14996+ -0x0p+0, false, true,
14997+ -0x0p+0, false, true,
14998+ false,
14999+ -0x4p-1076, false, true,
15000+ -0x0p+0, false, true,
15001+ -0x0p+0, false, true,
15002+ -0x0p+0, false, true,
15003+ false,
15004+ -0x8p-16448, false, true,
15005+ -0x0p+0, false, true,
15006+ -0x0p+0, false, true,
15007+ -0x0p+0, false, true,
15008+ false,
15009+ -0x4p-16448, false, true,
15010+ -0x0p+0, false, true,
15011+ -0x0p+0, false, true,
15012+ -0x0p+0, false, true,
15013+ false,
15014+ -0x4p-1076, false, true,
15015+ -0x0p+0, false, true,
15016+ -0x0p+0, false, true,
15017+ -0x0p+0, false, true,
15018+ false,
15019+ -0x4p-16496, false, true,
15020+ -0x0p+0, false, true,
15021+ -0x0p+0, false, true,
15022+ -0x0p+0, false, true),
15023 TEST ("-3.237587559719012555462219479113823276249784669017340504844"
15024 "942194598519770062059685508835745638324970127939070738424059"
15025 "838293609943191271023342555035986308991521396355375667467208"
15026@@ -11552,66 +11552,66 @@ static const struct test tests[] = {
15027 "218235815280874570372436217877316899649287051943247206509113"
15028 "311767578126e-4966",
15029 false,
15030- -0x8p-152, false,
15031- -0x0p+0, false,
15032- -0x0p+0, false,
15033- -0x0p+0, false,
15034- false,
15035- -0x4p-1076, false,
15036- -0x0p+0, false,
15037- -0x0p+0, false,
15038- -0x0p+0, false,
15039- false,
15040- -0x8p-16448, false,
15041- -0x0p+0, false,
15042- -0x0p+0, false,
15043- -0x0p+0, false,
15044- false,
15045- -0x4p-16448, false,
15046- -0x0p+0, false,
15047- -0x0p+0, false,
15048- -0x0p+0, false,
15049- false,
15050- -0x4p-1076, false,
15051- -0x0p+0, false,
15052- -0x0p+0, false,
15053- -0x0p+0, false,
15054- false,
15055- -0x4p-16496, false,
15056- -0x4p-16496, false,
15057- -0x0p+0, false,
15058- -0x0p+0, false),
15059+ -0x8p-152, false, true,
15060+ -0x0p+0, false, true,
15061+ -0x0p+0, false, true,
15062+ -0x0p+0, false, true,
15063+ false,
15064+ -0x4p-1076, false, true,
15065+ -0x0p+0, false, true,
15066+ -0x0p+0, false, true,
15067+ -0x0p+0, false, true,
15068+ false,
15069+ -0x8p-16448, false, true,
15070+ -0x0p+0, false, true,
15071+ -0x0p+0, false, true,
15072+ -0x0p+0, false, true,
15073+ false,
15074+ -0x4p-16448, false, true,
15075+ -0x0p+0, false, true,
15076+ -0x0p+0, false, true,
15077+ -0x0p+0, false, true,
15078+ false,
15079+ -0x4p-1076, false, true,
15080+ -0x0p+0, false, true,
15081+ -0x0p+0, false, true,
15082+ -0x0p+0, false, true,
15083+ false,
15084+ -0x4p-16496, false, true,
15085+ -0x4p-16496, false, true,
15086+ -0x0p+0, false, true,
15087+ -0x0p+0, false, true),
15088 TEST ("340282366920938463463374607431768211455",
15089 false,
15090- 0xf.fffffp+124, false,
15091- INF, true,
15092- 0xf.fffffp+124, false,
15093- INF, true,
15094- false,
15095- 0xf.ffffffffffff8p+124, false,
15096- 0x1p+128, false,
15097- 0xf.ffffffffffff8p+124, false,
15098- 0x1p+128, false,
15099- false,
15100- 0xf.fffffffffffffffp+124, false,
15101- 0x1p+128, false,
15102- 0xf.fffffffffffffffp+124, false,
15103- 0x1p+128, false,
15104- false,
15105- 0xf.fffffffffffffffp+124, false,
15106- 0x1p+128, false,
15107- 0xf.fffffffffffffffp+124, false,
15108- 0x1p+128, false,
15109- false,
15110- 0xf.fffffffffffffffffffffffffcp+124, false,
15111- 0x1p+128, false,
15112- 0xf.fffffffffffffffffffffffffcp+124, false,
15113- 0x1p+128, false,
15114- false,
15115- 0xf.fffffffffffffffffffffffffff8p+124, false,
15116- 0x1p+128, false,
15117- 0xf.fffffffffffffffffffffffffff8p+124, false,
15118- 0x1p+128, false),
15119+ 0xf.fffffp+124, false, false,
15120+ INF, true, false,
15121+ 0xf.fffffp+124, false, false,
15122+ INF, true, false,
15123+ false,
15124+ 0xf.ffffffffffff8p+124, false, false,
15125+ 0x1p+128, false, false,
15126+ 0xf.ffffffffffff8p+124, false, false,
15127+ 0x1p+128, false, false,
15128+ false,
15129+ 0xf.fffffffffffffffp+124, false, false,
15130+ 0x1p+128, false, false,
15131+ 0xf.fffffffffffffffp+124, false, false,
15132+ 0x1p+128, false, false,
15133+ false,
15134+ 0xf.fffffffffffffffp+124, false, false,
15135+ 0x1p+128, false, false,
15136+ 0xf.fffffffffffffffp+124, false, false,
15137+ 0x1p+128, false, false,
15138+ false,
15139+ 0xf.fffffffffffffffffffffffffcp+124, false, false,
15140+ 0x1p+128, false, false,
15141+ 0xf.fffffffffffffffffffffffffcp+124, false, false,
15142+ 0x1p+128, false, false,
15143+ false,
15144+ 0xf.fffffffffffffffffffffffffff8p+124, false, false,
15145+ 0x1p+128, false, false,
15146+ 0xf.fffffffffffffffffffffffffff8p+124, false, false,
15147+ 0x1p+128, false, false),
15148 TEST ("179769313486231590772930519078902473361797697894230657273430"
15149 "081157732675805500963132708477322407536021120113879871393357"
15150 "658789768814416622492847430639474124377767893424865485276302"
15151@@ -11619,35 +11619,35 @@ static const struct test tests[] = {
15152 "540827237163350510684586298239947245938479716304835356329624"
15153 "224137215",
15154 false,
15155- 0xf.fffffp+124, true,
15156- INF, true,
15157- 0xf.fffffp+124, true,
15158- INF, true,
15159- false,
15160- 0xf.ffffffffffff8p+1020, false,
15161- INF, true,
15162- 0xf.ffffffffffff8p+1020, false,
15163- INF, true,
15164- false,
15165- 0xf.fffffffffffffffp+1020, false,
15166- 0x1p+1024, false,
15167- 0xf.fffffffffffffffp+1020, false,
15168- 0x1p+1024, false,
15169- false,
15170- 0xf.fffffffffffffffp+1020, false,
15171- 0x1p+1024, false,
15172- 0xf.fffffffffffffffp+1020, false,
15173- 0x1p+1024, false,
15174- false,
15175- 0xf.fffffffffffffffffffffffffcp+1020, true,
15176- INF, true,
15177- 0xf.fffffffffffffffffffffffffcp+1020, true,
15178- INF, true,
15179- false,
15180- 0xf.fffffffffffffffffffffffffff8p+1020, false,
15181- 0x1p+1024, false,
15182- 0xf.fffffffffffffffffffffffffff8p+1020, false,
15183- 0x1p+1024, false),
15184+ 0xf.fffffp+124, true, false,
15185+ INF, true, false,
15186+ 0xf.fffffp+124, true, false,
15187+ INF, true, false,
15188+ false,
15189+ 0xf.ffffffffffff8p+1020, false, false,
15190+ INF, true, false,
15191+ 0xf.ffffffffffff8p+1020, false, false,
15192+ INF, true, false,
15193+ false,
15194+ 0xf.fffffffffffffffp+1020, false, false,
15195+ 0x1p+1024, false, false,
15196+ 0xf.fffffffffffffffp+1020, false, false,
15197+ 0x1p+1024, false, false,
15198+ false,
15199+ 0xf.fffffffffffffffp+1020, false, false,
15200+ 0x1p+1024, false, false,
15201+ 0xf.fffffffffffffffp+1020, false, false,
15202+ 0x1p+1024, false, false,
15203+ false,
15204+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
15205+ INF, true, false,
15206+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
15207+ INF, true, false,
15208+ false,
15209+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false,
15210+ 0x1p+1024, false, false,
15211+ 0xf.fffffffffffffffffffffffffff8p+1020, false, false,
15212+ 0x1p+1024, false, false),
15213 TEST ("118973149535723176508575932662800713076344468709651023747267"
15214 "482123326135818048368690448859547261203991511543748483930925"
15215 "889766738130868742627452469834156500608087163436600489752214"
15216@@ -11732,66 +11732,66 @@ static const struct test tests[] = {
15217 "047398248889922809181821393428829567971736994315246044702729"
15218 "0669964066815",
15219 false,
15220- 0xf.fffffp+124, true,
15221- INF, true,
15222- 0xf.fffffp+124, true,
15223- INF, true,
15224- false,
15225- 0xf.ffffffffffff8p+1020, true,
15226- INF, true,
15227- 0xf.ffffffffffff8p+1020, true,
15228- INF, true,
15229- false,
15230- 0xf.fffffffffffffffp+16380, false,
15231- INF, true,
15232- 0xf.fffffffffffffffp+16380, false,
15233- INF, true,
15234- false,
15235- 0xf.fffffffffffffffp+16380, false,
15236- INF, true,
15237- 0xf.fffffffffffffffp+16380, false,
15238- INF, true,
15239- false,
15240- 0xf.fffffffffffffffffffffffffcp+1020, true,
15241- INF, true,
15242- 0xf.fffffffffffffffffffffffffcp+1020, true,
15243- INF, true,
15244- false,
15245- 0xf.fffffffffffffffffffffffffff8p+16380, false,
15246- INF, true,
15247- 0xf.fffffffffffffffffffffffffff8p+16380, false,
15248- INF, true),
15249+ 0xf.fffffp+124, true, false,
15250+ INF, true, false,
15251+ 0xf.fffffp+124, true, false,
15252+ INF, true, false,
15253+ false,
15254+ 0xf.ffffffffffff8p+1020, true, false,
15255+ INF, true, false,
15256+ 0xf.ffffffffffff8p+1020, true, false,
15257+ INF, true, false,
15258+ false,
15259+ 0xf.fffffffffffffffp+16380, false, false,
15260+ INF, true, false,
15261+ 0xf.fffffffffffffffp+16380, false, false,
15262+ INF, true, false,
15263+ false,
15264+ 0xf.fffffffffffffffp+16380, false, false,
15265+ INF, true, false,
15266+ 0xf.fffffffffffffffp+16380, false, false,
15267+ INF, true, false,
15268+ false,
15269+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
15270+ INF, true, false,
15271+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
15272+ INF, true, false,
15273+ false,
15274+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
15275+ INF, true, false,
15276+ 0xf.fffffffffffffffffffffffffff8p+16380, false, false,
15277+ INF, true, false),
15278 TEST ("-340282366920938463463374607431768211455",
15279 false,
15280- -INF, true,
15281- -INF, true,
15282- -0xf.fffffp+124, false,
15283- -0xf.fffffp+124, false,
15284- false,
15285- -0x1p+128, false,
15286- -0x1p+128, false,
15287- -0xf.ffffffffffff8p+124, false,
15288- -0xf.ffffffffffff8p+124, false,
15289- false,
15290- -0x1p+128, false,
15291- -0x1p+128, false,
15292- -0xf.fffffffffffffffp+124, false,
15293- -0xf.fffffffffffffffp+124, false,
15294- false,
15295- -0x1p+128, false,
15296- -0x1p+128, false,
15297- -0xf.fffffffffffffffp+124, false,
15298- -0xf.fffffffffffffffp+124, false,
15299- false,
15300- -0x1p+128, false,
15301- -0x1p+128, false,
15302- -0xf.fffffffffffffffffffffffffcp+124, false,
15303- -0xf.fffffffffffffffffffffffffcp+124, false,
15304- false,
15305- -0x1p+128, false,
15306- -0x1p+128, false,
15307- -0xf.fffffffffffffffffffffffffff8p+124, false,
15308- -0xf.fffffffffffffffffffffffffff8p+124, false),
15309+ -INF, true, false,
15310+ -INF, true, false,
15311+ -0xf.fffffp+124, false, false,
15312+ -0xf.fffffp+124, false, false,
15313+ false,
15314+ -0x1p+128, false, false,
15315+ -0x1p+128, false, false,
15316+ -0xf.ffffffffffff8p+124, false, false,
15317+ -0xf.ffffffffffff8p+124, false, false,
15318+ false,
15319+ -0x1p+128, false, false,
15320+ -0x1p+128, false, false,
15321+ -0xf.fffffffffffffffp+124, false, false,
15322+ -0xf.fffffffffffffffp+124, false, false,
15323+ false,
15324+ -0x1p+128, false, false,
15325+ -0x1p+128, false, false,
15326+ -0xf.fffffffffffffffp+124, false, false,
15327+ -0xf.fffffffffffffffp+124, false, false,
15328+ false,
15329+ -0x1p+128, false, false,
15330+ -0x1p+128, false, false,
15331+ -0xf.fffffffffffffffffffffffffcp+124, false, false,
15332+ -0xf.fffffffffffffffffffffffffcp+124, false, false,
15333+ false,
15334+ -0x1p+128, false, false,
15335+ -0x1p+128, false, false,
15336+ -0xf.fffffffffffffffffffffffffff8p+124, false, false,
15337+ -0xf.fffffffffffffffffffffffffff8p+124, false, false),
15338 TEST ("-17976931348623159077293051907890247336179769789423065727343"
15339 "008115773267580550096313270847732240753602112011387987139335"
15340 "765878976881441662249284743063947412437776789342486548527630"
15341@@ -11799,35 +11799,35 @@ static const struct test tests[] = {
15342 "054082723716335051068458629823994724593847971630483535632962"
15343 "4224137215",
15344 false,
15345- -INF, true,
15346- -INF, true,
15347- -0xf.fffffp+124, true,
15348- -0xf.fffffp+124, true,
15349- false,
15350- -INF, true,
15351- -INF, true,
15352- -0xf.ffffffffffff8p+1020, false,
15353- -0xf.ffffffffffff8p+1020, false,
15354- false,
15355- -0x1p+1024, false,
15356- -0x1p+1024, false,
15357- -0xf.fffffffffffffffp+1020, false,
15358- -0xf.fffffffffffffffp+1020, false,
15359- false,
15360- -0x1p+1024, false,
15361- -0x1p+1024, false,
15362- -0xf.fffffffffffffffp+1020, false,
15363- -0xf.fffffffffffffffp+1020, false,
15364- false,
15365- -INF, true,
15366- -INF, true,
15367- -0xf.fffffffffffffffffffffffffcp+1020, true,
15368- -0xf.fffffffffffffffffffffffffcp+1020, true,
15369- false,
15370- -0x1p+1024, false,
15371- -0x1p+1024, false,
15372- -0xf.fffffffffffffffffffffffffff8p+1020, false,
15373- -0xf.fffffffffffffffffffffffffff8p+1020, false),
15374+ -INF, true, false,
15375+ -INF, true, false,
15376+ -0xf.fffffp+124, true, false,
15377+ -0xf.fffffp+124, true, false,
15378+ false,
15379+ -INF, true, false,
15380+ -INF, true, false,
15381+ -0xf.ffffffffffff8p+1020, false, false,
15382+ -0xf.ffffffffffff8p+1020, false, false,
15383+ false,
15384+ -0x1p+1024, false, false,
15385+ -0x1p+1024, false, false,
15386+ -0xf.fffffffffffffffp+1020, false, false,
15387+ -0xf.fffffffffffffffp+1020, false, false,
15388+ false,
15389+ -0x1p+1024, false, false,
15390+ -0x1p+1024, false, false,
15391+ -0xf.fffffffffffffffp+1020, false, false,
15392+ -0xf.fffffffffffffffp+1020, false, false,
15393+ false,
15394+ -INF, true, false,
15395+ -INF, true, false,
15396+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
15397+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
15398+ false,
15399+ -0x1p+1024, false, false,
15400+ -0x1p+1024, false, false,
15401+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false,
15402+ -0xf.fffffffffffffffffffffffffff8p+1020, false, false),
15403 TEST ("-11897314953572317650857593266280071307634446870965102374726"
15404 "748212332613581804836869044885954726120399151154374848393092"
15405 "588976673813086874262745246983415650060808716343660048975221"
15406@@ -11912,3529 +11912,3529 @@ static const struct test tests[] = {
15407 "904739824888992280918182139342882956797173699431524604470272"
15408 "90669964066815",
15409 false,
15410- -INF, true,
15411- -INF, true,
15412- -0xf.fffffp+124, true,
15413- -0xf.fffffp+124, true,
15414- false,
15415- -INF, true,
15416- -INF, true,
15417- -0xf.ffffffffffff8p+1020, true,
15418- -0xf.ffffffffffff8p+1020, true,
15419- false,
15420- -INF, true,
15421- -INF, true,
15422- -0xf.fffffffffffffffp+16380, false,
15423- -0xf.fffffffffffffffp+16380, false,
15424- false,
15425- -INF, true,
15426- -INF, true,
15427- -0xf.fffffffffffffffp+16380, false,
15428- -0xf.fffffffffffffffp+16380, false,
15429- false,
15430- -INF, true,
15431- -INF, true,
15432- -0xf.fffffffffffffffffffffffffcp+1020, true,
15433- -0xf.fffffffffffffffffffffffffcp+1020, true,
15434- false,
15435- -INF, true,
15436- -INF, true,
15437- -0xf.fffffffffffffffffffffffffff8p+16380, false,
15438- -0xf.fffffffffffffffffffffffffff8p+16380, false),
15439+ -INF, true, false,
15440+ -INF, true, false,
15441+ -0xf.fffffp+124, true, false,
15442+ -0xf.fffffp+124, true, false,
15443+ false,
15444+ -INF, true, false,
15445+ -INF, true, false,
15446+ -0xf.ffffffffffff8p+1020, true, false,
15447+ -0xf.ffffffffffff8p+1020, true, false,
15448+ false,
15449+ -INF, true, false,
15450+ -INF, true, false,
15451+ -0xf.fffffffffffffffp+16380, false, false,
15452+ -0xf.fffffffffffffffp+16380, false, false,
15453+ false,
15454+ -INF, true, false,
15455+ -INF, true, false,
15456+ -0xf.fffffffffffffffp+16380, false, false,
15457+ -0xf.fffffffffffffffp+16380, false, false,
15458+ false,
15459+ -INF, true, false,
15460+ -INF, true, false,
15461+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
15462+ -0xf.fffffffffffffffffffffffffcp+1020, true, false,
15463+ false,
15464+ -INF, true, false,
15465+ -INF, true, false,
15466+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false,
15467+ -0xf.fffffffffffffffffffffffffff8p+16380, false, false),
15468 TEST ("+0x.80000000000000000000000000000001p1025",
15469 false,
15470- 0xf.fffffp+124, true,
15471- INF, true,
15472- 0xf.fffffp+124, true,
15473- INF, true,
15474- false,
15475- 0xf.ffffffffffff8p+1020, true,
15476- INF, true,
15477- 0xf.ffffffffffff8p+1020, true,
15478- INF, true,
15479- false,
15480- 0x1p+1024, false,
15481- 0x1p+1024, false,
15482- 0x1p+1024, false,
15483- 0x1.0000000000000002p+1024, false,
15484- false,
15485- 0x1p+1024, false,
15486- 0x1p+1024, false,
15487- 0x1p+1024, false,
15488- 0x1.0000000000000002p+1024, false,
15489- false,
15490- 0xf.fffffffffffffffffffffffffcp+1020, true,
15491- INF, true,
15492- 0xf.fffffffffffffffffffffffffcp+1020, true,
15493- INF, true,
15494- false,
15495- 0x1p+1024, false,
15496- 0x1p+1024, false,
15497- 0x1p+1024, false,
15498- 0x1.0000000000000000000000000001p+1024, false),
15499+ 0xf.fffffp+124, true, false,
15500+ INF, true, false,
15501+ 0xf.fffffp+124, true, false,
15502+ INF, true, false,
15503+ false,
15504+ 0xf.ffffffffffff8p+1020, true, false,
15505+ INF, true, false,
15506+ 0xf.ffffffffffff8p+1020, true, false,
15507+ INF, true, false,
15508+ false,
15509+ 0x1p+1024, false, false,
15510+ 0x1p+1024, false, false,
15511+ 0x1p+1024, false, false,
15512+ 0x1.0000000000000002p+1024, false, false,
15513+ false,
15514+ 0x1p+1024, false, false,
15515+ 0x1p+1024, false, false,
15516+ 0x1p+1024, false, false,
15517+ 0x1.0000000000000002p+1024, false, false,
15518+ false,
15519+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
15520+ INF, true, false,
15521+ 0xf.fffffffffffffffffffffffffcp+1020, true, false,
15522+ INF, true, false,
15523+ false,
15524+ 0x1p+1024, false, false,
15525+ 0x1p+1024, false, false,
15526+ 0x1p+1024, false, false,
15527+ 0x1.0000000000000000000000000001p+1024, false, false),
15528 TEST ("1.5",
15529 true,
15530- 0x1.8p+0, false,
15531- 0x1.8p+0, false,
15532- 0x1.8p+0, false,
15533- 0x1.8p+0, false,
15534- true,
15535- 0x1.8p+0, false,
15536- 0x1.8p+0, false,
15537- 0x1.8p+0, false,
15538- 0x1.8p+0, false,
15539- true,
15540- 0x1.8p+0, false,
15541- 0x1.8p+0, false,
15542- 0x1.8p+0, false,
15543- 0x1.8p+0, false,
15544- true,
15545- 0x1.8p+0, false,
15546- 0x1.8p+0, false,
15547- 0x1.8p+0, false,
15548- 0x1.8p+0, false,
15549- true,
15550- 0x1.8p+0, false,
15551- 0x1.8p+0, false,
15552- 0x1.8p+0, false,
15553- 0x1.8p+0, false,
15554- true,
15555- 0x1.8p+0, false,
15556- 0x1.8p+0, false,
15557- 0x1.8p+0, false,
15558- 0x1.8p+0, false),
15559+ 0x1.8p+0, false, false,
15560+ 0x1.8p+0, false, false,
15561+ 0x1.8p+0, false, false,
15562+ 0x1.8p+0, false, false,
15563+ true,
15564+ 0x1.8p+0, false, false,
15565+ 0x1.8p+0, false, false,
15566+ 0x1.8p+0, false, false,
15567+ 0x1.8p+0, false, false,
15568+ true,
15569+ 0x1.8p+0, false, false,
15570+ 0x1.8p+0, false, false,
15571+ 0x1.8p+0, false, false,
15572+ 0x1.8p+0, false, false,
15573+ true,
15574+ 0x1.8p+0, false, false,
15575+ 0x1.8p+0, false, false,
15576+ 0x1.8p+0, false, false,
15577+ 0x1.8p+0, false, false,
15578+ true,
15579+ 0x1.8p+0, false, false,
15580+ 0x1.8p+0, false, false,
15581+ 0x1.8p+0, false, false,
15582+ 0x1.8p+0, false, false,
15583+ true,
15584+ 0x1.8p+0, false, false,
15585+ 0x1.8p+0, false, false,
15586+ 0x1.8p+0, false, false,
15587+ 0x1.8p+0, false, false),
15588 TEST ("1.25",
15589 true,
15590- 0x1.4p+0, false,
15591- 0x1.4p+0, false,
15592- 0x1.4p+0, false,
15593- 0x1.4p+0, false,
15594- true,
15595- 0x1.4p+0, false,
15596- 0x1.4p+0, false,
15597- 0x1.4p+0, false,
15598- 0x1.4p+0, false,
15599- true,
15600- 0x1.4p+0, false,
15601- 0x1.4p+0, false,
15602- 0x1.4p+0, false,
15603- 0x1.4p+0, false,
15604- true,
15605- 0x1.4p+0, false,
15606- 0x1.4p+0, false,
15607- 0x1.4p+0, false,
15608- 0x1.4p+0, false,
15609- true,
15610- 0x1.4p+0, false,
15611- 0x1.4p+0, false,
15612- 0x1.4p+0, false,
15613- 0x1.4p+0, false,
15614- true,
15615- 0x1.4p+0, false,
15616- 0x1.4p+0, false,
15617- 0x1.4p+0, false,
15618- 0x1.4p+0, false),
15619+ 0x1.4p+0, false, false,
15620+ 0x1.4p+0, false, false,
15621+ 0x1.4p+0, false, false,
15622+ 0x1.4p+0, false, false,
15623+ true,
15624+ 0x1.4p+0, false, false,
15625+ 0x1.4p+0, false, false,
15626+ 0x1.4p+0, false, false,
15627+ 0x1.4p+0, false, false,
15628+ true,
15629+ 0x1.4p+0, false, false,
15630+ 0x1.4p+0, false, false,
15631+ 0x1.4p+0, false, false,
15632+ 0x1.4p+0, false, false,
15633+ true,
15634+ 0x1.4p+0, false, false,
15635+ 0x1.4p+0, false, false,
15636+ 0x1.4p+0, false, false,
15637+ 0x1.4p+0, false, false,
15638+ true,
15639+ 0x1.4p+0, false, false,
15640+ 0x1.4p+0, false, false,
15641+ 0x1.4p+0, false, false,
15642+ 0x1.4p+0, false, false,
15643+ true,
15644+ 0x1.4p+0, false, false,
15645+ 0x1.4p+0, false, false,
15646+ 0x1.4p+0, false, false,
15647+ 0x1.4p+0, false, false),
15648 TEST ("1.125",
15649 true,
15650- 0x1.2p+0, false,
15651- 0x1.2p+0, false,
15652- 0x1.2p+0, false,
15653- 0x1.2p+0, false,
15654- true,
15655- 0x1.2p+0, false,
15656- 0x1.2p+0, false,
15657- 0x1.2p+0, false,
15658- 0x1.2p+0, false,
15659- true,
15660- 0x1.2p+0, false,
15661- 0x1.2p+0, false,
15662- 0x1.2p+0, false,
15663- 0x1.2p+0, false,
15664- true,
15665- 0x1.2p+0, false,
15666- 0x1.2p+0, false,
15667- 0x1.2p+0, false,
15668- 0x1.2p+0, false,
15669- true,
15670- 0x1.2p+0, false,
15671- 0x1.2p+0, false,
15672- 0x1.2p+0, false,
15673- 0x1.2p+0, false,
15674- true,
15675- 0x1.2p+0, false,
15676- 0x1.2p+0, false,
15677- 0x1.2p+0, false,
15678- 0x1.2p+0, false),
15679+ 0x1.2p+0, false, false,
15680+ 0x1.2p+0, false, false,
15681+ 0x1.2p+0, false, false,
15682+ 0x1.2p+0, false, false,
15683+ true,
15684+ 0x1.2p+0, false, false,
15685+ 0x1.2p+0, false, false,
15686+ 0x1.2p+0, false, false,
15687+ 0x1.2p+0, false, false,
15688+ true,
15689+ 0x1.2p+0, false, false,
15690+ 0x1.2p+0, false, false,
15691+ 0x1.2p+0, false, false,
15692+ 0x1.2p+0, false, false,
15693+ true,
15694+ 0x1.2p+0, false, false,
15695+ 0x1.2p+0, false, false,
15696+ 0x1.2p+0, false, false,
15697+ 0x1.2p+0, false, false,
15698+ true,
15699+ 0x1.2p+0, false, false,
15700+ 0x1.2p+0, false, false,
15701+ 0x1.2p+0, false, false,
15702+ 0x1.2p+0, false, false,
15703+ true,
15704+ 0x1.2p+0, false, false,
15705+ 0x1.2p+0, false, false,
15706+ 0x1.2p+0, false, false,
15707+ 0x1.2p+0, false, false),
15708 TEST ("1.0625",
15709 true,
15710- 0x1.1p+0, false,
15711- 0x1.1p+0, false,
15712- 0x1.1p+0, false,
15713- 0x1.1p+0, false,
15714- true,
15715- 0x1.1p+0, false,
15716- 0x1.1p+0, false,
15717- 0x1.1p+0, false,
15718- 0x1.1p+0, false,
15719- true,
15720- 0x1.1p+0, false,
15721- 0x1.1p+0, false,
15722- 0x1.1p+0, false,
15723- 0x1.1p+0, false,
15724- true,
15725- 0x1.1p+0, false,
15726- 0x1.1p+0, false,
15727- 0x1.1p+0, false,
15728- 0x1.1p+0, false,
15729- true,
15730- 0x1.1p+0, false,
15731- 0x1.1p+0, false,
15732- 0x1.1p+0, false,
15733- 0x1.1p+0, false,
15734- true,
15735- 0x1.1p+0, false,
15736- 0x1.1p+0, false,
15737- 0x1.1p+0, false,
15738- 0x1.1p+0, false),
15739+ 0x1.1p+0, false, false,
15740+ 0x1.1p+0, false, false,
15741+ 0x1.1p+0, false, false,
15742+ 0x1.1p+0, false, false,
15743+ true,
15744+ 0x1.1p+0, false, false,
15745+ 0x1.1p+0, false, false,
15746+ 0x1.1p+0, false, false,
15747+ 0x1.1p+0, false, false,
15748+ true,
15749+ 0x1.1p+0, false, false,
15750+ 0x1.1p+0, false, false,
15751+ 0x1.1p+0, false, false,
15752+ 0x1.1p+0, false, false,
15753+ true,
15754+ 0x1.1p+0, false, false,
15755+ 0x1.1p+0, false, false,
15756+ 0x1.1p+0, false, false,
15757+ 0x1.1p+0, false, false,
15758+ true,
15759+ 0x1.1p+0, false, false,
15760+ 0x1.1p+0, false, false,
15761+ 0x1.1p+0, false, false,
15762+ 0x1.1p+0, false, false,
15763+ true,
15764+ 0x1.1p+0, false, false,
15765+ 0x1.1p+0, false, false,
15766+ 0x1.1p+0, false, false,
15767+ 0x1.1p+0, false, false),
15768 TEST ("1.03125",
15769 true,
15770- 0x1.08p+0, false,
15771- 0x1.08p+0, false,
15772- 0x1.08p+0, false,
15773- 0x1.08p+0, false,
15774- true,
15775- 0x1.08p+0, false,
15776- 0x1.08p+0, false,
15777- 0x1.08p+0, false,
15778- 0x1.08p+0, false,
15779- true,
15780- 0x1.08p+0, false,
15781- 0x1.08p+0, false,
15782- 0x1.08p+0, false,
15783- 0x1.08p+0, false,
15784- true,
15785- 0x1.08p+0, false,
15786- 0x1.08p+0, false,
15787- 0x1.08p+0, false,
15788- 0x1.08p+0, false,
15789- true,
15790- 0x1.08p+0, false,
15791- 0x1.08p+0, false,
15792- 0x1.08p+0, false,
15793- 0x1.08p+0, false,
15794- true,
15795- 0x1.08p+0, false,
15796- 0x1.08p+0, false,
15797- 0x1.08p+0, false,
15798- 0x1.08p+0, false),
15799+ 0x1.08p+0, false, false,
15800+ 0x1.08p+0, false, false,
15801+ 0x1.08p+0, false, false,
15802+ 0x1.08p+0, false, false,
15803+ true,
15804+ 0x1.08p+0, false, false,
15805+ 0x1.08p+0, false, false,
15806+ 0x1.08p+0, false, false,
15807+ 0x1.08p+0, false, false,
15808+ true,
15809+ 0x1.08p+0, false, false,
15810+ 0x1.08p+0, false, false,
15811+ 0x1.08p+0, false, false,
15812+ 0x1.08p+0, false, false,
15813+ true,
15814+ 0x1.08p+0, false, false,
15815+ 0x1.08p+0, false, false,
15816+ 0x1.08p+0, false, false,
15817+ 0x1.08p+0, false, false,
15818+ true,
15819+ 0x1.08p+0, false, false,
15820+ 0x1.08p+0, false, false,
15821+ 0x1.08p+0, false, false,
15822+ 0x1.08p+0, false, false,
15823+ true,
15824+ 0x1.08p+0, false, false,
15825+ 0x1.08p+0, false, false,
15826+ 0x1.08p+0, false, false,
15827+ 0x1.08p+0, false, false),
15828 TEST ("1.015625",
15829 true,
15830- 0x1.04p+0, false,
15831- 0x1.04p+0, false,
15832- 0x1.04p+0, false,
15833- 0x1.04p+0, false,
15834- true,
15835- 0x1.04p+0, false,
15836- 0x1.04p+0, false,
15837- 0x1.04p+0, false,
15838- 0x1.04p+0, false,
15839- true,
15840- 0x1.04p+0, false,
15841- 0x1.04p+0, false,
15842- 0x1.04p+0, false,
15843- 0x1.04p+0, false,
15844- true,
15845- 0x1.04p+0, false,
15846- 0x1.04p+0, false,
15847- 0x1.04p+0, false,
15848- 0x1.04p+0, false,
15849- true,
15850- 0x1.04p+0, false,
15851- 0x1.04p+0, false,
15852- 0x1.04p+0, false,
15853- 0x1.04p+0, false,
15854- true,
15855- 0x1.04p+0, false,
15856- 0x1.04p+0, false,
15857- 0x1.04p+0, false,
15858- 0x1.04p+0, false),
15859+ 0x1.04p+0, false, false,
15860+ 0x1.04p+0, false, false,
15861+ 0x1.04p+0, false, false,
15862+ 0x1.04p+0, false, false,
15863+ true,
15864+ 0x1.04p+0, false, false,
15865+ 0x1.04p+0, false, false,
15866+ 0x1.04p+0, false, false,
15867+ 0x1.04p+0, false, false,
15868+ true,
15869+ 0x1.04p+0, false, false,
15870+ 0x1.04p+0, false, false,
15871+ 0x1.04p+0, false, false,
15872+ 0x1.04p+0, false, false,
15873+ true,
15874+ 0x1.04p+0, false, false,
15875+ 0x1.04p+0, false, false,
15876+ 0x1.04p+0, false, false,
15877+ 0x1.04p+0, false, false,
15878+ true,
15879+ 0x1.04p+0, false, false,
15880+ 0x1.04p+0, false, false,
15881+ 0x1.04p+0, false, false,
15882+ 0x1.04p+0, false, false,
15883+ true,
15884+ 0x1.04p+0, false, false,
15885+ 0x1.04p+0, false, false,
15886+ 0x1.04p+0, false, false,
15887+ 0x1.04p+0, false, false),
15888 TEST ("1.0078125",
15889 true,
15890- 0x1.02p+0, false,
15891- 0x1.02p+0, false,
15892- 0x1.02p+0, false,
15893- 0x1.02p+0, false,
15894- true,
15895- 0x1.02p+0, false,
15896- 0x1.02p+0, false,
15897- 0x1.02p+0, false,
15898- 0x1.02p+0, false,
15899- true,
15900- 0x1.02p+0, false,
15901- 0x1.02p+0, false,
15902- 0x1.02p+0, false,
15903- 0x1.02p+0, false,
15904- true,
15905- 0x1.02p+0, false,
15906- 0x1.02p+0, false,
15907- 0x1.02p+0, false,
15908- 0x1.02p+0, false,
15909- true,
15910- 0x1.02p+0, false,
15911- 0x1.02p+0, false,
15912- 0x1.02p+0, false,
15913- 0x1.02p+0, false,
15914- true,
15915- 0x1.02p+0, false,
15916- 0x1.02p+0, false,
15917- 0x1.02p+0, false,
15918- 0x1.02p+0, false),
15919+ 0x1.02p+0, false, false,
15920+ 0x1.02p+0, false, false,
15921+ 0x1.02p+0, false, false,
15922+ 0x1.02p+0, false, false,
15923+ true,
15924+ 0x1.02p+0, false, false,
15925+ 0x1.02p+0, false, false,
15926+ 0x1.02p+0, false, false,
15927+ 0x1.02p+0, false, false,
15928+ true,
15929+ 0x1.02p+0, false, false,
15930+ 0x1.02p+0, false, false,
15931+ 0x1.02p+0, false, false,
15932+ 0x1.02p+0, false, false,
15933+ true,
15934+ 0x1.02p+0, false, false,
15935+ 0x1.02p+0, false, false,
15936+ 0x1.02p+0, false, false,
15937+ 0x1.02p+0, false, false,
15938+ true,
15939+ 0x1.02p+0, false, false,
15940+ 0x1.02p+0, false, false,
15941+ 0x1.02p+0, false, false,
15942+ 0x1.02p+0, false, false,
15943+ true,
15944+ 0x1.02p+0, false, false,
15945+ 0x1.02p+0, false, false,
15946+ 0x1.02p+0, false, false,
15947+ 0x1.02p+0, false, false),
15948 TEST ("1.00390625",
15949 true,
15950- 0x1.01p+0, false,
15951- 0x1.01p+0, false,
15952- 0x1.01p+0, false,
15953- 0x1.01p+0, false,
15954- true,
15955- 0x1.01p+0, false,
15956- 0x1.01p+0, false,
15957- 0x1.01p+0, false,
15958- 0x1.01p+0, false,
15959- true,
15960- 0x1.01p+0, false,
15961- 0x1.01p+0, false,
15962- 0x1.01p+0, false,
15963- 0x1.01p+0, false,
15964- true,
15965- 0x1.01p+0, false,
15966- 0x1.01p+0, false,
15967- 0x1.01p+0, false,
15968- 0x1.01p+0, false,
15969- true,
15970- 0x1.01p+0, false,
15971- 0x1.01p+0, false,
15972- 0x1.01p+0, false,
15973- 0x1.01p+0, false,
15974- true,
15975- 0x1.01p+0, false,
15976- 0x1.01p+0, false,
15977- 0x1.01p+0, false,
15978- 0x1.01p+0, false),
15979+ 0x1.01p+0, false, false,
15980+ 0x1.01p+0, false, false,
15981+ 0x1.01p+0, false, false,
15982+ 0x1.01p+0, false, false,
15983+ true,
15984+ 0x1.01p+0, false, false,
15985+ 0x1.01p+0, false, false,
15986+ 0x1.01p+0, false, false,
15987+ 0x1.01p+0, false, false,
15988+ true,
15989+ 0x1.01p+0, false, false,
15990+ 0x1.01p+0, false, false,
15991+ 0x1.01p+0, false, false,
15992+ 0x1.01p+0, false, false,
15993+ true,
15994+ 0x1.01p+0, false, false,
15995+ 0x1.01p+0, false, false,
15996+ 0x1.01p+0, false, false,
15997+ 0x1.01p+0, false, false,
15998+ true,
15999+ 0x1.01p+0, false, false,
16000+ 0x1.01p+0, false, false,
16001+ 0x1.01p+0, false, false,
16002+ 0x1.01p+0, false, false,
16003+ true,
16004+ 0x1.01p+0, false, false,
16005+ 0x1.01p+0, false, false,
16006+ 0x1.01p+0, false, false,
16007+ 0x1.01p+0, false, false),
16008 TEST ("1.001953125",
16009 true,
16010- 0x1.008p+0, false,
16011- 0x1.008p+0, false,
16012- 0x1.008p+0, false,
16013- 0x1.008p+0, false,
16014- true,
16015- 0x1.008p+0, false,
16016- 0x1.008p+0, false,
16017- 0x1.008p+0, false,
16018- 0x1.008p+0, false,
16019- true,
16020- 0x1.008p+0, false,
16021- 0x1.008p+0, false,
16022- 0x1.008p+0, false,
16023- 0x1.008p+0, false,
16024- true,
16025- 0x1.008p+0, false,
16026- 0x1.008p+0, false,
16027- 0x1.008p+0, false,
16028- 0x1.008p+0, false,
16029- true,
16030- 0x1.008p+0, false,
16031- 0x1.008p+0, false,
16032- 0x1.008p+0, false,
16033- 0x1.008p+0, false,
16034- true,
16035- 0x1.008p+0, false,
16036- 0x1.008p+0, false,
16037- 0x1.008p+0, false,
16038- 0x1.008p+0, false),
16039+ 0x1.008p+0, false, false,
16040+ 0x1.008p+0, false, false,
16041+ 0x1.008p+0, false, false,
16042+ 0x1.008p+0, false, false,
16043+ true,
16044+ 0x1.008p+0, false, false,
16045+ 0x1.008p+0, false, false,
16046+ 0x1.008p+0, false, false,
16047+ 0x1.008p+0, false, false,
16048+ true,
16049+ 0x1.008p+0, false, false,
16050+ 0x1.008p+0, false, false,
16051+ 0x1.008p+0, false, false,
16052+ 0x1.008p+0, false, false,
16053+ true,
16054+ 0x1.008p+0, false, false,
16055+ 0x1.008p+0, false, false,
16056+ 0x1.008p+0, false, false,
16057+ 0x1.008p+0, false, false,
16058+ true,
16059+ 0x1.008p+0, false, false,
16060+ 0x1.008p+0, false, false,
16061+ 0x1.008p+0, false, false,
16062+ 0x1.008p+0, false, false,
16063+ true,
16064+ 0x1.008p+0, false, false,
16065+ 0x1.008p+0, false, false,
16066+ 0x1.008p+0, false, false,
16067+ 0x1.008p+0, false, false),
16068 TEST ("1.0009765625",
16069 true,
16070- 0x1.004p+0, false,
16071- 0x1.004p+0, false,
16072- 0x1.004p+0, false,
16073- 0x1.004p+0, false,
16074- true,
16075- 0x1.004p+0, false,
16076- 0x1.004p+0, false,
16077- 0x1.004p+0, false,
16078- 0x1.004p+0, false,
16079- true,
16080- 0x1.004p+0, false,
16081- 0x1.004p+0, false,
16082- 0x1.004p+0, false,
16083- 0x1.004p+0, false,
16084- true,
16085- 0x1.004p+0, false,
16086- 0x1.004p+0, false,
16087- 0x1.004p+0, false,
16088- 0x1.004p+0, false,
16089- true,
16090- 0x1.004p+0, false,
16091- 0x1.004p+0, false,
16092- 0x1.004p+0, false,
16093- 0x1.004p+0, false,
16094- true,
16095- 0x1.004p+0, false,
16096- 0x1.004p+0, false,
16097- 0x1.004p+0, false,
16098- 0x1.004p+0, false),
16099+ 0x1.004p+0, false, false,
16100+ 0x1.004p+0, false, false,
16101+ 0x1.004p+0, false, false,
16102+ 0x1.004p+0, false, false,
16103+ true,
16104+ 0x1.004p+0, false, false,
16105+ 0x1.004p+0, false, false,
16106+ 0x1.004p+0, false, false,
16107+ 0x1.004p+0, false, false,
16108+ true,
16109+ 0x1.004p+0, false, false,
16110+ 0x1.004p+0, false, false,
16111+ 0x1.004p+0, false, false,
16112+ 0x1.004p+0, false, false,
16113+ true,
16114+ 0x1.004p+0, false, false,
16115+ 0x1.004p+0, false, false,
16116+ 0x1.004p+0, false, false,
16117+ 0x1.004p+0, false, false,
16118+ true,
16119+ 0x1.004p+0, false, false,
16120+ 0x1.004p+0, false, false,
16121+ 0x1.004p+0, false, false,
16122+ 0x1.004p+0, false, false,
16123+ true,
16124+ 0x1.004p+0, false, false,
16125+ 0x1.004p+0, false, false,
16126+ 0x1.004p+0, false, false,
16127+ 0x1.004p+0, false, false),
16128 TEST ("1.00048828125",
16129 true,
16130- 0x1.002p+0, false,
16131- 0x1.002p+0, false,
16132- 0x1.002p+0, false,
16133- 0x1.002p+0, false,
16134- true,
16135- 0x1.002p+0, false,
16136- 0x1.002p+0, false,
16137- 0x1.002p+0, false,
16138- 0x1.002p+0, false,
16139- true,
16140- 0x1.002p+0, false,
16141- 0x1.002p+0, false,
16142- 0x1.002p+0, false,
16143- 0x1.002p+0, false,
16144- true,
16145- 0x1.002p+0, false,
16146- 0x1.002p+0, false,
16147- 0x1.002p+0, false,
16148- 0x1.002p+0, false,
16149- true,
16150- 0x1.002p+0, false,
16151- 0x1.002p+0, false,
16152- 0x1.002p+0, false,
16153- 0x1.002p+0, false,
16154- true,
16155- 0x1.002p+0, false,
16156- 0x1.002p+0, false,
16157- 0x1.002p+0, false,
16158- 0x1.002p+0, false),
16159+ 0x1.002p+0, false, false,
16160+ 0x1.002p+0, false, false,
16161+ 0x1.002p+0, false, false,
16162+ 0x1.002p+0, false, false,
16163+ true,
16164+ 0x1.002p+0, false, false,
16165+ 0x1.002p+0, false, false,
16166+ 0x1.002p+0, false, false,
16167+ 0x1.002p+0, false, false,
16168+ true,
16169+ 0x1.002p+0, false, false,
16170+ 0x1.002p+0, false, false,
16171+ 0x1.002p+0, false, false,
16172+ 0x1.002p+0, false, false,
16173+ true,
16174+ 0x1.002p+0, false, false,
16175+ 0x1.002p+0, false, false,
16176+ 0x1.002p+0, false, false,
16177+ 0x1.002p+0, false, false,
16178+ true,
16179+ 0x1.002p+0, false, false,
16180+ 0x1.002p+0, false, false,
16181+ 0x1.002p+0, false, false,
16182+ 0x1.002p+0, false, false,
16183+ true,
16184+ 0x1.002p+0, false, false,
16185+ 0x1.002p+0, false, false,
16186+ 0x1.002p+0, false, false,
16187+ 0x1.002p+0, false, false),
16188 TEST ("1.000244140625",
16189 true,
16190- 0x1.001p+0, false,
16191- 0x1.001p+0, false,
16192- 0x1.001p+0, false,
16193- 0x1.001p+0, false,
16194- true,
16195- 0x1.001p+0, false,
16196- 0x1.001p+0, false,
16197- 0x1.001p+0, false,
16198- 0x1.001p+0, false,
16199- true,
16200- 0x1.001p+0, false,
16201- 0x1.001p+0, false,
16202- 0x1.001p+0, false,
16203- 0x1.001p+0, false,
16204- true,
16205- 0x1.001p+0, false,
16206- 0x1.001p+0, false,
16207- 0x1.001p+0, false,
16208- 0x1.001p+0, false,
16209- true,
16210- 0x1.001p+0, false,
16211- 0x1.001p+0, false,
16212- 0x1.001p+0, false,
16213- 0x1.001p+0, false,
16214- true,
16215- 0x1.001p+0, false,
16216- 0x1.001p+0, false,
16217- 0x1.001p+0, false,
16218- 0x1.001p+0, false),
16219+ 0x1.001p+0, false, false,
16220+ 0x1.001p+0, false, false,
16221+ 0x1.001p+0, false, false,
16222+ 0x1.001p+0, false, false,
16223+ true,
16224+ 0x1.001p+0, false, false,
16225+ 0x1.001p+0, false, false,
16226+ 0x1.001p+0, false, false,
16227+ 0x1.001p+0, false, false,
16228+ true,
16229+ 0x1.001p+0, false, false,
16230+ 0x1.001p+0, false, false,
16231+ 0x1.001p+0, false, false,
16232+ 0x1.001p+0, false, false,
16233+ true,
16234+ 0x1.001p+0, false, false,
16235+ 0x1.001p+0, false, false,
16236+ 0x1.001p+0, false, false,
16237+ 0x1.001p+0, false, false,
16238+ true,
16239+ 0x1.001p+0, false, false,
16240+ 0x1.001p+0, false, false,
16241+ 0x1.001p+0, false, false,
16242+ 0x1.001p+0, false, false,
16243+ true,
16244+ 0x1.001p+0, false, false,
16245+ 0x1.001p+0, false, false,
16246+ 0x1.001p+0, false, false,
16247+ 0x1.001p+0, false, false),
16248 TEST ("1.0001220703125",
16249 true,
16250- 0x1.0008p+0, false,
16251- 0x1.0008p+0, false,
16252- 0x1.0008p+0, false,
16253- 0x1.0008p+0, false,
16254- true,
16255- 0x1.0008p+0, false,
16256- 0x1.0008p+0, false,
16257- 0x1.0008p+0, false,
16258- 0x1.0008p+0, false,
16259- true,
16260- 0x1.0008p+0, false,
16261- 0x1.0008p+0, false,
16262- 0x1.0008p+0, false,
16263- 0x1.0008p+0, false,
16264- true,
16265- 0x1.0008p+0, false,
16266- 0x1.0008p+0, false,
16267- 0x1.0008p+0, false,
16268- 0x1.0008p+0, false,
16269- true,
16270- 0x1.0008p+0, false,
16271- 0x1.0008p+0, false,
16272- 0x1.0008p+0, false,
16273- 0x1.0008p+0, false,
16274- true,
16275- 0x1.0008p+0, false,
16276- 0x1.0008p+0, false,
16277- 0x1.0008p+0, false,
16278- 0x1.0008p+0, false),
16279+ 0x1.0008p+0, false, false,
16280+ 0x1.0008p+0, false, false,
16281+ 0x1.0008p+0, false, false,
16282+ 0x1.0008p+0, false, false,
16283+ true,
16284+ 0x1.0008p+0, false, false,
16285+ 0x1.0008p+0, false, false,
16286+ 0x1.0008p+0, false, false,
16287+ 0x1.0008p+0, false, false,
16288+ true,
16289+ 0x1.0008p+0, false, false,
16290+ 0x1.0008p+0, false, false,
16291+ 0x1.0008p+0, false, false,
16292+ 0x1.0008p+0, false, false,
16293+ true,
16294+ 0x1.0008p+0, false, false,
16295+ 0x1.0008p+0, false, false,
16296+ 0x1.0008p+0, false, false,
16297+ 0x1.0008p+0, false, false,
16298+ true,
16299+ 0x1.0008p+0, false, false,
16300+ 0x1.0008p+0, false, false,
16301+ 0x1.0008p+0, false, false,
16302+ 0x1.0008p+0, false, false,
16303+ true,
16304+ 0x1.0008p+0, false, false,
16305+ 0x1.0008p+0, false, false,
16306+ 0x1.0008p+0, false, false,
16307+ 0x1.0008p+0, false, false),
16308 TEST ("1.00006103515625",
16309 true,
16310- 0x1.0004p+0, false,
16311- 0x1.0004p+0, false,
16312- 0x1.0004p+0, false,
16313- 0x1.0004p+0, false,
16314- true,
16315- 0x1.0004p+0, false,
16316- 0x1.0004p+0, false,
16317- 0x1.0004p+0, false,
16318- 0x1.0004p+0, false,
16319- true,
16320- 0x1.0004p+0, false,
16321- 0x1.0004p+0, false,
16322- 0x1.0004p+0, false,
16323- 0x1.0004p+0, false,
16324- true,
16325- 0x1.0004p+0, false,
16326- 0x1.0004p+0, false,
16327- 0x1.0004p+0, false,
16328- 0x1.0004p+0, false,
16329- true,
16330- 0x1.0004p+0, false,
16331- 0x1.0004p+0, false,
16332- 0x1.0004p+0, false,
16333- 0x1.0004p+0, false,
16334- true,
16335- 0x1.0004p+0, false,
16336- 0x1.0004p+0, false,
16337- 0x1.0004p+0, false,
16338- 0x1.0004p+0, false),
16339+ 0x1.0004p+0, false, false,
16340+ 0x1.0004p+0, false, false,
16341+ 0x1.0004p+0, false, false,
16342+ 0x1.0004p+0, false, false,
16343+ true,
16344+ 0x1.0004p+0, false, false,
16345+ 0x1.0004p+0, false, false,
16346+ 0x1.0004p+0, false, false,
16347+ 0x1.0004p+0, false, false,
16348+ true,
16349+ 0x1.0004p+0, false, false,
16350+ 0x1.0004p+0, false, false,
16351+ 0x1.0004p+0, false, false,
16352+ 0x1.0004p+0, false, false,
16353+ true,
16354+ 0x1.0004p+0, false, false,
16355+ 0x1.0004p+0, false, false,
16356+ 0x1.0004p+0, false, false,
16357+ 0x1.0004p+0, false, false,
16358+ true,
16359+ 0x1.0004p+0, false, false,
16360+ 0x1.0004p+0, false, false,
16361+ 0x1.0004p+0, false, false,
16362+ 0x1.0004p+0, false, false,
16363+ true,
16364+ 0x1.0004p+0, false, false,
16365+ 0x1.0004p+0, false, false,
16366+ 0x1.0004p+0, false, false,
16367+ 0x1.0004p+0, false, false),
16368 TEST ("1.000030517578125",
16369 true,
16370- 0x1.0002p+0, false,
16371- 0x1.0002p+0, false,
16372- 0x1.0002p+0, false,
16373- 0x1.0002p+0, false,
16374- true,
16375- 0x1.0002p+0, false,
16376- 0x1.0002p+0, false,
16377- 0x1.0002p+0, false,
16378- 0x1.0002p+0, false,
16379- true,
16380- 0x1.0002p+0, false,
16381- 0x1.0002p+0, false,
16382- 0x1.0002p+0, false,
16383- 0x1.0002p+0, false,
16384- true,
16385- 0x1.0002p+0, false,
16386- 0x1.0002p+0, false,
16387- 0x1.0002p+0, false,
16388- 0x1.0002p+0, false,
16389- true,
16390- 0x1.0002p+0, false,
16391- 0x1.0002p+0, false,
16392- 0x1.0002p+0, false,
16393- 0x1.0002p+0, false,
16394- true,
16395- 0x1.0002p+0, false,
16396- 0x1.0002p+0, false,
16397- 0x1.0002p+0, false,
16398- 0x1.0002p+0, false),
16399+ 0x1.0002p+0, false, false,
16400+ 0x1.0002p+0, false, false,
16401+ 0x1.0002p+0, false, false,
16402+ 0x1.0002p+0, false, false,
16403+ true,
16404+ 0x1.0002p+0, false, false,
16405+ 0x1.0002p+0, false, false,
16406+ 0x1.0002p+0, false, false,
16407+ 0x1.0002p+0, false, false,
16408+ true,
16409+ 0x1.0002p+0, false, false,
16410+ 0x1.0002p+0, false, false,
16411+ 0x1.0002p+0, false, false,
16412+ 0x1.0002p+0, false, false,
16413+ true,
16414+ 0x1.0002p+0, false, false,
16415+ 0x1.0002p+0, false, false,
16416+ 0x1.0002p+0, false, false,
16417+ 0x1.0002p+0, false, false,
16418+ true,
16419+ 0x1.0002p+0, false, false,
16420+ 0x1.0002p+0, false, false,
16421+ 0x1.0002p+0, false, false,
16422+ 0x1.0002p+0, false, false,
16423+ true,
16424+ 0x1.0002p+0, false, false,
16425+ 0x1.0002p+0, false, false,
16426+ 0x1.0002p+0, false, false,
16427+ 0x1.0002p+0, false, false),
16428 TEST ("1.0000152587890625",
16429 true,
16430- 0x1.0001p+0, false,
16431- 0x1.0001p+0, false,
16432- 0x1.0001p+0, false,
16433- 0x1.0001p+0, false,
16434- true,
16435- 0x1.0001p+0, false,
16436- 0x1.0001p+0, false,
16437- 0x1.0001p+0, false,
16438- 0x1.0001p+0, false,
16439- true,
16440- 0x1.0001p+0, false,
16441- 0x1.0001p+0, false,
16442- 0x1.0001p+0, false,
16443- 0x1.0001p+0, false,
16444- true,
16445- 0x1.0001p+0, false,
16446- 0x1.0001p+0, false,
16447- 0x1.0001p+0, false,
16448- 0x1.0001p+0, false,
16449- true,
16450- 0x1.0001p+0, false,
16451- 0x1.0001p+0, false,
16452- 0x1.0001p+0, false,
16453- 0x1.0001p+0, false,
16454- true,
16455- 0x1.0001p+0, false,
16456- 0x1.0001p+0, false,
16457- 0x1.0001p+0, false,
16458- 0x1.0001p+0, false),
16459+ 0x1.0001p+0, false, false,
16460+ 0x1.0001p+0, false, false,
16461+ 0x1.0001p+0, false, false,
16462+ 0x1.0001p+0, false, false,
16463+ true,
16464+ 0x1.0001p+0, false, false,
16465+ 0x1.0001p+0, false, false,
16466+ 0x1.0001p+0, false, false,
16467+ 0x1.0001p+0, false, false,
16468+ true,
16469+ 0x1.0001p+0, false, false,
16470+ 0x1.0001p+0, false, false,
16471+ 0x1.0001p+0, false, false,
16472+ 0x1.0001p+0, false, false,
16473+ true,
16474+ 0x1.0001p+0, false, false,
16475+ 0x1.0001p+0, false, false,
16476+ 0x1.0001p+0, false, false,
16477+ 0x1.0001p+0, false, false,
16478+ true,
16479+ 0x1.0001p+0, false, false,
16480+ 0x1.0001p+0, false, false,
16481+ 0x1.0001p+0, false, false,
16482+ 0x1.0001p+0, false, false,
16483+ true,
16484+ 0x1.0001p+0, false, false,
16485+ 0x1.0001p+0, false, false,
16486+ 0x1.0001p+0, false, false,
16487+ 0x1.0001p+0, false, false),
16488 TEST ("1.00000762939453125",
16489 true,
16490- 0x1.00008p+0, false,
16491- 0x1.00008p+0, false,
16492- 0x1.00008p+0, false,
16493- 0x1.00008p+0, false,
16494- true,
16495- 0x1.00008p+0, false,
16496- 0x1.00008p+0, false,
16497- 0x1.00008p+0, false,
16498- 0x1.00008p+0, false,
16499- true,
16500- 0x1.00008p+0, false,
16501- 0x1.00008p+0, false,
16502- 0x1.00008p+0, false,
16503- 0x1.00008p+0, false,
16504- true,
16505- 0x1.00008p+0, false,
16506- 0x1.00008p+0, false,
16507- 0x1.00008p+0, false,
16508- 0x1.00008p+0, false,
16509- true,
16510- 0x1.00008p+0, false,
16511- 0x1.00008p+0, false,
16512- 0x1.00008p+0, false,
16513- 0x1.00008p+0, false,
16514- true,
16515- 0x1.00008p+0, false,
16516- 0x1.00008p+0, false,
16517- 0x1.00008p+0, false,
16518- 0x1.00008p+0, false),
16519+ 0x1.00008p+0, false, false,
16520+ 0x1.00008p+0, false, false,
16521+ 0x1.00008p+0, false, false,
16522+ 0x1.00008p+0, false, false,
16523+ true,
16524+ 0x1.00008p+0, false, false,
16525+ 0x1.00008p+0, false, false,
16526+ 0x1.00008p+0, false, false,
16527+ 0x1.00008p+0, false, false,
16528+ true,
16529+ 0x1.00008p+0, false, false,
16530+ 0x1.00008p+0, false, false,
16531+ 0x1.00008p+0, false, false,
16532+ 0x1.00008p+0, false, false,
16533+ true,
16534+ 0x1.00008p+0, false, false,
16535+ 0x1.00008p+0, false, false,
16536+ 0x1.00008p+0, false, false,
16537+ 0x1.00008p+0, false, false,
16538+ true,
16539+ 0x1.00008p+0, false, false,
16540+ 0x1.00008p+0, false, false,
16541+ 0x1.00008p+0, false, false,
16542+ 0x1.00008p+0, false, false,
16543+ true,
16544+ 0x1.00008p+0, false, false,
16545+ 0x1.00008p+0, false, false,
16546+ 0x1.00008p+0, false, false,
16547+ 0x1.00008p+0, false, false),
16548 TEST ("1.000003814697265625",
16549 true,
16550- 0x1.00004p+0, false,
16551- 0x1.00004p+0, false,
16552- 0x1.00004p+0, false,
16553- 0x1.00004p+0, false,
16554- true,
16555- 0x1.00004p+0, false,
16556- 0x1.00004p+0, false,
16557- 0x1.00004p+0, false,
16558- 0x1.00004p+0, false,
16559- true,
16560- 0x1.00004p+0, false,
16561- 0x1.00004p+0, false,
16562- 0x1.00004p+0, false,
16563- 0x1.00004p+0, false,
16564- true,
16565- 0x1.00004p+0, false,
16566- 0x1.00004p+0, false,
16567- 0x1.00004p+0, false,
16568- 0x1.00004p+0, false,
16569- true,
16570- 0x1.00004p+0, false,
16571- 0x1.00004p+0, false,
16572- 0x1.00004p+0, false,
16573- 0x1.00004p+0, false,
16574- true,
16575- 0x1.00004p+0, false,
16576- 0x1.00004p+0, false,
16577- 0x1.00004p+0, false,
16578- 0x1.00004p+0, false),
16579+ 0x1.00004p+0, false, false,
16580+ 0x1.00004p+0, false, false,
16581+ 0x1.00004p+0, false, false,
16582+ 0x1.00004p+0, false, false,
16583+ true,
16584+ 0x1.00004p+0, false, false,
16585+ 0x1.00004p+0, false, false,
16586+ 0x1.00004p+0, false, false,
16587+ 0x1.00004p+0, false, false,
16588+ true,
16589+ 0x1.00004p+0, false, false,
16590+ 0x1.00004p+0, false, false,
16591+ 0x1.00004p+0, false, false,
16592+ 0x1.00004p+0, false, false,
16593+ true,
16594+ 0x1.00004p+0, false, false,
16595+ 0x1.00004p+0, false, false,
16596+ 0x1.00004p+0, false, false,
16597+ 0x1.00004p+0, false, false,
16598+ true,
16599+ 0x1.00004p+0, false, false,
16600+ 0x1.00004p+0, false, false,
16601+ 0x1.00004p+0, false, false,
16602+ 0x1.00004p+0, false, false,
16603+ true,
16604+ 0x1.00004p+0, false, false,
16605+ 0x1.00004p+0, false, false,
16606+ 0x1.00004p+0, false, false,
16607+ 0x1.00004p+0, false, false),
16608 TEST ("1.0000019073486328125",
16609 true,
16610- 0x1.00002p+0, false,
16611- 0x1.00002p+0, false,
16612- 0x1.00002p+0, false,
16613- 0x1.00002p+0, false,
16614- true,
16615- 0x1.00002p+0, false,
16616- 0x1.00002p+0, false,
16617- 0x1.00002p+0, false,
16618- 0x1.00002p+0, false,
16619- true,
16620- 0x1.00002p+0, false,
16621- 0x1.00002p+0, false,
16622- 0x1.00002p+0, false,
16623- 0x1.00002p+0, false,
16624- true,
16625- 0x1.00002p+0, false,
16626- 0x1.00002p+0, false,
16627- 0x1.00002p+0, false,
16628- 0x1.00002p+0, false,
16629- true,
16630- 0x1.00002p+0, false,
16631- 0x1.00002p+0, false,
16632- 0x1.00002p+0, false,
16633- 0x1.00002p+0, false,
16634- true,
16635- 0x1.00002p+0, false,
16636- 0x1.00002p+0, false,
16637- 0x1.00002p+0, false,
16638- 0x1.00002p+0, false),
16639+ 0x1.00002p+0, false, false,
16640+ 0x1.00002p+0, false, false,
16641+ 0x1.00002p+0, false, false,
16642+ 0x1.00002p+0, false, false,
16643+ true,
16644+ 0x1.00002p+0, false, false,
16645+ 0x1.00002p+0, false, false,
16646+ 0x1.00002p+0, false, false,
16647+ 0x1.00002p+0, false, false,
16648+ true,
16649+ 0x1.00002p+0, false, false,
16650+ 0x1.00002p+0, false, false,
16651+ 0x1.00002p+0, false, false,
16652+ 0x1.00002p+0, false, false,
16653+ true,
16654+ 0x1.00002p+0, false, false,
16655+ 0x1.00002p+0, false, false,
16656+ 0x1.00002p+0, false, false,
16657+ 0x1.00002p+0, false, false,
16658+ true,
16659+ 0x1.00002p+0, false, false,
16660+ 0x1.00002p+0, false, false,
16661+ 0x1.00002p+0, false, false,
16662+ 0x1.00002p+0, false, false,
16663+ true,
16664+ 0x1.00002p+0, false, false,
16665+ 0x1.00002p+0, false, false,
16666+ 0x1.00002p+0, false, false,
16667+ 0x1.00002p+0, false, false),
16668 TEST ("1.00000095367431640625",
16669 true,
16670- 0x1.00001p+0, false,
16671- 0x1.00001p+0, false,
16672- 0x1.00001p+0, false,
16673- 0x1.00001p+0, false,
16674- true,
16675- 0x1.00001p+0, false,
16676- 0x1.00001p+0, false,
16677- 0x1.00001p+0, false,
16678- 0x1.00001p+0, false,
16679- true,
16680- 0x1.00001p+0, false,
16681- 0x1.00001p+0, false,
16682- 0x1.00001p+0, false,
16683- 0x1.00001p+0, false,
16684- true,
16685- 0x1.00001p+0, false,
16686- 0x1.00001p+0, false,
16687- 0x1.00001p+0, false,
16688- 0x1.00001p+0, false,
16689- true,
16690- 0x1.00001p+0, false,
16691- 0x1.00001p+0, false,
16692- 0x1.00001p+0, false,
16693- 0x1.00001p+0, false,
16694- true,
16695- 0x1.00001p+0, false,
16696- 0x1.00001p+0, false,
16697- 0x1.00001p+0, false,
16698- 0x1.00001p+0, false),
16699+ 0x1.00001p+0, false, false,
16700+ 0x1.00001p+0, false, false,
16701+ 0x1.00001p+0, false, false,
16702+ 0x1.00001p+0, false, false,
16703+ true,
16704+ 0x1.00001p+0, false, false,
16705+ 0x1.00001p+0, false, false,
16706+ 0x1.00001p+0, false, false,
16707+ 0x1.00001p+0, false, false,
16708+ true,
16709+ 0x1.00001p+0, false, false,
16710+ 0x1.00001p+0, false, false,
16711+ 0x1.00001p+0, false, false,
16712+ 0x1.00001p+0, false, false,
16713+ true,
16714+ 0x1.00001p+0, false, false,
16715+ 0x1.00001p+0, false, false,
16716+ 0x1.00001p+0, false, false,
16717+ 0x1.00001p+0, false, false,
16718+ true,
16719+ 0x1.00001p+0, false, false,
16720+ 0x1.00001p+0, false, false,
16721+ 0x1.00001p+0, false, false,
16722+ 0x1.00001p+0, false, false,
16723+ true,
16724+ 0x1.00001p+0, false, false,
16725+ 0x1.00001p+0, false, false,
16726+ 0x1.00001p+0, false, false,
16727+ 0x1.00001p+0, false, false),
16728 TEST ("1.000000476837158203125",
16729 true,
16730- 0x1.000008p+0, false,
16731- 0x1.000008p+0, false,
16732- 0x1.000008p+0, false,
16733- 0x1.000008p+0, false,
16734- true,
16735- 0x1.000008p+0, false,
16736- 0x1.000008p+0, false,
16737- 0x1.000008p+0, false,
16738- 0x1.000008p+0, false,
16739- true,
16740- 0x1.000008p+0, false,
16741- 0x1.000008p+0, false,
16742- 0x1.000008p+0, false,
16743- 0x1.000008p+0, false,
16744- true,
16745- 0x1.000008p+0, false,
16746- 0x1.000008p+0, false,
16747- 0x1.000008p+0, false,
16748- 0x1.000008p+0, false,
16749- true,
16750- 0x1.000008p+0, false,
16751- 0x1.000008p+0, false,
16752- 0x1.000008p+0, false,
16753- 0x1.000008p+0, false,
16754- true,
16755- 0x1.000008p+0, false,
16756- 0x1.000008p+0, false,
16757- 0x1.000008p+0, false,
16758- 0x1.000008p+0, false),
16759+ 0x1.000008p+0, false, false,
16760+ 0x1.000008p+0, false, false,
16761+ 0x1.000008p+0, false, false,
16762+ 0x1.000008p+0, false, false,
16763+ true,
16764+ 0x1.000008p+0, false, false,
16765+ 0x1.000008p+0, false, false,
16766+ 0x1.000008p+0, false, false,
16767+ 0x1.000008p+0, false, false,
16768+ true,
16769+ 0x1.000008p+0, false, false,
16770+ 0x1.000008p+0, false, false,
16771+ 0x1.000008p+0, false, false,
16772+ 0x1.000008p+0, false, false,
16773+ true,
16774+ 0x1.000008p+0, false, false,
16775+ 0x1.000008p+0, false, false,
16776+ 0x1.000008p+0, false, false,
16777+ 0x1.000008p+0, false, false,
16778+ true,
16779+ 0x1.000008p+0, false, false,
16780+ 0x1.000008p+0, false, false,
16781+ 0x1.000008p+0, false, false,
16782+ 0x1.000008p+0, false, false,
16783+ true,
16784+ 0x1.000008p+0, false, false,
16785+ 0x1.000008p+0, false, false,
16786+ 0x1.000008p+0, false, false,
16787+ 0x1.000008p+0, false, false),
16788 TEST ("1.0000000298023223876953125",
16789 false,
16790- 0x1p+0, false,
16791- 0x1p+0, false,
16792- 0x1p+0, false,
16793- 0x1.000002p+0, false,
16794- true,
16795- 0x1.0000008p+0, false,
16796- 0x1.0000008p+0, false,
16797- 0x1.0000008p+0, false,
16798- 0x1.0000008p+0, false,
16799- true,
16800- 0x1.0000008p+0, false,
16801- 0x1.0000008p+0, false,
16802- 0x1.0000008p+0, false,
16803- 0x1.0000008p+0, false,
16804- true,
16805- 0x1.0000008p+0, false,
16806- 0x1.0000008p+0, false,
16807- 0x1.0000008p+0, false,
16808- 0x1.0000008p+0, false,
16809- true,
16810- 0x1.0000008p+0, false,
16811- 0x1.0000008p+0, false,
16812- 0x1.0000008p+0, false,
16813- 0x1.0000008p+0, false,
16814- true,
16815- 0x1.0000008p+0, false,
16816- 0x1.0000008p+0, false,
16817- 0x1.0000008p+0, false,
16818- 0x1.0000008p+0, false),
16819+ 0x1p+0, false, false,
16820+ 0x1p+0, false, false,
16821+ 0x1p+0, false, false,
16822+ 0x1.000002p+0, false, false,
16823+ true,
16824+ 0x1.0000008p+0, false, false,
16825+ 0x1.0000008p+0, false, false,
16826+ 0x1.0000008p+0, false, false,
16827+ 0x1.0000008p+0, false, false,
16828+ true,
16829+ 0x1.0000008p+0, false, false,
16830+ 0x1.0000008p+0, false, false,
16831+ 0x1.0000008p+0, false, false,
16832+ 0x1.0000008p+0, false, false,
16833+ true,
16834+ 0x1.0000008p+0, false, false,
16835+ 0x1.0000008p+0, false, false,
16836+ 0x1.0000008p+0, false, false,
16837+ 0x1.0000008p+0, false, false,
16838+ true,
16839+ 0x1.0000008p+0, false, false,
16840+ 0x1.0000008p+0, false, false,
16841+ 0x1.0000008p+0, false, false,
16842+ 0x1.0000008p+0, false, false,
16843+ true,
16844+ 0x1.0000008p+0, false, false,
16845+ 0x1.0000008p+0, false, false,
16846+ 0x1.0000008p+0, false, false,
16847+ 0x1.0000008p+0, false, false),
16848 TEST ("1.00000001490116119384765625",
16849 false,
16850- 0x1p+0, false,
16851- 0x1p+0, false,
16852- 0x1p+0, false,
16853- 0x1.000002p+0, false,
16854- true,
16855- 0x1.0000004p+0, false,
16856- 0x1.0000004p+0, false,
16857- 0x1.0000004p+0, false,
16858- 0x1.0000004p+0, false,
16859- true,
16860- 0x1.0000004p+0, false,
16861- 0x1.0000004p+0, false,
16862- 0x1.0000004p+0, false,
16863- 0x1.0000004p+0, false,
16864- true,
16865- 0x1.0000004p+0, false,
16866- 0x1.0000004p+0, false,
16867- 0x1.0000004p+0, false,
16868- 0x1.0000004p+0, false,
16869- true,
16870- 0x1.0000004p+0, false,
16871- 0x1.0000004p+0, false,
16872- 0x1.0000004p+0, false,
16873- 0x1.0000004p+0, false,
16874- true,
16875- 0x1.0000004p+0, false,
16876- 0x1.0000004p+0, false,
16877- 0x1.0000004p+0, false,
16878- 0x1.0000004p+0, false),
16879+ 0x1p+0, false, false,
16880+ 0x1p+0, false, false,
16881+ 0x1p+0, false, false,
16882+ 0x1.000002p+0, false, false,
16883+ true,
16884+ 0x1.0000004p+0, false, false,
16885+ 0x1.0000004p+0, false, false,
16886+ 0x1.0000004p+0, false, false,
16887+ 0x1.0000004p+0, false, false,
16888+ true,
16889+ 0x1.0000004p+0, false, false,
16890+ 0x1.0000004p+0, false, false,
16891+ 0x1.0000004p+0, false, false,
16892+ 0x1.0000004p+0, false, false,
16893+ true,
16894+ 0x1.0000004p+0, false, false,
16895+ 0x1.0000004p+0, false, false,
16896+ 0x1.0000004p+0, false, false,
16897+ 0x1.0000004p+0, false, false,
16898+ true,
16899+ 0x1.0000004p+0, false, false,
16900+ 0x1.0000004p+0, false, false,
16901+ 0x1.0000004p+0, false, false,
16902+ 0x1.0000004p+0, false, false,
16903+ true,
16904+ 0x1.0000004p+0, false, false,
16905+ 0x1.0000004p+0, false, false,
16906+ 0x1.0000004p+0, false, false,
16907+ 0x1.0000004p+0, false, false),
16908 TEST ("1.000000007450580596923828125",
16909 false,
16910- 0x1p+0, false,
16911- 0x1p+0, false,
16912- 0x1p+0, false,
16913- 0x1.000002p+0, false,
16914- true,
16915- 0x1.0000002p+0, false,
16916- 0x1.0000002p+0, false,
16917- 0x1.0000002p+0, false,
16918- 0x1.0000002p+0, false,
16919- true,
16920- 0x1.0000002p+0, false,
16921- 0x1.0000002p+0, false,
16922- 0x1.0000002p+0, false,
16923- 0x1.0000002p+0, false,
16924- true,
16925- 0x1.0000002p+0, false,
16926- 0x1.0000002p+0, false,
16927- 0x1.0000002p+0, false,
16928- 0x1.0000002p+0, false,
16929- true,
16930- 0x1.0000002p+0, false,
16931- 0x1.0000002p+0, false,
16932- 0x1.0000002p+0, false,
16933- 0x1.0000002p+0, false,
16934- true,
16935- 0x1.0000002p+0, false,
16936- 0x1.0000002p+0, false,
16937- 0x1.0000002p+0, false,
16938- 0x1.0000002p+0, false),
16939+ 0x1p+0, false, false,
16940+ 0x1p+0, false, false,
16941+ 0x1p+0, false, false,
16942+ 0x1.000002p+0, false, false,
16943+ true,
16944+ 0x1.0000002p+0, false, false,
16945+ 0x1.0000002p+0, false, false,
16946+ 0x1.0000002p+0, false, false,
16947+ 0x1.0000002p+0, false, false,
16948+ true,
16949+ 0x1.0000002p+0, false, false,
16950+ 0x1.0000002p+0, false, false,
16951+ 0x1.0000002p+0, false, false,
16952+ 0x1.0000002p+0, false, false,
16953+ true,
16954+ 0x1.0000002p+0, false, false,
16955+ 0x1.0000002p+0, false, false,
16956+ 0x1.0000002p+0, false, false,
16957+ 0x1.0000002p+0, false, false,
16958+ true,
16959+ 0x1.0000002p+0, false, false,
16960+ 0x1.0000002p+0, false, false,
16961+ 0x1.0000002p+0, false, false,
16962+ 0x1.0000002p+0, false, false,
16963+ true,
16964+ 0x1.0000002p+0, false, false,
16965+ 0x1.0000002p+0, false, false,
16966+ 0x1.0000002p+0, false, false,
16967+ 0x1.0000002p+0, false, false),
16968 TEST ("1.0000000037252902984619140625",
16969 false,
16970- 0x1p+0, false,
16971- 0x1p+0, false,
16972- 0x1p+0, false,
16973- 0x1.000002p+0, false,
16974- true,
16975- 0x1.0000001p+0, false,
16976- 0x1.0000001p+0, false,
16977- 0x1.0000001p+0, false,
16978- 0x1.0000001p+0, false,
16979- true,
16980- 0x1.0000001p+0, false,
16981- 0x1.0000001p+0, false,
16982- 0x1.0000001p+0, false,
16983- 0x1.0000001p+0, false,
16984- true,
16985- 0x1.0000001p+0, false,
16986- 0x1.0000001p+0, false,
16987- 0x1.0000001p+0, false,
16988- 0x1.0000001p+0, false,
16989- true,
16990- 0x1.0000001p+0, false,
16991- 0x1.0000001p+0, false,
16992- 0x1.0000001p+0, false,
16993- 0x1.0000001p+0, false,
16994- true,
16995- 0x1.0000001p+0, false,
16996- 0x1.0000001p+0, false,
16997- 0x1.0000001p+0, false,
16998- 0x1.0000001p+0, false),
16999+ 0x1p+0, false, false,
17000+ 0x1p+0, false, false,
17001+ 0x1p+0, false, false,
17002+ 0x1.000002p+0, false, false,
17003+ true,
17004+ 0x1.0000001p+0, false, false,
17005+ 0x1.0000001p+0, false, false,
17006+ 0x1.0000001p+0, false, false,
17007+ 0x1.0000001p+0, false, false,
17008+ true,
17009+ 0x1.0000001p+0, false, false,
17010+ 0x1.0000001p+0, false, false,
17011+ 0x1.0000001p+0, false, false,
17012+ 0x1.0000001p+0, false, false,
17013+ true,
17014+ 0x1.0000001p+0, false, false,
17015+ 0x1.0000001p+0, false, false,
17016+ 0x1.0000001p+0, false, false,
17017+ 0x1.0000001p+0, false, false,
17018+ true,
17019+ 0x1.0000001p+0, false, false,
17020+ 0x1.0000001p+0, false, false,
17021+ 0x1.0000001p+0, false, false,
17022+ 0x1.0000001p+0, false, false,
17023+ true,
17024+ 0x1.0000001p+0, false, false,
17025+ 0x1.0000001p+0, false, false,
17026+ 0x1.0000001p+0, false, false,
17027+ 0x1.0000001p+0, false, false),
17028 TEST ("1.00000000186264514923095703125",
17029 false,
17030- 0x1p+0, false,
17031- 0x1p+0, false,
17032- 0x1p+0, false,
17033- 0x1.000002p+0, false,
17034- true,
17035- 0x1.00000008p+0, false,
17036- 0x1.00000008p+0, false,
17037- 0x1.00000008p+0, false,
17038- 0x1.00000008p+0, false,
17039- true,
17040- 0x1.00000008p+0, false,
17041- 0x1.00000008p+0, false,
17042- 0x1.00000008p+0, false,
17043- 0x1.00000008p+0, false,
17044- true,
17045- 0x1.00000008p+0, false,
17046- 0x1.00000008p+0, false,
17047- 0x1.00000008p+0, false,
17048- 0x1.00000008p+0, false,
17049- true,
17050- 0x1.00000008p+0, false,
17051- 0x1.00000008p+0, false,
17052- 0x1.00000008p+0, false,
17053- 0x1.00000008p+0, false,
17054- true,
17055- 0x1.00000008p+0, false,
17056- 0x1.00000008p+0, false,
17057- 0x1.00000008p+0, false,
17058- 0x1.00000008p+0, false),
17059+ 0x1p+0, false, false,
17060+ 0x1p+0, false, false,
17061+ 0x1p+0, false, false,
17062+ 0x1.000002p+0, false, false,
17063+ true,
17064+ 0x1.00000008p+0, false, false,
17065+ 0x1.00000008p+0, false, false,
17066+ 0x1.00000008p+0, false, false,
17067+ 0x1.00000008p+0, false, false,
17068+ true,
17069+ 0x1.00000008p+0, false, false,
17070+ 0x1.00000008p+0, false, false,
17071+ 0x1.00000008p+0, false, false,
17072+ 0x1.00000008p+0, false, false,
17073+ true,
17074+ 0x1.00000008p+0, false, false,
17075+ 0x1.00000008p+0, false, false,
17076+ 0x1.00000008p+0, false, false,
17077+ 0x1.00000008p+0, false, false,
17078+ true,
17079+ 0x1.00000008p+0, false, false,
17080+ 0x1.00000008p+0, false, false,
17081+ 0x1.00000008p+0, false, false,
17082+ 0x1.00000008p+0, false, false,
17083+ true,
17084+ 0x1.00000008p+0, false, false,
17085+ 0x1.00000008p+0, false, false,
17086+ 0x1.00000008p+0, false, false,
17087+ 0x1.00000008p+0, false, false),
17088 TEST ("1.000000000931322574615478515625",
17089 false,
17090- 0x1p+0, false,
17091- 0x1p+0, false,
17092- 0x1p+0, false,
17093- 0x1.000002p+0, false,
17094- true,
17095- 0x1.00000004p+0, false,
17096- 0x1.00000004p+0, false,
17097- 0x1.00000004p+0, false,
17098- 0x1.00000004p+0, false,
17099- true,
17100- 0x1.00000004p+0, false,
17101- 0x1.00000004p+0, false,
17102- 0x1.00000004p+0, false,
17103- 0x1.00000004p+0, false,
17104- true,
17105- 0x1.00000004p+0, false,
17106- 0x1.00000004p+0, false,
17107- 0x1.00000004p+0, false,
17108- 0x1.00000004p+0, false,
17109- true,
17110- 0x1.00000004p+0, false,
17111- 0x1.00000004p+0, false,
17112- 0x1.00000004p+0, false,
17113- 0x1.00000004p+0, false,
17114- true,
17115- 0x1.00000004p+0, false,
17116- 0x1.00000004p+0, false,
17117- 0x1.00000004p+0, false,
17118- 0x1.00000004p+0, false),
17119+ 0x1p+0, false, false,
17120+ 0x1p+0, false, false,
17121+ 0x1p+0, false, false,
17122+ 0x1.000002p+0, false, false,
17123+ true,
17124+ 0x1.00000004p+0, false, false,
17125+ 0x1.00000004p+0, false, false,
17126+ 0x1.00000004p+0, false, false,
17127+ 0x1.00000004p+0, false, false,
17128+ true,
17129+ 0x1.00000004p+0, false, false,
17130+ 0x1.00000004p+0, false, false,
17131+ 0x1.00000004p+0, false, false,
17132+ 0x1.00000004p+0, false, false,
17133+ true,
17134+ 0x1.00000004p+0, false, false,
17135+ 0x1.00000004p+0, false, false,
17136+ 0x1.00000004p+0, false, false,
17137+ 0x1.00000004p+0, false, false,
17138+ true,
17139+ 0x1.00000004p+0, false, false,
17140+ 0x1.00000004p+0, false, false,
17141+ 0x1.00000004p+0, false, false,
17142+ 0x1.00000004p+0, false, false,
17143+ true,
17144+ 0x1.00000004p+0, false, false,
17145+ 0x1.00000004p+0, false, false,
17146+ 0x1.00000004p+0, false, false,
17147+ 0x1.00000004p+0, false, false),
17148 TEST ("1.0000000004656612873077392578125",
17149 false,
17150- 0x1p+0, false,
17151- 0x1p+0, false,
17152- 0x1p+0, false,
17153- 0x1.000002p+0, false,
17154- true,
17155- 0x1.00000002p+0, false,
17156- 0x1.00000002p+0, false,
17157- 0x1.00000002p+0, false,
17158- 0x1.00000002p+0, false,
17159- true,
17160- 0x1.00000002p+0, false,
17161- 0x1.00000002p+0, false,
17162- 0x1.00000002p+0, false,
17163- 0x1.00000002p+0, false,
17164- true,
17165- 0x1.00000002p+0, false,
17166- 0x1.00000002p+0, false,
17167- 0x1.00000002p+0, false,
17168- 0x1.00000002p+0, false,
17169- true,
17170- 0x1.00000002p+0, false,
17171- 0x1.00000002p+0, false,
17172- 0x1.00000002p+0, false,
17173- 0x1.00000002p+0, false,
17174- true,
17175- 0x1.00000002p+0, false,
17176- 0x1.00000002p+0, false,
17177- 0x1.00000002p+0, false,
17178- 0x1.00000002p+0, false),
17179+ 0x1p+0, false, false,
17180+ 0x1p+0, false, false,
17181+ 0x1p+0, false, false,
17182+ 0x1.000002p+0, false, false,
17183+ true,
17184+ 0x1.00000002p+0, false, false,
17185+ 0x1.00000002p+0, false, false,
17186+ 0x1.00000002p+0, false, false,
17187+ 0x1.00000002p+0, false, false,
17188+ true,
17189+ 0x1.00000002p+0, false, false,
17190+ 0x1.00000002p+0, false, false,
17191+ 0x1.00000002p+0, false, false,
17192+ 0x1.00000002p+0, false, false,
17193+ true,
17194+ 0x1.00000002p+0, false, false,
17195+ 0x1.00000002p+0, false, false,
17196+ 0x1.00000002p+0, false, false,
17197+ 0x1.00000002p+0, false, false,
17198+ true,
17199+ 0x1.00000002p+0, false, false,
17200+ 0x1.00000002p+0, false, false,
17201+ 0x1.00000002p+0, false, false,
17202+ 0x1.00000002p+0, false, false,
17203+ true,
17204+ 0x1.00000002p+0, false, false,
17205+ 0x1.00000002p+0, false, false,
17206+ 0x1.00000002p+0, false, false,
17207+ 0x1.00000002p+0, false, false),
17208 TEST ("1.00000000023283064365386962890625",
17209 false,
17210- 0x1p+0, false,
17211- 0x1p+0, false,
17212- 0x1p+0, false,
17213- 0x1.000002p+0, false,
17214- true,
17215- 0x1.00000001p+0, false,
17216- 0x1.00000001p+0, false,
17217- 0x1.00000001p+0, false,
17218- 0x1.00000001p+0, false,
17219- true,
17220- 0x1.00000001p+0, false,
17221- 0x1.00000001p+0, false,
17222- 0x1.00000001p+0, false,
17223- 0x1.00000001p+0, false,
17224- true,
17225- 0x1.00000001p+0, false,
17226- 0x1.00000001p+0, false,
17227- 0x1.00000001p+0, false,
17228- 0x1.00000001p+0, false,
17229- true,
17230- 0x1.00000001p+0, false,
17231- 0x1.00000001p+0, false,
17232- 0x1.00000001p+0, false,
17233- 0x1.00000001p+0, false,
17234- true,
17235- 0x1.00000001p+0, false,
17236- 0x1.00000001p+0, false,
17237- 0x1.00000001p+0, false,
17238- 0x1.00000001p+0, false),
17239+ 0x1p+0, false, false,
17240+ 0x1p+0, false, false,
17241+ 0x1p+0, false, false,
17242+ 0x1.000002p+0, false, false,
17243+ true,
17244+ 0x1.00000001p+0, false, false,
17245+ 0x1.00000001p+0, false, false,
17246+ 0x1.00000001p+0, false, false,
17247+ 0x1.00000001p+0, false, false,
17248+ true,
17249+ 0x1.00000001p+0, false, false,
17250+ 0x1.00000001p+0, false, false,
17251+ 0x1.00000001p+0, false, false,
17252+ 0x1.00000001p+0, false, false,
17253+ true,
17254+ 0x1.00000001p+0, false, false,
17255+ 0x1.00000001p+0, false, false,
17256+ 0x1.00000001p+0, false, false,
17257+ 0x1.00000001p+0, false, false,
17258+ true,
17259+ 0x1.00000001p+0, false, false,
17260+ 0x1.00000001p+0, false, false,
17261+ 0x1.00000001p+0, false, false,
17262+ 0x1.00000001p+0, false, false,
17263+ true,
17264+ 0x1.00000001p+0, false, false,
17265+ 0x1.00000001p+0, false, false,
17266+ 0x1.00000001p+0, false, false,
17267+ 0x1.00000001p+0, false, false),
17268 TEST ("1.000000000116415321826934814453125",
17269 false,
17270- 0x1p+0, false,
17271- 0x1p+0, false,
17272- 0x1p+0, false,
17273- 0x1.000002p+0, false,
17274- true,
17275- 0x1.000000008p+0, false,
17276- 0x1.000000008p+0, false,
17277- 0x1.000000008p+0, false,
17278- 0x1.000000008p+0, false,
17279- true,
17280- 0x1.000000008p+0, false,
17281- 0x1.000000008p+0, false,
17282- 0x1.000000008p+0, false,
17283- 0x1.000000008p+0, false,
17284- true,
17285- 0x1.000000008p+0, false,
17286- 0x1.000000008p+0, false,
17287- 0x1.000000008p+0, false,
17288- 0x1.000000008p+0, false,
17289- true,
17290- 0x1.000000008p+0, false,
17291- 0x1.000000008p+0, false,
17292- 0x1.000000008p+0, false,
17293- 0x1.000000008p+0, false,
17294- true,
17295- 0x1.000000008p+0, false,
17296- 0x1.000000008p+0, false,
17297- 0x1.000000008p+0, false,
17298- 0x1.000000008p+0, false),
17299+ 0x1p+0, false, false,
17300+ 0x1p+0, false, false,
17301+ 0x1p+0, false, false,
17302+ 0x1.000002p+0, false, false,
17303+ true,
17304+ 0x1.000000008p+0, false, false,
17305+ 0x1.000000008p+0, false, false,
17306+ 0x1.000000008p+0, false, false,
17307+ 0x1.000000008p+0, false, false,
17308+ true,
17309+ 0x1.000000008p+0, false, false,
17310+ 0x1.000000008p+0, false, false,
17311+ 0x1.000000008p+0, false, false,
17312+ 0x1.000000008p+0, false, false,
17313+ true,
17314+ 0x1.000000008p+0, false, false,
17315+ 0x1.000000008p+0, false, false,
17316+ 0x1.000000008p+0, false, false,
17317+ 0x1.000000008p+0, false, false,
17318+ true,
17319+ 0x1.000000008p+0, false, false,
17320+ 0x1.000000008p+0, false, false,
17321+ 0x1.000000008p+0, false, false,
17322+ 0x1.000000008p+0, false, false,
17323+ true,
17324+ 0x1.000000008p+0, false, false,
17325+ 0x1.000000008p+0, false, false,
17326+ 0x1.000000008p+0, false, false,
17327+ 0x1.000000008p+0, false, false),
17328 TEST ("1.0000000000582076609134674072265625",
17329 false,
17330- 0x1p+0, false,
17331- 0x1p+0, false,
17332- 0x1p+0, false,
17333- 0x1.000002p+0, false,
17334- true,
17335- 0x1.000000004p+0, false,
17336- 0x1.000000004p+0, false,
17337- 0x1.000000004p+0, false,
17338- 0x1.000000004p+0, false,
17339- true,
17340- 0x1.000000004p+0, false,
17341- 0x1.000000004p+0, false,
17342- 0x1.000000004p+0, false,
17343- 0x1.000000004p+0, false,
17344- true,
17345- 0x1.000000004p+0, false,
17346- 0x1.000000004p+0, false,
17347- 0x1.000000004p+0, false,
17348- 0x1.000000004p+0, false,
17349- true,
17350- 0x1.000000004p+0, false,
17351- 0x1.000000004p+0, false,
17352- 0x1.000000004p+0, false,
17353- 0x1.000000004p+0, false,
17354- true,
17355- 0x1.000000004p+0, false,
17356- 0x1.000000004p+0, false,
17357- 0x1.000000004p+0, false,
17358- 0x1.000000004p+0, false),
17359+ 0x1p+0, false, false,
17360+ 0x1p+0, false, false,
17361+ 0x1p+0, false, false,
17362+ 0x1.000002p+0, false, false,
17363+ true,
17364+ 0x1.000000004p+0, false, false,
17365+ 0x1.000000004p+0, false, false,
17366+ 0x1.000000004p+0, false, false,
17367+ 0x1.000000004p+0, false, false,
17368+ true,
17369+ 0x1.000000004p+0, false, false,
17370+ 0x1.000000004p+0, false, false,
17371+ 0x1.000000004p+0, false, false,
17372+ 0x1.000000004p+0, false, false,
17373+ true,
17374+ 0x1.000000004p+0, false, false,
17375+ 0x1.000000004p+0, false, false,
17376+ 0x1.000000004p+0, false, false,
17377+ 0x1.000000004p+0, false, false,
17378+ true,
17379+ 0x1.000000004p+0, false, false,
17380+ 0x1.000000004p+0, false, false,
17381+ 0x1.000000004p+0, false, false,
17382+ 0x1.000000004p+0, false, false,
17383+ true,
17384+ 0x1.000000004p+0, false, false,
17385+ 0x1.000000004p+0, false, false,
17386+ 0x1.000000004p+0, false, false,
17387+ 0x1.000000004p+0, false, false),
17388 TEST ("1.00000000002910383045673370361328125",
17389 false,
17390- 0x1p+0, false,
17391- 0x1p+0, false,
17392- 0x1p+0, false,
17393- 0x1.000002p+0, false,
17394- true,
17395- 0x1.000000002p+0, false,
17396- 0x1.000000002p+0, false,
17397- 0x1.000000002p+0, false,
17398- 0x1.000000002p+0, false,
17399- true,
17400- 0x1.000000002p+0, false,
17401- 0x1.000000002p+0, false,
17402- 0x1.000000002p+0, false,
17403- 0x1.000000002p+0, false,
17404- true,
17405- 0x1.000000002p+0, false,
17406- 0x1.000000002p+0, false,
17407- 0x1.000000002p+0, false,
17408- 0x1.000000002p+0, false,
17409- true,
17410- 0x1.000000002p+0, false,
17411- 0x1.000000002p+0, false,
17412- 0x1.000000002p+0, false,
17413- 0x1.000000002p+0, false,
17414- true,
17415- 0x1.000000002p+0, false,
17416- 0x1.000000002p+0, false,
17417- 0x1.000000002p+0, false,
17418- 0x1.000000002p+0, false),
17419+ 0x1p+0, false, false,
17420+ 0x1p+0, false, false,
17421+ 0x1p+0, false, false,
17422+ 0x1.000002p+0, false, false,
17423+ true,
17424+ 0x1.000000002p+0, false, false,
17425+ 0x1.000000002p+0, false, false,
17426+ 0x1.000000002p+0, false, false,
17427+ 0x1.000000002p+0, false, false,
17428+ true,
17429+ 0x1.000000002p+0, false, false,
17430+ 0x1.000000002p+0, false, false,
17431+ 0x1.000000002p+0, false, false,
17432+ 0x1.000000002p+0, false, false,
17433+ true,
17434+ 0x1.000000002p+0, false, false,
17435+ 0x1.000000002p+0, false, false,
17436+ 0x1.000000002p+0, false, false,
17437+ 0x1.000000002p+0, false, false,
17438+ true,
17439+ 0x1.000000002p+0, false, false,
17440+ 0x1.000000002p+0, false, false,
17441+ 0x1.000000002p+0, false, false,
17442+ 0x1.000000002p+0, false, false,
17443+ true,
17444+ 0x1.000000002p+0, false, false,
17445+ 0x1.000000002p+0, false, false,
17446+ 0x1.000000002p+0, false, false,
17447+ 0x1.000000002p+0, false, false),
17448 TEST ("1.000000000014551915228366851806640625",
17449 false,
17450- 0x1p+0, false,
17451- 0x1p+0, false,
17452- 0x1p+0, false,
17453- 0x1.000002p+0, false,
17454- true,
17455- 0x1.000000001p+0, false,
17456- 0x1.000000001p+0, false,
17457- 0x1.000000001p+0, false,
17458- 0x1.000000001p+0, false,
17459- true,
17460- 0x1.000000001p+0, false,
17461- 0x1.000000001p+0, false,
17462- 0x1.000000001p+0, false,
17463- 0x1.000000001p+0, false,
17464- true,
17465- 0x1.000000001p+0, false,
17466- 0x1.000000001p+0, false,
17467- 0x1.000000001p+0, false,
17468- 0x1.000000001p+0, false,
17469- true,
17470- 0x1.000000001p+0, false,
17471- 0x1.000000001p+0, false,
17472- 0x1.000000001p+0, false,
17473- 0x1.000000001p+0, false,
17474- true,
17475- 0x1.000000001p+0, false,
17476- 0x1.000000001p+0, false,
17477- 0x1.000000001p+0, false,
17478- 0x1.000000001p+0, false),
17479+ 0x1p+0, false, false,
17480+ 0x1p+0, false, false,
17481+ 0x1p+0, false, false,
17482+ 0x1.000002p+0, false, false,
17483+ true,
17484+ 0x1.000000001p+0, false, false,
17485+ 0x1.000000001p+0, false, false,
17486+ 0x1.000000001p+0, false, false,
17487+ 0x1.000000001p+0, false, false,
17488+ true,
17489+ 0x1.000000001p+0, false, false,
17490+ 0x1.000000001p+0, false, false,
17491+ 0x1.000000001p+0, false, false,
17492+ 0x1.000000001p+0, false, false,
17493+ true,
17494+ 0x1.000000001p+0, false, false,
17495+ 0x1.000000001p+0, false, false,
17496+ 0x1.000000001p+0, false, false,
17497+ 0x1.000000001p+0, false, false,
17498+ true,
17499+ 0x1.000000001p+0, false, false,
17500+ 0x1.000000001p+0, false, false,
17501+ 0x1.000000001p+0, false, false,
17502+ 0x1.000000001p+0, false, false,
17503+ true,
17504+ 0x1.000000001p+0, false, false,
17505+ 0x1.000000001p+0, false, false,
17506+ 0x1.000000001p+0, false, false,
17507+ 0x1.000000001p+0, false, false),
17508 TEST ("1.0000000000072759576141834259033203125",
17509 false,
17510- 0x1p+0, false,
17511- 0x1p+0, false,
17512- 0x1p+0, false,
17513- 0x1.000002p+0, false,
17514- true,
17515- 0x1.0000000008p+0, false,
17516- 0x1.0000000008p+0, false,
17517- 0x1.0000000008p+0, false,
17518- 0x1.0000000008p+0, false,
17519- true,
17520- 0x1.0000000008p+0, false,
17521- 0x1.0000000008p+0, false,
17522- 0x1.0000000008p+0, false,
17523- 0x1.0000000008p+0, false,
17524- true,
17525- 0x1.0000000008p+0, false,
17526- 0x1.0000000008p+0, false,
17527- 0x1.0000000008p+0, false,
17528- 0x1.0000000008p+0, false,
17529- true,
17530- 0x1.0000000008p+0, false,
17531- 0x1.0000000008p+0, false,
17532- 0x1.0000000008p+0, false,
17533- 0x1.0000000008p+0, false,
17534- true,
17535- 0x1.0000000008p+0, false,
17536- 0x1.0000000008p+0, false,
17537- 0x1.0000000008p+0, false,
17538- 0x1.0000000008p+0, false),
17539+ 0x1p+0, false, false,
17540+ 0x1p+0, false, false,
17541+ 0x1p+0, false, false,
17542+ 0x1.000002p+0, false, false,
17543+ true,
17544+ 0x1.0000000008p+0, false, false,
17545+ 0x1.0000000008p+0, false, false,
17546+ 0x1.0000000008p+0, false, false,
17547+ 0x1.0000000008p+0, false, false,
17548+ true,
17549+ 0x1.0000000008p+0, false, false,
17550+ 0x1.0000000008p+0, false, false,
17551+ 0x1.0000000008p+0, false, false,
17552+ 0x1.0000000008p+0, false, false,
17553+ true,
17554+ 0x1.0000000008p+0, false, false,
17555+ 0x1.0000000008p+0, false, false,
17556+ 0x1.0000000008p+0, false, false,
17557+ 0x1.0000000008p+0, false, false,
17558+ true,
17559+ 0x1.0000000008p+0, false, false,
17560+ 0x1.0000000008p+0, false, false,
17561+ 0x1.0000000008p+0, false, false,
17562+ 0x1.0000000008p+0, false, false,
17563+ true,
17564+ 0x1.0000000008p+0, false, false,
17565+ 0x1.0000000008p+0, false, false,
17566+ 0x1.0000000008p+0, false, false,
17567+ 0x1.0000000008p+0, false, false),
17568 TEST ("1.00000000000363797880709171295166015625",
17569 false,
17570- 0x1p+0, false,
17571- 0x1p+0, false,
17572- 0x1p+0, false,
17573- 0x1.000002p+0, false,
17574- true,
17575- 0x1.0000000004p+0, false,
17576- 0x1.0000000004p+0, false,
17577- 0x1.0000000004p+0, false,
17578- 0x1.0000000004p+0, false,
17579- true,
17580- 0x1.0000000004p+0, false,
17581- 0x1.0000000004p+0, false,
17582- 0x1.0000000004p+0, false,
17583- 0x1.0000000004p+0, false,
17584- true,
17585- 0x1.0000000004p+0, false,
17586- 0x1.0000000004p+0, false,
17587- 0x1.0000000004p+0, false,
17588- 0x1.0000000004p+0, false,
17589- true,
17590- 0x1.0000000004p+0, false,
17591- 0x1.0000000004p+0, false,
17592- 0x1.0000000004p+0, false,
17593- 0x1.0000000004p+0, false,
17594- true,
17595- 0x1.0000000004p+0, false,
17596- 0x1.0000000004p+0, false,
17597- 0x1.0000000004p+0, false,
17598- 0x1.0000000004p+0, false),
17599+ 0x1p+0, false, false,
17600+ 0x1p+0, false, false,
17601+ 0x1p+0, false, false,
17602+ 0x1.000002p+0, false, false,
17603+ true,
17604+ 0x1.0000000004p+0, false, false,
17605+ 0x1.0000000004p+0, false, false,
17606+ 0x1.0000000004p+0, false, false,
17607+ 0x1.0000000004p+0, false, false,
17608+ true,
17609+ 0x1.0000000004p+0, false, false,
17610+ 0x1.0000000004p+0, false, false,
17611+ 0x1.0000000004p+0, false, false,
17612+ 0x1.0000000004p+0, false, false,
17613+ true,
17614+ 0x1.0000000004p+0, false, false,
17615+ 0x1.0000000004p+0, false, false,
17616+ 0x1.0000000004p+0, false, false,
17617+ 0x1.0000000004p+0, false, false,
17618+ true,
17619+ 0x1.0000000004p+0, false, false,
17620+ 0x1.0000000004p+0, false, false,
17621+ 0x1.0000000004p+0, false, false,
17622+ 0x1.0000000004p+0, false, false,
17623+ true,
17624+ 0x1.0000000004p+0, false, false,
17625+ 0x1.0000000004p+0, false, false,
17626+ 0x1.0000000004p+0, false, false,
17627+ 0x1.0000000004p+0, false, false),
17628 TEST ("1.000000000001818989403545856475830078125",
17629 false,
17630- 0x1p+0, false,
17631- 0x1p+0, false,
17632- 0x1p+0, false,
17633- 0x1.000002p+0, false,
17634- true,
17635- 0x1.0000000002p+0, false,
17636- 0x1.0000000002p+0, false,
17637- 0x1.0000000002p+0, false,
17638- 0x1.0000000002p+0, false,
17639- true,
17640- 0x1.0000000002p+0, false,
17641- 0x1.0000000002p+0, false,
17642- 0x1.0000000002p+0, false,
17643- 0x1.0000000002p+0, false,
17644- true,
17645- 0x1.0000000002p+0, false,
17646- 0x1.0000000002p+0, false,
17647- 0x1.0000000002p+0, false,
17648- 0x1.0000000002p+0, false,
17649- true,
17650- 0x1.0000000002p+0, false,
17651- 0x1.0000000002p+0, false,
17652- 0x1.0000000002p+0, false,
17653- 0x1.0000000002p+0, false,
17654- true,
17655- 0x1.0000000002p+0, false,
17656- 0x1.0000000002p+0, false,
17657- 0x1.0000000002p+0, false,
17658- 0x1.0000000002p+0, false),
17659+ 0x1p+0, false, false,
17660+ 0x1p+0, false, false,
17661+ 0x1p+0, false, false,
17662+ 0x1.000002p+0, false, false,
17663+ true,
17664+ 0x1.0000000002p+0, false, false,
17665+ 0x1.0000000002p+0, false, false,
17666+ 0x1.0000000002p+0, false, false,
17667+ 0x1.0000000002p+0, false, false,
17668+ true,
17669+ 0x1.0000000002p+0, false, false,
17670+ 0x1.0000000002p+0, false, false,
17671+ 0x1.0000000002p+0, false, false,
17672+ 0x1.0000000002p+0, false, false,
17673+ true,
17674+ 0x1.0000000002p+0, false, false,
17675+ 0x1.0000000002p+0, false, false,
17676+ 0x1.0000000002p+0, false, false,
17677+ 0x1.0000000002p+0, false, false,
17678+ true,
17679+ 0x1.0000000002p+0, false, false,
17680+ 0x1.0000000002p+0, false, false,
17681+ 0x1.0000000002p+0, false, false,
17682+ 0x1.0000000002p+0, false, false,
17683+ true,
17684+ 0x1.0000000002p+0, false, false,
17685+ 0x1.0000000002p+0, false, false,
17686+ 0x1.0000000002p+0, false, false,
17687+ 0x1.0000000002p+0, false, false),
17688 TEST ("1.0000000000009094947017729282379150390625",
17689 false,
17690- 0x1p+0, false,
17691- 0x1p+0, false,
17692- 0x1p+0, false,
17693- 0x1.000002p+0, false,
17694- true,
17695- 0x1.0000000001p+0, false,
17696- 0x1.0000000001p+0, false,
17697- 0x1.0000000001p+0, false,
17698- 0x1.0000000001p+0, false,
17699- true,
17700- 0x1.0000000001p+0, false,
17701- 0x1.0000000001p+0, false,
17702- 0x1.0000000001p+0, false,
17703- 0x1.0000000001p+0, false,
17704- true,
17705- 0x1.0000000001p+0, false,
17706- 0x1.0000000001p+0, false,
17707- 0x1.0000000001p+0, false,
17708- 0x1.0000000001p+0, false,
17709- true,
17710- 0x1.0000000001p+0, false,
17711- 0x1.0000000001p+0, false,
17712- 0x1.0000000001p+0, false,
17713- 0x1.0000000001p+0, false,
17714- true,
17715- 0x1.0000000001p+0, false,
17716- 0x1.0000000001p+0, false,
17717- 0x1.0000000001p+0, false,
17718- 0x1.0000000001p+0, false),
17719+ 0x1p+0, false, false,
17720+ 0x1p+0, false, false,
17721+ 0x1p+0, false, false,
17722+ 0x1.000002p+0, false, false,
17723+ true,
17724+ 0x1.0000000001p+0, false, false,
17725+ 0x1.0000000001p+0, false, false,
17726+ 0x1.0000000001p+0, false, false,
17727+ 0x1.0000000001p+0, false, false,
17728+ true,
17729+ 0x1.0000000001p+0, false, false,
17730+ 0x1.0000000001p+0, false, false,
17731+ 0x1.0000000001p+0, false, false,
17732+ 0x1.0000000001p+0, false, false,
17733+ true,
17734+ 0x1.0000000001p+0, false, false,
17735+ 0x1.0000000001p+0, false, false,
17736+ 0x1.0000000001p+0, false, false,
17737+ 0x1.0000000001p+0, false, false,
17738+ true,
17739+ 0x1.0000000001p+0, false, false,
17740+ 0x1.0000000001p+0, false, false,
17741+ 0x1.0000000001p+0, false, false,
17742+ 0x1.0000000001p+0, false, false,
17743+ true,
17744+ 0x1.0000000001p+0, false, false,
17745+ 0x1.0000000001p+0, false, false,
17746+ 0x1.0000000001p+0, false, false,
17747+ 0x1.0000000001p+0, false, false),
17748 TEST ("1.00000000000045474735088646411895751953125",
17749 false,
17750- 0x1p+0, false,
17751- 0x1p+0, false,
17752- 0x1p+0, false,
17753- 0x1.000002p+0, false,
17754- true,
17755- 0x1.00000000008p+0, false,
17756- 0x1.00000000008p+0, false,
17757- 0x1.00000000008p+0, false,
17758- 0x1.00000000008p+0, false,
17759- true,
17760- 0x1.00000000008p+0, false,
17761- 0x1.00000000008p+0, false,
17762- 0x1.00000000008p+0, false,
17763- 0x1.00000000008p+0, false,
17764- true,
17765- 0x1.00000000008p+0, false,
17766- 0x1.00000000008p+0, false,
17767- 0x1.00000000008p+0, false,
17768- 0x1.00000000008p+0, false,
17769- true,
17770- 0x1.00000000008p+0, false,
17771- 0x1.00000000008p+0, false,
17772- 0x1.00000000008p+0, false,
17773- 0x1.00000000008p+0, false,
17774- true,
17775- 0x1.00000000008p+0, false,
17776- 0x1.00000000008p+0, false,
17777- 0x1.00000000008p+0, false,
17778- 0x1.00000000008p+0, false),
17779+ 0x1p+0, false, false,
17780+ 0x1p+0, false, false,
17781+ 0x1p+0, false, false,
17782+ 0x1.000002p+0, false, false,
17783+ true,
17784+ 0x1.00000000008p+0, false, false,
17785+ 0x1.00000000008p+0, false, false,
17786+ 0x1.00000000008p+0, false, false,
17787+ 0x1.00000000008p+0, false, false,
17788+ true,
17789+ 0x1.00000000008p+0, false, false,
17790+ 0x1.00000000008p+0, false, false,
17791+ 0x1.00000000008p+0, false, false,
17792+ 0x1.00000000008p+0, false, false,
17793+ true,
17794+ 0x1.00000000008p+0, false, false,
17795+ 0x1.00000000008p+0, false, false,
17796+ 0x1.00000000008p+0, false, false,
17797+ 0x1.00000000008p+0, false, false,
17798+ true,
17799+ 0x1.00000000008p+0, false, false,
17800+ 0x1.00000000008p+0, false, false,
17801+ 0x1.00000000008p+0, false, false,
17802+ 0x1.00000000008p+0, false, false,
17803+ true,
17804+ 0x1.00000000008p+0, false, false,
17805+ 0x1.00000000008p+0, false, false,
17806+ 0x1.00000000008p+0, false, false,
17807+ 0x1.00000000008p+0, false, false),
17808 TEST ("1.000000000000227373675443232059478759765625",
17809 false,
17810- 0x1p+0, false,
17811- 0x1p+0, false,
17812- 0x1p+0, false,
17813- 0x1.000002p+0, false,
17814- true,
17815- 0x1.00000000004p+0, false,
17816- 0x1.00000000004p+0, false,
17817- 0x1.00000000004p+0, false,
17818- 0x1.00000000004p+0, false,
17819- true,
17820- 0x1.00000000004p+0, false,
17821- 0x1.00000000004p+0, false,
17822- 0x1.00000000004p+0, false,
17823- 0x1.00000000004p+0, false,
17824- true,
17825- 0x1.00000000004p+0, false,
17826- 0x1.00000000004p+0, false,
17827- 0x1.00000000004p+0, false,
17828- 0x1.00000000004p+0, false,
17829- true,
17830- 0x1.00000000004p+0, false,
17831- 0x1.00000000004p+0, false,
17832- 0x1.00000000004p+0, false,
17833- 0x1.00000000004p+0, false,
17834- true,
17835- 0x1.00000000004p+0, false,
17836- 0x1.00000000004p+0, false,
17837- 0x1.00000000004p+0, false,
17838- 0x1.00000000004p+0, false),
17839+ 0x1p+0, false, false,
17840+ 0x1p+0, false, false,
17841+ 0x1p+0, false, false,
17842+ 0x1.000002p+0, false, false,
17843+ true,
17844+ 0x1.00000000004p+0, false, false,
17845+ 0x1.00000000004p+0, false, false,
17846+ 0x1.00000000004p+0, false, false,
17847+ 0x1.00000000004p+0, false, false,
17848+ true,
17849+ 0x1.00000000004p+0, false, false,
17850+ 0x1.00000000004p+0, false, false,
17851+ 0x1.00000000004p+0, false, false,
17852+ 0x1.00000000004p+0, false, false,
17853+ true,
17854+ 0x1.00000000004p+0, false, false,
17855+ 0x1.00000000004p+0, false, false,
17856+ 0x1.00000000004p+0, false, false,
17857+ 0x1.00000000004p+0, false, false,
17858+ true,
17859+ 0x1.00000000004p+0, false, false,
17860+ 0x1.00000000004p+0, false, false,
17861+ 0x1.00000000004p+0, false, false,
17862+ 0x1.00000000004p+0, false, false,
17863+ true,
17864+ 0x1.00000000004p+0, false, false,
17865+ 0x1.00000000004p+0, false, false,
17866+ 0x1.00000000004p+0, false, false,
17867+ 0x1.00000000004p+0, false, false),
17868 TEST ("1.0000000000001136868377216160297393798828125",
17869 false,
17870- 0x1p+0, false,
17871- 0x1p+0, false,
17872- 0x1p+0, false,
17873- 0x1.000002p+0, false,
17874- true,
17875- 0x1.00000000002p+0, false,
17876- 0x1.00000000002p+0, false,
17877- 0x1.00000000002p+0, false,
17878- 0x1.00000000002p+0, false,
17879- true,
17880- 0x1.00000000002p+0, false,
17881- 0x1.00000000002p+0, false,
17882- 0x1.00000000002p+0, false,
17883- 0x1.00000000002p+0, false,
17884- true,
17885- 0x1.00000000002p+0, false,
17886- 0x1.00000000002p+0, false,
17887- 0x1.00000000002p+0, false,
17888- 0x1.00000000002p+0, false,
17889- true,
17890- 0x1.00000000002p+0, false,
17891- 0x1.00000000002p+0, false,
17892- 0x1.00000000002p+0, false,
17893- 0x1.00000000002p+0, false,
17894- true,
17895- 0x1.00000000002p+0, false,
17896- 0x1.00000000002p+0, false,
17897- 0x1.00000000002p+0, false,
17898- 0x1.00000000002p+0, false),
17899+ 0x1p+0, false, false,
17900+ 0x1p+0, false, false,
17901+ 0x1p+0, false, false,
17902+ 0x1.000002p+0, false, false,
17903+ true,
17904+ 0x1.00000000002p+0, false, false,
17905+ 0x1.00000000002p+0, false, false,
17906+ 0x1.00000000002p+0, false, false,
17907+ 0x1.00000000002p+0, false, false,
17908+ true,
17909+ 0x1.00000000002p+0, false, false,
17910+ 0x1.00000000002p+0, false, false,
17911+ 0x1.00000000002p+0, false, false,
17912+ 0x1.00000000002p+0, false, false,
17913+ true,
17914+ 0x1.00000000002p+0, false, false,
17915+ 0x1.00000000002p+0, false, false,
17916+ 0x1.00000000002p+0, false, false,
17917+ 0x1.00000000002p+0, false, false,
17918+ true,
17919+ 0x1.00000000002p+0, false, false,
17920+ 0x1.00000000002p+0, false, false,
17921+ 0x1.00000000002p+0, false, false,
17922+ 0x1.00000000002p+0, false, false,
17923+ true,
17924+ 0x1.00000000002p+0, false, false,
17925+ 0x1.00000000002p+0, false, false,
17926+ 0x1.00000000002p+0, false, false,
17927+ 0x1.00000000002p+0, false, false),
17928 TEST ("1.00000000000005684341886080801486968994140625",
17929 false,
17930- 0x1p+0, false,
17931- 0x1p+0, false,
17932- 0x1p+0, false,
17933- 0x1.000002p+0, false,
17934- true,
17935- 0x1.00000000001p+0, false,
17936- 0x1.00000000001p+0, false,
17937- 0x1.00000000001p+0, false,
17938- 0x1.00000000001p+0, false,
17939- true,
17940- 0x1.00000000001p+0, false,
17941- 0x1.00000000001p+0, false,
17942- 0x1.00000000001p+0, false,
17943- 0x1.00000000001p+0, false,
17944- true,
17945- 0x1.00000000001p+0, false,
17946- 0x1.00000000001p+0, false,
17947- 0x1.00000000001p+0, false,
17948- 0x1.00000000001p+0, false,
17949- true,
17950- 0x1.00000000001p+0, false,
17951- 0x1.00000000001p+0, false,
17952- 0x1.00000000001p+0, false,
17953- 0x1.00000000001p+0, false,
17954- true,
17955- 0x1.00000000001p+0, false,
17956- 0x1.00000000001p+0, false,
17957- 0x1.00000000001p+0, false,
17958- 0x1.00000000001p+0, false),
17959+ 0x1p+0, false, false,
17960+ 0x1p+0, false, false,
17961+ 0x1p+0, false, false,
17962+ 0x1.000002p+0, false, false,
17963+ true,
17964+ 0x1.00000000001p+0, false, false,
17965+ 0x1.00000000001p+0, false, false,
17966+ 0x1.00000000001p+0, false, false,
17967+ 0x1.00000000001p+0, false, false,
17968+ true,
17969+ 0x1.00000000001p+0, false, false,
17970+ 0x1.00000000001p+0, false, false,
17971+ 0x1.00000000001p+0, false, false,
17972+ 0x1.00000000001p+0, false, false,
17973+ true,
17974+ 0x1.00000000001p+0, false, false,
17975+ 0x1.00000000001p+0, false, false,
17976+ 0x1.00000000001p+0, false, false,
17977+ 0x1.00000000001p+0, false, false,
17978+ true,
17979+ 0x1.00000000001p+0, false, false,
17980+ 0x1.00000000001p+0, false, false,
17981+ 0x1.00000000001p+0, false, false,
17982+ 0x1.00000000001p+0, false, false,
17983+ true,
17984+ 0x1.00000000001p+0, false, false,
17985+ 0x1.00000000001p+0, false, false,
17986+ 0x1.00000000001p+0, false, false,
17987+ 0x1.00000000001p+0, false, false),
17988 TEST ("1.000000000000028421709430404007434844970703125",
17989 false,
17990- 0x1p+0, false,
17991- 0x1p+0, false,
17992- 0x1p+0, false,
17993- 0x1.000002p+0, false,
17994- true,
17995- 0x1.000000000008p+0, false,
17996- 0x1.000000000008p+0, false,
17997- 0x1.000000000008p+0, false,
17998- 0x1.000000000008p+0, false,
17999- true,
18000- 0x1.000000000008p+0, false,
18001- 0x1.000000000008p+0, false,
18002- 0x1.000000000008p+0, false,
18003- 0x1.000000000008p+0, false,
18004- true,
18005- 0x1.000000000008p+0, false,
18006- 0x1.000000000008p+0, false,
18007- 0x1.000000000008p+0, false,
18008- 0x1.000000000008p+0, false,
18009- true,
18010- 0x1.000000000008p+0, false,
18011- 0x1.000000000008p+0, false,
18012- 0x1.000000000008p+0, false,
18013- 0x1.000000000008p+0, false,
18014- true,
18015- 0x1.000000000008p+0, false,
18016- 0x1.000000000008p+0, false,
18017- 0x1.000000000008p+0, false,
18018- 0x1.000000000008p+0, false),
18019+ 0x1p+0, false, false,
18020+ 0x1p+0, false, false,
18021+ 0x1p+0, false, false,
18022+ 0x1.000002p+0, false, false,
18023+ true,
18024+ 0x1.000000000008p+0, false, false,
18025+ 0x1.000000000008p+0, false, false,
18026+ 0x1.000000000008p+0, false, false,
18027+ 0x1.000000000008p+0, false, false,
18028+ true,
18029+ 0x1.000000000008p+0, false, false,
18030+ 0x1.000000000008p+0, false, false,
18031+ 0x1.000000000008p+0, false, false,
18032+ 0x1.000000000008p+0, false, false,
18033+ true,
18034+ 0x1.000000000008p+0, false, false,
18035+ 0x1.000000000008p+0, false, false,
18036+ 0x1.000000000008p+0, false, false,
18037+ 0x1.000000000008p+0, false, false,
18038+ true,
18039+ 0x1.000000000008p+0, false, false,
18040+ 0x1.000000000008p+0, false, false,
18041+ 0x1.000000000008p+0, false, false,
18042+ 0x1.000000000008p+0, false, false,
18043+ true,
18044+ 0x1.000000000008p+0, false, false,
18045+ 0x1.000000000008p+0, false, false,
18046+ 0x1.000000000008p+0, false, false,
18047+ 0x1.000000000008p+0, false, false),
18048 TEST ("1.0000000000000142108547152020037174224853515625",
18049 false,
18050- 0x1p+0, false,
18051- 0x1p+0, false,
18052- 0x1p+0, false,
18053- 0x1.000002p+0, false,
18054- true,
18055- 0x1.000000000004p+0, false,
18056- 0x1.000000000004p+0, false,
18057- 0x1.000000000004p+0, false,
18058- 0x1.000000000004p+0, false,
18059- true,
18060- 0x1.000000000004p+0, false,
18061- 0x1.000000000004p+0, false,
18062- 0x1.000000000004p+0, false,
18063- 0x1.000000000004p+0, false,
18064- true,
18065- 0x1.000000000004p+0, false,
18066- 0x1.000000000004p+0, false,
18067- 0x1.000000000004p+0, false,
18068- 0x1.000000000004p+0, false,
18069- true,
18070- 0x1.000000000004p+0, false,
18071- 0x1.000000000004p+0, false,
18072- 0x1.000000000004p+0, false,
18073- 0x1.000000000004p+0, false,
18074- true,
18075- 0x1.000000000004p+0, false,
18076- 0x1.000000000004p+0, false,
18077- 0x1.000000000004p+0, false,
18078- 0x1.000000000004p+0, false),
18079+ 0x1p+0, false, false,
18080+ 0x1p+0, false, false,
18081+ 0x1p+0, false, false,
18082+ 0x1.000002p+0, false, false,
18083+ true,
18084+ 0x1.000000000004p+0, false, false,
18085+ 0x1.000000000004p+0, false, false,
18086+ 0x1.000000000004p+0, false, false,
18087+ 0x1.000000000004p+0, false, false,
18088+ true,
18089+ 0x1.000000000004p+0, false, false,
18090+ 0x1.000000000004p+0, false, false,
18091+ 0x1.000000000004p+0, false, false,
18092+ 0x1.000000000004p+0, false, false,
18093+ true,
18094+ 0x1.000000000004p+0, false, false,
18095+ 0x1.000000000004p+0, false, false,
18096+ 0x1.000000000004p+0, false, false,
18097+ 0x1.000000000004p+0, false, false,
18098+ true,
18099+ 0x1.000000000004p+0, false, false,
18100+ 0x1.000000000004p+0, false, false,
18101+ 0x1.000000000004p+0, false, false,
18102+ 0x1.000000000004p+0, false, false,
18103+ true,
18104+ 0x1.000000000004p+0, false, false,
18105+ 0x1.000000000004p+0, false, false,
18106+ 0x1.000000000004p+0, false, false,
18107+ 0x1.000000000004p+0, false, false),
18108 TEST ("1.00000000000000710542735760100185871124267578125",
18109 false,
18110- 0x1p+0, false,
18111- 0x1p+0, false,
18112- 0x1p+0, false,
18113- 0x1.000002p+0, false,
18114- true,
18115- 0x1.000000000002p+0, false,
18116- 0x1.000000000002p+0, false,
18117- 0x1.000000000002p+0, false,
18118- 0x1.000000000002p+0, false,
18119- true,
18120- 0x1.000000000002p+0, false,
18121- 0x1.000000000002p+0, false,
18122- 0x1.000000000002p+0, false,
18123- 0x1.000000000002p+0, false,
18124- true,
18125- 0x1.000000000002p+0, false,
18126- 0x1.000000000002p+0, false,
18127- 0x1.000000000002p+0, false,
18128- 0x1.000000000002p+0, false,
18129- true,
18130- 0x1.000000000002p+0, false,
18131- 0x1.000000000002p+0, false,
18132- 0x1.000000000002p+0, false,
18133- 0x1.000000000002p+0, false,
18134- true,
18135- 0x1.000000000002p+0, false,
18136- 0x1.000000000002p+0, false,
18137- 0x1.000000000002p+0, false,
18138- 0x1.000000000002p+0, false),
18139+ 0x1p+0, false, false,
18140+ 0x1p+0, false, false,
18141+ 0x1p+0, false, false,
18142+ 0x1.000002p+0, false, false,
18143+ true,
18144+ 0x1.000000000002p+0, false, false,
18145+ 0x1.000000000002p+0, false, false,
18146+ 0x1.000000000002p+0, false, false,
18147+ 0x1.000000000002p+0, false, false,
18148+ true,
18149+ 0x1.000000000002p+0, false, false,
18150+ 0x1.000000000002p+0, false, false,
18151+ 0x1.000000000002p+0, false, false,
18152+ 0x1.000000000002p+0, false, false,
18153+ true,
18154+ 0x1.000000000002p+0, false, false,
18155+ 0x1.000000000002p+0, false, false,
18156+ 0x1.000000000002p+0, false, false,
18157+ 0x1.000000000002p+0, false, false,
18158+ true,
18159+ 0x1.000000000002p+0, false, false,
18160+ 0x1.000000000002p+0, false, false,
18161+ 0x1.000000000002p+0, false, false,
18162+ 0x1.000000000002p+0, false, false,
18163+ true,
18164+ 0x1.000000000002p+0, false, false,
18165+ 0x1.000000000002p+0, false, false,
18166+ 0x1.000000000002p+0, false, false,
18167+ 0x1.000000000002p+0, false, false),
18168 TEST ("1.000000000000003552713678800500929355621337890625",
18169 false,
18170- 0x1p+0, false,
18171- 0x1p+0, false,
18172- 0x1p+0, false,
18173- 0x1.000002p+0, false,
18174- true,
18175- 0x1.000000000001p+0, false,
18176- 0x1.000000000001p+0, false,
18177- 0x1.000000000001p+0, false,
18178- 0x1.000000000001p+0, false,
18179- true,
18180- 0x1.000000000001p+0, false,
18181- 0x1.000000000001p+0, false,
18182- 0x1.000000000001p+0, false,
18183- 0x1.000000000001p+0, false,
18184- true,
18185- 0x1.000000000001p+0, false,
18186- 0x1.000000000001p+0, false,
18187- 0x1.000000000001p+0, false,
18188- 0x1.000000000001p+0, false,
18189- true,
18190- 0x1.000000000001p+0, false,
18191- 0x1.000000000001p+0, false,
18192- 0x1.000000000001p+0, false,
18193- 0x1.000000000001p+0, false,
18194- true,
18195- 0x1.000000000001p+0, false,
18196- 0x1.000000000001p+0, false,
18197- 0x1.000000000001p+0, false,
18198- 0x1.000000000001p+0, false),
18199+ 0x1p+0, false, false,
18200+ 0x1p+0, false, false,
18201+ 0x1p+0, false, false,
18202+ 0x1.000002p+0, false, false,
18203+ true,
18204+ 0x1.000000000001p+0, false, false,
18205+ 0x1.000000000001p+0, false, false,
18206+ 0x1.000000000001p+0, false, false,
18207+ 0x1.000000000001p+0, false, false,
18208+ true,
18209+ 0x1.000000000001p+0, false, false,
18210+ 0x1.000000000001p+0, false, false,
18211+ 0x1.000000000001p+0, false, false,
18212+ 0x1.000000000001p+0, false, false,
18213+ true,
18214+ 0x1.000000000001p+0, false, false,
18215+ 0x1.000000000001p+0, false, false,
18216+ 0x1.000000000001p+0, false, false,
18217+ 0x1.000000000001p+0, false, false,
18218+ true,
18219+ 0x1.000000000001p+0, false, false,
18220+ 0x1.000000000001p+0, false, false,
18221+ 0x1.000000000001p+0, false, false,
18222+ 0x1.000000000001p+0, false, false,
18223+ true,
18224+ 0x1.000000000001p+0, false, false,
18225+ 0x1.000000000001p+0, false, false,
18226+ 0x1.000000000001p+0, false, false,
18227+ 0x1.000000000001p+0, false, false),
18228 TEST ("1.0000000000000017763568394002504646778106689453125",
18229 false,
18230- 0x1p+0, false,
18231- 0x1p+0, false,
18232- 0x1p+0, false,
18233- 0x1.000002p+0, false,
18234- true,
18235- 0x1.0000000000008p+0, false,
18236- 0x1.0000000000008p+0, false,
18237- 0x1.0000000000008p+0, false,
18238- 0x1.0000000000008p+0, false,
18239- true,
18240- 0x1.0000000000008p+0, false,
18241- 0x1.0000000000008p+0, false,
18242- 0x1.0000000000008p+0, false,
18243- 0x1.0000000000008p+0, false,
18244- true,
18245- 0x1.0000000000008p+0, false,
18246- 0x1.0000000000008p+0, false,
18247- 0x1.0000000000008p+0, false,
18248- 0x1.0000000000008p+0, false,
18249- true,
18250- 0x1.0000000000008p+0, false,
18251- 0x1.0000000000008p+0, false,
18252- 0x1.0000000000008p+0, false,
18253- 0x1.0000000000008p+0, false,
18254- true,
18255- 0x1.0000000000008p+0, false,
18256- 0x1.0000000000008p+0, false,
18257- 0x1.0000000000008p+0, false,
18258- 0x1.0000000000008p+0, false),
18259+ 0x1p+0, false, false,
18260+ 0x1p+0, false, false,
18261+ 0x1p+0, false, false,
18262+ 0x1.000002p+0, false, false,
18263+ true,
18264+ 0x1.0000000000008p+0, false, false,
18265+ 0x1.0000000000008p+0, false, false,
18266+ 0x1.0000000000008p+0, false, false,
18267+ 0x1.0000000000008p+0, false, false,
18268+ true,
18269+ 0x1.0000000000008p+0, false, false,
18270+ 0x1.0000000000008p+0, false, false,
18271+ 0x1.0000000000008p+0, false, false,
18272+ 0x1.0000000000008p+0, false, false,
18273+ true,
18274+ 0x1.0000000000008p+0, false, false,
18275+ 0x1.0000000000008p+0, false, false,
18276+ 0x1.0000000000008p+0, false, false,
18277+ 0x1.0000000000008p+0, false, false,
18278+ true,
18279+ 0x1.0000000000008p+0, false, false,
18280+ 0x1.0000000000008p+0, false, false,
18281+ 0x1.0000000000008p+0, false, false,
18282+ 0x1.0000000000008p+0, false, false,
18283+ true,
18284+ 0x1.0000000000008p+0, false, false,
18285+ 0x1.0000000000008p+0, false, false,
18286+ 0x1.0000000000008p+0, false, false,
18287+ 0x1.0000000000008p+0, false, false),
18288 TEST ("1.00000000000000088817841970012523233890533447265625",
18289 false,
18290- 0x1p+0, false,
18291- 0x1p+0, false,
18292- 0x1p+0, false,
18293- 0x1.000002p+0, false,
18294- true,
18295- 0x1.0000000000004p+0, false,
18296- 0x1.0000000000004p+0, false,
18297- 0x1.0000000000004p+0, false,
18298- 0x1.0000000000004p+0, false,
18299- true,
18300- 0x1.0000000000004p+0, false,
18301- 0x1.0000000000004p+0, false,
18302- 0x1.0000000000004p+0, false,
18303- 0x1.0000000000004p+0, false,
18304- true,
18305- 0x1.0000000000004p+0, false,
18306- 0x1.0000000000004p+0, false,
18307- 0x1.0000000000004p+0, false,
18308- 0x1.0000000000004p+0, false,
18309- true,
18310- 0x1.0000000000004p+0, false,
18311- 0x1.0000000000004p+0, false,
18312- 0x1.0000000000004p+0, false,
18313- 0x1.0000000000004p+0, false,
18314- true,
18315- 0x1.0000000000004p+0, false,
18316- 0x1.0000000000004p+0, false,
18317- 0x1.0000000000004p+0, false,
18318- 0x1.0000000000004p+0, false),
18319+ 0x1p+0, false, false,
18320+ 0x1p+0, false, false,
18321+ 0x1p+0, false, false,
18322+ 0x1.000002p+0, false, false,
18323+ true,
18324+ 0x1.0000000000004p+0, false, false,
18325+ 0x1.0000000000004p+0, false, false,
18326+ 0x1.0000000000004p+0, false, false,
18327+ 0x1.0000000000004p+0, false, false,
18328+ true,
18329+ 0x1.0000000000004p+0, false, false,
18330+ 0x1.0000000000004p+0, false, false,
18331+ 0x1.0000000000004p+0, false, false,
18332+ 0x1.0000000000004p+0, false, false,
18333+ true,
18334+ 0x1.0000000000004p+0, false, false,
18335+ 0x1.0000000000004p+0, false, false,
18336+ 0x1.0000000000004p+0, false, false,
18337+ 0x1.0000000000004p+0, false, false,
18338+ true,
18339+ 0x1.0000000000004p+0, false, false,
18340+ 0x1.0000000000004p+0, false, false,
18341+ 0x1.0000000000004p+0, false, false,
18342+ 0x1.0000000000004p+0, false, false,
18343+ true,
18344+ 0x1.0000000000004p+0, false, false,
18345+ 0x1.0000000000004p+0, false, false,
18346+ 0x1.0000000000004p+0, false, false,
18347+ 0x1.0000000000004p+0, false, false),
18348 TEST ("1.000000000000000444089209850062616169452667236328125",
18349 false,
18350- 0x1p+0, false,
18351- 0x1p+0, false,
18352- 0x1p+0, false,
18353- 0x1.000002p+0, false,
18354- true,
18355- 0x1.0000000000002p+0, false,
18356- 0x1.0000000000002p+0, false,
18357- 0x1.0000000000002p+0, false,
18358- 0x1.0000000000002p+0, false,
18359- true,
18360- 0x1.0000000000002p+0, false,
18361- 0x1.0000000000002p+0, false,
18362- 0x1.0000000000002p+0, false,
18363- 0x1.0000000000002p+0, false,
18364- true,
18365- 0x1.0000000000002p+0, false,
18366- 0x1.0000000000002p+0, false,
18367- 0x1.0000000000002p+0, false,
18368- 0x1.0000000000002p+0, false,
18369- true,
18370- 0x1.0000000000002p+0, false,
18371- 0x1.0000000000002p+0, false,
18372- 0x1.0000000000002p+0, false,
18373- 0x1.0000000000002p+0, false,
18374- true,
18375- 0x1.0000000000002p+0, false,
18376- 0x1.0000000000002p+0, false,
18377- 0x1.0000000000002p+0, false,
18378- 0x1.0000000000002p+0, false),
18379+ 0x1p+0, false, false,
18380+ 0x1p+0, false, false,
18381+ 0x1p+0, false, false,
18382+ 0x1.000002p+0, false, false,
18383+ true,
18384+ 0x1.0000000000002p+0, false, false,
18385+ 0x1.0000000000002p+0, false, false,
18386+ 0x1.0000000000002p+0, false, false,
18387+ 0x1.0000000000002p+0, false, false,
18388+ true,
18389+ 0x1.0000000000002p+0, false, false,
18390+ 0x1.0000000000002p+0, false, false,
18391+ 0x1.0000000000002p+0, false, false,
18392+ 0x1.0000000000002p+0, false, false,
18393+ true,
18394+ 0x1.0000000000002p+0, false, false,
18395+ 0x1.0000000000002p+0, false, false,
18396+ 0x1.0000000000002p+0, false, false,
18397+ 0x1.0000000000002p+0, false, false,
18398+ true,
18399+ 0x1.0000000000002p+0, false, false,
18400+ 0x1.0000000000002p+0, false, false,
18401+ 0x1.0000000000002p+0, false, false,
18402+ 0x1.0000000000002p+0, false, false,
18403+ true,
18404+ 0x1.0000000000002p+0, false, false,
18405+ 0x1.0000000000002p+0, false, false,
18406+ 0x1.0000000000002p+0, false, false,
18407+ 0x1.0000000000002p+0, false, false),
18408 TEST ("1.0000000000000002220446049250313080847263336181640625",
18409 false,
18410- 0x1p+0, false,
18411- 0x1p+0, false,
18412- 0x1p+0, false,
18413- 0x1.000002p+0, false,
18414- true,
18415- 0x1.0000000000001p+0, false,
18416- 0x1.0000000000001p+0, false,
18417- 0x1.0000000000001p+0, false,
18418- 0x1.0000000000001p+0, false,
18419- true,
18420- 0x1.0000000000001p+0, false,
18421- 0x1.0000000000001p+0, false,
18422- 0x1.0000000000001p+0, false,
18423- 0x1.0000000000001p+0, false,
18424- true,
18425- 0x1.0000000000001p+0, false,
18426- 0x1.0000000000001p+0, false,
18427- 0x1.0000000000001p+0, false,
18428- 0x1.0000000000001p+0, false,
18429- true,
18430- 0x1.0000000000001p+0, false,
18431- 0x1.0000000000001p+0, false,
18432- 0x1.0000000000001p+0, false,
18433- 0x1.0000000000001p+0, false,
18434- true,
18435- 0x1.0000000000001p+0, false,
18436- 0x1.0000000000001p+0, false,
18437- 0x1.0000000000001p+0, false,
18438- 0x1.0000000000001p+0, false),
18439+ 0x1p+0, false, false,
18440+ 0x1p+0, false, false,
18441+ 0x1p+0, false, false,
18442+ 0x1.000002p+0, false, false,
18443+ true,
18444+ 0x1.0000000000001p+0, false, false,
18445+ 0x1.0000000000001p+0, false, false,
18446+ 0x1.0000000000001p+0, false, false,
18447+ 0x1.0000000000001p+0, false, false,
18448+ true,
18449+ 0x1.0000000000001p+0, false, false,
18450+ 0x1.0000000000001p+0, false, false,
18451+ 0x1.0000000000001p+0, false, false,
18452+ 0x1.0000000000001p+0, false, false,
18453+ true,
18454+ 0x1.0000000000001p+0, false, false,
18455+ 0x1.0000000000001p+0, false, false,
18456+ 0x1.0000000000001p+0, false, false,
18457+ 0x1.0000000000001p+0, false, false,
18458+ true,
18459+ 0x1.0000000000001p+0, false, false,
18460+ 0x1.0000000000001p+0, false, false,
18461+ 0x1.0000000000001p+0, false, false,
18462+ 0x1.0000000000001p+0, false, false,
18463+ true,
18464+ 0x1.0000000000001p+0, false, false,
18465+ 0x1.0000000000001p+0, false, false,
18466+ 0x1.0000000000001p+0, false, false,
18467+ 0x1.0000000000001p+0, false, false),
18468 TEST ("1.00000000000000011102230246251565404236316680908203125",
18469 false,
18470- 0x1p+0, false,
18471- 0x1p+0, false,
18472- 0x1p+0, false,
18473- 0x1.000002p+0, false,
18474- false,
18475- 0x1p+0, false,
18476- 0x1p+0, false,
18477- 0x1p+0, false,
18478- 0x1.0000000000001p+0, false,
18479- true,
18480- 0x1.00000000000008p+0, false,
18481- 0x1.00000000000008p+0, false,
18482- 0x1.00000000000008p+0, false,
18483- 0x1.00000000000008p+0, false,
18484- true,
18485- 0x1.00000000000008p+0, false,
18486- 0x1.00000000000008p+0, false,
18487- 0x1.00000000000008p+0, false,
18488- 0x1.00000000000008p+0, false,
18489- true,
18490- 0x1.00000000000008p+0, false,
18491- 0x1.00000000000008p+0, false,
18492- 0x1.00000000000008p+0, false,
18493- 0x1.00000000000008p+0, false,
18494- true,
18495- 0x1.00000000000008p+0, false,
18496- 0x1.00000000000008p+0, false,
18497- 0x1.00000000000008p+0, false,
18498- 0x1.00000000000008p+0, false),
18499+ 0x1p+0, false, false,
18500+ 0x1p+0, false, false,
18501+ 0x1p+0, false, false,
18502+ 0x1.000002p+0, false, false,
18503+ false,
18504+ 0x1p+0, false, false,
18505+ 0x1p+0, false, false,
18506+ 0x1p+0, false, false,
18507+ 0x1.0000000000001p+0, false, false,
18508+ true,
18509+ 0x1.00000000000008p+0, false, false,
18510+ 0x1.00000000000008p+0, false, false,
18511+ 0x1.00000000000008p+0, false, false,
18512+ 0x1.00000000000008p+0, false, false,
18513+ true,
18514+ 0x1.00000000000008p+0, false, false,
18515+ 0x1.00000000000008p+0, false, false,
18516+ 0x1.00000000000008p+0, false, false,
18517+ 0x1.00000000000008p+0, false, false,
18518+ true,
18519+ 0x1.00000000000008p+0, false, false,
18520+ 0x1.00000000000008p+0, false, false,
18521+ 0x1.00000000000008p+0, false, false,
18522+ 0x1.00000000000008p+0, false, false,
18523+ true,
18524+ 0x1.00000000000008p+0, false, false,
18525+ 0x1.00000000000008p+0, false, false,
18526+ 0x1.00000000000008p+0, false, false,
18527+ 0x1.00000000000008p+0, false, false),
18528 TEST ("1.000000000000000055511151231257827021181583404541015625",
18529 false,
18530- 0x1p+0, false,
18531- 0x1p+0, false,
18532- 0x1p+0, false,
18533- 0x1.000002p+0, false,
18534- false,
18535- 0x1p+0, false,
18536- 0x1p+0, false,
18537- 0x1p+0, false,
18538- 0x1.0000000000001p+0, false,
18539- true,
18540- 0x1.00000000000004p+0, false,
18541- 0x1.00000000000004p+0, false,
18542- 0x1.00000000000004p+0, false,
18543- 0x1.00000000000004p+0, false,
18544- true,
18545- 0x1.00000000000004p+0, false,
18546- 0x1.00000000000004p+0, false,
18547- 0x1.00000000000004p+0, false,
18548- 0x1.00000000000004p+0, false,
18549- true,
18550- 0x1.00000000000004p+0, false,
18551- 0x1.00000000000004p+0, false,
18552- 0x1.00000000000004p+0, false,
18553- 0x1.00000000000004p+0, false,
18554- true,
18555- 0x1.00000000000004p+0, false,
18556- 0x1.00000000000004p+0, false,
18557- 0x1.00000000000004p+0, false,
18558- 0x1.00000000000004p+0, false),
18559+ 0x1p+0, false, false,
18560+ 0x1p+0, false, false,
18561+ 0x1p+0, false, false,
18562+ 0x1.000002p+0, false, false,
18563+ false,
18564+ 0x1p+0, false, false,
18565+ 0x1p+0, false, false,
18566+ 0x1p+0, false, false,
18567+ 0x1.0000000000001p+0, false, false,
18568+ true,
18569+ 0x1.00000000000004p+0, false, false,
18570+ 0x1.00000000000004p+0, false, false,
18571+ 0x1.00000000000004p+0, false, false,
18572+ 0x1.00000000000004p+0, false, false,
18573+ true,
18574+ 0x1.00000000000004p+0, false, false,
18575+ 0x1.00000000000004p+0, false, false,
18576+ 0x1.00000000000004p+0, false, false,
18577+ 0x1.00000000000004p+0, false, false,
18578+ true,
18579+ 0x1.00000000000004p+0, false, false,
18580+ 0x1.00000000000004p+0, false, false,
18581+ 0x1.00000000000004p+0, false, false,
18582+ 0x1.00000000000004p+0, false, false,
18583+ true,
18584+ 0x1.00000000000004p+0, false, false,
18585+ 0x1.00000000000004p+0, false, false,
18586+ 0x1.00000000000004p+0, false, false,
18587+ 0x1.00000000000004p+0, false, false),
18588 TEST ("1.0000000000000000277555756156289135105907917022705078125",
18589 false,
18590- 0x1p+0, false,
18591- 0x1p+0, false,
18592- 0x1p+0, false,
18593- 0x1.000002p+0, false,
18594- false,
18595- 0x1p+0, false,
18596- 0x1p+0, false,
18597- 0x1p+0, false,
18598- 0x1.0000000000001p+0, false,
18599- true,
18600- 0x1.00000000000002p+0, false,
18601- 0x1.00000000000002p+0, false,
18602- 0x1.00000000000002p+0, false,
18603- 0x1.00000000000002p+0, false,
18604- true,
18605- 0x1.00000000000002p+0, false,
18606- 0x1.00000000000002p+0, false,
18607- 0x1.00000000000002p+0, false,
18608- 0x1.00000000000002p+0, false,
18609- true,
18610- 0x1.00000000000002p+0, false,
18611- 0x1.00000000000002p+0, false,
18612- 0x1.00000000000002p+0, false,
18613- 0x1.00000000000002p+0, false,
18614- true,
18615- 0x1.00000000000002p+0, false,
18616- 0x1.00000000000002p+0, false,
18617- 0x1.00000000000002p+0, false,
18618- 0x1.00000000000002p+0, false),
18619+ 0x1p+0, false, false,
18620+ 0x1p+0, false, false,
18621+ 0x1p+0, false, false,
18622+ 0x1.000002p+0, false, false,
18623+ false,
18624+ 0x1p+0, false, false,
18625+ 0x1p+0, false, false,
18626+ 0x1p+0, false, false,
18627+ 0x1.0000000000001p+0, false, false,
18628+ true,
18629+ 0x1.00000000000002p+0, false, false,
18630+ 0x1.00000000000002p+0, false, false,
18631+ 0x1.00000000000002p+0, false, false,
18632+ 0x1.00000000000002p+0, false, false,
18633+ true,
18634+ 0x1.00000000000002p+0, false, false,
18635+ 0x1.00000000000002p+0, false, false,
18636+ 0x1.00000000000002p+0, false, false,
18637+ 0x1.00000000000002p+0, false, false,
18638+ true,
18639+ 0x1.00000000000002p+0, false, false,
18640+ 0x1.00000000000002p+0, false, false,
18641+ 0x1.00000000000002p+0, false, false,
18642+ 0x1.00000000000002p+0, false, false,
18643+ true,
18644+ 0x1.00000000000002p+0, false, false,
18645+ 0x1.00000000000002p+0, false, false,
18646+ 0x1.00000000000002p+0, false, false,
18647+ 0x1.00000000000002p+0, false, false),
18648 TEST ("1.00000000000000001387778780781445675529539585113525390625",
18649 false,
18650- 0x1p+0, false,
18651- 0x1p+0, false,
18652- 0x1p+0, false,
18653- 0x1.000002p+0, false,
18654- false,
18655- 0x1p+0, false,
18656- 0x1p+0, false,
18657- 0x1p+0, false,
18658- 0x1.0000000000001p+0, false,
18659- true,
18660- 0x1.00000000000001p+0, false,
18661- 0x1.00000000000001p+0, false,
18662- 0x1.00000000000001p+0, false,
18663- 0x1.00000000000001p+0, false,
18664- true,
18665- 0x1.00000000000001p+0, false,
18666- 0x1.00000000000001p+0, false,
18667- 0x1.00000000000001p+0, false,
18668- 0x1.00000000000001p+0, false,
18669- true,
18670- 0x1.00000000000001p+0, false,
18671- 0x1.00000000000001p+0, false,
18672- 0x1.00000000000001p+0, false,
18673- 0x1.00000000000001p+0, false,
18674- true,
18675- 0x1.00000000000001p+0, false,
18676- 0x1.00000000000001p+0, false,
18677- 0x1.00000000000001p+0, false,
18678- 0x1.00000000000001p+0, false),
18679+ 0x1p+0, false, false,
18680+ 0x1p+0, false, false,
18681+ 0x1p+0, false, false,
18682+ 0x1.000002p+0, false, false,
18683+ false,
18684+ 0x1p+0, false, false,
18685+ 0x1p+0, false, false,
18686+ 0x1p+0, false, false,
18687+ 0x1.0000000000001p+0, false, false,
18688+ true,
18689+ 0x1.00000000000001p+0, false, false,
18690+ 0x1.00000000000001p+0, false, false,
18691+ 0x1.00000000000001p+0, false, false,
18692+ 0x1.00000000000001p+0, false, false,
18693+ true,
18694+ 0x1.00000000000001p+0, false, false,
18695+ 0x1.00000000000001p+0, false, false,
18696+ 0x1.00000000000001p+0, false, false,
18697+ 0x1.00000000000001p+0, false, false,
18698+ true,
18699+ 0x1.00000000000001p+0, false, false,
18700+ 0x1.00000000000001p+0, false, false,
18701+ 0x1.00000000000001p+0, false, false,
18702+ 0x1.00000000000001p+0, false, false,
18703+ true,
18704+ 0x1.00000000000001p+0, false, false,
18705+ 0x1.00000000000001p+0, false, false,
18706+ 0x1.00000000000001p+0, false, false,
18707+ 0x1.00000000000001p+0, false, false),
18708 TEST ("1.000000000000000006938893903907228377647697925567626953125",
18709 false,
18710- 0x1p+0, false,
18711- 0x1p+0, false,
18712- 0x1p+0, false,
18713- 0x1.000002p+0, false,
18714- false,
18715- 0x1p+0, false,
18716- 0x1p+0, false,
18717- 0x1p+0, false,
18718- 0x1.0000000000001p+0, false,
18719- true,
18720- 0x1.000000000000008p+0, false,
18721- 0x1.000000000000008p+0, false,
18722- 0x1.000000000000008p+0, false,
18723- 0x1.000000000000008p+0, false,
18724- true,
18725- 0x1.000000000000008p+0, false,
18726- 0x1.000000000000008p+0, false,
18727- 0x1.000000000000008p+0, false,
18728- 0x1.000000000000008p+0, false,
18729- true,
18730- 0x1.000000000000008p+0, false,
18731- 0x1.000000000000008p+0, false,
18732- 0x1.000000000000008p+0, false,
18733- 0x1.000000000000008p+0, false,
18734- true,
18735- 0x1.000000000000008p+0, false,
18736- 0x1.000000000000008p+0, false,
18737- 0x1.000000000000008p+0, false,
18738- 0x1.000000000000008p+0, false),
18739+ 0x1p+0, false, false,
18740+ 0x1p+0, false, false,
18741+ 0x1p+0, false, false,
18742+ 0x1.000002p+0, false, false,
18743+ false,
18744+ 0x1p+0, false, false,
18745+ 0x1p+0, false, false,
18746+ 0x1p+0, false, false,
18747+ 0x1.0000000000001p+0, false, false,
18748+ true,
18749+ 0x1.000000000000008p+0, false, false,
18750+ 0x1.000000000000008p+0, false, false,
18751+ 0x1.000000000000008p+0, false, false,
18752+ 0x1.000000000000008p+0, false, false,
18753+ true,
18754+ 0x1.000000000000008p+0, false, false,
18755+ 0x1.000000000000008p+0, false, false,
18756+ 0x1.000000000000008p+0, false, false,
18757+ 0x1.000000000000008p+0, false, false,
18758+ true,
18759+ 0x1.000000000000008p+0, false, false,
18760+ 0x1.000000000000008p+0, false, false,
18761+ 0x1.000000000000008p+0, false, false,
18762+ 0x1.000000000000008p+0, false, false,
18763+ true,
18764+ 0x1.000000000000008p+0, false, false,
18765+ 0x1.000000000000008p+0, false, false,
18766+ 0x1.000000000000008p+0, false, false,
18767+ 0x1.000000000000008p+0, false, false),
18768 TEST ("1.0000000000000000034694469519536141888238489627838134765625",
18769 false,
18770- 0x1p+0, false,
18771- 0x1p+0, false,
18772- 0x1p+0, false,
18773- 0x1.000002p+0, false,
18774- false,
18775- 0x1p+0, false,
18776- 0x1p+0, false,
18777- 0x1p+0, false,
18778- 0x1.0000000000001p+0, false,
18779- true,
18780- 0x1.000000000000004p+0, false,
18781- 0x1.000000000000004p+0, false,
18782- 0x1.000000000000004p+0, false,
18783- 0x1.000000000000004p+0, false,
18784- true,
18785- 0x1.000000000000004p+0, false,
18786- 0x1.000000000000004p+0, false,
18787- 0x1.000000000000004p+0, false,
18788- 0x1.000000000000004p+0, false,
18789- true,
18790- 0x1.000000000000004p+0, false,
18791- 0x1.000000000000004p+0, false,
18792- 0x1.000000000000004p+0, false,
18793- 0x1.000000000000004p+0, false,
18794- true,
18795- 0x1.000000000000004p+0, false,
18796- 0x1.000000000000004p+0, false,
18797- 0x1.000000000000004p+0, false,
18798- 0x1.000000000000004p+0, false),
18799+ 0x1p+0, false, false,
18800+ 0x1p+0, false, false,
18801+ 0x1p+0, false, false,
18802+ 0x1.000002p+0, false, false,
18803+ false,
18804+ 0x1p+0, false, false,
18805+ 0x1p+0, false, false,
18806+ 0x1p+0, false, false,
18807+ 0x1.0000000000001p+0, false, false,
18808+ true,
18809+ 0x1.000000000000004p+0, false, false,
18810+ 0x1.000000000000004p+0, false, false,
18811+ 0x1.000000000000004p+0, false, false,
18812+ 0x1.000000000000004p+0, false, false,
18813+ true,
18814+ 0x1.000000000000004p+0, false, false,
18815+ 0x1.000000000000004p+0, false, false,
18816+ 0x1.000000000000004p+0, false, false,
18817+ 0x1.000000000000004p+0, false, false,
18818+ true,
18819+ 0x1.000000000000004p+0, false, false,
18820+ 0x1.000000000000004p+0, false, false,
18821+ 0x1.000000000000004p+0, false, false,
18822+ 0x1.000000000000004p+0, false, false,
18823+ true,
18824+ 0x1.000000000000004p+0, false, false,
18825+ 0x1.000000000000004p+0, false, false,
18826+ 0x1.000000000000004p+0, false, false,
18827+ 0x1.000000000000004p+0, false, false),
18828 TEST ("1.0000000000000000017347234759768070944119244813919067382812"
18829 "5",
18830 false,
18831- 0x1p+0, false,
18832- 0x1p+0, false,
18833- 0x1p+0, false,
18834- 0x1.000002p+0, false,
18835- false,
18836- 0x1p+0, false,
18837- 0x1p+0, false,
18838- 0x1p+0, false,
18839- 0x1.0000000000001p+0, false,
18840- true,
18841- 0x1.000000000000002p+0, false,
18842- 0x1.000000000000002p+0, false,
18843- 0x1.000000000000002p+0, false,
18844- 0x1.000000000000002p+0, false,
18845- true,
18846- 0x1.000000000000002p+0, false,
18847- 0x1.000000000000002p+0, false,
18848- 0x1.000000000000002p+0, false,
18849- 0x1.000000000000002p+0, false,
18850- true,
18851- 0x1.000000000000002p+0, false,
18852- 0x1.000000000000002p+0, false,
18853- 0x1.000000000000002p+0, false,
18854- 0x1.000000000000002p+0, false,
18855- true,
18856- 0x1.000000000000002p+0, false,
18857- 0x1.000000000000002p+0, false,
18858- 0x1.000000000000002p+0, false,
18859- 0x1.000000000000002p+0, false),
18860+ 0x1p+0, false, false,
18861+ 0x1p+0, false, false,
18862+ 0x1p+0, false, false,
18863+ 0x1.000002p+0, false, false,
18864+ false,
18865+ 0x1p+0, false, false,
18866+ 0x1p+0, false, false,
18867+ 0x1p+0, false, false,
18868+ 0x1.0000000000001p+0, false, false,
18869+ true,
18870+ 0x1.000000000000002p+0, false, false,
18871+ 0x1.000000000000002p+0, false, false,
18872+ 0x1.000000000000002p+0, false, false,
18873+ 0x1.000000000000002p+0, false, false,
18874+ true,
18875+ 0x1.000000000000002p+0, false, false,
18876+ 0x1.000000000000002p+0, false, false,
18877+ 0x1.000000000000002p+0, false, false,
18878+ 0x1.000000000000002p+0, false, false,
18879+ true,
18880+ 0x1.000000000000002p+0, false, false,
18881+ 0x1.000000000000002p+0, false, false,
18882+ 0x1.000000000000002p+0, false, false,
18883+ 0x1.000000000000002p+0, false, false,
18884+ true,
18885+ 0x1.000000000000002p+0, false, false,
18886+ 0x1.000000000000002p+0, false, false,
18887+ 0x1.000000000000002p+0, false, false,
18888+ 0x1.000000000000002p+0, false, false),
18889 TEST ("1.0000000000000000008673617379884035472059622406959533691406"
18890 "25",
18891 false,
18892- 0x1p+0, false,
18893- 0x1p+0, false,
18894- 0x1p+0, false,
18895- 0x1.000002p+0, false,
18896- false,
18897- 0x1p+0, false,
18898- 0x1p+0, false,
18899- 0x1p+0, false,
18900- 0x1.0000000000001p+0, false,
18901- true,
18902- 0x1.000000000000001p+0, false,
18903- 0x1.000000000000001p+0, false,
18904- 0x1.000000000000001p+0, false,
18905- 0x1.000000000000001p+0, false,
18906- true,
18907- 0x1.000000000000001p+0, false,
18908- 0x1.000000000000001p+0, false,
18909- 0x1.000000000000001p+0, false,
18910- 0x1.000000000000001p+0, false,
18911- true,
18912- 0x1.000000000000001p+0, false,
18913- 0x1.000000000000001p+0, false,
18914- 0x1.000000000000001p+0, false,
18915- 0x1.000000000000001p+0, false,
18916- true,
18917- 0x1.000000000000001p+0, false,
18918- 0x1.000000000000001p+0, false,
18919- 0x1.000000000000001p+0, false,
18920- 0x1.000000000000001p+0, false),
18921+ 0x1p+0, false, false,
18922+ 0x1p+0, false, false,
18923+ 0x1p+0, false, false,
18924+ 0x1.000002p+0, false, false,
18925+ false,
18926+ 0x1p+0, false, false,
18927+ 0x1p+0, false, false,
18928+ 0x1p+0, false, false,
18929+ 0x1.0000000000001p+0, false, false,
18930+ true,
18931+ 0x1.000000000000001p+0, false, false,
18932+ 0x1.000000000000001p+0, false, false,
18933+ 0x1.000000000000001p+0, false, false,
18934+ 0x1.000000000000001p+0, false, false,
18935+ true,
18936+ 0x1.000000000000001p+0, false, false,
18937+ 0x1.000000000000001p+0, false, false,
18938+ 0x1.000000000000001p+0, false, false,
18939+ 0x1.000000000000001p+0, false, false,
18940+ true,
18941+ 0x1.000000000000001p+0, false, false,
18942+ 0x1.000000000000001p+0, false, false,
18943+ 0x1.000000000000001p+0, false, false,
18944+ 0x1.000000000000001p+0, false, false,
18945+ true,
18946+ 0x1.000000000000001p+0, false, false,
18947+ 0x1.000000000000001p+0, false, false,
18948+ 0x1.000000000000001p+0, false, false,
18949+ 0x1.000000000000001p+0, false, false),
18950 TEST ("1.0000000000000000004336808689942017736029811203479766845703"
18951 "125",
18952 false,
18953- 0x1p+0, false,
18954- 0x1p+0, false,
18955- 0x1p+0, false,
18956- 0x1.000002p+0, false,
18957- false,
18958- 0x1p+0, false,
18959- 0x1p+0, false,
18960- 0x1p+0, false,
18961- 0x1.0000000000001p+0, false,
18962- true,
18963- 0x1.0000000000000008p+0, false,
18964- 0x1.0000000000000008p+0, false,
18965- 0x1.0000000000000008p+0, false,
18966- 0x1.0000000000000008p+0, false,
18967- true,
18968- 0x1.0000000000000008p+0, false,
18969- 0x1.0000000000000008p+0, false,
18970- 0x1.0000000000000008p+0, false,
18971- 0x1.0000000000000008p+0, false,
18972- true,
18973- 0x1.0000000000000008p+0, false,
18974- 0x1.0000000000000008p+0, false,
18975- 0x1.0000000000000008p+0, false,
18976- 0x1.0000000000000008p+0, false,
18977- true,
18978- 0x1.0000000000000008p+0, false,
18979- 0x1.0000000000000008p+0, false,
18980- 0x1.0000000000000008p+0, false,
18981- 0x1.0000000000000008p+0, false),
18982+ 0x1p+0, false, false,
18983+ 0x1p+0, false, false,
18984+ 0x1p+0, false, false,
18985+ 0x1.000002p+0, false, false,
18986+ false,
18987+ 0x1p+0, false, false,
18988+ 0x1p+0, false, false,
18989+ 0x1p+0, false, false,
18990+ 0x1.0000000000001p+0, false, false,
18991+ true,
18992+ 0x1.0000000000000008p+0, false, false,
18993+ 0x1.0000000000000008p+0, false, false,
18994+ 0x1.0000000000000008p+0, false, false,
18995+ 0x1.0000000000000008p+0, false, false,
18996+ true,
18997+ 0x1.0000000000000008p+0, false, false,
18998+ 0x1.0000000000000008p+0, false, false,
18999+ 0x1.0000000000000008p+0, false, false,
19000+ 0x1.0000000000000008p+0, false, false,
19001+ true,
19002+ 0x1.0000000000000008p+0, false, false,
19003+ 0x1.0000000000000008p+0, false, false,
19004+ 0x1.0000000000000008p+0, false, false,
19005+ 0x1.0000000000000008p+0, false, false,
19006+ true,
19007+ 0x1.0000000000000008p+0, false, false,
19008+ 0x1.0000000000000008p+0, false, false,
19009+ 0x1.0000000000000008p+0, false, false,
19010+ 0x1.0000000000000008p+0, false, false),
19011 TEST ("1.0000000000000000002168404344971008868014905601739883422851"
19012 "5625",
19013 false,
19014- 0x1p+0, false,
19015- 0x1p+0, false,
19016- 0x1p+0, false,
19017- 0x1.000002p+0, false,
19018- false,
19019- 0x1p+0, false,
19020- 0x1p+0, false,
19021- 0x1p+0, false,
19022- 0x1.0000000000001p+0, false,
19023- true,
19024- 0x1.0000000000000004p+0, false,
19025- 0x1.0000000000000004p+0, false,
19026- 0x1.0000000000000004p+0, false,
19027- 0x1.0000000000000004p+0, false,
19028- true,
19029- 0x1.0000000000000004p+0, false,
19030- 0x1.0000000000000004p+0, false,
19031- 0x1.0000000000000004p+0, false,
19032- 0x1.0000000000000004p+0, false,
19033- true,
19034- 0x1.0000000000000004p+0, false,
19035- 0x1.0000000000000004p+0, false,
19036- 0x1.0000000000000004p+0, false,
19037- 0x1.0000000000000004p+0, false,
19038- true,
19039- 0x1.0000000000000004p+0, false,
19040- 0x1.0000000000000004p+0, false,
19041- 0x1.0000000000000004p+0, false,
19042- 0x1.0000000000000004p+0, false),
19043+ 0x1p+0, false, false,
19044+ 0x1p+0, false, false,
19045+ 0x1p+0, false, false,
19046+ 0x1.000002p+0, false, false,
19047+ false,
19048+ 0x1p+0, false, false,
19049+ 0x1p+0, false, false,
19050+ 0x1p+0, false, false,
19051+ 0x1.0000000000001p+0, false, false,
19052+ true,
19053+ 0x1.0000000000000004p+0, false, false,
19054+ 0x1.0000000000000004p+0, false, false,
19055+ 0x1.0000000000000004p+0, false, false,
19056+ 0x1.0000000000000004p+0, false, false,
19057+ true,
19058+ 0x1.0000000000000004p+0, false, false,
19059+ 0x1.0000000000000004p+0, false, false,
19060+ 0x1.0000000000000004p+0, false, false,
19061+ 0x1.0000000000000004p+0, false, false,
19062+ true,
19063+ 0x1.0000000000000004p+0, false, false,
19064+ 0x1.0000000000000004p+0, false, false,
19065+ 0x1.0000000000000004p+0, false, false,
19066+ 0x1.0000000000000004p+0, false, false,
19067+ true,
19068+ 0x1.0000000000000004p+0, false, false,
19069+ 0x1.0000000000000004p+0, false, false,
19070+ 0x1.0000000000000004p+0, false, false,
19071+ 0x1.0000000000000004p+0, false, false),
19072 TEST ("1.0000000000000000001084202172485504434007452800869941711425"
19073 "78125",
19074 false,
19075- 0x1p+0, false,
19076- 0x1p+0, false,
19077- 0x1p+0, false,
19078- 0x1.000002p+0, false,
19079- false,
19080- 0x1p+0, false,
19081- 0x1p+0, false,
19082- 0x1p+0, false,
19083- 0x1.0000000000001p+0, false,
19084- true,
19085- 0x1.0000000000000002p+0, false,
19086- 0x1.0000000000000002p+0, false,
19087- 0x1.0000000000000002p+0, false,
19088- 0x1.0000000000000002p+0, false,
19089- true,
19090- 0x1.0000000000000002p+0, false,
19091- 0x1.0000000000000002p+0, false,
19092- 0x1.0000000000000002p+0, false,
19093- 0x1.0000000000000002p+0, false,
19094- true,
19095- 0x1.0000000000000002p+0, false,
19096- 0x1.0000000000000002p+0, false,
19097- 0x1.0000000000000002p+0, false,
19098- 0x1.0000000000000002p+0, false,
19099- true,
19100- 0x1.0000000000000002p+0, false,
19101- 0x1.0000000000000002p+0, false,
19102- 0x1.0000000000000002p+0, false,
19103- 0x1.0000000000000002p+0, false),
19104+ 0x1p+0, false, false,
19105+ 0x1p+0, false, false,
19106+ 0x1p+0, false, false,
19107+ 0x1.000002p+0, false, false,
19108+ false,
19109+ 0x1p+0, false, false,
19110+ 0x1p+0, false, false,
19111+ 0x1p+0, false, false,
19112+ 0x1.0000000000001p+0, false, false,
19113+ true,
19114+ 0x1.0000000000000002p+0, false, false,
19115+ 0x1.0000000000000002p+0, false, false,
19116+ 0x1.0000000000000002p+0, false, false,
19117+ 0x1.0000000000000002p+0, false, false,
19118+ true,
19119+ 0x1.0000000000000002p+0, false, false,
19120+ 0x1.0000000000000002p+0, false, false,
19121+ 0x1.0000000000000002p+0, false, false,
19122+ 0x1.0000000000000002p+0, false, false,
19123+ true,
19124+ 0x1.0000000000000002p+0, false, false,
19125+ 0x1.0000000000000002p+0, false, false,
19126+ 0x1.0000000000000002p+0, false, false,
19127+ 0x1.0000000000000002p+0, false, false,
19128+ true,
19129+ 0x1.0000000000000002p+0, false, false,
19130+ 0x1.0000000000000002p+0, false, false,
19131+ 0x1.0000000000000002p+0, false, false,
19132+ 0x1.0000000000000002p+0, false, false),
19133 TEST ("1.0000000000000000000542101086242752217003726400434970855712"
19134 "890625",
19135 false,
19136- 0x1p+0, false,
19137- 0x1p+0, false,
19138- 0x1p+0, false,
19139- 0x1.000002p+0, false,
19140- false,
19141- 0x1p+0, false,
19142- 0x1p+0, false,
19143- 0x1p+0, false,
19144- 0x1.0000000000001p+0, false,
19145- false,
19146- 0x1p+0, false,
19147- 0x1p+0, false,
19148- 0x1p+0, false,
19149- 0x1.0000000000000002p+0, false,
19150- false,
19151- 0x1p+0, false,
19152- 0x1p+0, false,
19153- 0x1p+0, false,
19154- 0x1.0000000000000002p+0, false,
19155- true,
19156- 0x1.0000000000000001p+0, false,
19157- 0x1.0000000000000001p+0, false,
19158- 0x1.0000000000000001p+0, false,
19159- 0x1.0000000000000001p+0, false,
19160- true,
19161- 0x1.0000000000000001p+0, false,
19162- 0x1.0000000000000001p+0, false,
19163- 0x1.0000000000000001p+0, false,
19164- 0x1.0000000000000001p+0, false),
19165+ 0x1p+0, false, false,
19166+ 0x1p+0, false, false,
19167+ 0x1p+0, false, false,
19168+ 0x1.000002p+0, false, false,
19169+ false,
19170+ 0x1p+0, false, false,
19171+ 0x1p+0, false, false,
19172+ 0x1p+0, false, false,
19173+ 0x1.0000000000001p+0, false, false,
19174+ false,
19175+ 0x1p+0, false, false,
19176+ 0x1p+0, false, false,
19177+ 0x1p+0, false, false,
19178+ 0x1.0000000000000002p+0, false, false,
19179+ false,
19180+ 0x1p+0, false, false,
19181+ 0x1p+0, false, false,
19182+ 0x1p+0, false, false,
19183+ 0x1.0000000000000002p+0, false, false,
19184+ true,
19185+ 0x1.0000000000000001p+0, false, false,
19186+ 0x1.0000000000000001p+0, false, false,
19187+ 0x1.0000000000000001p+0, false, false,
19188+ 0x1.0000000000000001p+0, false, false,
19189+ true,
19190+ 0x1.0000000000000001p+0, false, false,
19191+ 0x1.0000000000000001p+0, false, false,
19192+ 0x1.0000000000000001p+0, false, false,
19193+ 0x1.0000000000000001p+0, false, false),
19194 TEST ("1.0000000000000000000271050543121376108501863200217485427856"
19195 "4453125",
19196 false,
19197- 0x1p+0, false,
19198- 0x1p+0, false,
19199- 0x1p+0, false,
19200- 0x1.000002p+0, false,
19201- false,
19202- 0x1p+0, false,
19203- 0x1p+0, false,
19204- 0x1p+0, false,
19205- 0x1.0000000000001p+0, false,
19206- false,
19207- 0x1p+0, false,
19208- 0x1p+0, false,
19209- 0x1p+0, false,
19210- 0x1.0000000000000002p+0, false,
19211- false,
19212- 0x1p+0, false,
19213- 0x1p+0, false,
19214- 0x1p+0, false,
19215- 0x1.0000000000000002p+0, false,
19216- true,
19217- 0x1.00000000000000008p+0, false,
19218- 0x1.00000000000000008p+0, false,
19219- 0x1.00000000000000008p+0, false,
19220- 0x1.00000000000000008p+0, false,
19221- true,
19222- 0x1.00000000000000008p+0, false,
19223- 0x1.00000000000000008p+0, false,
19224- 0x1.00000000000000008p+0, false,
19225- 0x1.00000000000000008p+0, false),
19226+ 0x1p+0, false, false,
19227+ 0x1p+0, false, false,
19228+ 0x1p+0, false, false,
19229+ 0x1.000002p+0, false, false,
19230+ false,
19231+ 0x1p+0, false, false,
19232+ 0x1p+0, false, false,
19233+ 0x1p+0, false, false,
19234+ 0x1.0000000000001p+0, false, false,
19235+ false,
19236+ 0x1p+0, false, false,
19237+ 0x1p+0, false, false,
19238+ 0x1p+0, false, false,
19239+ 0x1.0000000000000002p+0, false, false,
19240+ false,
19241+ 0x1p+0, false, false,
19242+ 0x1p+0, false, false,
19243+ 0x1p+0, false, false,
19244+ 0x1.0000000000000002p+0, false, false,
19245+ true,
19246+ 0x1.00000000000000008p+0, false, false,
19247+ 0x1.00000000000000008p+0, false, false,
19248+ 0x1.00000000000000008p+0, false, false,
19249+ 0x1.00000000000000008p+0, false, false,
19250+ true,
19251+ 0x1.00000000000000008p+0, false, false,
19252+ 0x1.00000000000000008p+0, false, false,
19253+ 0x1.00000000000000008p+0, false, false,
19254+ 0x1.00000000000000008p+0, false, false),
19255 TEST ("1.0000000000000000000135525271560688054250931600108742713928"
19256 "22265625",
19257 false,
19258- 0x1p+0, false,
19259- 0x1p+0, false,
19260- 0x1p+0, false,
19261- 0x1.000002p+0, false,
19262- false,
19263- 0x1p+0, false,
19264- 0x1p+0, false,
19265- 0x1p+0, false,
19266- 0x1.0000000000001p+0, false,
19267- false,
19268- 0x1p+0, false,
19269- 0x1p+0, false,
19270- 0x1p+0, false,
19271- 0x1.0000000000000002p+0, false,
19272- false,
19273- 0x1p+0, false,
19274- 0x1p+0, false,
19275- 0x1p+0, false,
19276- 0x1.0000000000000002p+0, false,
19277- true,
19278- 0x1.00000000000000004p+0, false,
19279- 0x1.00000000000000004p+0, false,
19280- 0x1.00000000000000004p+0, false,
19281- 0x1.00000000000000004p+0, false,
19282- true,
19283- 0x1.00000000000000004p+0, false,
19284- 0x1.00000000000000004p+0, false,
19285- 0x1.00000000000000004p+0, false,
19286- 0x1.00000000000000004p+0, false),
19287+ 0x1p+0, false, false,
19288+ 0x1p+0, false, false,
19289+ 0x1p+0, false, false,
19290+ 0x1.000002p+0, false, false,
19291+ false,
19292+ 0x1p+0, false, false,
19293+ 0x1p+0, false, false,
19294+ 0x1p+0, false, false,
19295+ 0x1.0000000000001p+0, false, false,
19296+ false,
19297+ 0x1p+0, false, false,
19298+ 0x1p+0, false, false,
19299+ 0x1p+0, false, false,
19300+ 0x1.0000000000000002p+0, false, false,
19301+ false,
19302+ 0x1p+0, false, false,
19303+ 0x1p+0, false, false,
19304+ 0x1p+0, false, false,
19305+ 0x1.0000000000000002p+0, false, false,
19306+ true,
19307+ 0x1.00000000000000004p+0, false, false,
19308+ 0x1.00000000000000004p+0, false, false,
19309+ 0x1.00000000000000004p+0, false, false,
19310+ 0x1.00000000000000004p+0, false, false,
19311+ true,
19312+ 0x1.00000000000000004p+0, false, false,
19313+ 0x1.00000000000000004p+0, false, false,
19314+ 0x1.00000000000000004p+0, false, false,
19315+ 0x1.00000000000000004p+0, false, false),
19316 TEST ("1.0000000000000000000067762635780344027125465800054371356964"
19317 "111328125",
19318 false,
19319- 0x1p+0, false,
19320- 0x1p+0, false,
19321- 0x1p+0, false,
19322- 0x1.000002p+0, false,
19323- false,
19324- 0x1p+0, false,
19325- 0x1p+0, false,
19326- 0x1p+0, false,
19327- 0x1.0000000000001p+0, false,
19328- false,
19329- 0x1p+0, false,
19330- 0x1p+0, false,
19331- 0x1p+0, false,
19332- 0x1.0000000000000002p+0, false,
19333- false,
19334- 0x1p+0, false,
19335- 0x1p+0, false,
19336- 0x1p+0, false,
19337- 0x1.0000000000000002p+0, false,
19338- true,
19339- 0x1.00000000000000002p+0, false,
19340- 0x1.00000000000000002p+0, false,
19341- 0x1.00000000000000002p+0, false,
19342- 0x1.00000000000000002p+0, false,
19343- true,
19344- 0x1.00000000000000002p+0, false,
19345- 0x1.00000000000000002p+0, false,
19346- 0x1.00000000000000002p+0, false,
19347- 0x1.00000000000000002p+0, false),
19348+ 0x1p+0, false, false,
19349+ 0x1p+0, false, false,
19350+ 0x1p+0, false, false,
19351+ 0x1.000002p+0, false, false,
19352+ false,
19353+ 0x1p+0, false, false,
19354+ 0x1p+0, false, false,
19355+ 0x1p+0, false, false,
19356+ 0x1.0000000000001p+0, false, false,
19357+ false,
19358+ 0x1p+0, false, false,
19359+ 0x1p+0, false, false,
19360+ 0x1p+0, false, false,
19361+ 0x1.0000000000000002p+0, false, false,
19362+ false,
19363+ 0x1p+0, false, false,
19364+ 0x1p+0, false, false,
19365+ 0x1p+0, false, false,
19366+ 0x1.0000000000000002p+0, false, false,
19367+ true,
19368+ 0x1.00000000000000002p+0, false, false,
19369+ 0x1.00000000000000002p+0, false, false,
19370+ 0x1.00000000000000002p+0, false, false,
19371+ 0x1.00000000000000002p+0, false, false,
19372+ true,
19373+ 0x1.00000000000000002p+0, false, false,
19374+ 0x1.00000000000000002p+0, false, false,
19375+ 0x1.00000000000000002p+0, false, false,
19376+ 0x1.00000000000000002p+0, false, false),
19377 TEST ("1.0000000000000000000033881317890172013562732900027185678482"
19378 "0556640625",
19379 false,
19380- 0x1p+0, false,
19381- 0x1p+0, false,
19382- 0x1p+0, false,
19383- 0x1.000002p+0, false,
19384- false,
19385- 0x1p+0, false,
19386- 0x1p+0, false,
19387- 0x1p+0, false,
19388- 0x1.0000000000001p+0, false,
19389- false,
19390- 0x1p+0, false,
19391- 0x1p+0, false,
19392- 0x1p+0, false,
19393- 0x1.0000000000000002p+0, false,
19394- false,
19395- 0x1p+0, false,
19396- 0x1p+0, false,
19397- 0x1p+0, false,
19398- 0x1.0000000000000002p+0, false,
19399- true,
19400- 0x1.00000000000000001p+0, false,
19401- 0x1.00000000000000001p+0, false,
19402- 0x1.00000000000000001p+0, false,
19403- 0x1.00000000000000001p+0, false,
19404- true,
19405- 0x1.00000000000000001p+0, false,
19406- 0x1.00000000000000001p+0, false,
19407- 0x1.00000000000000001p+0, false,
19408- 0x1.00000000000000001p+0, false),
19409+ 0x1p+0, false, false,
19410+ 0x1p+0, false, false,
19411+ 0x1p+0, false, false,
19412+ 0x1.000002p+0, false, false,
19413+ false,
19414+ 0x1p+0, false, false,
19415+ 0x1p+0, false, false,
19416+ 0x1p+0, false, false,
19417+ 0x1.0000000000001p+0, false, false,
19418+ false,
19419+ 0x1p+0, false, false,
19420+ 0x1p+0, false, false,
19421+ 0x1p+0, false, false,
19422+ 0x1.0000000000000002p+0, false, false,
19423+ false,
19424+ 0x1p+0, false, false,
19425+ 0x1p+0, false, false,
19426+ 0x1p+0, false, false,
19427+ 0x1.0000000000000002p+0, false, false,
19428+ true,
19429+ 0x1.00000000000000001p+0, false, false,
19430+ 0x1.00000000000000001p+0, false, false,
19431+ 0x1.00000000000000001p+0, false, false,
19432+ 0x1.00000000000000001p+0, false, false,
19433+ true,
19434+ 0x1.00000000000000001p+0, false, false,
19435+ 0x1.00000000000000001p+0, false, false,
19436+ 0x1.00000000000000001p+0, false, false,
19437+ 0x1.00000000000000001p+0, false, false),
19438 TEST ("1.0000000000000000000016940658945086006781366450013592839241"
19439 "02783203125",
19440 false,
19441- 0x1p+0, false,
19442- 0x1p+0, false,
19443- 0x1p+0, false,
19444- 0x1.000002p+0, false,
19445- false,
19446- 0x1p+0, false,
19447- 0x1p+0, false,
19448- 0x1p+0, false,
19449- 0x1.0000000000001p+0, false,
19450- false,
19451- 0x1p+0, false,
19452- 0x1p+0, false,
19453- 0x1p+0, false,
19454- 0x1.0000000000000002p+0, false,
19455- false,
19456- 0x1p+0, false,
19457- 0x1p+0, false,
19458- 0x1p+0, false,
19459- 0x1.0000000000000002p+0, false,
19460- true,
19461- 0x1.000000000000000008p+0, false,
19462- 0x1.000000000000000008p+0, false,
19463- 0x1.000000000000000008p+0, false,
19464- 0x1.000000000000000008p+0, false,
19465- true,
19466- 0x1.000000000000000008p+0, false,
19467- 0x1.000000000000000008p+0, false,
19468- 0x1.000000000000000008p+0, false,
19469- 0x1.000000000000000008p+0, false),
19470+ 0x1p+0, false, false,
19471+ 0x1p+0, false, false,
19472+ 0x1p+0, false, false,
19473+ 0x1.000002p+0, false, false,
19474+ false,
19475+ 0x1p+0, false, false,
19476+ 0x1p+0, false, false,
19477+ 0x1p+0, false, false,
19478+ 0x1.0000000000001p+0, false, false,
19479+ false,
19480+ 0x1p+0, false, false,
19481+ 0x1p+0, false, false,
19482+ 0x1p+0, false, false,
19483+ 0x1.0000000000000002p+0, false, false,
19484+ false,
19485+ 0x1p+0, false, false,
19486+ 0x1p+0, false, false,
19487+ 0x1p+0, false, false,
19488+ 0x1.0000000000000002p+0, false, false,
19489+ true,
19490+ 0x1.000000000000000008p+0, false, false,
19491+ 0x1.000000000000000008p+0, false, false,
19492+ 0x1.000000000000000008p+0, false, false,
19493+ 0x1.000000000000000008p+0, false, false,
19494+ true,
19495+ 0x1.000000000000000008p+0, false, false,
19496+ 0x1.000000000000000008p+0, false, false,
19497+ 0x1.000000000000000008p+0, false, false,
19498+ 0x1.000000000000000008p+0, false, false),
19499 TEST ("1.0000000000000000000008470329472543003390683225006796419620"
19500 "513916015625",
19501 false,
19502- 0x1p+0, false,
19503- 0x1p+0, false,
19504- 0x1p+0, false,
19505- 0x1.000002p+0, false,
19506- false,
19507- 0x1p+0, false,
19508- 0x1p+0, false,
19509- 0x1p+0, false,
19510- 0x1.0000000000001p+0, false,
19511- false,
19512- 0x1p+0, false,
19513- 0x1p+0, false,
19514- 0x1p+0, false,
19515- 0x1.0000000000000002p+0, false,
19516- false,
19517- 0x1p+0, false,
19518- 0x1p+0, false,
19519- 0x1p+0, false,
19520- 0x1.0000000000000002p+0, false,
19521- true,
19522- 0x1.000000000000000004p+0, false,
19523- 0x1.000000000000000004p+0, false,
19524- 0x1.000000000000000004p+0, false,
19525- 0x1.000000000000000004p+0, false,
19526- true,
19527- 0x1.000000000000000004p+0, false,
19528- 0x1.000000000000000004p+0, false,
19529- 0x1.000000000000000004p+0, false,
19530- 0x1.000000000000000004p+0, false),
19531+ 0x1p+0, false, false,
19532+ 0x1p+0, false, false,
19533+ 0x1p+0, false, false,
19534+ 0x1.000002p+0, false, false,
19535+ false,
19536+ 0x1p+0, false, false,
19537+ 0x1p+0, false, false,
19538+ 0x1p+0, false, false,
19539+ 0x1.0000000000001p+0, false, false,
19540+ false,
19541+ 0x1p+0, false, false,
19542+ 0x1p+0, false, false,
19543+ 0x1p+0, false, false,
19544+ 0x1.0000000000000002p+0, false, false,
19545+ false,
19546+ 0x1p+0, false, false,
19547+ 0x1p+0, false, false,
19548+ 0x1p+0, false, false,
19549+ 0x1.0000000000000002p+0, false, false,
19550+ true,
19551+ 0x1.000000000000000004p+0, false, false,
19552+ 0x1.000000000000000004p+0, false, false,
19553+ 0x1.000000000000000004p+0, false, false,
19554+ 0x1.000000000000000004p+0, false, false,
19555+ true,
19556+ 0x1.000000000000000004p+0, false, false,
19557+ 0x1.000000000000000004p+0, false, false,
19558+ 0x1.000000000000000004p+0, false, false,
19559+ 0x1.000000000000000004p+0, false, false),
19560 TEST ("1.0000000000000000000004235164736271501695341612503398209810"
19561 "2569580078125",
19562 false,
19563- 0x1p+0, false,
19564- 0x1p+0, false,
19565- 0x1p+0, false,
19566- 0x1.000002p+0, false,
19567- false,
19568- 0x1p+0, false,
19569- 0x1p+0, false,
19570- 0x1p+0, false,
19571- 0x1.0000000000001p+0, false,
19572- false,
19573- 0x1p+0, false,
19574- 0x1p+0, false,
19575- 0x1p+0, false,
19576- 0x1.0000000000000002p+0, false,
19577- false,
19578- 0x1p+0, false,
19579- 0x1p+0, false,
19580- 0x1p+0, false,
19581- 0x1.0000000000000002p+0, false,
19582- true,
19583- 0x1.000000000000000002p+0, false,
19584- 0x1.000000000000000002p+0, false,
19585- 0x1.000000000000000002p+0, false,
19586- 0x1.000000000000000002p+0, false,
19587- true,
19588- 0x1.000000000000000002p+0, false,
19589- 0x1.000000000000000002p+0, false,
19590- 0x1.000000000000000002p+0, false,
19591- 0x1.000000000000000002p+0, false),
19592+ 0x1p+0, false, false,
19593+ 0x1p+0, false, false,
19594+ 0x1p+0, false, false,
19595+ 0x1.000002p+0, false, false,
19596+ false,
19597+ 0x1p+0, false, false,
19598+ 0x1p+0, false, false,
19599+ 0x1p+0, false, false,
19600+ 0x1.0000000000001p+0, false, false,
19601+ false,
19602+ 0x1p+0, false, false,
19603+ 0x1p+0, false, false,
19604+ 0x1p+0, false, false,
19605+ 0x1.0000000000000002p+0, false, false,
19606+ false,
19607+ 0x1p+0, false, false,
19608+ 0x1p+0, false, false,
19609+ 0x1p+0, false, false,
19610+ 0x1.0000000000000002p+0, false, false,
19611+ true,
19612+ 0x1.000000000000000002p+0, false, false,
19613+ 0x1.000000000000000002p+0, false, false,
19614+ 0x1.000000000000000002p+0, false, false,
19615+ 0x1.000000000000000002p+0, false, false,
19616+ true,
19617+ 0x1.000000000000000002p+0, false, false,
19618+ 0x1.000000000000000002p+0, false, false,
19619+ 0x1.000000000000000002p+0, false, false,
19620+ 0x1.000000000000000002p+0, false, false),
19621 TEST ("1.0000000000000000000002117582368135750847670806251699104905"
19622 "12847900390625",
19623 false,
19624- 0x1p+0, false,
19625- 0x1p+0, false,
19626- 0x1p+0, false,
19627- 0x1.000002p+0, false,
19628- false,
19629- 0x1p+0, false,
19630- 0x1p+0, false,
19631- 0x1p+0, false,
19632- 0x1.0000000000001p+0, false,
19633- false,
19634- 0x1p+0, false,
19635- 0x1p+0, false,
19636- 0x1p+0, false,
19637- 0x1.0000000000000002p+0, false,
19638- false,
19639- 0x1p+0, false,
19640- 0x1p+0, false,
19641- 0x1p+0, false,
19642- 0x1.0000000000000002p+0, false,
19643- true,
19644- 0x1.000000000000000001p+0, false,
19645- 0x1.000000000000000001p+0, false,
19646- 0x1.000000000000000001p+0, false,
19647- 0x1.000000000000000001p+0, false,
19648- true,
19649- 0x1.000000000000000001p+0, false,
19650- 0x1.000000000000000001p+0, false,
19651- 0x1.000000000000000001p+0, false,
19652- 0x1.000000000000000001p+0, false),
19653+ 0x1p+0, false, false,
19654+ 0x1p+0, false, false,
19655+ 0x1p+0, false, false,
19656+ 0x1.000002p+0, false, false,
19657+ false,
19658+ 0x1p+0, false, false,
19659+ 0x1p+0, false, false,
19660+ 0x1p+0, false, false,
19661+ 0x1.0000000000001p+0, false, false,
19662+ false,
19663+ 0x1p+0, false, false,
19664+ 0x1p+0, false, false,
19665+ 0x1p+0, false, false,
19666+ 0x1.0000000000000002p+0, false, false,
19667+ false,
19668+ 0x1p+0, false, false,
19669+ 0x1p+0, false, false,
19670+ 0x1p+0, false, false,
19671+ 0x1.0000000000000002p+0, false, false,
19672+ true,
19673+ 0x1.000000000000000001p+0, false, false,
19674+ 0x1.000000000000000001p+0, false, false,
19675+ 0x1.000000000000000001p+0, false, false,
19676+ 0x1.000000000000000001p+0, false, false,
19677+ true,
19678+ 0x1.000000000000000001p+0, false, false,
19679+ 0x1.000000000000000001p+0, false, false,
19680+ 0x1.000000000000000001p+0, false, false,
19681+ 0x1.000000000000000001p+0, false, false),
19682 TEST ("1.0000000000000000000001058791184067875423835403125849552452"
19683 "564239501953125",
19684 false,
19685- 0x1p+0, false,
19686- 0x1p+0, false,
19687- 0x1p+0, false,
19688- 0x1.000002p+0, false,
19689- false,
19690- 0x1p+0, false,
19691- 0x1p+0, false,
19692- 0x1p+0, false,
19693- 0x1.0000000000001p+0, false,
19694- false,
19695- 0x1p+0, false,
19696- 0x1p+0, false,
19697- 0x1p+0, false,
19698- 0x1.0000000000000002p+0, false,
19699- false,
19700- 0x1p+0, false,
19701- 0x1p+0, false,
19702- 0x1p+0, false,
19703- 0x1.0000000000000002p+0, false,
19704- true,
19705- 0x1.0000000000000000008p+0, false,
19706- 0x1.0000000000000000008p+0, false,
19707- 0x1.0000000000000000008p+0, false,
19708- 0x1.0000000000000000008p+0, false,
19709- true,
19710- 0x1.0000000000000000008p+0, false,
19711- 0x1.0000000000000000008p+0, false,
19712- 0x1.0000000000000000008p+0, false,
19713- 0x1.0000000000000000008p+0, false),
19714+ 0x1p+0, false, false,
19715+ 0x1p+0, false, false,
19716+ 0x1p+0, false, false,
19717+ 0x1.000002p+0, false, false,
19718+ false,
19719+ 0x1p+0, false, false,
19720+ 0x1p+0, false, false,
19721+ 0x1p+0, false, false,
19722+ 0x1.0000000000001p+0, false, false,
19723+ false,
19724+ 0x1p+0, false, false,
19725+ 0x1p+0, false, false,
19726+ 0x1p+0, false, false,
19727+ 0x1.0000000000000002p+0, false, false,
19728+ false,
19729+ 0x1p+0, false, false,
19730+ 0x1p+0, false, false,
19731+ 0x1p+0, false, false,
19732+ 0x1.0000000000000002p+0, false, false,
19733+ true,
19734+ 0x1.0000000000000000008p+0, false, false,
19735+ 0x1.0000000000000000008p+0, false, false,
19736+ 0x1.0000000000000000008p+0, false, false,
19737+ 0x1.0000000000000000008p+0, false, false,
19738+ true,
19739+ 0x1.0000000000000000008p+0, false, false,
19740+ 0x1.0000000000000000008p+0, false, false,
19741+ 0x1.0000000000000000008p+0, false, false,
19742+ 0x1.0000000000000000008p+0, false, false),
19743 TEST ("1.0000000000000000000000529395592033937711917701562924776226"
19744 "2821197509765625",
19745 false,
19746- 0x1p+0, false,
19747- 0x1p+0, false,
19748- 0x1p+0, false,
19749- 0x1.000002p+0, false,
19750- false,
19751- 0x1p+0, false,
19752- 0x1p+0, false,
19753- 0x1p+0, false,
19754- 0x1.0000000000001p+0, false,
19755- false,
19756- 0x1p+0, false,
19757- 0x1p+0, false,
19758- 0x1p+0, false,
19759- 0x1.0000000000000002p+0, false,
19760- false,
19761- 0x1p+0, false,
19762- 0x1p+0, false,
19763- 0x1p+0, false,
19764- 0x1.0000000000000002p+0, false,
19765- true,
19766- 0x1.0000000000000000004p+0, false,
19767- 0x1.0000000000000000004p+0, false,
19768- 0x1.0000000000000000004p+0, false,
19769- 0x1.0000000000000000004p+0, false,
19770- true,
19771- 0x1.0000000000000000004p+0, false,
19772- 0x1.0000000000000000004p+0, false,
19773- 0x1.0000000000000000004p+0, false,
19774- 0x1.0000000000000000004p+0, false),
19775+ 0x1p+0, false, false,
19776+ 0x1p+0, false, false,
19777+ 0x1p+0, false, false,
19778+ 0x1.000002p+0, false, false,
19779+ false,
19780+ 0x1p+0, false, false,
19781+ 0x1p+0, false, false,
19782+ 0x1p+0, false, false,
19783+ 0x1.0000000000001p+0, false, false,
19784+ false,
19785+ 0x1p+0, false, false,
19786+ 0x1p+0, false, false,
19787+ 0x1p+0, false, false,
19788+ 0x1.0000000000000002p+0, false, false,
19789+ false,
19790+ 0x1p+0, false, false,
19791+ 0x1p+0, false, false,
19792+ 0x1p+0, false, false,
19793+ 0x1.0000000000000002p+0, false, false,
19794+ true,
19795+ 0x1.0000000000000000004p+0, false, false,
19796+ 0x1.0000000000000000004p+0, false, false,
19797+ 0x1.0000000000000000004p+0, false, false,
19798+ 0x1.0000000000000000004p+0, false, false,
19799+ true,
19800+ 0x1.0000000000000000004p+0, false, false,
19801+ 0x1.0000000000000000004p+0, false, false,
19802+ 0x1.0000000000000000004p+0, false, false,
19803+ 0x1.0000000000000000004p+0, false, false),
19804 TEST ("1.0000000000000000000000264697796016968855958850781462388113"
19805 "14105987548828125",
19806 false,
19807- 0x1p+0, false,
19808- 0x1p+0, false,
19809- 0x1p+0, false,
19810- 0x1.000002p+0, false,
19811- false,
19812- 0x1p+0, false,
19813- 0x1p+0, false,
19814- 0x1p+0, false,
19815- 0x1.0000000000001p+0, false,
19816- false,
19817- 0x1p+0, false,
19818- 0x1p+0, false,
19819- 0x1p+0, false,
19820- 0x1.0000000000000002p+0, false,
19821- false,
19822- 0x1p+0, false,
19823- 0x1p+0, false,
19824- 0x1p+0, false,
19825- 0x1.0000000000000002p+0, false,
19826- true,
19827- 0x1.0000000000000000002p+0, false,
19828- 0x1.0000000000000000002p+0, false,
19829- 0x1.0000000000000000002p+0, false,
19830- 0x1.0000000000000000002p+0, false,
19831- true,
19832- 0x1.0000000000000000002p+0, false,
19833- 0x1.0000000000000000002p+0, false,
19834- 0x1.0000000000000000002p+0, false,
19835- 0x1.0000000000000000002p+0, false),
19836+ 0x1p+0, false, false,
19837+ 0x1p+0, false, false,
19838+ 0x1p+0, false, false,
19839+ 0x1.000002p+0, false, false,
19840+ false,
19841+ 0x1p+0, false, false,
19842+ 0x1p+0, false, false,
19843+ 0x1p+0, false, false,
19844+ 0x1.0000000000001p+0, false, false,
19845+ false,
19846+ 0x1p+0, false, false,
19847+ 0x1p+0, false, false,
19848+ 0x1p+0, false, false,
19849+ 0x1.0000000000000002p+0, false, false,
19850+ false,
19851+ 0x1p+0, false, false,
19852+ 0x1p+0, false, false,
19853+ 0x1p+0, false, false,
19854+ 0x1.0000000000000002p+0, false, false,
19855+ true,
19856+ 0x1.0000000000000000002p+0, false, false,
19857+ 0x1.0000000000000000002p+0, false, false,
19858+ 0x1.0000000000000000002p+0, false, false,
19859+ 0x1.0000000000000000002p+0, false, false,
19860+ true,
19861+ 0x1.0000000000000000002p+0, false, false,
19862+ 0x1.0000000000000000002p+0, false, false,
19863+ 0x1.0000000000000000002p+0, false, false,
19864+ 0x1.0000000000000000002p+0, false, false),
19865 TEST ("1.0000000000000000000000132348898008484427979425390731194056"
19866 "570529937744140625",
19867 false,
19868- 0x1p+0, false,
19869- 0x1p+0, false,
19870- 0x1p+0, false,
19871- 0x1.000002p+0, false,
19872- false,
19873- 0x1p+0, false,
19874- 0x1p+0, false,
19875- 0x1p+0, false,
19876- 0x1.0000000000001p+0, false,
19877- false,
19878- 0x1p+0, false,
19879- 0x1p+0, false,
19880- 0x1p+0, false,
19881- 0x1.0000000000000002p+0, false,
19882- false,
19883- 0x1p+0, false,
19884- 0x1p+0, false,
19885- 0x1p+0, false,
19886- 0x1.0000000000000002p+0, false,
19887- true,
19888- 0x1.0000000000000000001p+0, false,
19889- 0x1.0000000000000000001p+0, false,
19890- 0x1.0000000000000000001p+0, false,
19891- 0x1.0000000000000000001p+0, false,
19892- true,
19893- 0x1.0000000000000000001p+0, false,
19894- 0x1.0000000000000000001p+0, false,
19895- 0x1.0000000000000000001p+0, false,
19896- 0x1.0000000000000000001p+0, false),
19897+ 0x1p+0, false, false,
19898+ 0x1p+0, false, false,
19899+ 0x1p+0, false, false,
19900+ 0x1.000002p+0, false, false,
19901+ false,
19902+ 0x1p+0, false, false,
19903+ 0x1p+0, false, false,
19904+ 0x1p+0, false, false,
19905+ 0x1.0000000000001p+0, false, false,
19906+ false,
19907+ 0x1p+0, false, false,
19908+ 0x1p+0, false, false,
19909+ 0x1p+0, false, false,
19910+ 0x1.0000000000000002p+0, false, false,
19911+ false,
19912+ 0x1p+0, false, false,
19913+ 0x1p+0, false, false,
19914+ 0x1p+0, false, false,
19915+ 0x1.0000000000000002p+0, false, false,
19916+ true,
19917+ 0x1.0000000000000000001p+0, false, false,
19918+ 0x1.0000000000000000001p+0, false, false,
19919+ 0x1.0000000000000000001p+0, false, false,
19920+ 0x1.0000000000000000001p+0, false, false,
19921+ true,
19922+ 0x1.0000000000000000001p+0, false, false,
19923+ 0x1.0000000000000000001p+0, false, false,
19924+ 0x1.0000000000000000001p+0, false, false,
19925+ 0x1.0000000000000000001p+0, false, false),
19926 TEST ("1.0000000000000000000000066174449004242213989712695365597028"
19927 "2852649688720703125",
19928 false,
19929- 0x1p+0, false,
19930- 0x1p+0, false,
19931- 0x1p+0, false,
19932- 0x1.000002p+0, false,
19933- false,
19934- 0x1p+0, false,
19935- 0x1p+0, false,
19936- 0x1p+0, false,
19937- 0x1.0000000000001p+0, false,
19938- false,
19939- 0x1p+0, false,
19940- 0x1p+0, false,
19941- 0x1p+0, false,
19942- 0x1.0000000000000002p+0, false,
19943- false,
19944- 0x1p+0, false,
19945- 0x1p+0, false,
19946- 0x1p+0, false,
19947- 0x1.0000000000000002p+0, false,
19948- true,
19949- 0x1.00000000000000000008p+0, false,
19950- 0x1.00000000000000000008p+0, false,
19951- 0x1.00000000000000000008p+0, false,
19952- 0x1.00000000000000000008p+0, false,
19953- true,
19954- 0x1.00000000000000000008p+0, false,
19955- 0x1.00000000000000000008p+0, false,
19956- 0x1.00000000000000000008p+0, false,
19957- 0x1.00000000000000000008p+0, false),
19958+ 0x1p+0, false, false,
19959+ 0x1p+0, false, false,
19960+ 0x1p+0, false, false,
19961+ 0x1.000002p+0, false, false,
19962+ false,
19963+ 0x1p+0, false, false,
19964+ 0x1p+0, false, false,
19965+ 0x1p+0, false, false,
19966+ 0x1.0000000000001p+0, false, false,
19967+ false,
19968+ 0x1p+0, false, false,
19969+ 0x1p+0, false, false,
19970+ 0x1p+0, false, false,
19971+ 0x1.0000000000000002p+0, false, false,
19972+ false,
19973+ 0x1p+0, false, false,
19974+ 0x1p+0, false, false,
19975+ 0x1p+0, false, false,
19976+ 0x1.0000000000000002p+0, false, false,
19977+ true,
19978+ 0x1.00000000000000000008p+0, false, false,
19979+ 0x1.00000000000000000008p+0, false, false,
19980+ 0x1.00000000000000000008p+0, false, false,
19981+ 0x1.00000000000000000008p+0, false, false,
19982+ true,
19983+ 0x1.00000000000000000008p+0, false, false,
19984+ 0x1.00000000000000000008p+0, false, false,
19985+ 0x1.00000000000000000008p+0, false, false,
19986+ 0x1.00000000000000000008p+0, false, false),
19987 TEST ("1.0000000000000000000000033087224502121106994856347682798514"
19988 "14263248443603515625",
19989 false,
19990- 0x1p+0, false,
19991- 0x1p+0, false,
19992- 0x1p+0, false,
19993- 0x1.000002p+0, false,
19994- false,
19995- 0x1p+0, false,
19996- 0x1p+0, false,
19997- 0x1p+0, false,
19998- 0x1.0000000000001p+0, false,
19999- false,
20000- 0x1p+0, false,
20001- 0x1p+0, false,
20002- 0x1p+0, false,
20003- 0x1.0000000000000002p+0, false,
20004- false,
20005- 0x1p+0, false,
20006- 0x1p+0, false,
20007- 0x1p+0, false,
20008- 0x1.0000000000000002p+0, false,
20009- true,
20010- 0x1.00000000000000000004p+0, false,
20011- 0x1.00000000000000000004p+0, false,
20012- 0x1.00000000000000000004p+0, false,
20013- 0x1.00000000000000000004p+0, false,
20014- true,
20015- 0x1.00000000000000000004p+0, false,
20016- 0x1.00000000000000000004p+0, false,
20017- 0x1.00000000000000000004p+0, false,
20018- 0x1.00000000000000000004p+0, false),
20019+ 0x1p+0, false, false,
20020+ 0x1p+0, false, false,
20021+ 0x1p+0, false, false,
20022+ 0x1.000002p+0, false, false,
20023+ false,
20024+ 0x1p+0, false, false,
20025+ 0x1p+0, false, false,
20026+ 0x1p+0, false, false,
20027+ 0x1.0000000000001p+0, false, false,
20028+ false,
20029+ 0x1p+0, false, false,
20030+ 0x1p+0, false, false,
20031+ 0x1p+0, false, false,
20032+ 0x1.0000000000000002p+0, false, false,
20033+ false,
20034+ 0x1p+0, false, false,
20035+ 0x1p+0, false, false,
20036+ 0x1p+0, false, false,
20037+ 0x1.0000000000000002p+0, false, false,
20038+ true,
20039+ 0x1.00000000000000000004p+0, false, false,
20040+ 0x1.00000000000000000004p+0, false, false,
20041+ 0x1.00000000000000000004p+0, false, false,
20042+ 0x1.00000000000000000004p+0, false, false,
20043+ true,
20044+ 0x1.00000000000000000004p+0, false, false,
20045+ 0x1.00000000000000000004p+0, false, false,
20046+ 0x1.00000000000000000004p+0, false, false,
20047+ 0x1.00000000000000000004p+0, false, false),
20048 TEST ("1.0000000000000000000000016543612251060553497428173841399257"
20049 "071316242218017578125",
20050 false,
20051- 0x1p+0, false,
20052- 0x1p+0, false,
20053- 0x1p+0, false,
20054- 0x1.000002p+0, false,
20055- false,
20056- 0x1p+0, false,
20057- 0x1p+0, false,
20058- 0x1p+0, false,
20059- 0x1.0000000000001p+0, false,
20060- false,
20061- 0x1p+0, false,
20062- 0x1p+0, false,
20063- 0x1p+0, false,
20064- 0x1.0000000000000002p+0, false,
20065- false,
20066- 0x1p+0, false,
20067- 0x1p+0, false,
20068- 0x1p+0, false,
20069- 0x1.0000000000000002p+0, false,
20070- true,
20071- 0x1.00000000000000000002p+0, false,
20072- 0x1.00000000000000000002p+0, false,
20073- 0x1.00000000000000000002p+0, false,
20074- 0x1.00000000000000000002p+0, false,
20075- true,
20076- 0x1.00000000000000000002p+0, false,
20077- 0x1.00000000000000000002p+0, false,
20078- 0x1.00000000000000000002p+0, false,
20079- 0x1.00000000000000000002p+0, false),
20080+ 0x1p+0, false, false,
20081+ 0x1p+0, false, false,
20082+ 0x1p+0, false, false,
20083+ 0x1.000002p+0, false, false,
20084+ false,
20085+ 0x1p+0, false, false,
20086+ 0x1p+0, false, false,
20087+ 0x1p+0, false, false,
20088+ 0x1.0000000000001p+0, false, false,
20089+ false,
20090+ 0x1p+0, false, false,
20091+ 0x1p+0, false, false,
20092+ 0x1p+0, false, false,
20093+ 0x1.0000000000000002p+0, false, false,
20094+ false,
20095+ 0x1p+0, false, false,
20096+ 0x1p+0, false, false,
20097+ 0x1p+0, false, false,
20098+ 0x1.0000000000000002p+0, false, false,
20099+ true,
20100+ 0x1.00000000000000000002p+0, false, false,
20101+ 0x1.00000000000000000002p+0, false, false,
20102+ 0x1.00000000000000000002p+0, false, false,
20103+ 0x1.00000000000000000002p+0, false, false,
20104+ true,
20105+ 0x1.00000000000000000002p+0, false, false,
20106+ 0x1.00000000000000000002p+0, false, false,
20107+ 0x1.00000000000000000002p+0, false, false,
20108+ 0x1.00000000000000000002p+0, false, false),
20109 TEST ("1.0000000000000000000000008271806125530276748714086920699628"
20110 "5356581211090087890625",
20111 false,
20112- 0x1p+0, false,
20113- 0x1p+0, false,
20114- 0x1p+0, false,
20115- 0x1.000002p+0, false,
20116- false,
20117- 0x1p+0, false,
20118- 0x1p+0, false,
20119- 0x1p+0, false,
20120- 0x1.0000000000001p+0, false,
20121- false,
20122- 0x1p+0, false,
20123- 0x1p+0, false,
20124- 0x1p+0, false,
20125- 0x1.0000000000000002p+0, false,
20126- false,
20127- 0x1p+0, false,
20128- 0x1p+0, false,
20129- 0x1p+0, false,
20130- 0x1.0000000000000002p+0, false,
20131- true,
20132- 0x1.00000000000000000001p+0, false,
20133- 0x1.00000000000000000001p+0, false,
20134- 0x1.00000000000000000001p+0, false,
20135- 0x1.00000000000000000001p+0, false,
20136- true,
20137- 0x1.00000000000000000001p+0, false,
20138- 0x1.00000000000000000001p+0, false,
20139- 0x1.00000000000000000001p+0, false,
20140- 0x1.00000000000000000001p+0, false),
20141+ 0x1p+0, false, false,
20142+ 0x1p+0, false, false,
20143+ 0x1p+0, false, false,
20144+ 0x1.000002p+0, false, false,
20145+ false,
20146+ 0x1p+0, false, false,
20147+ 0x1p+0, false, false,
20148+ 0x1p+0, false, false,
20149+ 0x1.0000000000001p+0, false, false,
20150+ false,
20151+ 0x1p+0, false, false,
20152+ 0x1p+0, false, false,
20153+ 0x1p+0, false, false,
20154+ 0x1.0000000000000002p+0, false, false,
20155+ false,
20156+ 0x1p+0, false, false,
20157+ 0x1p+0, false, false,
20158+ 0x1p+0, false, false,
20159+ 0x1.0000000000000002p+0, false, false,
20160+ true,
20161+ 0x1.00000000000000000001p+0, false, false,
20162+ 0x1.00000000000000000001p+0, false, false,
20163+ 0x1.00000000000000000001p+0, false, false,
20164+ 0x1.00000000000000000001p+0, false, false,
20165+ true,
20166+ 0x1.00000000000000000001p+0, false, false,
20167+ 0x1.00000000000000000001p+0, false, false,
20168+ 0x1.00000000000000000001p+0, false, false,
20169+ 0x1.00000000000000000001p+0, false, false),
20170 TEST ("1.0000000000000000000000004135903062765138374357043460349814"
20171 "26782906055450439453125",
20172 false,
20173- 0x1p+0, false,
20174- 0x1p+0, false,
20175- 0x1p+0, false,
20176- 0x1.000002p+0, false,
20177- false,
20178- 0x1p+0, false,
20179- 0x1p+0, false,
20180- 0x1p+0, false,
20181- 0x1.0000000000001p+0, false,
20182- false,
20183- 0x1p+0, false,
20184- 0x1p+0, false,
20185- 0x1p+0, false,
20186- 0x1.0000000000000002p+0, false,
20187- false,
20188- 0x1p+0, false,
20189- 0x1p+0, false,
20190- 0x1p+0, false,
20191- 0x1.0000000000000002p+0, false,
20192- true,
20193- 0x1.000000000000000000008p+0, false,
20194- 0x1.000000000000000000008p+0, false,
20195- 0x1.000000000000000000008p+0, false,
20196- 0x1.000000000000000000008p+0, false,
20197- true,
20198- 0x1.000000000000000000008p+0, false,
20199- 0x1.000000000000000000008p+0, false,
20200- 0x1.000000000000000000008p+0, false,
20201- 0x1.000000000000000000008p+0, false),
20202+ 0x1p+0, false, false,
20203+ 0x1p+0, false, false,
20204+ 0x1p+0, false, false,
20205+ 0x1.000002p+0, false, false,
20206+ false,
20207+ 0x1p+0, false, false,
20208+ 0x1p+0, false, false,
20209+ 0x1p+0, false, false,
20210+ 0x1.0000000000001p+0, false, false,
20211+ false,
20212+ 0x1p+0, false, false,
20213+ 0x1p+0, false, false,
20214+ 0x1p+0, false, false,
20215+ 0x1.0000000000000002p+0, false, false,
20216+ false,
20217+ 0x1p+0, false, false,
20218+ 0x1p+0, false, false,
20219+ 0x1p+0, false, false,
20220+ 0x1.0000000000000002p+0, false, false,
20221+ true,
20222+ 0x1.000000000000000000008p+0, false, false,
20223+ 0x1.000000000000000000008p+0, false, false,
20224+ 0x1.000000000000000000008p+0, false, false,
20225+ 0x1.000000000000000000008p+0, false, false,
20226+ true,
20227+ 0x1.000000000000000000008p+0, false, false,
20228+ 0x1.000000000000000000008p+0, false, false,
20229+ 0x1.000000000000000000008p+0, false, false,
20230+ 0x1.000000000000000000008p+0, false, false),
20231 TEST ("1.0000000000000000000000002067951531382569187178521730174907"
20232 "133914530277252197265625",
20233 false,
20234- 0x1p+0, false,
20235- 0x1p+0, false,
20236- 0x1p+0, false,
20237- 0x1.000002p+0, false,
20238- false,
20239- 0x1p+0, false,
20240- 0x1p+0, false,
20241- 0x1p+0, false,
20242- 0x1.0000000000001p+0, false,
20243- false,
20244- 0x1p+0, false,
20245- 0x1p+0, false,
20246- 0x1p+0, false,
20247- 0x1.0000000000000002p+0, false,
20248- false,
20249- 0x1p+0, false,
20250- 0x1p+0, false,
20251- 0x1p+0, false,
20252- 0x1.0000000000000002p+0, false,
20253- true,
20254- 0x1.000000000000000000004p+0, false,
20255- 0x1.000000000000000000004p+0, false,
20256- 0x1.000000000000000000004p+0, false,
20257- 0x1.000000000000000000004p+0, false,
20258- true,
20259- 0x1.000000000000000000004p+0, false,
20260- 0x1.000000000000000000004p+0, false,
20261- 0x1.000000000000000000004p+0, false,
20262- 0x1.000000000000000000004p+0, false),
20263+ 0x1p+0, false, false,
20264+ 0x1p+0, false, false,
20265+ 0x1p+0, false, false,
20266+ 0x1.000002p+0, false, false,
20267+ false,
20268+ 0x1p+0, false, false,
20269+ 0x1p+0, false, false,
20270+ 0x1p+0, false, false,
20271+ 0x1.0000000000001p+0, false, false,
20272+ false,
20273+ 0x1p+0, false, false,
20274+ 0x1p+0, false, false,
20275+ 0x1p+0, false, false,
20276+ 0x1.0000000000000002p+0, false, false,
20277+ false,
20278+ 0x1p+0, false, false,
20279+ 0x1p+0, false, false,
20280+ 0x1p+0, false, false,
20281+ 0x1.0000000000000002p+0, false, false,
20282+ true,
20283+ 0x1.000000000000000000004p+0, false, false,
20284+ 0x1.000000000000000000004p+0, false, false,
20285+ 0x1.000000000000000000004p+0, false, false,
20286+ 0x1.000000000000000000004p+0, false, false,
20287+ true,
20288+ 0x1.000000000000000000004p+0, false, false,
20289+ 0x1.000000000000000000004p+0, false, false,
20290+ 0x1.000000000000000000004p+0, false, false,
20291+ 0x1.000000000000000000004p+0, false, false),
20292 TEST ("1.0000000000000000000000001033975765691284593589260865087453"
20293 "5669572651386260986328125",
20294 false,
20295- 0x1p+0, false,
20296- 0x1p+0, false,
20297- 0x1p+0, false,
20298- 0x1.000002p+0, false,
20299- false,
20300- 0x1p+0, false,
20301- 0x1p+0, false,
20302- 0x1p+0, false,
20303- 0x1.0000000000001p+0, false,
20304- false,
20305- 0x1p+0, false,
20306- 0x1p+0, false,
20307- 0x1p+0, false,
20308- 0x1.0000000000000002p+0, false,
20309- false,
20310- 0x1p+0, false,
20311- 0x1p+0, false,
20312- 0x1p+0, false,
20313- 0x1.0000000000000002p+0, false,
20314- true,
20315- 0x1.000000000000000000002p+0, false,
20316- 0x1.000000000000000000002p+0, false,
20317- 0x1.000000000000000000002p+0, false,
20318- 0x1.000000000000000000002p+0, false,
20319- true,
20320- 0x1.000000000000000000002p+0, false,
20321- 0x1.000000000000000000002p+0, false,
20322- 0x1.000000000000000000002p+0, false,
20323- 0x1.000000000000000000002p+0, false),
20324+ 0x1p+0, false, false,
20325+ 0x1p+0, false, false,
20326+ 0x1p+0, false, false,
20327+ 0x1.000002p+0, false, false,
20328+ false,
20329+ 0x1p+0, false, false,
20330+ 0x1p+0, false, false,
20331+ 0x1p+0, false, false,
20332+ 0x1.0000000000001p+0, false, false,
20333+ false,
20334+ 0x1p+0, false, false,
20335+ 0x1p+0, false, false,
20336+ 0x1p+0, false, false,
20337+ 0x1.0000000000000002p+0, false, false,
20338+ false,
20339+ 0x1p+0, false, false,
20340+ 0x1p+0, false, false,
20341+ 0x1p+0, false, false,
20342+ 0x1.0000000000000002p+0, false, false,
20343+ true,
20344+ 0x1.000000000000000000002p+0, false, false,
20345+ 0x1.000000000000000000002p+0, false, false,
20346+ 0x1.000000000000000000002p+0, false, false,
20347+ 0x1.000000000000000000002p+0, false, false,
20348+ true,
20349+ 0x1.000000000000000000002p+0, false, false,
20350+ 0x1.000000000000000000002p+0, false, false,
20351+ 0x1.000000000000000000002p+0, false, false,
20352+ 0x1.000000000000000000002p+0, false, false),
20353 TEST ("1.0000000000000000000000000516987882845642296794630432543726"
20354 "78347863256931304931640625",
20355 false,
20356- 0x1p+0, false,
20357- 0x1p+0, false,
20358- 0x1p+0, false,
20359- 0x1.000002p+0, false,
20360- false,
20361- 0x1p+0, false,
20362- 0x1p+0, false,
20363- 0x1p+0, false,
20364- 0x1.0000000000001p+0, false,
20365- false,
20366- 0x1p+0, false,
20367- 0x1p+0, false,
20368- 0x1p+0, false,
20369- 0x1.0000000000000002p+0, false,
20370- false,
20371- 0x1p+0, false,
20372- 0x1p+0, false,
20373- 0x1p+0, false,
20374- 0x1.0000000000000002p+0, false,
20375- true,
20376- 0x1.000000000000000000001p+0, false,
20377- 0x1.000000000000000000001p+0, false,
20378- 0x1.000000000000000000001p+0, false,
20379- 0x1.000000000000000000001p+0, false,
20380- true,
20381- 0x1.000000000000000000001p+0, false,
20382- 0x1.000000000000000000001p+0, false,
20383- 0x1.000000000000000000001p+0, false,
20384- 0x1.000000000000000000001p+0, false),
20385+ 0x1p+0, false, false,
20386+ 0x1p+0, false, false,
20387+ 0x1p+0, false, false,
20388+ 0x1.000002p+0, false, false,
20389+ false,
20390+ 0x1p+0, false, false,
20391+ 0x1p+0, false, false,
20392+ 0x1p+0, false, false,
20393+ 0x1.0000000000001p+0, false, false,
20394+ false,
20395+ 0x1p+0, false, false,
20396+ 0x1p+0, false, false,
20397+ 0x1p+0, false, false,
20398+ 0x1.0000000000000002p+0, false, false,
20399+ false,
20400+ 0x1p+0, false, false,
20401+ 0x1p+0, false, false,
20402+ 0x1p+0, false, false,
20403+ 0x1.0000000000000002p+0, false, false,
20404+ true,
20405+ 0x1.000000000000000000001p+0, false, false,
20406+ 0x1.000000000000000000001p+0, false, false,
20407+ 0x1.000000000000000000001p+0, false, false,
20408+ 0x1.000000000000000000001p+0, false, false,
20409+ true,
20410+ 0x1.000000000000000000001p+0, false, false,
20411+ 0x1.000000000000000000001p+0, false, false,
20412+ 0x1.000000000000000000001p+0, false, false,
20413+ 0x1.000000000000000000001p+0, false, false),
20414 TEST ("1.0000000000000000000000000258493941422821148397315216271863"
20415 "391739316284656524658203125",
20416 false,
20417- 0x1p+0, false,
20418- 0x1p+0, false,
20419- 0x1p+0, false,
20420- 0x1.000002p+0, false,
20421- false,
20422- 0x1p+0, false,
20423- 0x1p+0, false,
20424- 0x1p+0, false,
20425- 0x1.0000000000001p+0, false,
20426- false,
20427- 0x1p+0, false,
20428- 0x1p+0, false,
20429- 0x1p+0, false,
20430- 0x1.0000000000000002p+0, false,
20431- false,
20432- 0x1p+0, false,
20433- 0x1p+0, false,
20434- 0x1p+0, false,
20435- 0x1.0000000000000002p+0, false,
20436- true,
20437- 0x1.0000000000000000000008p+0, false,
20438- 0x1.0000000000000000000008p+0, false,
20439- 0x1.0000000000000000000008p+0, false,
20440- 0x1.0000000000000000000008p+0, false,
20441- true,
20442- 0x1.0000000000000000000008p+0, false,
20443- 0x1.0000000000000000000008p+0, false,
20444- 0x1.0000000000000000000008p+0, false,
20445- 0x1.0000000000000000000008p+0, false),
20446+ 0x1p+0, false, false,
20447+ 0x1p+0, false, false,
20448+ 0x1p+0, false, false,
20449+ 0x1.000002p+0, false, false,
20450+ false,
20451+ 0x1p+0, false, false,
20452+ 0x1p+0, false, false,
20453+ 0x1p+0, false, false,
20454+ 0x1.0000000000001p+0, false, false,
20455+ false,
20456+ 0x1p+0, false, false,
20457+ 0x1p+0, false, false,
20458+ 0x1p+0, false, false,
20459+ 0x1.0000000000000002p+0, false, false,
20460+ false,
20461+ 0x1p+0, false, false,
20462+ 0x1p+0, false, false,
20463+ 0x1p+0, false, false,
20464+ 0x1.0000000000000002p+0, false, false,
20465+ true,
20466+ 0x1.0000000000000000000008p+0, false, false,
20467+ 0x1.0000000000000000000008p+0, false, false,
20468+ 0x1.0000000000000000000008p+0, false, false,
20469+ 0x1.0000000000000000000008p+0, false, false,
20470+ true,
20471+ 0x1.0000000000000000000008p+0, false, false,
20472+ 0x1.0000000000000000000008p+0, false, false,
20473+ 0x1.0000000000000000000008p+0, false, false,
20474+ 0x1.0000000000000000000008p+0, false, false),
20475 TEST ("1.0000000000000000000000000129246970711410574198657608135931"
20476 "6958696581423282623291015625",
20477 false,
20478- 0x1p+0, false,
20479- 0x1p+0, false,
20480- 0x1p+0, false,
20481- 0x1.000002p+0, false,
20482- false,
20483- 0x1p+0, false,
20484- 0x1p+0, false,
20485- 0x1p+0, false,
20486- 0x1.0000000000001p+0, false,
20487- false,
20488- 0x1p+0, false,
20489- 0x1p+0, false,
20490- 0x1p+0, false,
20491- 0x1.0000000000000002p+0, false,
20492- false,
20493- 0x1p+0, false,
20494- 0x1p+0, false,
20495- 0x1p+0, false,
20496- 0x1.0000000000000002p+0, false,
20497- true,
20498- 0x1.0000000000000000000004p+0, false,
20499- 0x1.0000000000000000000004p+0, false,
20500- 0x1.0000000000000000000004p+0, false,
20501- 0x1.0000000000000000000004p+0, false,
20502- true,
20503- 0x1.0000000000000000000004p+0, false,
20504- 0x1.0000000000000000000004p+0, false,
20505- 0x1.0000000000000000000004p+0, false,
20506- 0x1.0000000000000000000004p+0, false),
20507+ 0x1p+0, false, false,
20508+ 0x1p+0, false, false,
20509+ 0x1p+0, false, false,
20510+ 0x1.000002p+0, false, false,
20511+ false,
20512+ 0x1p+0, false, false,
20513+ 0x1p+0, false, false,
20514+ 0x1p+0, false, false,
20515+ 0x1.0000000000001p+0, false, false,
20516+ false,
20517+ 0x1p+0, false, false,
20518+ 0x1p+0, false, false,
20519+ 0x1p+0, false, false,
20520+ 0x1.0000000000000002p+0, false, false,
20521+ false,
20522+ 0x1p+0, false, false,
20523+ 0x1p+0, false, false,
20524+ 0x1p+0, false, false,
20525+ 0x1.0000000000000002p+0, false, false,
20526+ true,
20527+ 0x1.0000000000000000000004p+0, false, false,
20528+ 0x1.0000000000000000000004p+0, false, false,
20529+ 0x1.0000000000000000000004p+0, false, false,
20530+ 0x1.0000000000000000000004p+0, false, false,
20531+ true,
20532+ 0x1.0000000000000000000004p+0, false, false,
20533+ 0x1.0000000000000000000004p+0, false, false,
20534+ 0x1.0000000000000000000004p+0, false, false,
20535+ 0x1.0000000000000000000004p+0, false, false),
20536 TEST ("1.0000000000000000000000000064623485355705287099328804067965"
20537 "84793482907116413116455078125",
20538 false,
20539- 0x1p+0, false,
20540- 0x1p+0, false,
20541- 0x1p+0, false,
20542- 0x1.000002p+0, false,
20543- false,
20544- 0x1p+0, false,
20545- 0x1p+0, false,
20546- 0x1p+0, false,
20547- 0x1.0000000000001p+0, false,
20548- false,
20549- 0x1p+0, false,
20550- 0x1p+0, false,
20551- 0x1p+0, false,
20552- 0x1.0000000000000002p+0, false,
20553- false,
20554- 0x1p+0, false,
20555- 0x1p+0, false,
20556- 0x1p+0, false,
20557- 0x1.0000000000000002p+0, false,
20558- true,
20559- 0x1.0000000000000000000002p+0, false,
20560- 0x1.0000000000000000000002p+0, false,
20561- 0x1.0000000000000000000002p+0, false,
20562- 0x1.0000000000000000000002p+0, false,
20563- true,
20564- 0x1.0000000000000000000002p+0, false,
20565- 0x1.0000000000000000000002p+0, false,
20566- 0x1.0000000000000000000002p+0, false,
20567- 0x1.0000000000000000000002p+0, false),
20568+ 0x1p+0, false, false,
20569+ 0x1p+0, false, false,
20570+ 0x1p+0, false, false,
20571+ 0x1.000002p+0, false, false,
20572+ false,
20573+ 0x1p+0, false, false,
20574+ 0x1p+0, false, false,
20575+ 0x1p+0, false, false,
20576+ 0x1.0000000000001p+0, false, false,
20577+ false,
20578+ 0x1p+0, false, false,
20579+ 0x1p+0, false, false,
20580+ 0x1p+0, false, false,
20581+ 0x1.0000000000000002p+0, false, false,
20582+ false,
20583+ 0x1p+0, false, false,
20584+ 0x1p+0, false, false,
20585+ 0x1p+0, false, false,
20586+ 0x1.0000000000000002p+0, false, false,
20587+ true,
20588+ 0x1.0000000000000000000002p+0, false, false,
20589+ 0x1.0000000000000000000002p+0, false, false,
20590+ 0x1.0000000000000000000002p+0, false, false,
20591+ 0x1.0000000000000000000002p+0, false, false,
20592+ true,
20593+ 0x1.0000000000000000000002p+0, false, false,
20594+ 0x1.0000000000000000000002p+0, false, false,
20595+ 0x1.0000000000000000000002p+0, false, false,
20596+ 0x1.0000000000000000000002p+0, false, false),
20597 TEST ("1.0000000000000000000000000032311742677852643549664402033982"
20598 "923967414535582065582275390625",
20599 false,
20600- 0x1p+0, false,
20601- 0x1p+0, false,
20602- 0x1p+0, false,
20603- 0x1.000002p+0, false,
20604- false,
20605- 0x1p+0, false,
20606- 0x1p+0, false,
20607- 0x1p+0, false,
20608- 0x1.0000000000001p+0, false,
20609- false,
20610- 0x1p+0, false,
20611- 0x1p+0, false,
20612- 0x1p+0, false,
20613- 0x1.0000000000000002p+0, false,
20614- false,
20615- 0x1p+0, false,
20616- 0x1p+0, false,
20617- 0x1p+0, false,
20618- 0x1.0000000000000002p+0, false,
20619- true,
20620- 0x1.0000000000000000000001p+0, false,
20621- 0x1.0000000000000000000001p+0, false,
20622- 0x1.0000000000000000000001p+0, false,
20623- 0x1.0000000000000000000001p+0, false,
20624- true,
20625- 0x1.0000000000000000000001p+0, false,
20626- 0x1.0000000000000000000001p+0, false,
20627- 0x1.0000000000000000000001p+0, false,
20628- 0x1.0000000000000000000001p+0, false),
20629+ 0x1p+0, false, false,
20630+ 0x1p+0, false, false,
20631+ 0x1p+0, false, false,
20632+ 0x1.000002p+0, false, false,
20633+ false,
20634+ 0x1p+0, false, false,
20635+ 0x1p+0, false, false,
20636+ 0x1p+0, false, false,
20637+ 0x1.0000000000001p+0, false, false,
20638+ false,
20639+ 0x1p+0, false, false,
20640+ 0x1p+0, false, false,
20641+ 0x1p+0, false, false,
20642+ 0x1.0000000000000002p+0, false, false,
20643+ false,
20644+ 0x1p+0, false, false,
20645+ 0x1p+0, false, false,
20646+ 0x1p+0, false, false,
20647+ 0x1.0000000000000002p+0, false, false,
20648+ true,
20649+ 0x1.0000000000000000000001p+0, false, false,
20650+ 0x1.0000000000000000000001p+0, false, false,
20651+ 0x1.0000000000000000000001p+0, false, false,
20652+ 0x1.0000000000000000000001p+0, false, false,
20653+ true,
20654+ 0x1.0000000000000000000001p+0, false, false,
20655+ 0x1.0000000000000000000001p+0, false, false,
20656+ 0x1.0000000000000000000001p+0, false, false,
20657+ 0x1.0000000000000000000001p+0, false, false),
20658 TEST ("1.0000000000000000000000000016155871338926321774832201016991"
20659 "4619837072677910327911376953125",
20660 false,
20661- 0x1p+0, false,
20662- 0x1p+0, false,
20663- 0x1p+0, false,
20664- 0x1.000002p+0, false,
20665- false,
20666- 0x1p+0, false,
20667- 0x1p+0, false,
20668- 0x1p+0, false,
20669- 0x1.0000000000001p+0, false,
20670- false,
20671- 0x1p+0, false,
20672- 0x1p+0, false,
20673- 0x1p+0, false,
20674- 0x1.0000000000000002p+0, false,
20675- false,
20676- 0x1p+0, false,
20677- 0x1p+0, false,
20678- 0x1p+0, false,
20679- 0x1.0000000000000002p+0, false,
20680- true,
20681- 0x1.00000000000000000000008p+0, false,
20682- 0x1.00000000000000000000008p+0, false,
20683- 0x1.00000000000000000000008p+0, false,
20684- 0x1.00000000000000000000008p+0, false,
20685- true,
20686- 0x1.00000000000000000000008p+0, false,
20687- 0x1.00000000000000000000008p+0, false,
20688- 0x1.00000000000000000000008p+0, false,
20689- 0x1.00000000000000000000008p+0, false),
20690+ 0x1p+0, false, false,
20691+ 0x1p+0, false, false,
20692+ 0x1p+0, false, false,
20693+ 0x1.000002p+0, false, false,
20694+ false,
20695+ 0x1p+0, false, false,
20696+ 0x1p+0, false, false,
20697+ 0x1p+0, false, false,
20698+ 0x1.0000000000001p+0, false, false,
20699+ false,
20700+ 0x1p+0, false, false,
20701+ 0x1p+0, false, false,
20702+ 0x1p+0, false, false,
20703+ 0x1.0000000000000002p+0, false, false,
20704+ false,
20705+ 0x1p+0, false, false,
20706+ 0x1p+0, false, false,
20707+ 0x1p+0, false, false,
20708+ 0x1.0000000000000002p+0, false, false,
20709+ true,
20710+ 0x1.00000000000000000000008p+0, false, false,
20711+ 0x1.00000000000000000000008p+0, false, false,
20712+ 0x1.00000000000000000000008p+0, false, false,
20713+ 0x1.00000000000000000000008p+0, false, false,
20714+ true,
20715+ 0x1.00000000000000000000008p+0, false, false,
20716+ 0x1.00000000000000000000008p+0, false, false,
20717+ 0x1.00000000000000000000008p+0, false, false,
20718+ 0x1.00000000000000000000008p+0, false, false),
20719 TEST ("1.0000000000000000000000000008077935669463160887416100508495"
20720 "73099185363389551639556884765625",
20721 false,
20722- 0x1p+0, false,
20723- 0x1p+0, false,
20724- 0x1p+0, false,
20725- 0x1.000002p+0, false,
20726- false,
20727- 0x1p+0, false,
20728- 0x1p+0, false,
20729- 0x1p+0, false,
20730- 0x1.0000000000001p+0, false,
20731- false,
20732- 0x1p+0, false,
20733- 0x1p+0, false,
20734- 0x1p+0, false,
20735- 0x1.0000000000000002p+0, false,
20736- false,
20737- 0x1p+0, false,
20738- 0x1p+0, false,
20739- 0x1p+0, false,
20740- 0x1.0000000000000002p+0, false,
20741- true,
20742- 0x1.00000000000000000000004p+0, false,
20743- 0x1.00000000000000000000004p+0, false,
20744- 0x1.00000000000000000000004p+0, false,
20745- 0x1.00000000000000000000004p+0, false,
20746- true,
20747- 0x1.00000000000000000000004p+0, false,
20748- 0x1.00000000000000000000004p+0, false,
20749- 0x1.00000000000000000000004p+0, false,
20750- 0x1.00000000000000000000004p+0, false),
20751+ 0x1p+0, false, false,
20752+ 0x1p+0, false, false,
20753+ 0x1p+0, false, false,
20754+ 0x1.000002p+0, false, false,
20755+ false,
20756+ 0x1p+0, false, false,
20757+ 0x1p+0, false, false,
20758+ 0x1p+0, false, false,
20759+ 0x1.0000000000001p+0, false, false,
20760+ false,
20761+ 0x1p+0, false, false,
20762+ 0x1p+0, false, false,
20763+ 0x1p+0, false, false,
20764+ 0x1.0000000000000002p+0, false, false,
20765+ false,
20766+ 0x1p+0, false, false,
20767+ 0x1p+0, false, false,
20768+ 0x1p+0, false, false,
20769+ 0x1.0000000000000002p+0, false, false,
20770+ true,
20771+ 0x1.00000000000000000000004p+0, false, false,
20772+ 0x1.00000000000000000000004p+0, false, false,
20773+ 0x1.00000000000000000000004p+0, false, false,
20774+ 0x1.00000000000000000000004p+0, false, false,
20775+ true,
20776+ 0x1.00000000000000000000004p+0, false, false,
20777+ 0x1.00000000000000000000004p+0, false, false,
20778+ 0x1.00000000000000000000004p+0, false, false,
20779+ 0x1.00000000000000000000004p+0, false, false),
20780 TEST ("1.0000000000000000000000000004038967834731580443708050254247"
20781 "865495926816947758197784423828125",
20782 false,
20783- 0x1p+0, false,
20784- 0x1p+0, false,
20785- 0x1p+0, false,
20786- 0x1.000002p+0, false,
20787- false,
20788- 0x1p+0, false,
20789- 0x1p+0, false,
20790- 0x1p+0, false,
20791- 0x1.0000000000001p+0, false,
20792- false,
20793- 0x1p+0, false,
20794- 0x1p+0, false,
20795- 0x1p+0, false,
20796- 0x1.0000000000000002p+0, false,
20797- false,
20798- 0x1p+0, false,
20799- 0x1p+0, false,
20800- 0x1p+0, false,
20801- 0x1.0000000000000002p+0, false,
20802- true,
20803- 0x1.00000000000000000000002p+0, false,
20804- 0x1.00000000000000000000002p+0, false,
20805- 0x1.00000000000000000000002p+0, false,
20806- 0x1.00000000000000000000002p+0, false,
20807- true,
20808- 0x1.00000000000000000000002p+0, false,
20809- 0x1.00000000000000000000002p+0, false,
20810- 0x1.00000000000000000000002p+0, false,
20811- 0x1.00000000000000000000002p+0, false),
20812+ 0x1p+0, false, false,
20813+ 0x1p+0, false, false,
20814+ 0x1p+0, false, false,
20815+ 0x1.000002p+0, false, false,
20816+ false,
20817+ 0x1p+0, false, false,
20818+ 0x1p+0, false, false,
20819+ 0x1p+0, false, false,
20820+ 0x1.0000000000001p+0, false, false,
20821+ false,
20822+ 0x1p+0, false, false,
20823+ 0x1p+0, false, false,
20824+ 0x1p+0, false, false,
20825+ 0x1.0000000000000002p+0, false, false,
20826+ false,
20827+ 0x1p+0, false, false,
20828+ 0x1p+0, false, false,
20829+ 0x1p+0, false, false,
20830+ 0x1.0000000000000002p+0, false, false,
20831+ true,
20832+ 0x1.00000000000000000000002p+0, false, false,
20833+ 0x1.00000000000000000000002p+0, false, false,
20834+ 0x1.00000000000000000000002p+0, false, false,
20835+ 0x1.00000000000000000000002p+0, false, false,
20836+ true,
20837+ 0x1.00000000000000000000002p+0, false, false,
20838+ 0x1.00000000000000000000002p+0, false, false,
20839+ 0x1.00000000000000000000002p+0, false, false,
20840+ 0x1.00000000000000000000002p+0, false, false),
20841 TEST ("1.0000000000000000000000000002019483917365790221854025127123"
20842 "9327479634084738790988922119140625",
20843 false,
20844- 0x1p+0, false,
20845- 0x1p+0, false,
20846- 0x1p+0, false,
20847- 0x1.000002p+0, false,
20848- false,
20849- 0x1p+0, false,
20850- 0x1p+0, false,
20851- 0x1p+0, false,
20852- 0x1.0000000000001p+0, false,
20853- false,
20854- 0x1p+0, false,
20855- 0x1p+0, false,
20856- 0x1p+0, false,
20857- 0x1.0000000000000002p+0, false,
20858- false,
20859- 0x1p+0, false,
20860- 0x1p+0, false,
20861- 0x1p+0, false,
20862- 0x1.0000000000000002p+0, false,
20863- true,
20864- 0x1.00000000000000000000001p+0, false,
20865- 0x1.00000000000000000000001p+0, false,
20866- 0x1.00000000000000000000001p+0, false,
20867- 0x1.00000000000000000000001p+0, false,
20868- true,
20869- 0x1.00000000000000000000001p+0, false,
20870- 0x1.00000000000000000000001p+0, false,
20871- 0x1.00000000000000000000001p+0, false,
20872- 0x1.00000000000000000000001p+0, false),
20873+ 0x1p+0, false, false,
20874+ 0x1p+0, false, false,
20875+ 0x1p+0, false, false,
20876+ 0x1.000002p+0, false, false,
20877+ false,
20878+ 0x1p+0, false, false,
20879+ 0x1p+0, false, false,
20880+ 0x1p+0, false, false,
20881+ 0x1.0000000000001p+0, false, false,
20882+ false,
20883+ 0x1p+0, false, false,
20884+ 0x1p+0, false, false,
20885+ 0x1p+0, false, false,
20886+ 0x1.0000000000000002p+0, false, false,
20887+ false,
20888+ 0x1p+0, false, false,
20889+ 0x1p+0, false, false,
20890+ 0x1p+0, false, false,
20891+ 0x1.0000000000000002p+0, false, false,
20892+ true,
20893+ 0x1.00000000000000000000001p+0, false, false,
20894+ 0x1.00000000000000000000001p+0, false, false,
20895+ 0x1.00000000000000000000001p+0, false, false,
20896+ 0x1.00000000000000000000001p+0, false, false,
20897+ true,
20898+ 0x1.00000000000000000000001p+0, false, false,
20899+ 0x1.00000000000000000000001p+0, false, false,
20900+ 0x1.00000000000000000000001p+0, false, false,
20901+ 0x1.00000000000000000000001p+0, false, false),
20902 TEST ("1.0000000000000000000000000001009741958682895110927012563561"
20903 "96637398170423693954944610595703125",
20904 false,
20905- 0x1p+0, false,
20906- 0x1p+0, false,
20907- 0x1p+0, false,
20908- 0x1.000002p+0, false,
20909- false,
20910- 0x1p+0, false,
20911- 0x1p+0, false,
20912- 0x1p+0, false,
20913- 0x1.0000000000001p+0, false,
20914- false,
20915- 0x1p+0, false,
20916- 0x1p+0, false,
20917- 0x1p+0, false,
20918- 0x1.0000000000000002p+0, false,
20919- false,
20920- 0x1p+0, false,
20921- 0x1p+0, false,
20922- 0x1p+0, false,
20923- 0x1.0000000000000002p+0, false,
20924- true,
20925- 0x1.000000000000000000000008p+0, false,
20926- 0x1.000000000000000000000008p+0, false,
20927- 0x1.000000000000000000000008p+0, false,
20928- 0x1.000000000000000000000008p+0, false,
20929- true,
20930- 0x1.000000000000000000000008p+0, false,
20931- 0x1.000000000000000000000008p+0, false,
20932- 0x1.000000000000000000000008p+0, false,
20933- 0x1.000000000000000000000008p+0, false),
20934+ 0x1p+0, false, false,
20935+ 0x1p+0, false, false,
20936+ 0x1p+0, false, false,
20937+ 0x1.000002p+0, false, false,
20938+ false,
20939+ 0x1p+0, false, false,
20940+ 0x1p+0, false, false,
20941+ 0x1p+0, false, false,
20942+ 0x1.0000000000001p+0, false, false,
20943+ false,
20944+ 0x1p+0, false, false,
20945+ 0x1p+0, false, false,
20946+ 0x1p+0, false, false,
20947+ 0x1.0000000000000002p+0, false, false,
20948+ false,
20949+ 0x1p+0, false, false,
20950+ 0x1p+0, false, false,
20951+ 0x1p+0, false, false,
20952+ 0x1.0000000000000002p+0, false, false,
20953+ true,
20954+ 0x1.000000000000000000000008p+0, false, false,
20955+ 0x1.000000000000000000000008p+0, false, false,
20956+ 0x1.000000000000000000000008p+0, false, false,
20957+ 0x1.000000000000000000000008p+0, false, false,
20958+ true,
20959+ 0x1.000000000000000000000008p+0, false, false,
20960+ 0x1.000000000000000000000008p+0, false, false,
20961+ 0x1.000000000000000000000008p+0, false, false,
20962+ 0x1.000000000000000000000008p+0, false, false),
20963 TEST ("1.0000000000000000000000000000504870979341447555463506281780"
20964 "983186990852118469774723052978515625",
20965 false,
20966- 0x1p+0, false,
20967- 0x1p+0, false,
20968- 0x1p+0, false,
20969- 0x1.000002p+0, false,
20970- false,
20971- 0x1p+0, false,
20972- 0x1p+0, false,
20973- 0x1p+0, false,
20974- 0x1.0000000000001p+0, false,
20975- false,
20976- 0x1p+0, false,
20977- 0x1p+0, false,
20978- 0x1p+0, false,
20979- 0x1.0000000000000002p+0, false,
20980- false,
20981- 0x1p+0, false,
20982- 0x1p+0, false,
20983- 0x1p+0, false,
20984- 0x1.0000000000000002p+0, false,
20985- true,
20986- 0x1.000000000000000000000004p+0, false,
20987- 0x1.000000000000000000000004p+0, false,
20988- 0x1.000000000000000000000004p+0, false,
20989- 0x1.000000000000000000000004p+0, false,
20990- true,
20991- 0x1.000000000000000000000004p+0, false,
20992- 0x1.000000000000000000000004p+0, false,
20993- 0x1.000000000000000000000004p+0, false,
20994- 0x1.000000000000000000000004p+0, false),
20995+ 0x1p+0, false, false,
20996+ 0x1p+0, false, false,
20997+ 0x1p+0, false, false,
20998+ 0x1.000002p+0, false, false,
20999+ false,
21000+ 0x1p+0, false, false,
21001+ 0x1p+0, false, false,
21002+ 0x1p+0, false, false,
21003+ 0x1.0000000000001p+0, false, false,
21004+ false,
21005+ 0x1p+0, false, false,
21006+ 0x1p+0, false, false,
21007+ 0x1p+0, false, false,
21008+ 0x1.0000000000000002p+0, false, false,
21009+ false,
21010+ 0x1p+0, false, false,
21011+ 0x1p+0, false, false,
21012+ 0x1p+0, false, false,
21013+ 0x1.0000000000000002p+0, false, false,
21014+ true,
21015+ 0x1.000000000000000000000004p+0, false, false,
21016+ 0x1.000000000000000000000004p+0, false, false,
21017+ 0x1.000000000000000000000004p+0, false, false,
21018+ 0x1.000000000000000000000004p+0, false, false,
21019+ true,
21020+ 0x1.000000000000000000000004p+0, false, false,
21021+ 0x1.000000000000000000000004p+0, false, false,
21022+ 0x1.000000000000000000000004p+0, false, false,
21023+ 0x1.000000000000000000000004p+0, false, false),
21024 TEST ("1.0000000000000000000000000000252435489670723777731753140890"
21025 "4915934954260592348873615264892578125",
21026 false,
21027- 0x1p+0, false,
21028- 0x1p+0, false,
21029- 0x1p+0, false,
21030- 0x1.000002p+0, false,
21031- false,
21032- 0x1p+0, false,
21033- 0x1p+0, false,
21034- 0x1p+0, false,
21035- 0x1.0000000000001p+0, false,
21036- false,
21037- 0x1p+0, false,
21038- 0x1p+0, false,
21039- 0x1p+0, false,
21040- 0x1.0000000000000002p+0, false,
21041- false,
21042- 0x1p+0, false,
21043- 0x1p+0, false,
21044- 0x1p+0, false,
21045- 0x1.0000000000000002p+0, false,
21046- true,
21047- 0x1.000000000000000000000002p+0, false,
21048- 0x1.000000000000000000000002p+0, false,
21049- 0x1.000000000000000000000002p+0, false,
21050- 0x1.000000000000000000000002p+0, false,
21051- true,
21052- 0x1.000000000000000000000002p+0, false,
21053- 0x1.000000000000000000000002p+0, false,
21054- 0x1.000000000000000000000002p+0, false,
21055- 0x1.000000000000000000000002p+0, false),
21056+ 0x1p+0, false, false,
21057+ 0x1p+0, false, false,
21058+ 0x1p+0, false, false,
21059+ 0x1.000002p+0, false, false,
21060+ false,
21061+ 0x1p+0, false, false,
21062+ 0x1p+0, false, false,
21063+ 0x1p+0, false, false,
21064+ 0x1.0000000000001p+0, false, false,
21065+ false,
21066+ 0x1p+0, false, false,
21067+ 0x1p+0, false, false,
21068+ 0x1p+0, false, false,
21069+ 0x1.0000000000000002p+0, false, false,
21070+ false,
21071+ 0x1p+0, false, false,
21072+ 0x1p+0, false, false,
21073+ 0x1p+0, false, false,
21074+ 0x1.0000000000000002p+0, false, false,
21075+ true,
21076+ 0x1.000000000000000000000002p+0, false, false,
21077+ 0x1.000000000000000000000002p+0, false, false,
21078+ 0x1.000000000000000000000002p+0, false, false,
21079+ 0x1.000000000000000000000002p+0, false, false,
21080+ true,
21081+ 0x1.000000000000000000000002p+0, false, false,
21082+ 0x1.000000000000000000000002p+0, false, false,
21083+ 0x1.000000000000000000000002p+0, false, false,
21084+ 0x1.000000000000000000000002p+0, false, false),
21085 TEST ("1.0000000000000000000000000000126217744835361888865876570445"
21086 "24579674771302961744368076324462890625",
21087 false,
21088- 0x1p+0, false,
21089- 0x1p+0, false,
21090- 0x1p+0, false,
21091- 0x1.000002p+0, false,
21092- false,
21093- 0x1p+0, false,
21094- 0x1p+0, false,
21095- 0x1p+0, false,
21096- 0x1.0000000000001p+0, false,
21097- false,
21098- 0x1p+0, false,
21099- 0x1p+0, false,
21100- 0x1p+0, false,
21101- 0x1.0000000000000002p+0, false,
21102- false,
21103- 0x1p+0, false,
21104- 0x1p+0, false,
21105- 0x1p+0, false,
21106- 0x1.0000000000000002p+0, false,
21107- true,
21108- 0x1.000000000000000000000001p+0, false,
21109- 0x1.000000000000000000000001p+0, false,
21110- 0x1.000000000000000000000001p+0, false,
21111- 0x1.000000000000000000000001p+0, false,
21112- true,
21113- 0x1.000000000000000000000001p+0, false,
21114- 0x1.000000000000000000000001p+0, false,
21115- 0x1.000000000000000000000001p+0, false,
21116- 0x1.000000000000000000000001p+0, false),
21117+ 0x1p+0, false, false,
21118+ 0x1p+0, false, false,
21119+ 0x1p+0, false, false,
21120+ 0x1.000002p+0, false, false,
21121+ false,
21122+ 0x1p+0, false, false,
21123+ 0x1p+0, false, false,
21124+ 0x1p+0, false, false,
21125+ 0x1.0000000000001p+0, false, false,
21126+ false,
21127+ 0x1p+0, false, false,
21128+ 0x1p+0, false, false,
21129+ 0x1p+0, false, false,
21130+ 0x1.0000000000000002p+0, false, false,
21131+ false,
21132+ 0x1p+0, false, false,
21133+ 0x1p+0, false, false,
21134+ 0x1p+0, false, false,
21135+ 0x1.0000000000000002p+0, false, false,
21136+ true,
21137+ 0x1.000000000000000000000001p+0, false, false,
21138+ 0x1.000000000000000000000001p+0, false, false,
21139+ 0x1.000000000000000000000001p+0, false, false,
21140+ 0x1.000000000000000000000001p+0, false, false,
21141+ true,
21142+ 0x1.000000000000000000000001p+0, false, false,
21143+ 0x1.000000000000000000000001p+0, false, false,
21144+ 0x1.000000000000000000000001p+0, false, false,
21145+ 0x1.000000000000000000000001p+0, false, false),
21146 TEST ("1.0000000000000000000000000000063108872417680944432938285222"
21147 "622898373856514808721840381622314453125",
21148 false,
21149- 0x1p+0, false,
21150- 0x1p+0, false,
21151- 0x1p+0, false,
21152- 0x1.000002p+0, false,
21153- false,
21154- 0x1p+0, false,
21155- 0x1p+0, false,
21156- 0x1p+0, false,
21157- 0x1.0000000000001p+0, false,
21158- false,
21159- 0x1p+0, false,
21160- 0x1p+0, false,
21161- 0x1p+0, false,
21162- 0x1.0000000000000002p+0, false,
21163- false,
21164- 0x1p+0, false,
21165- 0x1p+0, false,
21166- 0x1p+0, false,
21167- 0x1.0000000000000002p+0, false,
21168- true,
21169- 0x1.0000000000000000000000008p+0, false,
21170- 0x1.0000000000000000000000008p+0, false,
21171- 0x1.0000000000000000000000008p+0, false,
21172- 0x1.0000000000000000000000008p+0, false,
21173- true,
21174- 0x1.0000000000000000000000008p+0, false,
21175- 0x1.0000000000000000000000008p+0, false,
21176- 0x1.0000000000000000000000008p+0, false,
21177- 0x1.0000000000000000000000008p+0, false),
21178+ 0x1p+0, false, false,
21179+ 0x1p+0, false, false,
21180+ 0x1p+0, false, false,
21181+ 0x1.000002p+0, false, false,
21182+ false,
21183+ 0x1p+0, false, false,
21184+ 0x1p+0, false, false,
21185+ 0x1p+0, false, false,
21186+ 0x1.0000000000001p+0, false, false,
21187+ false,
21188+ 0x1p+0, false, false,
21189+ 0x1p+0, false, false,
21190+ 0x1p+0, false, false,
21191+ 0x1.0000000000000002p+0, false, false,
21192+ false,
21193+ 0x1p+0, false, false,
21194+ 0x1p+0, false, false,
21195+ 0x1p+0, false, false,
21196+ 0x1.0000000000000002p+0, false, false,
21197+ true,
21198+ 0x1.0000000000000000000000008p+0, false, false,
21199+ 0x1.0000000000000000000000008p+0, false, false,
21200+ 0x1.0000000000000000000000008p+0, false, false,
21201+ 0x1.0000000000000000000000008p+0, false, false,
21202+ true,
21203+ 0x1.0000000000000000000000008p+0, false, false,
21204+ 0x1.0000000000000000000000008p+0, false, false,
21205+ 0x1.0000000000000000000000008p+0, false, false,
21206+ 0x1.0000000000000000000000008p+0, false, false),
21207 TEST ("1.0000000000000000000000000000031554436208840472216469142611"
21208 "3114491869282574043609201908111572265625",
21209 false,
21210- 0x1p+0, false,
21211- 0x1p+0, false,
21212- 0x1p+0, false,
21213- 0x1.000002p+0, false,
21214- false,
21215- 0x1p+0, false,
21216- 0x1p+0, false,
21217- 0x1p+0, false,
21218- 0x1.0000000000001p+0, false,
21219- false,
21220- 0x1p+0, false,
21221- 0x1p+0, false,
21222- 0x1p+0, false,
21223- 0x1.0000000000000002p+0, false,
21224- false,
21225- 0x1p+0, false,
21226- 0x1p+0, false,
21227- 0x1p+0, false,
21228- 0x1.0000000000000002p+0, false,
21229- true,
21230- 0x1.0000000000000000000000004p+0, false,
21231- 0x1.0000000000000000000000004p+0, false,
21232- 0x1.0000000000000000000000004p+0, false,
21233- 0x1.0000000000000000000000004p+0, false,
21234- true,
21235- 0x1.0000000000000000000000004p+0, false,
21236- 0x1.0000000000000000000000004p+0, false,
21237- 0x1.0000000000000000000000004p+0, false,
21238- 0x1.0000000000000000000000004p+0, false),
21239+ 0x1p+0, false, false,
21240+ 0x1p+0, false, false,
21241+ 0x1p+0, false, false,
21242+ 0x1.000002p+0, false, false,
21243+ false,
21244+ 0x1p+0, false, false,
21245+ 0x1p+0, false, false,
21246+ 0x1p+0, false, false,
21247+ 0x1.0000000000001p+0, false, false,
21248+ false,
21249+ 0x1p+0, false, false,
21250+ 0x1p+0, false, false,
21251+ 0x1p+0, false, false,
21252+ 0x1.0000000000000002p+0, false, false,
21253+ false,
21254+ 0x1p+0, false, false,
21255+ 0x1p+0, false, false,
21256+ 0x1p+0, false, false,
21257+ 0x1.0000000000000002p+0, false, false,
21258+ true,
21259+ 0x1.0000000000000000000000004p+0, false, false,
21260+ 0x1.0000000000000000000000004p+0, false, false,
21261+ 0x1.0000000000000000000000004p+0, false, false,
21262+ 0x1.0000000000000000000000004p+0, false, false,
21263+ true,
21264+ 0x1.0000000000000000000000004p+0, false, false,
21265+ 0x1.0000000000000000000000004p+0, false, false,
21266+ 0x1.0000000000000000000000004p+0, false, false,
21267+ 0x1.0000000000000000000000004p+0, false, false),
21268 TEST ("1.0000000000000000000000000000015777218104420236108234571305"
21269 "65572459346412870218046009540557861328125",
21270 false,
21271- 0x1p+0, false,
21272- 0x1p+0, false,
21273- 0x1p+0, false,
21274- 0x1.000002p+0, false,
21275- false,
21276- 0x1p+0, false,
21277- 0x1p+0, false,
21278- 0x1p+0, false,
21279- 0x1.0000000000001p+0, false,
21280- false,
21281- 0x1p+0, false,
21282- 0x1p+0, false,
21283- 0x1p+0, false,
21284- 0x1.0000000000000002p+0, false,
21285- false,
21286- 0x1p+0, false,
21287- 0x1p+0, false,
21288- 0x1p+0, false,
21289- 0x1.0000000000000002p+0, false,
21290- true,
21291- 0x1.0000000000000000000000002p+0, false,
21292- 0x1.0000000000000000000000002p+0, false,
21293- 0x1.0000000000000000000000002p+0, false,
21294- 0x1.0000000000000000000000002p+0, false,
21295- true,
21296- 0x1.0000000000000000000000002p+0, false,
21297- 0x1.0000000000000000000000002p+0, false,
21298- 0x1.0000000000000000000000002p+0, false,
21299- 0x1.0000000000000000000000002p+0, false),
21300+ 0x1p+0, false, false,
21301+ 0x1p+0, false, false,
21302+ 0x1p+0, false, false,
21303+ 0x1.000002p+0, false, false,
21304+ false,
21305+ 0x1p+0, false, false,
21306+ 0x1p+0, false, false,
21307+ 0x1p+0, false, false,
21308+ 0x1.0000000000001p+0, false, false,
21309+ false,
21310+ 0x1p+0, false, false,
21311+ 0x1p+0, false, false,
21312+ 0x1p+0, false, false,
21313+ 0x1.0000000000000002p+0, false, false,
21314+ false,
21315+ 0x1p+0, false, false,
21316+ 0x1p+0, false, false,
21317+ 0x1p+0, false, false,
21318+ 0x1.0000000000000002p+0, false, false,
21319+ true,
21320+ 0x1.0000000000000000000000002p+0, false, false,
21321+ 0x1.0000000000000000000000002p+0, false, false,
21322+ 0x1.0000000000000000000000002p+0, false, false,
21323+ 0x1.0000000000000000000000002p+0, false, false,
21324+ true,
21325+ 0x1.0000000000000000000000002p+0, false, false,
21326+ 0x1.0000000000000000000000002p+0, false, false,
21327+ 0x1.0000000000000000000000002p+0, false, false,
21328+ 0x1.0000000000000000000000002p+0, false, false),
21329 TEST ("1.0000000000000000000000000000007888609052210118054117285652"
21330 "827862296732064351090230047702789306640625",
21331 false,
21332- 0x1p+0, false,
21333- 0x1p+0, false,
21334- 0x1p+0, false,
21335- 0x1.000002p+0, false,
21336- false,
21337- 0x1p+0, false,
21338- 0x1p+0, false,
21339- 0x1p+0, false,
21340- 0x1.0000000000001p+0, false,
21341- false,
21342- 0x1p+0, false,
21343- 0x1p+0, false,
21344- 0x1p+0, false,
21345- 0x1.0000000000000002p+0, false,
21346- false,
21347- 0x1p+0, false,
21348- 0x1p+0, false,
21349- 0x1p+0, false,
21350- 0x1.0000000000000002p+0, false,
21351- true,
21352- 0x1.0000000000000000000000001p+0, false,
21353- 0x1.0000000000000000000000001p+0, false,
21354- 0x1.0000000000000000000000001p+0, false,
21355- 0x1.0000000000000000000000001p+0, false,
21356- true,
21357- 0x1.0000000000000000000000001p+0, false,
21358- 0x1.0000000000000000000000001p+0, false,
21359- 0x1.0000000000000000000000001p+0, false,
21360- 0x1.0000000000000000000000001p+0, false),
21361+ 0x1p+0, false, false,
21362+ 0x1p+0, false, false,
21363+ 0x1p+0, false, false,
21364+ 0x1.000002p+0, false, false,
21365+ false,
21366+ 0x1p+0, false, false,
21367+ 0x1p+0, false, false,
21368+ 0x1p+0, false, false,
21369+ 0x1.0000000000001p+0, false, false,
21370+ false,
21371+ 0x1p+0, false, false,
21372+ 0x1p+0, false, false,
21373+ 0x1p+0, false, false,
21374+ 0x1.0000000000000002p+0, false, false,
21375+ false,
21376+ 0x1p+0, false, false,
21377+ 0x1p+0, false, false,
21378+ 0x1p+0, false, false,
21379+ 0x1.0000000000000002p+0, false, false,
21380+ true,
21381+ 0x1.0000000000000000000000001p+0, false, false,
21382+ 0x1.0000000000000000000000001p+0, false, false,
21383+ 0x1.0000000000000000000000001p+0, false, false,
21384+ 0x1.0000000000000000000000001p+0, false, false,
21385+ true,
21386+ 0x1.0000000000000000000000001p+0, false, false,
21387+ 0x1.0000000000000000000000001p+0, false, false,
21388+ 0x1.0000000000000000000000001p+0, false, false,
21389+ 0x1.0000000000000000000000001p+0, false, false),
21390 TEST ("1.0000000000000000000000000000003944304526105059027058642826"
21391 "4139311483660321755451150238513946533203125",
21392 false,
21393- 0x1p+0, false,
21394- 0x1p+0, false,
21395- 0x1p+0, false,
21396- 0x1.000002p+0, false,
21397- false,
21398- 0x1p+0, false,
21399- 0x1p+0, false,
21400- 0x1p+0, false,
21401- 0x1.0000000000001p+0, false,
21402- false,
21403- 0x1p+0, false,
21404- 0x1p+0, false,
21405- 0x1p+0, false,
21406- 0x1.0000000000000002p+0, false,
21407- false,
21408- 0x1p+0, false,
21409- 0x1p+0, false,
21410- 0x1p+0, false,
21411- 0x1.0000000000000002p+0, false,
21412- true,
21413- 0x1.00000000000000000000000008p+0, false,
21414- 0x1.00000000000000000000000008p+0, false,
21415- 0x1.00000000000000000000000008p+0, false,
21416- 0x1.00000000000000000000000008p+0, false,
21417- true,
21418- 0x1.00000000000000000000000008p+0, false,
21419- 0x1.00000000000000000000000008p+0, false,
21420- 0x1.00000000000000000000000008p+0, false,
21421- 0x1.00000000000000000000000008p+0, false),
21422+ 0x1p+0, false, false,
21423+ 0x1p+0, false, false,
21424+ 0x1p+0, false, false,
21425+ 0x1.000002p+0, false, false,
21426+ false,
21427+ 0x1p+0, false, false,
21428+ 0x1p+0, false, false,
21429+ 0x1p+0, false, false,
21430+ 0x1.0000000000001p+0, false, false,
21431+ false,
21432+ 0x1p+0, false, false,
21433+ 0x1p+0, false, false,
21434+ 0x1p+0, false, false,
21435+ 0x1.0000000000000002p+0, false, false,
21436+ false,
21437+ 0x1p+0, false, false,
21438+ 0x1p+0, false, false,
21439+ 0x1p+0, false, false,
21440+ 0x1.0000000000000002p+0, false, false,
21441+ true,
21442+ 0x1.00000000000000000000000008p+0, false, false,
21443+ 0x1.00000000000000000000000008p+0, false, false,
21444+ 0x1.00000000000000000000000008p+0, false, false,
21445+ 0x1.00000000000000000000000008p+0, false, false,
21446+ true,
21447+ 0x1.00000000000000000000000008p+0, false, false,
21448+ 0x1.00000000000000000000000008p+0, false, false,
21449+ 0x1.00000000000000000000000008p+0, false, false,
21450+ 0x1.00000000000000000000000008p+0, false, false),
21451 TEST ("1.0000000000000000000000000000001972152263052529513529321413"
21452 "20696557418301608777255751192569732666015625",
21453 false,
21454- 0x1p+0, false,
21455- 0x1p+0, false,
21456- 0x1p+0, false,
21457- 0x1.000002p+0, false,
21458- false,
21459- 0x1p+0, false,
21460- 0x1p+0, false,
21461- 0x1p+0, false,
21462- 0x1.0000000000001p+0, false,
21463- false,
21464- 0x1p+0, false,
21465- 0x1p+0, false,
21466- 0x1p+0, false,
21467- 0x1.0000000000000002p+0, false,
21468- false,
21469- 0x1p+0, false,
21470- 0x1p+0, false,
21471- 0x1p+0, false,
21472- 0x1.0000000000000002p+0, false,
21473- true,
21474- 0x1.00000000000000000000000004p+0, false,
21475- 0x1.00000000000000000000000004p+0, false,
21476- 0x1.00000000000000000000000004p+0, false,
21477- 0x1.00000000000000000000000004p+0, false,
21478- true,
21479- 0x1.00000000000000000000000004p+0, false,
21480- 0x1.00000000000000000000000004p+0, false,
21481- 0x1.00000000000000000000000004p+0, false,
21482- 0x1.00000000000000000000000004p+0, false),
21483+ 0x1p+0, false, false,
21484+ 0x1p+0, false, false,
21485+ 0x1p+0, false, false,
21486+ 0x1.000002p+0, false, false,
21487+ false,
21488+ 0x1p+0, false, false,
21489+ 0x1p+0, false, false,
21490+ 0x1p+0, false, false,
21491+ 0x1.0000000000001p+0, false, false,
21492+ false,
21493+ 0x1p+0, false, false,
21494+ 0x1p+0, false, false,
21495+ 0x1p+0, false, false,
21496+ 0x1.0000000000000002p+0, false, false,
21497+ false,
21498+ 0x1p+0, false, false,
21499+ 0x1p+0, false, false,
21500+ 0x1p+0, false, false,
21501+ 0x1.0000000000000002p+0, false, false,
21502+ true,
21503+ 0x1.00000000000000000000000004p+0, false, false,
21504+ 0x1.00000000000000000000000004p+0, false, false,
21505+ 0x1.00000000000000000000000004p+0, false, false,
21506+ 0x1.00000000000000000000000004p+0, false, false,
21507+ true,
21508+ 0x1.00000000000000000000000004p+0, false, false,
21509+ 0x1.00000000000000000000000004p+0, false, false,
21510+ 0x1.00000000000000000000000004p+0, false, false,
21511+ 0x1.00000000000000000000000004p+0, false, false),
21512 TEST ("1.0000000000000000000000000000000986076131526264756764660706"
21513 "603482787091508043886278755962848663330078125",
21514 false,
21515- 0x1p+0, false,
21516- 0x1p+0, false,
21517- 0x1p+0, false,
21518- 0x1.000002p+0, false,
21519- false,
21520- 0x1p+0, false,
21521- 0x1p+0, false,
21522- 0x1p+0, false,
21523- 0x1.0000000000001p+0, false,
21524- false,
21525- 0x1p+0, false,
21526- 0x1p+0, false,
21527- 0x1p+0, false,
21528- 0x1.0000000000000002p+0, false,
21529- false,
21530- 0x1p+0, false,
21531- 0x1p+0, false,
21532- 0x1p+0, false,
21533- 0x1.0000000000000002p+0, false,
21534- true,
21535- 0x1.00000000000000000000000002p+0, false,
21536- 0x1.00000000000000000000000002p+0, false,
21537- 0x1.00000000000000000000000002p+0, false,
21538- 0x1.00000000000000000000000002p+0, false,
21539- true,
21540- 0x1.00000000000000000000000002p+0, false,
21541- 0x1.00000000000000000000000002p+0, false,
21542- 0x1.00000000000000000000000002p+0, false,
21543- 0x1.00000000000000000000000002p+0, false),
21544+ 0x1p+0, false, false,
21545+ 0x1p+0, false, false,
21546+ 0x1p+0, false, false,
21547+ 0x1.000002p+0, false, false,
21548+ false,
21549+ 0x1p+0, false, false,
21550+ 0x1p+0, false, false,
21551+ 0x1p+0, false, false,
21552+ 0x1.0000000000001p+0, false, false,
21553+ false,
21554+ 0x1p+0, false, false,
21555+ 0x1p+0, false, false,
21556+ 0x1p+0, false, false,
21557+ 0x1.0000000000000002p+0, false, false,
21558+ false,
21559+ 0x1p+0, false, false,
21560+ 0x1p+0, false, false,
21561+ 0x1p+0, false, false,
21562+ 0x1.0000000000000002p+0, false, false,
21563+ true,
21564+ 0x1.00000000000000000000000002p+0, false, false,
21565+ 0x1.00000000000000000000000002p+0, false, false,
21566+ 0x1.00000000000000000000000002p+0, false, false,
21567+ 0x1.00000000000000000000000002p+0, false, false,
21568+ true,
21569+ 0x1.00000000000000000000000002p+0, false, false,
21570+ 0x1.00000000000000000000000002p+0, false, false,
21571+ 0x1.00000000000000000000000002p+0, false, false,
21572+ 0x1.00000000000000000000000002p+0, false, false),
21573 TEST ("1.0000000000000000000000000000000493038065763132378382330353"
21574 "3017413935457540219431393779814243316650390625",
21575 false,
21576- 0x1p+0, false,
21577- 0x1p+0, false,
21578- 0x1p+0, false,
21579- 0x1.000002p+0, false,
21580- false,
21581- 0x1p+0, false,
21582- 0x1p+0, false,
21583- 0x1p+0, false,
21584- 0x1.0000000000001p+0, false,
21585- false,
21586- 0x1p+0, false,
21587- 0x1p+0, false,
21588- 0x1p+0, false,
21589- 0x1.0000000000000002p+0, false,
21590- false,
21591- 0x1p+0, false,
21592- 0x1p+0, false,
21593- 0x1p+0, false,
21594- 0x1.0000000000000002p+0, false,
21595- true,
21596- 0x1.00000000000000000000000001p+0, false,
21597- 0x1.00000000000000000000000001p+0, false,
21598- 0x1.00000000000000000000000001p+0, false,
21599- 0x1.00000000000000000000000001p+0, false,
21600- true,
21601- 0x1.00000000000000000000000001p+0, false,
21602- 0x1.00000000000000000000000001p+0, false,
21603- 0x1.00000000000000000000000001p+0, false,
21604- 0x1.00000000000000000000000001p+0, false),
21605+ 0x1p+0, false, false,
21606+ 0x1p+0, false, false,
21607+ 0x1p+0, false, false,
21608+ 0x1.000002p+0, false, false,
21609+ false,
21610+ 0x1p+0, false, false,
21611+ 0x1p+0, false, false,
21612+ 0x1p+0, false, false,
21613+ 0x1.0000000000001p+0, false, false,
21614+ false,
21615+ 0x1p+0, false, false,
21616+ 0x1p+0, false, false,
21617+ 0x1p+0, false, false,
21618+ 0x1.0000000000000002p+0, false, false,
21619+ false,
21620+ 0x1p+0, false, false,
21621+ 0x1p+0, false, false,
21622+ 0x1p+0, false, false,
21623+ 0x1.0000000000000002p+0, false, false,
21624+ true,
21625+ 0x1.00000000000000000000000001p+0, false, false,
21626+ 0x1.00000000000000000000000001p+0, false, false,
21627+ 0x1.00000000000000000000000001p+0, false, false,
21628+ 0x1.00000000000000000000000001p+0, false, false,
21629+ true,
21630+ 0x1.00000000000000000000000001p+0, false, false,
21631+ 0x1.00000000000000000000000001p+0, false, false,
21632+ 0x1.00000000000000000000000001p+0, false, false,
21633+ 0x1.00000000000000000000000001p+0, false, false),
21634 TEST ("1.0000000000000000000000000000000246519032881566189191165176"
21635 "65087069677287701097156968899071216583251953125",
21636 false,
21637- 0x1p+0, false,
21638- 0x1p+0, false,
21639- 0x1p+0, false,
21640- 0x1.000002p+0, false,
21641- false,
21642- 0x1p+0, false,
21643- 0x1p+0, false,
21644- 0x1p+0, false,
21645- 0x1.0000000000001p+0, false,
21646- false,
21647- 0x1p+0, false,
21648- 0x1p+0, false,
21649- 0x1p+0, false,
21650- 0x1.0000000000000002p+0, false,
21651- false,
21652- 0x1p+0, false,
21653- 0x1p+0, false,
21654- 0x1p+0, false,
21655- 0x1.0000000000000002p+0, false,
21656- true,
21657- 0x1.000000000000000000000000008p+0, false,
21658- 0x1.000000000000000000000000008p+0, false,
21659- 0x1.000000000000000000000000008p+0, false,
21660- 0x1.000000000000000000000000008p+0, false,
21661- true,
21662- 0x1.000000000000000000000000008p+0, false,
21663- 0x1.000000000000000000000000008p+0, false,
21664- 0x1.000000000000000000000000008p+0, false,
21665- 0x1.000000000000000000000000008p+0, false),
21666+ 0x1p+0, false, false,
21667+ 0x1p+0, false, false,
21668+ 0x1p+0, false, false,
21669+ 0x1.000002p+0, false, false,
21670+ false,
21671+ 0x1p+0, false, false,
21672+ 0x1p+0, false, false,
21673+ 0x1p+0, false, false,
21674+ 0x1.0000000000001p+0, false, false,
21675+ false,
21676+ 0x1p+0, false, false,
21677+ 0x1p+0, false, false,
21678+ 0x1p+0, false, false,
21679+ 0x1.0000000000000002p+0, false, false,
21680+ false,
21681+ 0x1p+0, false, false,
21682+ 0x1p+0, false, false,
21683+ 0x1p+0, false, false,
21684+ 0x1.0000000000000002p+0, false, false,
21685+ true,
21686+ 0x1.000000000000000000000000008p+0, false, false,
21687+ 0x1.000000000000000000000000008p+0, false, false,
21688+ 0x1.000000000000000000000000008p+0, false, false,
21689+ 0x1.000000000000000000000000008p+0, false, false,
21690+ true,
21691+ 0x1.000000000000000000000000008p+0, false, false,
21692+ 0x1.000000000000000000000000008p+0, false, false,
21693+ 0x1.000000000000000000000000008p+0, false, false,
21694+ 0x1.000000000000000000000000008p+0, false, false),
21695 TEST ("1.0000000000000000000000000000000123259516440783094595582588"
21696 "325435348386438505485784844495356082916259765625",
21697 false,
21698- 0x1p+0, false,
21699- 0x1p+0, false,
21700- 0x1p+0, false,
21701- 0x1.000002p+0, false,
21702- false,
21703- 0x1p+0, false,
21704- 0x1p+0, false,
21705- 0x1p+0, false,
21706- 0x1.0000000000001p+0, false,
21707- false,
21708- 0x1p+0, false,
21709- 0x1p+0, false,
21710- 0x1p+0, false,
21711- 0x1.0000000000000002p+0, false,
21712- false,
21713- 0x1p+0, false,
21714- 0x1p+0, false,
21715- 0x1p+0, false,
21716- 0x1.0000000000000002p+0, false,
21717- false,
21718- 0x1p+0, false,
21719- 0x1p+0, false,
21720- 0x1p+0, false,
21721- 0x1.000000000000000000000000008p+0, false,
21722- true,
21723- 0x1.000000000000000000000000004p+0, false,
21724- 0x1.000000000000000000000000004p+0, false,
21725- 0x1.000000000000000000000000004p+0, false,
21726- 0x1.000000000000000000000000004p+0, false),
21727+ 0x1p+0, false, false,
21728+ 0x1p+0, false, false,
21729+ 0x1p+0, false, false,
21730+ 0x1.000002p+0, false, false,
21731+ false,
21732+ 0x1p+0, false, false,
21733+ 0x1p+0, false, false,
21734+ 0x1p+0, false, false,
21735+ 0x1.0000000000001p+0, false, false,
21736+ false,
21737+ 0x1p+0, false, false,
21738+ 0x1p+0, false, false,
21739+ 0x1p+0, false, false,
21740+ 0x1.0000000000000002p+0, false, false,
21741+ false,
21742+ 0x1p+0, false, false,
21743+ 0x1p+0, false, false,
21744+ 0x1p+0, false, false,
21745+ 0x1.0000000000000002p+0, false, false,
21746+ false,
21747+ 0x1p+0, false, false,
21748+ 0x1p+0, false, false,
21749+ 0x1p+0, false, false,
21750+ 0x1.000000000000000000000000008p+0, false, false,
21751+ true,
21752+ 0x1.000000000000000000000000004p+0, false, false,
21753+ 0x1.000000000000000000000000004p+0, false, false,
21754+ 0x1.000000000000000000000000004p+0, false, false,
21755+ 0x1.000000000000000000000000004p+0, false, false),
21756 TEST ("1.0000000000000000000000000000000061629758220391547297791294"
21757 "1627176741932192527428924222476780414581298828125",
21758 false,
21759- 0x1p+0, false,
21760- 0x1p+0, false,
21761- 0x1p+0, false,
21762- 0x1.000002p+0, false,
21763- false,
21764- 0x1p+0, false,
21765- 0x1p+0, false,
21766- 0x1p+0, false,
21767- 0x1.0000000000001p+0, false,
21768- false,
21769- 0x1p+0, false,
21770- 0x1p+0, false,
21771- 0x1p+0, false,
21772- 0x1.0000000000000002p+0, false,
21773- false,
21774- 0x1p+0, false,
21775- 0x1p+0, false,
21776- 0x1p+0, false,
21777- 0x1.0000000000000002p+0, false,
21778- false,
21779- 0x1p+0, false,
21780- 0x1p+0, false,
21781- 0x1p+0, false,
21782- 0x1.000000000000000000000000008p+0, false,
21783- true,
21784- 0x1.000000000000000000000000002p+0, false,
21785- 0x1.000000000000000000000000002p+0, false,
21786- 0x1.000000000000000000000000002p+0, false,
21787- 0x1.000000000000000000000000002p+0, false),
21788+ 0x1p+0, false, false,
21789+ 0x1p+0, false, false,
21790+ 0x1p+0, false, false,
21791+ 0x1.000002p+0, false, false,
21792+ false,
21793+ 0x1p+0, false, false,
21794+ 0x1p+0, false, false,
21795+ 0x1p+0, false, false,
21796+ 0x1.0000000000001p+0, false, false,
21797+ false,
21798+ 0x1p+0, false, false,
21799+ 0x1p+0, false, false,
21800+ 0x1p+0, false, false,
21801+ 0x1.0000000000000002p+0, false, false,
21802+ false,
21803+ 0x1p+0, false, false,
21804+ 0x1p+0, false, false,
21805+ 0x1p+0, false, false,
21806+ 0x1.0000000000000002p+0, false, false,
21807+ false,
21808+ 0x1p+0, false, false,
21809+ 0x1p+0, false, false,
21810+ 0x1p+0, false, false,
21811+ 0x1.000000000000000000000000008p+0, false, false,
21812+ true,
21813+ 0x1.000000000000000000000000002p+0, false, false,
21814+ 0x1.000000000000000000000000002p+0, false, false,
21815+ 0x1.000000000000000000000000002p+0, false, false,
21816+ 0x1.000000000000000000000000002p+0, false, false),
21817 TEST ("1.0000000000000000000000000000000030814879110195773648895647"
21818 "08135883709660962637144621112383902072906494140625",
21819 false,
21820- 0x1p+0, false,
21821- 0x1p+0, false,
21822- 0x1p+0, false,
21823- 0x1.000002p+0, false,
21824- false,
21825- 0x1p+0, false,
21826- 0x1p+0, false,
21827- 0x1p+0, false,
21828- 0x1.0000000000001p+0, false,
21829- false,
21830- 0x1p+0, false,
21831- 0x1p+0, false,
21832- 0x1p+0, false,
21833- 0x1.0000000000000002p+0, false,
21834- false,
21835- 0x1p+0, false,
21836- 0x1p+0, false,
21837- 0x1p+0, false,
21838- 0x1.0000000000000002p+0, false,
21839- false,
21840- 0x1p+0, false,
21841- 0x1p+0, false,
21842- 0x1p+0, false,
21843- 0x1.000000000000000000000000008p+0, false,
21844- true,
21845- 0x1.000000000000000000000000001p+0, false,
21846- 0x1.000000000000000000000000001p+0, false,
21847- 0x1.000000000000000000000000001p+0, false,
21848- 0x1.000000000000000000000000001p+0, false),
21849+ 0x1p+0, false, false,
21850+ 0x1p+0, false, false,
21851+ 0x1p+0, false, false,
21852+ 0x1.000002p+0, false, false,
21853+ false,
21854+ 0x1p+0, false, false,
21855+ 0x1p+0, false, false,
21856+ 0x1p+0, false, false,
21857+ 0x1.0000000000001p+0, false, false,
21858+ false,
21859+ 0x1p+0, false, false,
21860+ 0x1p+0, false, false,
21861+ 0x1p+0, false, false,
21862+ 0x1.0000000000000002p+0, false, false,
21863+ false,
21864+ 0x1p+0, false, false,
21865+ 0x1p+0, false, false,
21866+ 0x1p+0, false, false,
21867+ 0x1.0000000000000002p+0, false, false,
21868+ false,
21869+ 0x1p+0, false, false,
21870+ 0x1p+0, false, false,
21871+ 0x1p+0, false, false,
21872+ 0x1.000000000000000000000000008p+0, false, false,
21873+ true,
21874+ 0x1.000000000000000000000000001p+0, false, false,
21875+ 0x1.000000000000000000000000001p+0, false, false,
21876+ 0x1.000000000000000000000000001p+0, false, false,
21877+ 0x1.000000000000000000000000001p+0, false, false),
21878 TEST ("1.0000000000000000000000000000000015407439555097886824447823"
21879 "540679418548304813185723105561919510364532470703125",
21880 false,
21881- 0x1p+0, false,
21882- 0x1p+0, false,
21883- 0x1p+0, false,
21884- 0x1.000002p+0, false,
21885- false,
21886- 0x1p+0, false,
21887- 0x1p+0, false,
21888- 0x1p+0, false,
21889- 0x1.0000000000001p+0, false,
21890- false,
21891- 0x1p+0, false,
21892- 0x1p+0, false,
21893- 0x1p+0, false,
21894- 0x1.0000000000000002p+0, false,
21895- false,
21896- 0x1p+0, false,
21897- 0x1p+0, false,
21898- 0x1p+0, false,
21899- 0x1.0000000000000002p+0, false,
21900- false,
21901- 0x1p+0, false,
21902- 0x1p+0, false,
21903- 0x1p+0, false,
21904- 0x1.000000000000000000000000008p+0, false,
21905- true,
21906- 0x1.0000000000000000000000000008p+0, false,
21907- 0x1.0000000000000000000000000008p+0, false,
21908- 0x1.0000000000000000000000000008p+0, false,
21909- 0x1.0000000000000000000000000008p+0, false),
21910+ 0x1p+0, false, false,
21911+ 0x1p+0, false, false,
21912+ 0x1p+0, false, false,
21913+ 0x1.000002p+0, false, false,
21914+ false,
21915+ 0x1p+0, false, false,
21916+ 0x1p+0, false, false,
21917+ 0x1p+0, false, false,
21918+ 0x1.0000000000001p+0, false, false,
21919+ false,
21920+ 0x1p+0, false, false,
21921+ 0x1p+0, false, false,
21922+ 0x1p+0, false, false,
21923+ 0x1.0000000000000002p+0, false, false,
21924+ false,
21925+ 0x1p+0, false, false,
21926+ 0x1p+0, false, false,
21927+ 0x1p+0, false, false,
21928+ 0x1.0000000000000002p+0, false, false,
21929+ false,
21930+ 0x1p+0, false, false,
21931+ 0x1p+0, false, false,
21932+ 0x1p+0, false, false,
21933+ 0x1.000000000000000000000000008p+0, false, false,
21934+ true,
21935+ 0x1.0000000000000000000000000008p+0, false, false,
21936+ 0x1.0000000000000000000000000008p+0, false, false,
21937+ 0x1.0000000000000000000000000008p+0, false, false,
21938+ 0x1.0000000000000000000000000008p+0, false, false),
21939 TEST ("1.0000000000000000000000000000000007703719777548943412223911"
21940 "7703397092741524065928615527809597551822662353515625",
21941 false,
21942- 0x1p+0, false,
21943- 0x1p+0, false,
21944- 0x1p+0, false,
21945- 0x1.000002p+0, false,
21946- false,
21947- 0x1p+0, false,
21948- 0x1p+0, false,
21949- 0x1p+0, false,
21950- 0x1.0000000000001p+0, false,
21951- false,
21952- 0x1p+0, false,
21953- 0x1p+0, false,
21954- 0x1p+0, false,
21955- 0x1.0000000000000002p+0, false,
21956- false,
21957- 0x1p+0, false,
21958- 0x1p+0, false,
21959- 0x1p+0, false,
21960- 0x1.0000000000000002p+0, false,
21961- false,
21962- 0x1p+0, false,
21963- 0x1p+0, false,
21964- 0x1p+0, false,
21965- 0x1.000000000000000000000000008p+0, false,
21966- true,
21967- 0x1.0000000000000000000000000004p+0, false,
21968- 0x1.0000000000000000000000000004p+0, false,
21969- 0x1.0000000000000000000000000004p+0, false,
21970- 0x1.0000000000000000000000000004p+0, false),
21971+ 0x1p+0, false, false,
21972+ 0x1p+0, false, false,
21973+ 0x1p+0, false, false,
21974+ 0x1.000002p+0, false, false,
21975+ false,
21976+ 0x1p+0, false, false,
21977+ 0x1p+0, false, false,
21978+ 0x1p+0, false, false,
21979+ 0x1.0000000000001p+0, false, false,
21980+ false,
21981+ 0x1p+0, false, false,
21982+ 0x1p+0, false, false,
21983+ 0x1p+0, false, false,
21984+ 0x1.0000000000000002p+0, false, false,
21985+ false,
21986+ 0x1p+0, false, false,
21987+ 0x1p+0, false, false,
21988+ 0x1p+0, false, false,
21989+ 0x1.0000000000000002p+0, false, false,
21990+ false,
21991+ 0x1p+0, false, false,
21992+ 0x1p+0, false, false,
21993+ 0x1p+0, false, false,
21994+ 0x1.000000000000000000000000008p+0, false, false,
21995+ true,
21996+ 0x1.0000000000000000000000000004p+0, false, false,
21997+ 0x1.0000000000000000000000000004p+0, false, false,
21998+ 0x1.0000000000000000000000000004p+0, false, false,
21999+ 0x1.0000000000000000000000000004p+0, false, false),
22000 TEST ("1.0000000000000000000000000000000003851859888774471706111955"
22001 "88516985463707620329643077639047987759113311767578125",
22002 false,
22003- 0x1p+0, false,
22004- 0x1p+0, false,
22005- 0x1p+0, false,
22006- 0x1.000002p+0, false,
22007- false,
22008- 0x1p+0, false,
22009- 0x1p+0, false,
22010- 0x1p+0, false,
22011- 0x1.0000000000001p+0, false,
22012- false,
22013- 0x1p+0, false,
22014- 0x1p+0, false,
22015- 0x1p+0, false,
22016- 0x1.0000000000000002p+0, false,
22017- false,
22018- 0x1p+0, false,
22019- 0x1p+0, false,
22020- 0x1p+0, false,
22021- 0x1.0000000000000002p+0, false,
22022- false,
22023- 0x1p+0, false,
22024- 0x1p+0, false,
22025- 0x1p+0, false,
22026- 0x1.000000000000000000000000008p+0, false,
22027- true,
22028- 0x1.0000000000000000000000000002p+0, false,
22029- 0x1.0000000000000000000000000002p+0, false,
22030- 0x1.0000000000000000000000000002p+0, false,
22031- 0x1.0000000000000000000000000002p+0, false),
22032+ 0x1p+0, false, false,
22033+ 0x1p+0, false, false,
22034+ 0x1p+0, false, false,
22035+ 0x1.000002p+0, false, false,
22036+ false,
22037+ 0x1p+0, false, false,
22038+ 0x1p+0, false, false,
22039+ 0x1p+0, false, false,
22040+ 0x1.0000000000001p+0, false, false,
22041+ false,
22042+ 0x1p+0, false, false,
22043+ 0x1p+0, false, false,
22044+ 0x1p+0, false, false,
22045+ 0x1.0000000000000002p+0, false, false,
22046+ false,
22047+ 0x1p+0, false, false,
22048+ 0x1p+0, false, false,
22049+ 0x1p+0, false, false,
22050+ 0x1.0000000000000002p+0, false, false,
22051+ false,
22052+ 0x1p+0, false, false,
22053+ 0x1p+0, false, false,
22054+ 0x1p+0, false, false,
22055+ 0x1.000000000000000000000000008p+0, false, false,
22056+ true,
22057+ 0x1.0000000000000000000000000002p+0, false, false,
22058+ 0x1.0000000000000000000000000002p+0, false, false,
22059+ 0x1.0000000000000000000000000002p+0, false, false,
22060+ 0x1.0000000000000000000000000002p+0, false, false),
22061 TEST ("1.0000000000000000000000000000000001925929944387235853055977"
22062 "942584927318538101648215388195239938795566558837890625",
22063 false,
22064- 0x1p+0, false,
22065- 0x1p+0, false,
22066- 0x1p+0, false,
22067- 0x1.000002p+0, false,
22068- false,
22069- 0x1p+0, false,
22070- 0x1p+0, false,
22071- 0x1p+0, false,
22072- 0x1.0000000000001p+0, false,
22073- false,
22074- 0x1p+0, false,
22075- 0x1p+0, false,
22076- 0x1p+0, false,
22077- 0x1.0000000000000002p+0, false,
22078- false,
22079- 0x1p+0, false,
22080- 0x1p+0, false,
22081- 0x1p+0, false,
22082- 0x1.0000000000000002p+0, false,
22083- false,
22084- 0x1p+0, false,
22085- 0x1p+0, false,
22086- 0x1p+0, false,
22087- 0x1.000000000000000000000000008p+0, false,
22088- true,
22089- 0x1.0000000000000000000000000001p+0, false,
22090- 0x1.0000000000000000000000000001p+0, false,
22091- 0x1.0000000000000000000000000001p+0, false,
22092- 0x1.0000000000000000000000000001p+0, false),
22093+ 0x1p+0, false, false,
22094+ 0x1p+0, false, false,
22095+ 0x1p+0, false, false,
22096+ 0x1.000002p+0, false, false,
22097+ false,
22098+ 0x1p+0, false, false,
22099+ 0x1p+0, false, false,
22100+ 0x1p+0, false, false,
22101+ 0x1.0000000000001p+0, false, false,
22102+ false,
22103+ 0x1p+0, false, false,
22104+ 0x1p+0, false, false,
22105+ 0x1p+0, false, false,
22106+ 0x1.0000000000000002p+0, false, false,
22107+ false,
22108+ 0x1p+0, false, false,
22109+ 0x1p+0, false, false,
22110+ 0x1p+0, false, false,
22111+ 0x1.0000000000000002p+0, false, false,
22112+ false,
22113+ 0x1p+0, false, false,
22114+ 0x1p+0, false, false,
22115+ 0x1p+0, false, false,
22116+ 0x1.000000000000000000000000008p+0, false, false,
22117+ true,
22118+ 0x1.0000000000000000000000000001p+0, false, false,
22119+ 0x1.0000000000000000000000000001p+0, false, false,
22120+ 0x1.0000000000000000000000000001p+0, false, false,
22121+ 0x1.0000000000000000000000000001p+0, false, false),
22122 TEST ("1.0000000000000000000000000000000000962964972193617926527988"
22123 "9712924636592690508241076940976199693977832794189453125",
22124 false,
22125- 0x1p+0, false,
22126- 0x1p+0, false,
22127- 0x1p+0, false,
22128- 0x1.000002p+0, false,
22129- false,
22130- 0x1p+0, false,
22131- 0x1p+0, false,
22132- 0x1p+0, false,
22133- 0x1.0000000000001p+0, false,
22134- false,
22135- 0x1p+0, false,
22136- 0x1p+0, false,
22137- 0x1p+0, false,
22138- 0x1.0000000000000002p+0, false,
22139- false,
22140- 0x1p+0, false,
22141- 0x1p+0, false,
22142- 0x1p+0, false,
22143- 0x1.0000000000000002p+0, false,
22144- false,
22145- 0x1p+0, false,
22146- 0x1p+0, false,
22147- 0x1p+0, false,
22148- 0x1.000000000000000000000000008p+0, false,
22149- false,
22150- 0x1p+0, false,
22151- 0x1p+0, false,
22152- 0x1p+0, false,
22153- 0x1.0000000000000000000000000001p+0, false),
22154+ 0x1p+0, false, false,
22155+ 0x1p+0, false, false,
22156+ 0x1p+0, false, false,
22157+ 0x1.000002p+0, false, false,
22158+ false,
22159+ 0x1p+0, false, false,
22160+ 0x1p+0, false, false,
22161+ 0x1p+0, false, false,
22162+ 0x1.0000000000001p+0, false, false,
22163+ false,
22164+ 0x1p+0, false, false,
22165+ 0x1p+0, false, false,
22166+ 0x1p+0, false, false,
22167+ 0x1.0000000000000002p+0, false, false,
22168+ false,
22169+ 0x1p+0, false, false,
22170+ 0x1p+0, false, false,
22171+ 0x1p+0, false, false,
22172+ 0x1.0000000000000002p+0, false, false,
22173+ false,
22174+ 0x1p+0, false, false,
22175+ 0x1p+0, false, false,
22176+ 0x1p+0, false, false,
22177+ 0x1.000000000000000000000000008p+0, false, false,
22178+ false,
22179+ 0x1p+0, false, false,
22180+ 0x1p+0, false, false,
22181+ 0x1p+0, false, false,
22182+ 0x1.0000000000000000000000000001p+0, false, false),
22183 };
22184diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c
22185index c3cc0201d4..be081ba416 100644
22186--- a/stdlib/tst-strtod-round-skeleton.c
22187+++ b/stdlib/tst-strtod-round-skeleton.c
22188@@ -30,6 +30,7 @@
22189 #include <stdlib.h>
22190 #include <string.h>
22191 #include <math-tests.h>
22192+#include <tininess.h>
22193
22194 #include "tst-strtod.h"
22195
22196@@ -139,16 +140,26 @@
22197 gen-tst-strtod-round utility to select the appropriately
22198 rounded long double value for a given format. */
22199 #define TEST(s, \
22200- fx, fd, fdo, fn, fno, fz, fzo, fu, fuo, \
22201- dx, dd, ddo, dn, dno, dz, dzo, du, duo, \
22202- ld64ix, ld64id, ld64ido, ld64in, ld64ino, \
22203- ld64iz, ld64izo, ld64iu, ld64iuo, \
22204- ld64mx, ld64md, ld64mdo, ld64mn, ld64mno, \
22205- ld64mz, ld64mzo, ld64mu, ld64muo, \
22206- ld106x, ld106d, ld106do, ld106n, ld106no, \
22207- ld106z, ld106zo, ld106u, ld106uo, \
22208- ld113x, ld113d, ld113do, ld113n, ld113no, \
22209- ld113z, ld113zo, ld113u, ld113uo) \
22210+ fx, fd, fdo, fdu, fn, fno, fnu, \
22211+ fz, fzo, fzu, fu, fuo, fuu, \
22212+ dx, dd, ddo, ddu, dn, dno, dnu, \
22213+ dz, dzo, dzu, du, duo, duu, \
22214+ ld64ix, ld64id, ld64ido, ld64idu, \
22215+ ld64in, ld64ino, ld64inu, \
22216+ ld64iz, ld64izo, ld64izu, \
22217+ ld64iu, ld64iuo, ld64iuu, \
22218+ ld64mx, ld64md, ld64mdo, ld64mdu, \
22219+ ld64mn, ld64mno, ld64mnu, \
22220+ ld64mz, ld64mzo, ld64mzu, \
22221+ ld64mu, ld64muo, ld64muu, \
22222+ ld106x, ld106d, ld106do, ld106du, \
22223+ ld106n, ld106no, ld106nu, \
22224+ ld106z, ld106zo, ld106zu, \
22225+ ld106u, ld106uo, ld106uu, \
22226+ ld113x, ld113d, ld113do, ld113du, \
22227+ ld113n, ld113no, ld113nu, \
22228+ ld113z, ld113zo, ld113zu, \
22229+ ld113u, ld113uo, ld113uu) \
22230 { \
22231 L_ (s), \
22232 { XNTRY (fx, dx, ld64ix, ld64mx, ld106x, ld113x) }, \
22233@@ -163,6 +174,12 @@
22234 { XNTRY (fdo, ddo, ld64ido, ld64mdo, ld106do, ld113do) }, \
22235 { XNTRY (fzo, dzo, ld64izo, ld64mzo, ld106zo, ld113zo) }, \
22236 { XNTRY (fuo, duo, ld64iuo, ld64muo, ld106uo, ld113uo) } \
22237+ }, \
22238+ { \
22239+ { XNTRY (fnu, dnu, ld64inu, ld64mnu, ld106nu, ld113nu) }, \
22240+ { XNTRY (fdu, ddu, ld64idu, ld64mdu, ld106du, ld113du) }, \
22241+ { XNTRY (fzu, dzu, ld64izu, ld64mzu, ld106zu, ld113zu) }, \
22242+ { XNTRY (fuu, duu, ld64iuu, ld64muu, ld106uu, ld113uu) } \
22243 } \
22244 }
22245
22246@@ -181,11 +198,17 @@ struct test_overflow
22247 STRUCT_FOREACH_FLOAT_BOOL
22248 };
22249
22250+struct test_underflow
22251+ {
22252+ STRUCT_FOREACH_FLOAT_BOOL
22253+ };
22254+
22255 struct test {
22256 const CHAR *s;
22257 struct test_exactness exact;
22258 struct test_results r[4];
22259 struct test_overflow o[4];
22260+ struct test_underflow u[4];
22261 };
22262
22263 /* Include the generated test data. */
22264@@ -203,10 +226,14 @@ struct test {
22265 # define FE_OVERFLOW 0
22266 #endif
22267
22268+#ifndef FE_UNDERFLOW
22269+# define FE_UNDERFLOW 0
22270+#endif
22271+
22272 #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
22273 { \
22274 feclearexcept (FE_ALL_EXCEPT); \
22275- errno = 0; \
22276+ errno = 12345; \
22277 FTYPE f = STRTO (FSUF) (s, NULL); \
22278 int new_errno = errno; \
22279 if (f != expected->FSUF \
22280@@ -265,6 +292,40 @@ struct test {
22281 s, new_errno, ERANGE); \
22282 result = 1; \
22283 } \
22284+ if (FE_UNDERFLOW != 0) \
22285+ { \
22286+ bool underflow_raised \
22287+ = fetestexcept (FE_UNDERFLOW) != 0; \
22288+ if (underflow_raised != underflow->FSUF) \
22289+ { \
22290+ printf (FNPFXS "to" #FSUF \
22291+ " (" STRM ") underflow %d " \
22292+ "not %d\n", s, underflow_raised, \
22293+ underflow->FSUF); \
22294+ if (EXCEPTION_TESTS (FTYPE)) \
22295+ result = 1; \
22296+ else \
22297+ printf ("ignoring this exception error\n"); \
22298+ } \
22299+ } \
22300+ if (underflow->FSUF && new_errno != ERANGE) \
22301+ { \
22302+ printf (FNPFXS "to" #FSUF \
22303+ " (" STRM ") left errno == %d," \
22304+ " not %d (ERANGE)\n", \
22305+ s, new_errno, ERANGE); \
22306+ result = 1; \
22307+ } \
22308+ if (!overflow->FSUF \
22309+ && !underflow->FSUF \
22310+ && new_errno != 12345) \
22311+ { \
22312+ printf (FNPFXS "to" #FSUF \
22313+ " (" STRM ") set errno == %d," \
22314+ " should be unchanged\n", \
22315+ s, new_errno); \
22316+ result = 1; \
22317+ } \
22318 } \
22319 }
22320
22321@@ -272,6 +333,7 @@ static int
22322 test_in_one_mode (const CHAR *s, const struct test_results *expected,
22323 const struct test_exactness *exact,
22324 const struct test_overflow *overflow,
22325+ const struct test_underflow *underflow,
22326 const char *mode_name, int rnd_mode)
22327 {
22328 int result = 0;
22329@@ -307,6 +369,7 @@ do_test (void)
22330 {
22331 result |= test_in_one_mode (tests[i].s, &tests[i].r[modes[0].rnd_i],
22332 &tests[i].exact, &tests[i].o[modes[0].rnd_i],
22333+ &tests[i].u[modes[0].rnd_i],
22334 modes[0].mode_name, modes[0].rnd_mode);
22335 for (const struct fetestmodes *m = &modes[1]; m->mode_name != NULL; m++)
22336 {
22337@@ -314,7 +377,9 @@ do_test (void)
22338 {
22339 result |= test_in_one_mode (tests[i].s, &tests[i].r[m->rnd_i],
22340 &tests[i].exact,
22341- &tests[i].o[m->rnd_i], m->mode_name,
22342+ &tests[i].o[m->rnd_i],
22343+ &tests[i].u[m->rnd_i],
22344+ m->mode_name,
22345 m->rnd_mode);
22346 fesetround (save_round_mode);
22347 }
22348
22349commit d0c1792ad269566f877208ffda91c21dcd1a72e6
22350Author: Joseph Myers <josmyers@redhat.com>
22351Date: Tue Aug 27 12:41:02 2024 +0000
22352
22353 Fix strtod subnormal rounding (bug 30220)
22354
22355 As reported in bug 30220, the implementation of strtod-family
22356 functions has a bug in the following case: the input string would,
22357 with infinite exponent range, take one more bit to represent than is
22358 available in the normal precision of the return type; the value
22359 represented is in the subnormal range; and there are no nonzero bits
22360 in the value, below those that can be represented in subnormal
22361 precision, other than the least significant bit and possibly the
22362 0.5ulp bit. In this case, round_and_return ends up discarding the
22363 least significant bit.
22364
22365 Fix by saving that bit to merge into more_bits (it can't be merged in
22366 at the time it's computed, because more_bits mustn't include this bit
22367 in the case of after-rounding tininess detection checking if the
22368 result is still subnormal when rounded to normal precision, so merging
22369 this bit into more_bits needs to take place after that check).
22370
22371 Tested for x86_64.
22372
22373 (cherry picked from commit 457622c2fa8f9f7435822d5287a437bc8be8090d)
22374
22375diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c
22376index be515ce659..beb97b3d0c 100644
22377--- a/stdlib/strtod_l.c
22378+++ b/stdlib/strtod_l.c
22379@@ -222,6 +222,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
22380
22381 mp_size_t shift = MIN_EXP - 1 - exponent;
22382 bool is_tiny = true;
22383+ bool old_half_bit = (round_limb & (((mp_limb_t) 1) << round_bit)) != 0;
22384
22385 more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;
22386 if (shift == MANT_DIG)
22387@@ -292,6 +293,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
22388 round_bit = shift - 1;
22389 (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift);
22390 }
22391+ more_bits |= old_half_bit;
22392 /* This is a hook for the m68k long double format, where the
22393 exponent bias is the same for normalized and denormalized
22394 numbers. */
22395diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data
22396index 84ab705709..9489fbcc9c 100644
22397--- a/stdlib/tst-strtod-round-data
22398+++ b/stdlib/tst-strtod-round-data
22399@@ -265,3 +265,15 @@
22400 1.000000000000000000000000000000000385185988877447170611195588516985463707620329643077639047987759113311767578125
22401 1.0000000000000000000000000000000001925929944387235853055977942584927318538101648215388195239938795566558837890625
22402 1.00000000000000000000000000000000009629649721936179265279889712924636592690508241076940976199693977832794189453125
22403+0x30000002222225p-1077
22404+0x0.7fffffffffffeap-1022
22405+0x0.7fffffffffffe9p-1022
22406+0x0.7ffffd4p-126
22407+0x0.7ffffffffffffffd4p-16382
22408+0x0.7ffffffffffffffd4p-16383
22409+0x0.7ffffffffffffffffffffffffffeap-16382
22410+0x0.7000004p-126
22411+0x0.70000000000002p-1022
22412+0x0.70000000000000004p-16382
22413+0x0.70000000000000004p-16383
22414+0x0.70000000000000000000000000002p-16382
22415diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h
22416index 13e62dd2b0..ed50eb2537 100644
22417--- a/stdlib/tst-strtod-round-data.h
22418+++ b/stdlib/tst-strtod-round-data.h
22419@@ -15437,4 +15437,376 @@ static const struct test tests[] = {
22420 0x1p+0, false, false,
22421 0x1p+0, false, false,
22422 0x1.0000000000000000000000000001p+0, false, false),
22423+ TEST ("0x30000002222225p-1077",
22424+ false,
22425+ 0x0p+0, false, true,
22426+ 0x0p+0, false, true,
22427+ 0x0p+0, false, true,
22428+ 0x8p-152, false, true,
22429+ false,
22430+ 0x1.800000111111p-1024, false, true,
22431+ 0x1.8000001111114p-1024, false, true,
22432+ 0x1.800000111111p-1024, false, true,
22433+ 0x1.8000001111114p-1024, false, true,
22434+ true,
22435+ 0x1.80000011111128p-1024, false, false,
22436+ 0x1.80000011111128p-1024, false, false,
22437+ 0x1.80000011111128p-1024, false, false,
22438+ 0x1.80000011111128p-1024, false, false,
22439+ true,
22440+ 0x1.80000011111128p-1024, false, false,
22441+ 0x1.80000011111128p-1024, false, false,
22442+ 0x1.80000011111128p-1024, false, false,
22443+ 0x1.80000011111128p-1024, false, false,
22444+ false,
22445+ 0x1.800000111111p-1024, false, true,
22446+ 0x1.8000001111114p-1024, false, true,
22447+ 0x1.800000111111p-1024, false, true,
22448+ 0x1.8000001111114p-1024, false, true,
22449+ true,
22450+ 0x1.80000011111128p-1024, false, false,
22451+ 0x1.80000011111128p-1024, false, false,
22452+ 0x1.80000011111128p-1024, false, false,
22453+ 0x1.80000011111128p-1024, false, false),
22454+ TEST ("0x0.7fffffffffffeap-1022",
22455+ false,
22456+ 0x0p+0, false, true,
22457+ 0x0p+0, false, true,
22458+ 0x0p+0, false, true,
22459+ 0x8p-152, false, true,
22460+ false,
22461+ 0x1.ffffffffffff8p-1024, false, true,
22462+ 0x1.ffffffffffffcp-1024, false, true,
22463+ 0x1.ffffffffffff8p-1024, false, true,
22464+ 0x1.ffffffffffffcp-1024, false, true,
22465+ true,
22466+ 0x1.ffffffffffffa8p-1024, false, false,
22467+ 0x1.ffffffffffffa8p-1024, false, false,
22468+ 0x1.ffffffffffffa8p-1024, false, false,
22469+ 0x1.ffffffffffffa8p-1024, false, false,
22470+ true,
22471+ 0x1.ffffffffffffa8p-1024, false, false,
22472+ 0x1.ffffffffffffa8p-1024, false, false,
22473+ 0x1.ffffffffffffa8p-1024, false, false,
22474+ 0x1.ffffffffffffa8p-1024, false, false,
22475+ false,
22476+ 0x1.ffffffffffff8p-1024, false, true,
22477+ 0x1.ffffffffffffcp-1024, false, true,
22478+ 0x1.ffffffffffff8p-1024, false, true,
22479+ 0x1.ffffffffffffcp-1024, false, true,
22480+ true,
22481+ 0x1.ffffffffffffa8p-1024, false, false,
22482+ 0x1.ffffffffffffa8p-1024, false, false,
22483+ 0x1.ffffffffffffa8p-1024, false, false,
22484+ 0x1.ffffffffffffa8p-1024, false, false),
22485+ TEST ("0x0.7fffffffffffe9p-1022",
22486+ false,
22487+ 0x0p+0, false, true,
22488+ 0x0p+0, false, true,
22489+ 0x0p+0, false, true,
22490+ 0x8p-152, false, true,
22491+ false,
22492+ 0x1.ffffffffffff8p-1024, false, true,
22493+ 0x1.ffffffffffffcp-1024, false, true,
22494+ 0x1.ffffffffffff8p-1024, false, true,
22495+ 0x1.ffffffffffffcp-1024, false, true,
22496+ true,
22497+ 0x1.ffffffffffffa4p-1024, false, false,
22498+ 0x1.ffffffffffffa4p-1024, false, false,
22499+ 0x1.ffffffffffffa4p-1024, false, false,
22500+ 0x1.ffffffffffffa4p-1024, false, false,
22501+ true,
22502+ 0x1.ffffffffffffa4p-1024, false, false,
22503+ 0x1.ffffffffffffa4p-1024, false, false,
22504+ 0x1.ffffffffffffa4p-1024, false, false,
22505+ 0x1.ffffffffffffa4p-1024, false, false,
22506+ false,
22507+ 0x1.ffffffffffff8p-1024, false, true,
22508+ 0x1.ffffffffffffcp-1024, false, true,
22509+ 0x1.ffffffffffff8p-1024, false, true,
22510+ 0x1.ffffffffffffcp-1024, false, true,
22511+ true,
22512+ 0x1.ffffffffffffa4p-1024, false, false,
22513+ 0x1.ffffffffffffa4p-1024, false, false,
22514+ 0x1.ffffffffffffa4p-1024, false, false,
22515+ 0x1.ffffffffffffa4p-1024, false, false),
22516+ TEST ("0x0.7ffffd4p-126",
22517+ false,
22518+ 0x1.fffffp-128, false, true,
22519+ 0x1.fffff8p-128, false, true,
22520+ 0x1.fffffp-128, false, true,
22521+ 0x1.fffff8p-128, false, true,
22522+ true,
22523+ 0x1.fffff5p-128, false, false,
22524+ 0x1.fffff5p-128, false, false,
22525+ 0x1.fffff5p-128, false, false,
22526+ 0x1.fffff5p-128, false, false,
22527+ true,
22528+ 0x1.fffff5p-128, false, false,
22529+ 0x1.fffff5p-128, false, false,
22530+ 0x1.fffff5p-128, false, false,
22531+ 0x1.fffff5p-128, false, false,
22532+ true,
22533+ 0x1.fffff5p-128, false, false,
22534+ 0x1.fffff5p-128, false, false,
22535+ 0x1.fffff5p-128, false, false,
22536+ 0x1.fffff5p-128, false, false,
22537+ true,
22538+ 0x1.fffff5p-128, false, false,
22539+ 0x1.fffff5p-128, false, false,
22540+ 0x1.fffff5p-128, false, false,
22541+ 0x1.fffff5p-128, false, false,
22542+ true,
22543+ 0x1.fffff5p-128, false, false,
22544+ 0x1.fffff5p-128, false, false,
22545+ 0x1.fffff5p-128, false, false,
22546+ 0x1.fffff5p-128, false, false),
22547+ TEST ("0x0.7ffffffffffffffd4p-16382",
22548+ false,
22549+ 0x0p+0, false, true,
22550+ 0x0p+0, false, true,
22551+ 0x0p+0, false, true,
22552+ 0x8p-152, false, true,
22553+ false,
22554+ 0x0p+0, false, true,
22555+ 0x0p+0, false, true,
22556+ 0x0p+0, false, true,
22557+ 0x4p-1076, false, true,
22558+ false,
22559+ 0x1.fffffffffffffffp-16384, false, true,
22560+ 0x1.fffffffffffffff8p-16384, false, true,
22561+ 0x1.fffffffffffffffp-16384, false, true,
22562+ 0x1.fffffffffffffff8p-16384, false, true,
22563+ false,
22564+ 0x1.fffffffffffffff4p-16384, false, true,
22565+ 0x1.fffffffffffffff4p-16384, false, true,
22566+ 0x1.fffffffffffffff4p-16384, false, true,
22567+ 0x1.fffffffffffffff8p-16384, false, true,
22568+ false,
22569+ 0x0p+0, false, true,
22570+ 0x0p+0, false, true,
22571+ 0x0p+0, false, true,
22572+ 0x4p-1076, false, true,
22573+ true,
22574+ 0x1.fffffffffffffff5p-16384, false, false,
22575+ 0x1.fffffffffffffff5p-16384, false, false,
22576+ 0x1.fffffffffffffff5p-16384, false, false,
22577+ 0x1.fffffffffffffff5p-16384, false, false),
22578+ TEST ("0x0.7ffffffffffffffd4p-16383",
22579+ false,
22580+ 0x0p+0, false, true,
22581+ 0x0p+0, false, true,
22582+ 0x0p+0, false, true,
22583+ 0x8p-152, false, true,
22584+ false,
22585+ 0x0p+0, false, true,
22586+ 0x0p+0, false, true,
22587+ 0x0p+0, false, true,
22588+ 0x4p-1076, false, true,
22589+ false,
22590+ 0xf.ffffffffffffff8p-16388, false, true,
22591+ 0xf.ffffffffffffff8p-16388, false, true,
22592+ 0xf.ffffffffffffff8p-16388, false, true,
22593+ 0x1p-16384, false, true,
22594+ false,
22595+ 0xf.ffffffffffffff8p-16388, false, true,
22596+ 0xf.ffffffffffffffcp-16388, false, true,
22597+ 0xf.ffffffffffffff8p-16388, false, true,
22598+ 0xf.ffffffffffffffcp-16388, false, true,
22599+ false,
22600+ 0x0p+0, false, true,
22601+ 0x0p+0, false, true,
22602+ 0x0p+0, false, true,
22603+ 0x4p-1076, false, true,
22604+ true,
22605+ 0xf.ffffffffffffffa8p-16388, false, false,
22606+ 0xf.ffffffffffffffa8p-16388, false, false,
22607+ 0xf.ffffffffffffffa8p-16388, false, false,
22608+ 0xf.ffffffffffffffa8p-16388, false, false),
22609+ TEST ("0x0.7ffffffffffffffffffffffffffeap-16382",
22610+ false,
22611+ 0x0p+0, false, true,
22612+ 0x0p+0, false, true,
22613+ 0x0p+0, false, true,
22614+ 0x8p-152, false, true,
22615+ false,
22616+ 0x0p+0, false, true,
22617+ 0x0p+0, false, true,
22618+ 0x0p+0, false, true,
22619+ 0x4p-1076, false, true,
22620+ false,
22621+ 0x1.fffffffffffffff8p-16384, false, true,
22622+ 0x2p-16384, false, true,
22623+ 0x1.fffffffffffffff8p-16384, false, true,
22624+ 0x2p-16384, false, true,
22625+ false,
22626+ 0x1.fffffffffffffffcp-16384, false, true,
22627+ 0x2p-16384, false, true,
22628+ 0x1.fffffffffffffffcp-16384, false, true,
22629+ 0x2p-16384, false, true,
22630+ false,
22631+ 0x0p+0, false, true,
22632+ 0x0p+0, false, true,
22633+ 0x0p+0, false, true,
22634+ 0x4p-1076, false, true,
22635+ false,
22636+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true,
22637+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true,
22638+ 0x1.fffffffffffffffffffffffffff8p-16384, false, true,
22639+ 0x1.fffffffffffffffffffffffffffcp-16384, false, true),
22640+ TEST ("0x0.7000004p-126",
22641+ false,
22642+ 0x1.cp-128, false, true,
22643+ 0x1.cp-128, false, true,
22644+ 0x1.cp-128, false, true,
22645+ 0x1.c00008p-128, false, true,
22646+ true,
22647+ 0x1.c00001p-128, false, false,
22648+ 0x1.c00001p-128, false, false,
22649+ 0x1.c00001p-128, false, false,
22650+ 0x1.c00001p-128, false, false,
22651+ true,
22652+ 0x1.c00001p-128, false, false,
22653+ 0x1.c00001p-128, false, false,
22654+ 0x1.c00001p-128, false, false,
22655+ 0x1.c00001p-128, false, false,
22656+ true,
22657+ 0x1.c00001p-128, false, false,
22658+ 0x1.c00001p-128, false, false,
22659+ 0x1.c00001p-128, false, false,
22660+ 0x1.c00001p-128, false, false,
22661+ true,
22662+ 0x1.c00001p-128, false, false,
22663+ 0x1.c00001p-128, false, false,
22664+ 0x1.c00001p-128, false, false,
22665+ 0x1.c00001p-128, false, false,
22666+ true,
22667+ 0x1.c00001p-128, false, false,
22668+ 0x1.c00001p-128, false, false,
22669+ 0x1.c00001p-128, false, false,
22670+ 0x1.c00001p-128, false, false),
22671+ TEST ("0x0.70000000000002p-1022",
22672+ false,
22673+ 0x0p+0, false, true,
22674+ 0x0p+0, false, true,
22675+ 0x0p+0, false, true,
22676+ 0x8p-152, false, true,
22677+ false,
22678+ 0x1.cp-1024, false, true,
22679+ 0x1.cp-1024, false, true,
22680+ 0x1.cp-1024, false, true,
22681+ 0x1.c000000000004p-1024, false, true,
22682+ true,
22683+ 0x1.c0000000000008p-1024, false, false,
22684+ 0x1.c0000000000008p-1024, false, false,
22685+ 0x1.c0000000000008p-1024, false, false,
22686+ 0x1.c0000000000008p-1024, false, false,
22687+ true,
22688+ 0x1.c0000000000008p-1024, false, false,
22689+ 0x1.c0000000000008p-1024, false, false,
22690+ 0x1.c0000000000008p-1024, false, false,
22691+ 0x1.c0000000000008p-1024, false, false,
22692+ false,
22693+ 0x1.cp-1024, false, true,
22694+ 0x1.cp-1024, false, true,
22695+ 0x1.cp-1024, false, true,
22696+ 0x1.c000000000004p-1024, false, true,
22697+ true,
22698+ 0x1.c0000000000008p-1024, false, false,
22699+ 0x1.c0000000000008p-1024, false, false,
22700+ 0x1.c0000000000008p-1024, false, false,
22701+ 0x1.c0000000000008p-1024, false, false),
22702+ TEST ("0x0.70000000000000004p-16382",
22703+ false,
22704+ 0x0p+0, false, true,
22705+ 0x0p+0, false, true,
22706+ 0x0p+0, false, true,
22707+ 0x8p-152, false, true,
22708+ false,
22709+ 0x0p+0, false, true,
22710+ 0x0p+0, false, true,
22711+ 0x0p+0, false, true,
22712+ 0x4p-1076, false, true,
22713+ false,
22714+ 0x1.cp-16384, false, true,
22715+ 0x1.cp-16384, false, true,
22716+ 0x1.cp-16384, false, true,
22717+ 0x1.c000000000000008p-16384, false, true,
22718+ false,
22719+ 0x1.cp-16384, false, true,
22720+ 0x1.cp-16384, false, true,
22721+ 0x1.cp-16384, false, true,
22722+ 0x1.c000000000000004p-16384, false, true,
22723+ false,
22724+ 0x0p+0, false, true,
22725+ 0x0p+0, false, true,
22726+ 0x0p+0, false, true,
22727+ 0x4p-1076, false, true,
22728+ true,
22729+ 0x1.c000000000000001p-16384, false, false,
22730+ 0x1.c000000000000001p-16384, false, false,
22731+ 0x1.c000000000000001p-16384, false, false,
22732+ 0x1.c000000000000001p-16384, false, false),
22733+ TEST ("0x0.70000000000000004p-16383",
22734+ false,
22735+ 0x0p+0, false, true,
22736+ 0x0p+0, false, true,
22737+ 0x0p+0, false, true,
22738+ 0x8p-152, false, true,
22739+ false,
22740+ 0x0p+0, false, true,
22741+ 0x0p+0, false, true,
22742+ 0x0p+0, false, true,
22743+ 0x4p-1076, false, true,
22744+ false,
22745+ 0xep-16388, false, true,
22746+ 0xep-16388, false, true,
22747+ 0xep-16388, false, true,
22748+ 0xe.000000000000008p-16388, false, true,
22749+ false,
22750+ 0xep-16388, false, true,
22751+ 0xep-16388, false, true,
22752+ 0xep-16388, false, true,
22753+ 0xe.000000000000004p-16388, false, true,
22754+ false,
22755+ 0x0p+0, false, true,
22756+ 0x0p+0, false, true,
22757+ 0x0p+0, false, true,
22758+ 0x4p-1076, false, true,
22759+ true,
22760+ 0xe.0000000000000008p-16388, false, false,
22761+ 0xe.0000000000000008p-16388, false, false,
22762+ 0xe.0000000000000008p-16388, false, false,
22763+ 0xe.0000000000000008p-16388, false, false),
22764+ TEST ("0x0.70000000000000000000000000002p-16382",
22765+ false,
22766+ 0x0p+0, false, true,
22767+ 0x0p+0, false, true,
22768+ 0x0p+0, false, true,
22769+ 0x8p-152, false, true,
22770+ false,
22771+ 0x0p+0, false, true,
22772+ 0x0p+0, false, true,
22773+ 0x0p+0, false, true,
22774+ 0x4p-1076, false, true,
22775+ false,
22776+ 0x1.cp-16384, false, true,
22777+ 0x1.cp-16384, false, true,
22778+ 0x1.cp-16384, false, true,
22779+ 0x1.c000000000000008p-16384, false, true,
22780+ false,
22781+ 0x1.cp-16384, false, true,
22782+ 0x1.cp-16384, false, true,
22783+ 0x1.cp-16384, false, true,
22784+ 0x1.c000000000000004p-16384, false, true,
22785+ false,
22786+ 0x0p+0, false, true,
22787+ 0x0p+0, false, true,
22788+ 0x0p+0, false, true,
22789+ 0x4p-1076, false, true,
22790+ false,
22791+ 0x1.cp-16384, false, true,
22792+ 0x1.cp-16384, false, true,
22793+ 0x1.cp-16384, false, true,
22794+ 0x1.c000000000000000000000000004p-16384, false, true),
22795 };
22796
22797commit cac10d88c684c0171e549d813bfef7a31029f257
22798Author: Joseph Myers <josmyers@redhat.com>
22799Date: Tue Aug 27 20:41:54 2024 +0000
22800
22801 Make __strtod_internal tests type-generic
22802
22803 Some of the strtod tests use type-generic machinery in tst-strtod.h to
22804 test the strto* functions for all floating types, while others only
22805 test double even when the tests are in fact meaningful for all
22806 floating types.
22807
22808 Convert the tests of the internal __strtod_internal interface to cover
22809 all floating types. I haven't tried to convert them to use newer test
22810 interfaces in other ways, just made the changes necessary to use the
22811 type-generic machinery. As an internal interface, there are no
22812 aliases for different types with the same ABI (however,
22813 __strtold_internal is defined even if long double has the same ABI as
22814 double), so macros used by the type-generic testing code are redefined
22815 as needed to avoid expecting such aliases to be present.
22816
22817 Tested for x86_64.
22818
22819 (cherry picked from commit 3fc063dee01da4f80920a14b7db637c8501d6fd4)
22820
22821diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c
22822index 9d6bb760fb..44ae0264f4 100644
22823--- a/stdlib/tst-strtod1i.c
22824+++ b/stdlib/tst-strtod1i.c
22825@@ -25,60 +25,91 @@
22826 #include <string.h>
22827 #include <math.h>
22828
22829-/* Perform a few tests in a locale with thousands separators. */
22830-static int
22831-do_test (void)
22832-{
22833- static const struct
22834- {
22835- const char *loc;
22836- const char *str;
22837- double exp;
22838- ptrdiff_t nread;
22839- } tests[] =
22840- {
22841- { "de_DE.UTF-8", "1,5", 1.5, 3 },
22842- { "de_DE.UTF-8", "1.5", 1.0, 1 },
22843- { "de_DE.UTF-8", "1.500", 1500.0, 5 },
22844- { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 }
22845- };
22846-#define ntests (sizeof (tests) / sizeof (tests[0]))
22847- size_t n;
22848- int result = 0;
22849-
22850- puts ("\nLocale tests");
22851+#include "tst-strtod.h"
22852
22853- for (n = 0; n < ntests; ++n)
22854- {
22855- double d;
22856- char *endp;
22857+/* This tests internal interfaces, which are only defined for types
22858+ with distinct ABIs, so disable testing for types without distinct
22859+ ABIs. */
22860+#undef IF_FLOAT32
22861+#define IF_FLOAT32(x)
22862+#undef IF_FLOAT64
22863+#define IF_FLOAT64(x)
22864+#undef IF_FLOAT32X
22865+#define IF_FLOAT32X(x)
22866+#undef IF_FLOAT64X
22867+#define IF_FLOAT64X(x)
22868+#if !__HAVE_DISTINCT_FLOAT128
22869+# undef IF_FLOAT128
22870+# define IF_FLOAT128(x)
22871+#endif
22872
22873- if (setlocale (LC_ALL, tests[n].loc) == NULL)
22874- {
22875- printf ("cannot set locale %s\n", tests[n].loc);
22876- result = 1;
22877- continue;
22878- }
22879+#define ntests (sizeof (tests) / sizeof (tests[0]))
22880
22881- d = __strtod_internal (tests[n].str, &endp, 1);
22882- if (d != tests[n].exp)
22883- {
22884- printf ("strtod(\"%s\") returns %g and not %g\n",
22885- tests[n].str, d, tests[n].exp);
22886- result = 1;
22887- }
22888- else if (endp - tests[n].str != tests[n].nread)
22889- {
22890- printf ("strtod(\"%s\") read %td bytes and not %td\n",
22891- tests[n].str, endp - tests[n].str, tests[n].nread);
22892- result = 1;
22893- }
22894- }
22895+/* Perform a few tests in a locale with thousands separators. */
22896+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
22897+static int \
22898+test_strto ## FSUF (void) \
22899+{ \
22900+ static const struct \
22901+ { \
22902+ const char *loc; \
22903+ const char *str; \
22904+ FTYPE exp; \
22905+ ptrdiff_t nread; \
22906+ } tests[] = \
22907+ { \
22908+ { "de_DE.UTF-8", "1,5", 1.5 ## LSUF, 3 }, \
22909+ { "de_DE.UTF-8", "1.5", 1.0 ## LSUF, 1 }, \
22910+ { "de_DE.UTF-8", "1.500", 1500.0 ## LSUF, 5 }, \
22911+ { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65 ## LSUF, 26 } \
22912+ }; \
22913+ size_t n; \
22914+ int result = 0; \
22915+ \
22916+ puts ("\nLocale tests"); \
22917+ \
22918+ for (n = 0; n < ntests; ++n) \
22919+ { \
22920+ FTYPE d; \
22921+ char *endp; \
22922+ \
22923+ if (setlocale (LC_ALL, tests[n].loc) == NULL) \
22924+ { \
22925+ printf ("cannot set locale %s\n", tests[n].loc); \
22926+ result = 1; \
22927+ continue; \
22928+ } \
22929+ \
22930+ d = __strto ## FSUF ## _internal (tests[n].str, &endp, 1); \
22931+ if (d != tests[n].exp) \
22932+ { \
22933+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
22934+ FTOSTR (buf1, sizeof (buf1), "%g", d); \
22935+ FTOSTR (buf2, sizeof (buf2), "%g", tests[n].exp); \
22936+ printf ("strto" # FSUF "(\"%s\") returns %s and not %s\n", \
22937+ tests[n].str, buf1, buf2); \
22938+ result = 1; \
22939+ } \
22940+ else if (endp - tests[n].str != tests[n].nread) \
22941+ { \
22942+ printf ("strto" # FSUF "(\"%s\") read %td bytes and not %td\n", \
22943+ tests[n].str, endp - tests[n].str, tests[n].nread); \
22944+ result = 1; \
22945+ } \
22946+ } \
22947+ \
22948+ if (result == 0) \
22949+ puts ("all OK"); \
22950+ \
22951+ return result ? EXIT_FAILURE : EXIT_SUCCESS; \
22952+}
22953
22954- if (result == 0)
22955- puts ("all OK");
22956+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
22957
22958- return result ? EXIT_FAILURE : EXIT_SUCCESS;
22959+static int
22960+do_test (void)
22961+{
22962+ return STRTOD_TEST_FOREACH (test_strto);
22963 }
22964
22965 #include <support/test-driver.c>
22966diff --git a/stdlib/tst-strtod3.c b/stdlib/tst-strtod3.c
22967index 23abec1896..0d662d8be8 100644
22968--- a/stdlib/tst-strtod3.c
22969+++ b/stdlib/tst-strtod3.c
22970@@ -3,19 +3,73 @@
22971 #include <stdlib.h>
22972 #include <string.h>
22973
22974-static const struct
22975-{
22976- const char *in;
22977- const char *out;
22978- double expected;
22979-} tests[] =
22980- {
22981- { "000,,,e1", ",,,e1", 0.0 },
22982- { "000e1", "", 0.0 },
22983- { "000,1e1", ",1e1", 0.0 }
22984- };
22985-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
22986+#include "tst-strtod.h"
22987+
22988+/* This tests internal interfaces, which are only defined for types
22989+ with distinct ABIs, so disable testing for types without distinct
22990+ ABIs. */
22991+#undef IF_FLOAT32
22992+#define IF_FLOAT32(x)
22993+#undef IF_FLOAT64
22994+#define IF_FLOAT64(x)
22995+#undef IF_FLOAT32X
22996+#define IF_FLOAT32X(x)
22997+#undef IF_FLOAT64X
22998+#define IF_FLOAT64X(x)
22999+#if !__HAVE_DISTINCT_FLOAT128
23000+# undef IF_FLOAT128
23001+# define IF_FLOAT128(x)
23002+#endif
23003
23004+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
23005+static const struct \
23006+{ \
23007+ const char *in; \
23008+ const char *out; \
23009+ FTYPE expected; \
23010+} tests_strto ## FSUF[] = \
23011+ { \
23012+ { "000,,,e1", ",,,e1", 0.0 ## LSUF }, \
23013+ { "000e1", "", 0.0 ## LSUF }, \
23014+ { "000,1e1", ",1e1", 0.0 ## LSUF } \
23015+ }; \
23016+ \
23017+static int \
23018+test_strto ## FSUF (void) \
23019+{ \
23020+ int status = 0; \
23021+ \
23022+ for (int i = 0; \
23023+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
23024+ ++i) \
23025+ { \
23026+ char *ep; \
23027+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
23028+ &ep, 1); \
23029+ \
23030+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \
23031+ { \
23032+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \
23033+ i, ep, tests_strto ## FSUF[i].out); \
23034+ status = 1; \
23035+ } \
23036+ \
23037+ if (r != tests_strto ## FSUF[i].expected) \
23038+ { \
23039+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
23040+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
23041+ FTOSTR (buf2, sizeof (buf2), "%g", \
23042+ tests_strto ## FSUF[i].expected); \
23043+ printf ("%d: got wrong results %s, expected %s\n", \
23044+ i, buf1, buf2); \
23045+ status = 1; \
23046+ } \
23047+ } \
23048+ \
23049+ return status; \
23050+}
23051+
23052+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
23053
23054 static int
23055 do_test (void)
23056@@ -26,29 +80,7 @@ do_test (void)
23057 return 1;
23058 }
23059
23060- int status = 0;
23061-
23062- for (int i = 0; i < NTESTS; ++i)
23063- {
23064- char *ep;
23065- double r = __strtod_internal (tests[i].in, &ep, 1);
23066-
23067- if (strcmp (ep, tests[i].out) != 0)
23068- {
23069- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
23070- i, ep, tests[i].out);
23071- status = 1;
23072- }
23073-
23074- if (r != tests[i].expected)
23075- {
23076- printf ("%d: got wrong results %g, expected %g\n",
23077- i, r, tests[i].expected);
23078- status = 1;
23079- }
23080- }
23081-
23082- return status;
23083+ return STRTOD_TEST_FOREACH (test_strto);
23084 }
23085
23086 #define TEST_FUNCTION do_test ()
23087diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c
23088index 6cc4e843c7..dfd3f05027 100644
23089--- a/stdlib/tst-strtod4.c
23090+++ b/stdlib/tst-strtod4.c
23091@@ -3,22 +3,76 @@
23092 #include <stdlib.h>
23093 #include <string.h>
23094
23095+#include "tst-strtod.h"
23096+
23097+/* This tests internal interfaces, which are only defined for types
23098+ with distinct ABIs, so disable testing for types without distinct
23099+ ABIs. */
23100+#undef IF_FLOAT32
23101+#define IF_FLOAT32(x)
23102+#undef IF_FLOAT64
23103+#define IF_FLOAT64(x)
23104+#undef IF_FLOAT32X
23105+#define IF_FLOAT32X(x)
23106+#undef IF_FLOAT64X
23107+#define IF_FLOAT64X(x)
23108+#if !__HAVE_DISTINCT_FLOAT128
23109+# undef IF_FLOAT128
23110+# define IF_FLOAT128(x)
23111+#endif
23112+
23113 #define NNBSP "\xe2\x80\xaf"
23114
23115-static const struct
23116-{
23117- const char *in;
23118- const char *out;
23119- double expected;
23120-} tests[] =
23121- {
23122- { "000"NNBSP"000"NNBSP"000", "", 0.0 },
23123- { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 },
23124- /* Bug 30964 */
23125- { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 }
23126- };
23127-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
23128+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
23129+static const struct \
23130+{ \
23131+ const char *in; \
23132+ const char *out; \
23133+ FTYPE expected; \
23134+} tests_strto ## FSUF[] = \
23135+ { \
23136+ { "000"NNBSP"000"NNBSP"000", "", 0.0 ## LSUF }, \
23137+ { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 ## LSUF }, \
23138+ /* Bug 30964 */ \
23139+ { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 ## LSUF } \
23140+ }; \
23141+ \
23142+static int \
23143+test_strto ## FSUF (void) \
23144+{ \
23145+ int status = 0; \
23146+ \
23147+ for (int i = 0; \
23148+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
23149+ ++i) \
23150+ { \
23151+ char *ep; \
23152+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
23153+ &ep, 1); \
23154+ \
23155+ if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \
23156+ { \
23157+ printf ("%d: got rest string \"%s\", expected \"%s\"\n", \
23158+ i, ep, tests_strto ## FSUF[i].out); \
23159+ status = 1; \
23160+ } \
23161+ \
23162+ if (r != tests_strto ## FSUF[i].expected) \
23163+ { \
23164+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
23165+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
23166+ FTOSTR (buf2, sizeof (buf2), "%g", \
23167+ tests_strto ## FSUF[i].expected); \
23168+ printf ("%d: got wrong results %s, expected %s\n", \
23169+ i, buf1, buf2); \
23170+ status = 1; \
23171+ } \
23172+ } \
23173+ \
23174+ return status; \
23175+}
23176
23177+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
23178
23179 static int
23180 do_test (void)
23181@@ -29,29 +83,7 @@ do_test (void)
23182 return 1;
23183 }
23184
23185- int status = 0;
23186-
23187- for (int i = 0; i < NTESTS; ++i)
23188- {
23189- char *ep;
23190- double r = __strtod_internal (tests[i].in, &ep, 1);
23191-
23192- if (strcmp (ep, tests[i].out) != 0)
23193- {
23194- printf ("%d: got rest string \"%s\", expected \"%s\"\n",
23195- i, ep, tests[i].out);
23196- status = 1;
23197- }
23198-
23199- if (r != tests[i].expected)
23200- {
23201- printf ("%d: got wrong results %g, expected %g\n",
23202- i, r, tests[i].expected);
23203- status = 1;
23204- }
23205- }
23206-
23207- return status;
23208+ return STRTOD_TEST_FOREACH (test_strto);
23209 }
23210
23211 #define TEST_FUNCTION do_test ()
23212diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c
23213index ee54e3404c..136aedea68 100644
23214--- a/stdlib/tst-strtod5i.c
23215+++ b/stdlib/tst-strtod5i.c
23216@@ -16,52 +16,112 @@
23217 License along with the GNU C Library; if not, see
23218 <https://www.gnu.org/licenses/>. */
23219
23220+/* Defining _LIBC_TEST ensures long double math functions are
23221+ declared in the headers. */
23222+#define _LIBC_TEST 1
23223 #include <locale.h>
23224 #include <stdio.h>
23225 #include <stdlib.h>
23226 #include <string.h>
23227 #include <math.h>
23228
23229+#include "tst-strtod.h"
23230+
23231+/* This tests internal interfaces, which are only defined for types
23232+ with distinct ABIs, so disable testing for types without distinct
23233+ ABIs. */
23234+#undef IF_FLOAT32
23235+#define IF_FLOAT32(x)
23236+#undef IF_FLOAT64
23237+#define IF_FLOAT64(x)
23238+#undef IF_FLOAT32X
23239+#define IF_FLOAT32X(x)
23240+#undef IF_FLOAT64X
23241+#define IF_FLOAT64X(x)
23242+#if !__HAVE_DISTINCT_FLOAT128
23243+# undef IF_FLOAT128
23244+# define IF_FLOAT128(x)
23245+#endif
23246+
23247 #define NNBSP "\xe2\x80\xaf"
23248
23249-static const struct
23250-{
23251- const char *in;
23252- int group;
23253- double expected;
23254-} tests[] =
23255- {
23256- { "0", 0, 0.0 },
23257- { "000", 0, 0.0 },
23258- { "-0", 0, -0.0 },
23259- { "-000", 0, -0.0 },
23260- { "0,", 0, 0.0 },
23261- { "-0,", 0, -0.0 },
23262- { "0,0", 0, 0.0 },
23263- { "-0,0", 0, -0.0 },
23264- { "0e-10", 0, 0.0 },
23265- { "-0e-10", 0, -0.0 },
23266- { "0,e-10", 0, 0.0 },
23267- { "-0,e-10", 0, -0.0 },
23268- { "0,0e-10", 0, 0.0 },
23269- { "-0,0e-10", 0, -0.0 },
23270- { "0e-1000000", 0, 0.0 },
23271- { "-0e-1000000", 0, -0.0 },
23272- { "0,0e-1000000", 0, 0.0 },
23273- { "-0,0e-1000000", 0, -0.0 },
23274- { "0", 1, 0.0 },
23275- { "000", 1, 0.0 },
23276- { "-0", 1, -0.0 },
23277- { "-000", 1, -0.0 },
23278- { "0e-10", 1, 0.0 },
23279- { "-0e-10", 1, -0.0 },
23280- { "0e-1000000", 1, 0.0 },
23281- { "-0e-1000000", 1, -0.0 },
23282- { "000"NNBSP"000"NNBSP"000", 1, 0.0 },
23283- { "-000"NNBSP"000"NNBSP"000", 1, -0.0 }
23284- };
23285-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
23286+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
23287+static const struct \
23288+{ \
23289+ const char *in; \
23290+ int group; \
23291+ FTYPE expected; \
23292+} tests_strto ## FSUF[] = \
23293+ { \
23294+ { "0", 0, 0.0 ## LSUF }, \
23295+ { "000", 0, 0.0 ## LSUF }, \
23296+ { "-0", 0, -0.0 ## LSUF }, \
23297+ { "-000", 0, -0.0 ## LSUF }, \
23298+ { "0,", 0, 0.0 ## LSUF }, \
23299+ { "-0,", 0, -0.0 ## LSUF }, \
23300+ { "0,0", 0, 0.0 ## LSUF }, \
23301+ { "-0,0", 0, -0.0 ## LSUF }, \
23302+ { "0e-10", 0, 0.0 ## LSUF }, \
23303+ { "-0e-10", 0, -0.0 ## LSUF }, \
23304+ { "0,e-10", 0, 0.0 ## LSUF }, \
23305+ { "-0,e-10", 0, -0.0 ## LSUF }, \
23306+ { "0,0e-10", 0, 0.0 ## LSUF }, \
23307+ { "-0,0e-10", 0, -0.0 ## LSUF }, \
23308+ { "0e-1000000", 0, 0.0 ## LSUF }, \
23309+ { "-0e-1000000", 0, -0.0 ## LSUF }, \
23310+ { "0,0e-1000000", 0, 0.0 ## LSUF }, \
23311+ { "-0,0e-1000000", 0, -0.0 ## LSUF }, \
23312+ { "0", 1, 0.0 ## LSUF }, \
23313+ { "000", 1, 0.0 ## LSUF }, \
23314+ { "-0", 1, -0.0 ## LSUF }, \
23315+ { "-000", 1, -0.0 ## LSUF }, \
23316+ { "0e-10", 1, 0.0 ## LSUF }, \
23317+ { "-0e-10", 1, -0.0 ## LSUF }, \
23318+ { "0e-1000000", 1, 0.0 ## LSUF }, \
23319+ { "-0e-1000000", 1, -0.0 ## LSUF }, \
23320+ { "000"NNBSP"000"NNBSP"000", 1, 0.0 ## LSUF }, \
23321+ { "-000"NNBSP"000"NNBSP"000", 1, -0.0 ## LSUF } \
23322+ }; \
23323+ \
23324+static int \
23325+test_strto ## FSUF (void) \
23326+{ \
23327+ int status = 0; \
23328+ \
23329+ for (int i = 0; \
23330+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
23331+ ++i) \
23332+ { \
23333+ char *ep; \
23334+ FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \
23335+ &ep, \
23336+ tests_strto ## FSUF[i].group); \
23337+ \
23338+ if (*ep != '\0') \
23339+ { \
23340+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \
23341+ status = 1; \
23342+ } \
23343+ \
23344+ if (r != tests_strto ## FSUF[i].expected \
23345+ || (copysign ## CSUF (10.0 ## LSUF, r) \
23346+ != copysign ## CSUF (10.0 ## LSUF, \
23347+ tests_strto ## FSUF[i].expected))) \
23348+ { \
23349+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
23350+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
23351+ FTOSTR (buf2, sizeof (buf2), "%g", \
23352+ tests_strto ## FSUF[i].expected); \
23353+ printf ("%d: got wrong results %s, expected %s\n", \
23354+ i, buf1, buf2); \
23355+ status = 1; \
23356+ } \
23357+ } \
23358+ \
23359+ return status; \
23360+}
23361
23362+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
23363
23364 static int
23365 do_test (void)
23366@@ -72,29 +132,7 @@ do_test (void)
23367 return 1;
23368 }
23369
23370- int status = 0;
23371-
23372- for (int i = 0; i < NTESTS; ++i)
23373- {
23374- char *ep;
23375- double r = __strtod_internal (tests[i].in, &ep, tests[i].group);
23376-
23377- if (*ep != '\0')
23378- {
23379- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
23380- status = 1;
23381- }
23382-
23383- if (r != tests[i].expected
23384- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
23385- {
23386- printf ("%d: got wrong results %g, expected %g\n",
23387- i, r, tests[i].expected);
23388- status = 1;
23389- }
23390- }
23391-
23392- return status;
23393+ return STRTOD_TEST_FOREACH (test_strto);
23394 }
23395
23396 #include <support/test-driver.c>
23397
23398commit ad93c2047d791044d45e8f65070d821b0b918993
23399Author: Joseph Myers <josmyers@redhat.com>
23400Date: Wed Sep 4 13:20:18 2024 +0000
23401
23402 Improve NaN payload testing
23403
23404 There are two separate sets of tests of NaN payloads in glibc:
23405
23406 * libm-test-{get,set}payload* verify that getpayload, setpayload,
23407 setpayloadsig and __builtin_nan functions are consistent in their
23408 payload handling.
23409
23410 * test-nan-payload verifies that strtod-family functions and the
23411 not-built-in nan functions are consistent in their payload handling.
23412
23413 Nothing, however, connects the two sets of functions (i.e., verifies
23414 that strtod / nan are consistent with getpayload / setpayload /
23415 __builtin_nan).
23416
23417 Improve test-nan-payload to check actual payload value with getpayload
23418 rather than just verifying that the strtod and nan functions produce
23419 the same NaN. Also check that the NaNs produced aren't signaling and
23420 extend the tests to cover _FloatN / _FloatNx.
23421
23422 Tested for x86_64.
23423
23424 (cherry picked from commit be77d5ae417236883c02d3d67c0716e3f669fa41)
23425
23426diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c
23427index 4a81dc348b..55c13de14e 100644
23428--- a/math/test-nan-payload.c
23429+++ b/math/test-nan-payload.c
23430@@ -16,6 +16,8 @@
23431 License along with the GNU C Library; if not, see
23432 <https://www.gnu.org/licenses/>. */
23433
23434+#define _LIBC_TEST 1
23435+#define __STDC_WANT_IEC_60559_TYPES_EXT__
23436 #include <float.h>
23437 #include <math.h>
23438 #include <stdio.h>
23439@@ -31,7 +33,7 @@
23440 #define CHECK_IS_NAN(TYPE, A) \
23441 do \
23442 { \
23443- if (isnan (A)) \
23444+ if (isnan (A) && !issignaling (A)) \
23445 puts ("PASS: " #TYPE " " #A); \
23446 else \
23447 { \
23448@@ -41,6 +43,19 @@
23449 } \
23450 while (0)
23451
23452+#define CHECK_PAYLOAD(TYPE, FUNC, A, P) \
23453+ do \
23454+ { \
23455+ if (FUNC (&(A)) == (P)) \
23456+ puts ("PASS: " #TYPE " payload " #A); \
23457+ else \
23458+ { \
23459+ puts ("FAIL: " #TYPE " payload " #A); \
23460+ result = 1; \
23461+ } \
23462+ } \
23463+ while (0)
23464+
23465 #define CHECK_SAME_NAN(TYPE, A, B) \
23466 do \
23467 { \
23468@@ -71,7 +86,7 @@
23469 bits. */
23470 #define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106)
23471
23472-#define RUN_TESTS(TYPE, SFUNC, FUNC, MANT_DIG) \
23473+#define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \
23474 do \
23475 { \
23476 TYPE n123 = WRAP_NAN (FUNC, "123"); \
23477@@ -82,6 +97,10 @@
23478 CHECK_IS_NAN (TYPE, n456); \
23479 TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \
23480 CHECK_IS_NAN (TYPE, s456); \
23481+ TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \
23482+ CHECK_IS_NAN (TYPE, nh123); \
23483+ TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \
23484+ CHECK_IS_NAN (TYPE, sh123); \
23485 TYPE n123x = WRAP_NAN (FUNC, "123)"); \
23486 CHECK_IS_NAN (TYPE, n123x); \
23487 TYPE nemp = WRAP_NAN (FUNC, ""); \
23488@@ -92,8 +111,16 @@
23489 CHECK_IS_NAN (TYPE, sx); \
23490 if (CAN_TEST_EQ (MANT_DIG)) \
23491 CHECK_SAME_NAN (TYPE, n123, s123); \
23492+ CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \
23493+ CHECK_PAYLOAD (TYPE, PLFUNC, s123, 123); \
23494 if (CAN_TEST_EQ (MANT_DIG)) \
23495 CHECK_SAME_NAN (TYPE, n456, s456); \
23496+ CHECK_PAYLOAD (TYPE, PLFUNC, n456, 456); \
23497+ CHECK_PAYLOAD (TYPE, PLFUNC, s456, 456); \
23498+ if (CAN_TEST_EQ (MANT_DIG)) \
23499+ CHECK_SAME_NAN (TYPE, nh123, sh123); \
23500+ CHECK_PAYLOAD (TYPE, PLFUNC, nh123, 0x123); \
23501+ CHECK_PAYLOAD (TYPE, PLFUNC, sh123, 0x123); \
23502 if (CAN_TEST_EQ (MANT_DIG)) \
23503 CHECK_SAME_NAN (TYPE, nemp, semp); \
23504 if (CAN_TEST_EQ (MANT_DIG)) \
23505@@ -110,9 +137,31 @@ static int
23506 do_test (void)
23507 {
23508 int result = 0;
23509- RUN_TESTS (float, strtof, nanf, FLT_MANT_DIG);
23510- RUN_TESTS (double, strtod, nan, DBL_MANT_DIG);
23511- RUN_TESTS (long double, strtold, nanl, LDBL_MANT_DIG);
23512+ RUN_TESTS (float, strtof, nanf, getpayloadf, FLT_MANT_DIG);
23513+ RUN_TESTS (double, strtod, nan, getpayload, DBL_MANT_DIG);
23514+ RUN_TESTS (long double, strtold, nanl, getpayloadl, LDBL_MANT_DIG);
23515+#if __HAVE_FLOAT16
23516+ RUN_TESTS (_Float16, strtof16, nanf16, getpayloadf16, FLT16_MANT_DIG);
23517+#endif
23518+#if __HAVE_FLOAT32
23519+ RUN_TESTS (_Float32, strtof32, nanf32, getpayloadf32, FLT32_MANT_DIG);
23520+#endif
23521+#if __HAVE_FLOAT64
23522+ RUN_TESTS (_Float64, strtof64, nanf64, getpayloadf64, FLT64_MANT_DIG);
23523+#endif
23524+#if __HAVE_FLOAT128
23525+ RUN_TESTS (_Float128, strtof128, nanf128, getpayloadf128, FLT128_MANT_DIG);
23526+#endif
23527+#if __HAVE_FLOAT32X
23528+ RUN_TESTS (_Float32x, strtof32x, nanf32x, getpayloadf32x, FLT32X_MANT_DIG);
23529+#endif
23530+#if __HAVE_FLOAT64X
23531+ RUN_TESTS (_Float64x, strtof64x, nanf64x, getpayloadf64x, FLT64X_MANT_DIG);
23532+#endif
23533+#if __HAVE_FLOAT128X
23534+ RUN_TESTS (_Float128x, strtof128x, nanf128x, getpayloadf128x,
23535+ FLT128X_MANT_DIG);
23536+#endif
23537 return result;
23538 }
23539
23540
23541commit c4cc72d2efc741872d65ae1fd77572e47042d179
23542Author: Joseph Myers <josmyers@redhat.com>
23543Date: Wed Sep 4 13:21:23 2024 +0000
23544
23545 Do not set errno for overflowing NaN payload in strtod/nan (bug 32045)
23546
23547 As reported in bug 32045, it's incorrect for strtod/nan functions to
23548 set errno based on overflowing payload (strtod should only set errno
23549 for overflow / underflow of its actual result, and potentially if
23550 nothing in the string can be parsed as a number at all; nan should be
23551 a pure function that never sets it). Save and restore errno around
23552 the internal strtoull call and add associated test coverage.
23553
23554 Tested for x86_64.
23555
23556 (cherry picked from commit 64f62c47e9c350f353336f2df6714e1d48ec50d8)
23557
23558diff --git a/math/Makefile b/math/Makefile
23559index f06d370383..b64c3eedd5 100644
23560--- a/math/Makefile
23561+++ b/math/Makefile
23562@@ -1077,6 +1077,7 @@ CFLAGS-test-flt-eval-method.c += -fexcess-precision=standard
23563 CFLAGS-test-fe-snans-always-signal.c += $(config-cflags-signaling-nans)
23564
23565 CFLAGS-test-nan-const.c += -fno-builtin
23566+CFLAGS-test-nan-payload.c += -fno-builtin
23567
23568 CFLAGS-test-ceil-except-2.c += -fno-builtin
23569 CFLAGS-test-floor-except-2.c += -fno-builtin
23570diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c
23571index 55c13de14e..413791e09f 100644
23572--- a/math/test-nan-payload.c
23573+++ b/math/test-nan-payload.c
23574@@ -18,6 +18,7 @@
23575
23576 #define _LIBC_TEST 1
23577 #define __STDC_WANT_IEC_60559_TYPES_EXT__
23578+#include <errno.h>
23579 #include <float.h>
23580 #include <math.h>
23581 #include <stdio.h>
23582@@ -82,6 +83,26 @@
23583 } \
23584 while (0)
23585
23586+#define CLEAR_ERRNO \
23587+ do \
23588+ { \
23589+ errno = 12345; \
23590+ } \
23591+ while (0)
23592+
23593+#define CHECK_ERRNO(TYPE, A) \
23594+ do \
23595+ { \
23596+ if (errno == 12345) \
23597+ puts ("PASS: " #TYPE " " #A " errno"); \
23598+ else \
23599+ { \
23600+ puts ("FAIL: " #TYPE " " #A " errno"); \
23601+ result = 1; \
23602+ } \
23603+ } \
23604+ while (0)
23605+
23606 /* Cannot test payloads by memcmp for formats where NaNs have padding
23607 bits. */
23608 #define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106)
23609@@ -89,26 +110,58 @@
23610 #define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \
23611 do \
23612 { \
23613+ CLEAR_ERRNO; \
23614 TYPE n123 = WRAP_NAN (FUNC, "123"); \
23615+ CHECK_ERRNO (TYPE, n123); \
23616 CHECK_IS_NAN (TYPE, n123); \
23617+ CLEAR_ERRNO; \
23618 TYPE s123 = WRAP_STRTO (SFUNC, "NAN(123)"); \
23619+ CHECK_ERRNO (TYPE, s123); \
23620 CHECK_IS_NAN (TYPE, s123); \
23621+ CLEAR_ERRNO; \
23622 TYPE n456 = WRAP_NAN (FUNC, "456"); \
23623+ CHECK_ERRNO (TYPE, n456); \
23624 CHECK_IS_NAN (TYPE, n456); \
23625+ CLEAR_ERRNO; \
23626 TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \
23627+ CHECK_ERRNO (TYPE, s456); \
23628 CHECK_IS_NAN (TYPE, s456); \
23629+ CLEAR_ERRNO; \
23630 TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \
23631+ CHECK_ERRNO (TYPE, nh123); \
23632 CHECK_IS_NAN (TYPE, nh123); \
23633+ CLEAR_ERRNO; \
23634 TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \
23635+ CHECK_ERRNO (TYPE, sh123); \
23636 CHECK_IS_NAN (TYPE, sh123); \
23637+ CLEAR_ERRNO; \
23638 TYPE n123x = WRAP_NAN (FUNC, "123)"); \
23639+ CHECK_ERRNO (TYPE, n123x); \
23640 CHECK_IS_NAN (TYPE, n123x); \
23641+ CLEAR_ERRNO; \
23642 TYPE nemp = WRAP_NAN (FUNC, ""); \
23643+ CHECK_ERRNO (TYPE, nemp); \
23644 CHECK_IS_NAN (TYPE, nemp); \
23645+ CLEAR_ERRNO; \
23646 TYPE semp = WRAP_STRTO (SFUNC, "NAN()"); \
23647+ CHECK_ERRNO (TYPE, semp); \
23648 CHECK_IS_NAN (TYPE, semp); \
23649+ CLEAR_ERRNO; \
23650 TYPE sx = WRAP_STRTO (SFUNC, "NAN"); \
23651+ CHECK_ERRNO (TYPE, sx); \
23652 CHECK_IS_NAN (TYPE, sx); \
23653+ CLEAR_ERRNO; \
23654+ TYPE novf = WRAP_NAN (FUNC, "9999999999" \
23655+ "99999999999999999999" \
23656+ "9999999999"); \
23657+ CHECK_ERRNO (TYPE, novf); \
23658+ CHECK_IS_NAN (TYPE, novf); \
23659+ CLEAR_ERRNO; \
23660+ TYPE sovf = WRAP_STRTO (SFUNC, "NAN(9999999999" \
23661+ "99999999999999999999" \
23662+ "9999999999)"); \
23663+ CHECK_ERRNO (TYPE, sovf); \
23664+ CHECK_IS_NAN (TYPE, sovf); \
23665 if (CAN_TEST_EQ (MANT_DIG)) \
23666 CHECK_SAME_NAN (TYPE, n123, s123); \
23667 CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \
23668diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c
23669index 4cb286d2b3..39fb7e9f75 100644
23670--- a/stdlib/strtod_nan_main.c
23671+++ b/stdlib/strtod_nan_main.c
23672@@ -16,6 +16,7 @@
23673 License along with the GNU C Library; if not, see
23674 <https://www.gnu.org/licenses/>. */
23675
23676+#include <errno.h>
23677 #include <ieee754.h>
23678 #include <locale.h>
23679 #include <math.h>
23680@@ -50,7 +51,9 @@ STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc)
23681 STRING_TYPE *endp;
23682 unsigned long long int mant;
23683
23684+ int save_errno = errno;
23685 mant = STRTOULL (str, &endp, 0);
23686+ __set_errno (save_errno);
23687 if (endp == cp)
23688 SET_NAN_PAYLOAD (retval, mant);
23689
23690
23691commit 5a10d05c39689dcf7ee694ec94cd2fd069c747ee
23692Author: Florian Weimer <fweimer@redhat.com>
23693Date: Thu Sep 5 21:18:23 2024 +0200
23694
23695 powerpc64le: Build new strtod tests with long double ABI flags (bug 32145)
23696
23697 This fixes several test failures:
23698
23699 =====FAIL: stdlib/tst-strtod1i.out=====
23700 Locale tests
23701 all OK
23702 Locale tests
23703 all OK
23704 Locale tests
23705 strtold("1,5") returns -6,38643e+367 and not 1,5
23706 strtold("1.5") returns 1,5 and not 1
23707 strtold("1.500") returns 1 and not 1500
23708 strtold("36.893.488.147.419.103.232") returns 1500 and not 3,68935e+19
23709 Locale tests
23710 all OK
23711
23712 =====FAIL: stdlib/tst-strtod3.out=====
23713 0: got wrong results -2.5937e+4826, expected 0
23714
23715 =====FAIL: stdlib/tst-strtod4.out=====
23716 0: got wrong results -6,38643e+367, expected 0
23717 1: got wrong results 0, expected 1e+06
23718 2: got wrong results 1e+06, expected 10
23719
23720 =====FAIL: stdlib/tst-strtod5i.out=====
23721 0: got wrong results -6,38643e+367, expected 0
23722 2: got wrong results 0, expected -0
23723 4: got wrong results -0, expected 0
23724 5: got wrong results 0, expected -0
23725 6: got wrong results -0, expected 0
23726 7: got wrong results 0, expected -0
23727 8: got wrong results -0, expected 0
23728 9: got wrong results 0, expected -0
23729 10: got wrong results -0, expected 0
23730 11: got wrong results 0, expected -0
23731 12: got wrong results -0, expected 0
23732 13: got wrong results 0, expected -0
23733 14: got wrong results -0, expected 0
23734 15: got wrong results 0, expected -0
23735 16: got wrong results -0, expected 0
23736 17: got wrong results 0, expected -0
23737 18: got wrong results -0, expected 0
23738 20: got wrong results 0, expected -0
23739 22: got wrong results -0, expected 0
23740 23: got wrong results 0, expected -0
23741 24: got wrong results -0, expected 0
23742 25: got wrong results 0, expected -0
23743 26: got wrong results -0, expected 0
23744 27: got wrong results 0, expected -0
23745
23746 Fixes commit 3fc063dee01da4f80920a14b7db637c8501d6fd4
23747 ("Make __strtod_internal tests type-generic").
23748
23749 Suggested-by: Joseph Myers <josmyers@redhat.com>
23750 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
23751 (cherry picked from commit cc3e743fc09ee6fca45767629df9cbcbe1feba82)
23752
23753diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile
23754index 9d568d4f44..b77775cf95 100644
23755--- a/sysdeps/powerpc/powerpc64/le/Makefile
23756+++ b/sysdeps/powerpc/powerpc64/le/Makefile
23757@@ -129,6 +129,10 @@ CFLAGS-tst-strtod-round.c += $(type-float128-CFLAGS)
23758 CFLAGS-tst-wcstod-round.c += $(type-float128-CFLAGS)
23759 CFLAGS-tst-strtod-nan-locale.c += $(type-float128-CFLAGS)
23760 CFLAGS-tst-wcstod-nan-locale.c += $(type-float128-CFLAGS)
23761+CFLAGS-tst-strtod1i.c += $(type-float128-CFLAGS)
23762+CFLAGS-tst-strtod3.c += $(type-float128-CFLAGS)
23763+CFLAGS-tst-strtod4.c += $(type-float128-CFLAGS)
23764+CFLAGS-tst-strtod5i.c += $(type-float128-CFLAGS)
23765 CFLAGS-tst-strtod6.c += $(type-float128-CFLAGS)
23766 CFLAGS-tst-strfrom.c += $(type-float128-CFLAGS)
23767 CFLAGS-tst-strfrom-locale.c += $(type-float128-CFLAGS)
23768
23769commit 4a9b6cdc88335e2a7291418563073a58fe97346e
23770Author: Joseph Myers <josmyers@redhat.com>
23771Date: Fri Sep 20 23:23:13 2024 +0000
23772
23773 Make tst-strtod2 and tst-strtod5 type-generic
23774
23775 Some of the strtod tests use type-generic machinery in tst-strtod.h to
23776 test the strto* functions for all floating types, while others only
23777 test double even when the tests are in fact meaningful for all
23778 floating types.
23779
23780 Convert tst-strtod2 and tst-strtod5 to use the type-generic machinery
23781 so they test all floating types. I haven't tried to convert them to
23782 use newer test interfaces in other ways, just made the changes
23783 necessary to use the type-generic machinery.
23784
23785 Tested for x86_64.
23786
23787 (cherry picked from commit 8de031bcb9adfa736c0caed2c79d10947b8d8f48)
23788
23789diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c
23790index a7df82ebbd..2cb0953fa9 100644
23791--- a/stdlib/tst-strtod2.c
23792+++ b/stdlib/tst-strtod2.c
23793@@ -1,43 +1,61 @@
23794 #include <stdio.h>
23795 #include <stdlib.h>
23796
23797-struct test
23798-{
23799- const char *str;
23800- double result;
23801- size_t offset;
23802-} tests[] =
23803-{
23804- { "0xy", 0.0, 1 },
23805- { "0x.y", 0.0, 1 },
23806- { "0x0.y", 0.0, 4 },
23807- { "0x.0y", 0.0, 4 },
23808- { ".y", 0.0, 0 },
23809- { "0.y", 0.0, 2 },
23810- { ".0y", 0.0, 2 }
23811-};
23812+#include "tst-strtod.h"
23813+
23814+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
23815+struct test_strto ## FSUF \
23816+{ \
23817+ const char *str; \
23818+ FTYPE result; \
23819+ size_t offset; \
23820+} tests_strto ## FSUF[] = \
23821+{ \
23822+ { "0xy", 0.0 ## LSUF, 1 }, \
23823+ { "0x.y", 0.0 ## LSUF, 1 }, \
23824+ { "0x0.y", 0.0 ## LSUF, 4 }, \
23825+ { "0x.0y", 0.0 ## LSUF, 4 }, \
23826+ { ".y", 0.0 ## LSUF, 0 }, \
23827+ { "0.y", 0.0 ## LSUF, 2 }, \
23828+ { ".0y", 0.0 ## LSUF, 2 } \
23829+}; \
23830+ \
23831+static int \
23832+test_strto ## FSUF (void) \
23833+{ \
23834+ int status = 0; \
23835+ for (size_t i = 0; \
23836+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
23837+ ++i) \
23838+ { \
23839+ char *ep; \
23840+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \
23841+ if (r != tests_strto ## FSUF[i].result) \
23842+ { \
23843+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
23844+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
23845+ FTOSTR (buf2, sizeof (buf2), "%g", tests_strto ## FSUF[i].result); \
23846+ printf ("test %zu r = %s, expect %s\n", i, buf1, buf2); \
23847+ status = 1; \
23848+ } \
23849+ if (ep != tests_strto ## FSUF[i].str + tests_strto ## FSUF[i].offset) \
23850+ { \
23851+ printf ("test %zu strto" #FSUF \
23852+ " parsed %tu characters, expected %zu\n", \
23853+ i, ep - tests_strto ## FSUF[i].str, \
23854+ tests_strto ## FSUF[i].offset); \
23855+ status = 1; \
23856+ } \
23857+ } \
23858+ return status; \
23859+}
23860+
23861+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
23862
23863 static int
23864 do_test (void)
23865 {
23866- int status = 0;
23867- for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
23868- {
23869- char *ep;
23870- double r = strtod (tests[i].str, &ep);
23871- if (r != tests[i].result)
23872- {
23873- printf ("test %zu r = %g, expect %g\n", i, r, tests[i].result);
23874- status = 1;
23875- }
23876- if (ep != tests[i].str + tests[i].offset)
23877- {
23878- printf ("test %zu strtod parsed %tu characters, expected %zu\n",
23879- i, ep - tests[i].str, tests[i].offset);
23880- status = 1;
23881- }
23882- }
23883- return status;
23884+ return STRTOD_TEST_FOREACH (test_strto);
23885 }
23886
23887 #define TEST_FUNCTION do_test ()
23888diff --git a/stdlib/tst-strtod5.c b/stdlib/tst-strtod5.c
23889index 29153ec005..7eb9b3a2d7 100644
23890--- a/stdlib/tst-strtod5.c
23891+++ b/stdlib/tst-strtod5.c
23892@@ -22,35 +22,75 @@
23893 #include <string.h>
23894 #include <math.h>
23895
23896+#include "tst-strtod.h"
23897+
23898 #define NBSP "\xc2\xa0"
23899
23900-static const struct
23901-{
23902- const char *in;
23903- double expected;
23904-} tests[] =
23905- {
23906- { "0", 0.0 },
23907- { "000", 0.0 },
23908- { "-0", -0.0 },
23909- { "-000", -0.0 },
23910- { "0,", 0.0 },
23911- { "-0,", -0.0 },
23912- { "0,0", 0.0 },
23913- { "-0,0", -0.0 },
23914- { "0e-10", 0.0 },
23915- { "-0e-10", -0.0 },
23916- { "0,e-10", 0.0 },
23917- { "-0,e-10", -0.0 },
23918- { "0,0e-10", 0.0 },
23919- { "-0,0e-10", -0.0 },
23920- { "0e-1000000", 0.0 },
23921- { "-0e-1000000", -0.0 },
23922- { "0,0e-1000000", 0.0 },
23923- { "-0,0e-1000000", -0.0 },
23924- };
23925-#define NTESTS (sizeof (tests) / sizeof (tests[0]))
23926+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
23927+static const struct \
23928+{ \
23929+ const char *in; \
23930+ FTYPE expected; \
23931+} tests_strto ## FSUF[] = \
23932+ { \
23933+ { "0", 0.0 ## LSUF }, \
23934+ { "000", 0.0 ## LSUF }, \
23935+ { "-0", -0.0 ## LSUF }, \
23936+ { "-000", -0.0 ## LSUF }, \
23937+ { "0,", 0.0 ## LSUF }, \
23938+ { "-0,", -0.0 ## LSUF }, \
23939+ { "0,0", 0.0 ## LSUF }, \
23940+ { "-0,0", -0.0 ## LSUF }, \
23941+ { "0e-10", 0.0 ## LSUF }, \
23942+ { "-0e-10", -0.0 ## LSUF }, \
23943+ { "0,e-10", 0.0 ## LSUF }, \
23944+ { "-0,e-10", -0.0 ## LSUF }, \
23945+ { "0,0e-10", 0.0 ## LSUF }, \
23946+ { "-0,0e-10", -0.0 ## LSUF }, \
23947+ { "0e-1000000", 0.0 ## LSUF }, \
23948+ { "-0e-1000000", -0.0 ## LSUF }, \
23949+ { "0,0e-1000000", 0.0 ## LSUF }, \
23950+ { "-0,0e-1000000", -0.0 ## LSUF }, \
23951+ }; \
23952+ \
23953+ \
23954+static int \
23955+test_strto ## FSUF (void) \
23956+{ \
23957+ int status = 0; \
23958+ \
23959+ for (int i = 0; \
23960+ i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \
23961+ ++i) \
23962+ { \
23963+ char *ep; \
23964+ FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].in, &ep); \
23965+ \
23966+ if (*ep != '\0') \
23967+ { \
23968+ printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \
23969+ status = 1; \
23970+ } \
23971+ \
23972+ if (r != tests_strto ## FSUF[i].expected \
23973+ || (copysign ## CSUF (10.0 ## LSUF, r) \
23974+ != copysign ## CSUF (10.0 ## LSUF, \
23975+ tests_strto ## FSUF[i].expected))) \
23976+ { \
23977+ char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
23978+ FTOSTR (buf1, sizeof (buf1), "%g", r); \
23979+ FTOSTR (buf2, sizeof (buf2), "%g", \
23980+ tests_strto ## FSUF[i].expected); \
23981+ printf ("%d: got wrong results %s, expected %s\n", \
23982+ i, buf1, buf2); \
23983+ status = 1; \
23984+ } \
23985+ } \
23986+ \
23987+ return status; \
23988+}
23989
23990+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
23991
23992 static int
23993 do_test (void)
23994@@ -61,29 +101,7 @@ do_test (void)
23995 return 1;
23996 }
23997
23998- int status = 0;
23999-
24000- for (int i = 0; i < NTESTS; ++i)
24001- {
24002- char *ep;
24003- double r = strtod (tests[i].in, &ep);
24004-
24005- if (*ep != '\0')
24006- {
24007- printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep);
24008- status = 1;
24009- }
24010-
24011- if (r != tests[i].expected
24012- || copysign (10.0, r) != copysign (10.0, tests[i].expected))
24013- {
24014- printf ("%d: got wrong results %g, expected %g\n",
24015- i, r, tests[i].expected);
24016- status = 1;
24017- }
24018- }
24019-
24020- return status;
24021+ return STRTOD_TEST_FOREACH (test_strto);
24022 }
24023
24024 #include <support/test-driver.c>
24025
24026commit 8f40dfbe2ad8a4a2d2fc3bbe01d289037d113ced
24027Author: Joseph Myers <josmyers@redhat.com>
24028Date: Fri Sep 20 23:24:02 2024 +0000
24029
24030 Add more tests of strtod end pointer
24031
24032 Although there are some tests in tst-strtod2 and tst-strtod3 for the
24033 end pointer provided by strtod when it doesn't parse the whole string,
24034 they aren't very thorough. Add tests of more such cases to
24035 tst-strtod2.
24036
24037 Tested for x86_64.
24038
24039 (cherry picked from commit b5d3737b305525315e0c7c93ca49eadc868eabd5)
24040
24041diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c
24042index 2cb0953fa9..c84bd792c1 100644
24043--- a/stdlib/tst-strtod2.c
24044+++ b/stdlib/tst-strtod2.c
24045@@ -1,3 +1,4 @@
24046+#include <math.h>
24047 #include <stdio.h>
24048 #include <stdlib.h>
24049
24050@@ -17,10 +18,46 @@ struct test_strto ## FSUF \
24051 { "0x.0y", 0.0 ## LSUF, 4 }, \
24052 { ".y", 0.0 ## LSUF, 0 }, \
24053 { "0.y", 0.0 ## LSUF, 2 }, \
24054- { ".0y", 0.0 ## LSUF, 2 } \
24055+ { ".0y", 0.0 ## LSUF, 2 }, \
24056+ { "1.0e", 1.0 ## LSUF, 3 }, \
24057+ { "1.0e+", 1.0 ## LSUF, 3 }, \
24058+ { "1.0e-", 1.0 ## LSUF, 3 }, \
24059+ { "1.0ex", 1.0 ## LSUF, 3 }, \
24060+ { "1.0e+x", 1.0 ## LSUF, 3 }, \
24061+ { "1.0e-x", 1.0 ## LSUF, 3 }, \
24062+ { "0x1p", 1.0 ## LSUF, 3 }, \
24063+ { "0x1p+", 1.0 ## LSUF, 3 }, \
24064+ { "0x1p-", 1.0 ## LSUF, 3 }, \
24065+ { "0x1px", 1.0 ## LSUF, 3 }, \
24066+ { "0x1p+x", 1.0 ## LSUF, 3 }, \
24067+ { "0x1p-x", 1.0 ## LSUF, 3 }, \
24068+ { "INFx", INFINITY, 3 }, \
24069+ { "infx", INFINITY, 3 }, \
24070+ { "INFINITx", INFINITY, 3 }, \
24071+ { "infinitx", INFINITY, 3 }, \
24072+ { "INFINITYY", INFINITY, 8 }, \
24073+ { "infinityy", INFINITY, 8 }, \
24074+ { "NANx", NAN, 3 }, \
24075+ { "nanx", NAN, 3 }, \
24076+ { "NAN(", NAN, 3 }, \
24077+ { "nan(", NAN, 3 }, \
24078+ { "NAN(x", NAN, 3 }, \
24079+ { "nan(x", NAN, 3 }, \
24080+ { "NAN(x)y", NAN, 6 }, \
24081+ { "nan(x)y", NAN, 6 }, \
24082+ { "NAN(*)y", NAN, 3 }, \
24083+ { "nan(*)y", NAN, 3 } \
24084 }; \
24085 \
24086 static int \
24087+compare_strto ## FSUF (FTYPE x, FTYPE y) \
24088+{ \
24089+ if (isnan (x) && isnan (y)) \
24090+ return 1; \
24091+ return x == y; \
24092+} \
24093+ \
24094+static int \
24095 test_strto ## FSUF (void) \
24096 { \
24097 int status = 0; \
24098@@ -30,7 +67,7 @@ test_strto ## FSUF (void) \
24099 { \
24100 char *ep; \
24101 FTYPE r = strto ## FSUF (tests_strto ## FSUF[i].str, &ep); \
24102- if (r != tests_strto ## FSUF[i].result) \
24103+ if (!compare_strto ## FSUF (r, tests_strto ## FSUF[i].result)) \
24104 { \
24105 char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \
24106 FTOSTR (buf1, sizeof (buf1), "%g", r); \
24107
24108commit cc256952ecb07789c423dff9712eb7a38f80e963
24109Author: Joseph Myers <josmyers@redhat.com>
24110Date: Fri Sep 20 23:24:45 2024 +0000
24111
24112 Add tests of more strtod special cases
24113
24114 There is very little test coverage of inputs to strtod-family
24115 functions that don't contain anything that can be parsed as a number
24116 (one test of ".y" in tst-strtod2), and none that I can see of skipping
24117 initial whitespace. Add some tests of these things to tst-strtod2.
24118
24119 Tested for x86_64.
24120
24121 (cherry picked from commit 378039ca578c2ea93095a1e710d96f58c68a3997)
24122
24123diff --git a/stdlib/tst-strtod2.c b/stdlib/tst-strtod2.c
24124index c84bd792c1..d00bc13323 100644
24125--- a/stdlib/tst-strtod2.c
24126+++ b/stdlib/tst-strtod2.c
24127@@ -31,6 +31,20 @@ struct test_strto ## FSUF \
24128 { "0x1px", 1.0 ## LSUF, 3 }, \
24129 { "0x1p+x", 1.0 ## LSUF, 3 }, \
24130 { "0x1p-x", 1.0 ## LSUF, 3 }, \
24131+ { "", 0.0 ## LSUF, 0 }, \
24132+ { ".", 0.0 ## LSUF, 0 }, \
24133+ { "-", 0.0 ## LSUF, 0 }, \
24134+ { "-.", 0.0 ## LSUF, 0 }, \
24135+ { ".e", 0.0 ## LSUF, 0 }, \
24136+ { "-.e", 0.0 ## LSUF, 0 }, \
24137+ { " \t", 0.0 ## LSUF, 0 }, \
24138+ { " \t.", 0.0 ## LSUF, 0 }, \
24139+ { " \t-", 0.0 ## LSUF, 0 }, \
24140+ { " \t-.", 0.0 ## LSUF, 0 }, \
24141+ { " \t.e", 0.0 ## LSUF, 0 }, \
24142+ { " \t-.e", 0.0 ## LSUF, 0 }, \
24143+ { " \t\f\r\n\v1", 1.0 ## LSUF, 7 }, \
24144+ { " \t\f\r\n\v-1.5e2", -150.0 ## LSUF, 12 }, \
24145 { "INFx", INFINITY, 3 }, \
24146 { "infx", INFINITY, 3 }, \
24147 { "INFINITx", INFINITY, 3 }, \
24148
24149commit 5c06c6e0b5078ffb0aa0c09bac79f086145e0897
24150Author: H.J. Lu <hjl.tools@gmail.com>
24151Date: Sat Sep 7 08:32:32 2024 -0700
24152
24153 libio: Set _vtable_offset before calling _IO_link_in [BZ #32148]
24154
24155 Since _IO_vtable_offset is used to detect the old binaries, set it
24156 in _IO_old_file_init_internal before calling _IO_link_in which checks
24157 _IO_vtable_offset. Add a glibc 2.0 test with copy relocation on
24158 _IO_stderr_@GLIBC_2.0 to verify that fopen won't cause memory corruption.
24159 This fixes BZ #32148.
24160
24161 Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
24162 Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
24163 (cherry picked from commit 9dfea3de7f690bff70e3c6eb346b9ad082bb2e35)
24164
24165diff --git a/libio/Makefile b/libio/Makefile
24166index 6a507b67ea..5292baa4e0 100644
24167--- a/libio/Makefile
24168+++ b/libio/Makefile
24169@@ -286,11 +286,18 @@ endif
24170 ifeq ($(build-shared),yes)
24171 aux += oldfileops oldstdfiles
24172 tests += \
24173+ tst-fopen-compat \
24174 tst-stderr-compat \
24175 # tests
24176 tests-2.0 += \
24177+ tst-fopen-compat \
24178 tst-stderr-compat \
24179 # tests-2.0
24180+
24181+tst-fopen-compat-ARGS = tst-fopen-compat.c
24182+# Disable PIE to trigger copy relocation.
24183+CFLAGS-tst-fopen-compat.c += -fno-pie
24184+tst-fopen-compat-no-pie = yes
24185 endif
24186
24187 shared-only-routines = oldiofopen oldiofdopen oldiofclose oldfileops \
24188diff --git a/libio/oldfileops.c b/libio/oldfileops.c
24189index 97148dba9b..8f775c9094 100644
24190--- a/libio/oldfileops.c
24191+++ b/libio/oldfileops.c
24192@@ -103,9 +103,11 @@ _IO_old_file_init_internal (struct _IO_FILE_plus *fp)
24193 fp->file._old_offset = _IO_pos_BAD;
24194 fp->file._flags |= CLOSED_FILEBUF_FLAGS;
24195
24196- _IO_link_in (fp);
24197+ /* NB: _vtable_offset must be set before calling _IO_link_in since
24198+ _IO_vtable_offset is used to detect the old binaries. */
24199 fp->file._vtable_offset = ((int) sizeof (struct _IO_FILE)
24200 - (int) sizeof (struct _IO_FILE_complete));
24201+ _IO_link_in (fp);
24202 fp->file._fileno = -1;
24203
24204 if (&_IO_stdin_used != NULL || !_IO_legacy_file ((FILE *) fp))
24205diff --git a/libio/tst-fopen-compat.c b/libio/tst-fopen-compat.c
24206new file mode 100644
24207index 0000000000..f241b61043
24208--- /dev/null
24209+++ b/libio/tst-fopen-compat.c
24210@@ -0,0 +1,85 @@
24211+/* Verify that fopen works with copy relocation on _IO_stderr_ in binaries
24212+ linked with glibc 2.0.
24213+ Copyright (C) 2024 Free Software Foundation, Inc.
24214+ This file is part of the GNU C Library.
24215+
24216+ The GNU C Library is free software; you can redistribute it and/or
24217+ modify it under the terms of the GNU Lesser General Public
24218+ License as published by the Free Software Foundation; either
24219+ version 2.1 of the License, or (at your option) any later version.
24220+
24221+ The GNU C Library is distributed in the hope that it will be useful,
24222+ but WITHOUT ANY WARRANTY; without even the implied warranty of
24223+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24224+ Lesser General Public License for more details.
24225+
24226+ You should have received a copy of the GNU Lesser General Public
24227+ License along with the GNU C Library; if not, see
24228+ <https://www.gnu.org/licenses/>. */
24229+
24230+#include <shlib-compat.h>
24231+
24232+#if TEST_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
24233+# define _LIBC
24234+# define _IO_USE_OLD_IO_FILE
24235+# include <stdio.h>
24236+# include <string.h>
24237+# include <unistd.h>
24238+# include <limits.h>
24239+# include <sys/stat.h>
24240+# include <support/check.h>
24241+
24242+struct _IO_jump_t;
24243+
24244+struct _IO_FILE_plus
24245+{
24246+ FILE file;
24247+ const struct _IO_jump_t *vtable;
24248+};
24249+
24250+extern struct _IO_FILE_plus _IO_stderr_;
24251+compat_symbol_reference (libc, _IO_stderr_, _IO_stderr_, GLIBC_2_0);
24252+compat_symbol_reference (libc, fopen, fopen, GLIBC_2_0);
24253+compat_symbol_reference (libc, fclose, fclose, GLIBC_2_0);
24254+
24255+static int
24256+do_test (int argc, char *argv[])
24257+{
24258+ static char filename[PATH_MAX + 1];
24259+ struct stat st;
24260+ char *name = NULL;
24261+ int i;
24262+
24263+ /* Try to trigger copy relocation. */
24264+ TEST_VERIFY_EXIT (_IO_stderr_.file._fileno == STDERR_FILENO);
24265+
24266+ for (i = 1; i < argc; i++)
24267+ {
24268+ name = argv[i];
24269+ if (stat (name, &st) == 0)
24270+ {
24271+ TEST_VERIFY_EXIT (strlen (name) <= PATH_MAX);
24272+ break;
24273+ }
24274+ }
24275+ TEST_VERIFY_EXIT (name != NULL);
24276+
24277+ strcpy (filename, name);
24278+ FILE *fp = fopen (filename, "r");
24279+ TEST_VERIFY_EXIT (strcmp (filename, name) == 0);
24280+ TEST_VERIFY_EXIT (fp != NULL);
24281+ TEST_VERIFY_EXIT (fclose (fp) == 0);
24282+ return 0;
24283+}
24284+#else
24285+# include <support/test-driver.h>
24286+
24287+static int
24288+do_test (int argc, char *argv[])
24289+{
24290+ return EXIT_UNSUPPORTED;
24291+}
24292+#endif
24293+
24294+#define TEST_FUNCTION_ARGV do_test
24295+#include <support/test-driver.c>
24296
24297commit 85e5850f2f4ea5f304be5356ecb7a15998766a4e
24298Author: Joseph Myers <josmyers@redhat.com>
24299Date: Fri Sep 20 23:25:32 2024 +0000
24300
24301 Make tst-strtod-underflow type-generic
24302
24303 The test tst-strtod-underflow covers various edge cases close to the
24304 underflow threshold for strtod (especially cases where underflow on
24305 architectures with after-rounding tininess detection depends on the
24306 rounding mode). Make it use the type-generic machinery, with
24307 corresponding test inputs for each supported floating-point format, so
24308 that other functions in the strtod family are tested for underflow
24309 edge cases as well.
24310
24311 Tested for x86_64.
24312
24313 (cherry picked from commit 94ca2c0894f0e1b62625c369cc598a2b9236622c)
24314
24315diff --git a/stdlib/tst-strtod-underflow.c b/stdlib/tst-strtod-underflow.c
24316index a5ced18599..8598b95b6d 100644
24317--- a/stdlib/tst-strtod-underflow.c
24318+++ b/stdlib/tst-strtod-underflow.c
24319@@ -17,6 +17,10 @@
24320 License along with the GNU C Library; if not, see
24321 <https://www.gnu.org/licenses/>. */
24322
24323+/* Defining _LIBC_TEST ensures long double math functions are
24324+ declared in the headers. */
24325+#define _LIBC_TEST 1
24326+#define __STDC_WANT_IEC_60559_TYPES_EXT__
24327 #include <errno.h>
24328 #include <fenv.h>
24329 #include <float.h>
24330@@ -25,6 +29,60 @@
24331 #include <stdlib.h>
24332 #include <tininess.h>
24333
24334+#include "tst-strtod.h"
24335+
24336+/* Logic for selecting between tests for different formats is as in
24337+ tst-strtod-skeleton.c, but here it is selecting string inputs with
24338+ different underflow properties, rather than generated test
24339+ data. */
24340+
24341+#define _CONCAT(a, b) a ## b
24342+#define CONCAT(a, b) _CONCAT (a, b)
24343+
24344+#define MEMBER(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
24345+ const char *s_ ## FSUF;
24346+
24347+#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
24348+# define CHOOSE_ld(f,d,...) d
24349+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16381
24350+# define CHOOSE_ld(f,d,ld64i,...) ld64i
24351+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && LDBL_MIN_EXP == -16382
24352+# define CHOOSE_ld(f,d,ld64i,ld64m,...) ld64m
24353+#elif LDBL_MANT_DIG == 106 && LDBL_MAX_EXP == 1024
24354+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,...) ld106
24355+#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
24356+# define CHOOSE_ld(f,d,ld64i,ld64m,ld106,ld113,...) ld113
24357+#else
24358+# error "unknown long double format"
24359+#endif
24360+
24361+#define CHOOSE_f(f,...) f
24362+#define CHOOSE_f32(f,...) f
24363+#define CHOOSE_d(f,d,...) d
24364+#define CHOOSE_f64(f,d,...) d
24365+#define CHOOSE_f32x(f,d,...) d
24366+#define CHOOSE_f128(f,d,ld64i,ld64m,ld106,ld113,...) ld113
24367+
24368+#if __HAVE_FLOAT64X
24369+# if FLT64X_MANT_DIG == 113 && FLT64X_MAX_EXP == 16384
24370+# define CHOOSE_f64x(f,d,ld64i,ld64m,ld106,ld113,...) ld113
24371+# elif (FLT64X_MANT_DIG == 64 \
24372+ && FLT64X_MAX_EXP == 16384 \
24373+ && FLT64X_MIN_EXP == -16381)
24374+# define CHOOSE_f64x(f,d,ld64i,...) ld64i
24375+# else
24376+# error "unknown _Float64x format"
24377+# endif
24378+#endif
24379+
24380+#define _XNTRY(FSUF, FTYPE, FTOSTR, LSUF, CSUF, ...) \
24381+ CHOOSE_ ## FSUF (__VA_ARGS__),
24382+#define XNTRY(...) \
24383+ GEN_TEST_STRTOD_FOREACH (_XNTRY, __VA_ARGS__)
24384+
24385+#define TEST(f, d, ld64i, ld64m, ld106, ld113, u) \
24386+ { XNTRY(f, d, ld64i, ld64m, ld106, ld113) u }
24387+
24388 enum underflow_case
24389 {
24390 /* Result is exact or outside the subnormal range. */
24391@@ -55,38 +113,194 @@ enum underflow_case
24392
24393 struct test
24394 {
24395- const char *s;
24396+ GEN_TEST_STRTOD_FOREACH (MEMBER)
24397 enum underflow_case c;
24398 };
24399
24400 static const struct test tests[] =
24401 {
24402- { "0x1p-1022", UNDERFLOW_NONE },
24403- { "-0x1p-1022", UNDERFLOW_NONE },
24404- { "0x0p-10000000000000000000000000", UNDERFLOW_NONE },
24405- { "-0x0p-10000000000000000000000000", UNDERFLOW_NONE },
24406- { "0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
24407- { "-0x1p-10000000000000000000000000", UNDERFLOW_ALWAYS },
24408- { "0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
24409- { "-0x1.000000000000000000001p-1022", UNDERFLOW_NONE },
24410- { "0x1p-1075", UNDERFLOW_ALWAYS },
24411- { "-0x1p-1075", UNDERFLOW_ALWAYS },
24412- { "0x1p-1023", UNDERFLOW_NONE },
24413- { "-0x1p-1023", UNDERFLOW_NONE },
24414- { "0x1p-1074", UNDERFLOW_NONE },
24415- { "-0x1p-1074", UNDERFLOW_NONE },
24416- { "0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
24417- { "-0x1.ffffffffffffep-1023", UNDERFLOW_NONE },
24418- { "0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
24419- { "-0x1.fffffffffffffp-1023", UNDERFLOW_ALWAYS },
24420- { "0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_UPWARD },
24421- { "-0x1.fffffffffffff0001p-1023", UNDERFLOW_EXCEPT_DOWNWARD },
24422- { "0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_UPWARD },
24423- { "-0x1.fffffffffffff7fffp-1023", UNDERFLOW_EXCEPT_DOWNWARD },
24424- { "0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
24425- { "-0x1.fffffffffffff8p-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
24426- { "0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_DOWNWARD_ZERO },
24427- { "-0x1.fffffffffffffffffp-1023", UNDERFLOW_ONLY_UPWARD_ZERO },
24428+ TEST ("0x1p-126",
24429+ "0x1p-1022",
24430+ "0x1p-16382",
24431+ "0x1p-16383",
24432+ "0x1p-969",
24433+ "0x1p-16382",
24434+ UNDERFLOW_NONE),
24435+ TEST ("-0x1p-126",
24436+ "-0x1p-1022",
24437+ "-0x1p-16382",
24438+ "-0x1p-16383",
24439+ "-0x1p-969",
24440+ "-0x1p-16382",
24441+ UNDERFLOW_NONE),
24442+ TEST ("0x0p-10000000000000000000000000",
24443+ "0x0p-10000000000000000000000000",
24444+ "0x0p-10000000000000000000000000",
24445+ "0x0p-10000000000000000000000000",
24446+ "0x0p-10000000000000000000000000",
24447+ "0x0p-10000000000000000000000000",
24448+ UNDERFLOW_NONE),
24449+ TEST ("-0x0p-10000000000000000000000000",
24450+ "-0x0p-10000000000000000000000000",
24451+ "-0x0p-10000000000000000000000000",
24452+ "-0x0p-10000000000000000000000000",
24453+ "-0x0p-10000000000000000000000000",
24454+ "-0x0p-10000000000000000000000000",
24455+ UNDERFLOW_NONE),
24456+ TEST ("0x1p-10000000000000000000000000",
24457+ "0x1p-10000000000000000000000000",
24458+ "0x1p-10000000000000000000000000",
24459+ "0x1p-10000000000000000000000000",
24460+ "0x1p-10000000000000000000000000",
24461+ "0x1p-10000000000000000000000000",
24462+ UNDERFLOW_ALWAYS),
24463+ TEST ("-0x1p-10000000000000000000000000",
24464+ "-0x1p-10000000000000000000000000",
24465+ "-0x1p-10000000000000000000000000",
24466+ "-0x1p-10000000000000000000000000",
24467+ "-0x1p-10000000000000000000000000",
24468+ "-0x1p-10000000000000000000000000",
24469+ UNDERFLOW_ALWAYS),
24470+ TEST ("0x1.000000000000000000001p-126",
24471+ "0x1.000000000000000000001p-1022",
24472+ "0x1.000000000000000000001p-16382",
24473+ "0x1.000000000000000000001p-16383",
24474+ "0x1.000000000000000000001p-969",
24475+ "0x1.00000000000000000000000000000000000000001p-16382",
24476+ UNDERFLOW_NONE),
24477+ TEST ("-0x1.000000000000000000001p-126",
24478+ "-0x1.000000000000000000001p-1022",
24479+ "-0x1.000000000000000000001p-16382",
24480+ "-0x1.000000000000000000001p-16383",
24481+ "-0x1.000000000000000000001p-969",
24482+ "-0x1.00000000000000000000000000000000000000001p-16382",
24483+ UNDERFLOW_NONE),
24484+ TEST ("0x1p-150",
24485+ "0x1p-1075",
24486+ "0x1p-16446",
24487+ "0x1p-16447",
24488+ "0x1p-1075",
24489+ "0x1p-16495",
24490+ UNDERFLOW_ALWAYS),
24491+ TEST ("-0x1p-150",
24492+ "-0x1p-1075",
24493+ "-0x1p-16446",
24494+ "-0x1p-16447",
24495+ "-0x1p-1075",
24496+ "-0x1p-16495",
24497+ UNDERFLOW_ALWAYS),
24498+ TEST ("0x1p-127",
24499+ "0x1p-1023",
24500+ "0x1p-16383",
24501+ "0x1p-16384",
24502+ "0x1p-970",
24503+ "0x1p-16383",
24504+ UNDERFLOW_NONE),
24505+ TEST ("-0x1p-127",
24506+ "-0x1p-1023",
24507+ "-0x1p-16383",
24508+ "-0x1p-16384",
24509+ "-0x1p-970",
24510+ "-0x1p-16383",
24511+ UNDERFLOW_NONE),
24512+ TEST ("0x1p-149",
24513+ "0x1p-1074",
24514+ "0x1p-16445",
24515+ "0x1p-16446",
24516+ "0x1p-1074",
24517+ "0x1p-16494",
24518+ UNDERFLOW_NONE),
24519+ TEST ("-0x1p-149",
24520+ "-0x1p-1074",
24521+ "-0x1p-16445",
24522+ "-0x1p-16446",
24523+ "-0x1p-1074",
24524+ "-0x1p-16494",
24525+ UNDERFLOW_NONE),
24526+ TEST ("0x1.fffffcp-127",
24527+ "0x1.ffffffffffffep-1023",
24528+ "0x1.fffffffffffffffcp-16383",
24529+ "0x1.fffffffffffffffcp-16384",
24530+ "0x1.ffffffffffffffffffffffffffp-970",
24531+ "0x1.fffffffffffffffffffffffffffep-16383",
24532+ UNDERFLOW_NONE),
24533+ TEST ("-0x1.fffffcp-127",
24534+ "-0x1.ffffffffffffep-1023",
24535+ "-0x1.fffffffffffffffcp-16383",
24536+ "-0x1.fffffffffffffffcp-16384",
24537+ "-0x1.ffffffffffffffffffffffffffp-970",
24538+ "-0x1.fffffffffffffffffffffffffffep-16383",
24539+ UNDERFLOW_NONE),
24540+ TEST ("0x1.fffffep-127",
24541+ "0x1.fffffffffffffp-1023",
24542+ "0x1.fffffffffffffffep-16383",
24543+ "0x1.fffffffffffffffep-16384",
24544+ "0x1.ffffffffffffffffffffffffff8p-970",
24545+ "0x1.ffffffffffffffffffffffffffffp-16383",
24546+ UNDERFLOW_ALWAYS),
24547+ TEST ("-0x1.fffffep-127",
24548+ "-0x1.fffffffffffffp-1023",
24549+ "-0x1.fffffffffffffffep-16383",
24550+ "-0x1.fffffffffffffffep-16384",
24551+ "-0x1.ffffffffffffffffffffffffff8p-970",
24552+ "-0x1.ffffffffffffffffffffffffffffp-16383",
24553+ UNDERFLOW_ALWAYS),
24554+ TEST ("0x1.fffffe0001p-127",
24555+ "0x1.fffffffffffff0001p-1023",
24556+ "0x1.fffffffffffffffe0001p-16383",
24557+ "0x1.fffffffffffffffe0001p-16384",
24558+ "0x1.ffffffffffffffffffffffffff80001p-970",
24559+ "0x1.ffffffffffffffffffffffffffff0001p-16383",
24560+ UNDERFLOW_EXCEPT_UPWARD),
24561+ TEST ("-0x1.fffffe0001p-127",
24562+ "-0x1.fffffffffffff0001p-1023",
24563+ "-0x1.fffffffffffffffe0001p-16383",
24564+ "-0x1.fffffffffffffffe0001p-16384",
24565+ "-0x1.ffffffffffffffffffffffffff80001p-970",
24566+ "-0x1.ffffffffffffffffffffffffffff0001p-16383",
24567+ UNDERFLOW_EXCEPT_DOWNWARD),
24568+ TEST ("0x1.fffffeffffp-127",
24569+ "0x1.fffffffffffff7fffp-1023",
24570+ "0x1.fffffffffffffffeffffp-16383",
24571+ "0x1.fffffffffffffffeffffp-16384",
24572+ "0x1.ffffffffffffffffffffffffffbffffp-970",
24573+ "0x1.ffffffffffffffffffffffffffff7fffp-16383",
24574+ UNDERFLOW_EXCEPT_UPWARD),
24575+ TEST ("-0x1.fffffeffffp-127",
24576+ "-0x1.fffffffffffff7fffp-1023",
24577+ "-0x1.fffffffffffffffeffffp-16383",
24578+ "-0x1.fffffffffffffffeffffp-16384",
24579+ "-0x1.ffffffffffffffffffffffffffbffffp-970",
24580+ "-0x1.ffffffffffffffffffffffffffff7fffp-16383",
24581+ UNDERFLOW_EXCEPT_DOWNWARD),
24582+ TEST ("0x1.ffffffp-127",
24583+ "0x1.fffffffffffff8p-1023",
24584+ "0x1.ffffffffffffffffp-16383",
24585+ "0x1.ffffffffffffffffp-16384",
24586+ "0x1.ffffffffffffffffffffffffffcp-970",
24587+ "0x1.ffffffffffffffffffffffffffff8p-16383",
24588+ UNDERFLOW_ONLY_DOWNWARD_ZERO),
24589+ TEST ("-0x1.ffffffp-127",
24590+ "-0x1.fffffffffffff8p-1023",
24591+ "-0x1.ffffffffffffffffp-16383",
24592+ "-0x1.ffffffffffffffffp-16384",
24593+ "-0x1.ffffffffffffffffffffffffffcp-970",
24594+ "-0x1.ffffffffffffffffffffffffffff8p-16383",
24595+ UNDERFLOW_ONLY_UPWARD_ZERO),
24596+ TEST ("0x1.ffffffffffp-127",
24597+ "0x1.fffffffffffffffffp-1023",
24598+ "0x1.ffffffffffffffffffffp-16383",
24599+ "0x1.ffffffffffffffffffffp-16384",
24600+ "0x1.ffffffffffffffffffffffffffffffp-970",
24601+ "0x1.ffffffffffffffffffffffffffffffffp-16383",
24602+ UNDERFLOW_ONLY_DOWNWARD_ZERO),
24603+ TEST ("-0x1.ffffffffffp-127",
24604+ "-0x1.fffffffffffffffffp-1023",
24605+ "-0x1.ffffffffffffffffffffp-16383",
24606+ "-0x1.ffffffffffffffffffffp-16384",
24607+ "-0x1.ffffffffffffffffffffffffffffffp-970",
24608+ "-0x1.ffffffffffffffffffffffffffffffffp-16383",
24609+ UNDERFLOW_ONLY_UPWARD_ZERO),
24610 };
24611
24612 /* Return whether to expect underflow from a particular testcase, in a
24613@@ -133,39 +347,62 @@ static bool support_underflow_exception = false;
24614 volatile double d = DBL_MIN;
24615 volatile double dd;
24616
24617-static int
24618-test_in_one_mode (const char *s, enum underflow_case c, int rm,
24619- const char *mode_name)
24620+static bool
24621+test_got_fe_underflow (void)
24622 {
24623- int result = 0;
24624- feclearexcept (FE_ALL_EXCEPT);
24625- errno = 0;
24626- double d = strtod (s, NULL);
24627- int got_errno = errno;
24628 #ifdef FE_UNDERFLOW
24629- bool got_fe_underflow = fetestexcept (FE_UNDERFLOW) != 0;
24630+ return fetestexcept (FE_UNDERFLOW) != 0;
24631 #else
24632- bool got_fe_underflow = false;
24633+ return false;
24634 #endif
24635- printf ("strtod (%s) (%s) returned %a, errno = %d, %sunderflow exception\n",
24636- s, mode_name, d, got_errno, got_fe_underflow ? "" : "no ");
24637- bool this_expect_underflow = expect_underflow (c, rm);
24638- if (got_errno != 0 && got_errno != ERANGE)
24639- {
24640- puts ("FAIL: errno neither 0 nor ERANGE");
24641- result = 1;
24642- }
24643- else if (this_expect_underflow != (errno == ERANGE))
24644- {
24645- puts ("FAIL: underflow from errno differs from expectations");
24646- result = 1;
24647- }
24648- if (support_underflow_exception && got_fe_underflow != this_expect_underflow)
24649- {
24650- puts ("FAIL: underflow from exceptions differs from expectations");
24651- result = 1;
24652- }
24653- return result;
24654+}
24655+
24656+#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \
24657+static int \
24658+test_strto ## FSUF (int i, int rm, const char *mode_name) \
24659+{ \
24660+ const char *s = tests[i].s_ ## FSUF; \
24661+ enum underflow_case c = tests[i].c; \
24662+ int result = 0; \
24663+ feclearexcept (FE_ALL_EXCEPT); \
24664+ errno = 0; \
24665+ FTYPE d = strto ## FSUF (s, NULL); \
24666+ int got_errno = errno; \
24667+ bool got_fe_underflow = test_got_fe_underflow (); \
24668+ char buf[FSTRLENMAX]; \
24669+ FTOSTR (buf, sizeof (buf), "%a", d); \
24670+ printf ("strto" #FSUF \
24671+ " (%s) (%s) returned %s, errno = %d, " \
24672+ "%sunderflow exception\n", \
24673+ s, mode_name, buf, got_errno, \
24674+ got_fe_underflow ? "" : "no "); \
24675+ bool this_expect_underflow = expect_underflow (c, rm); \
24676+ if (got_errno != 0 && got_errno != ERANGE) \
24677+ { \
24678+ puts ("FAIL: errno neither 0 nor ERANGE"); \
24679+ result = 1; \
24680+ } \
24681+ else if (this_expect_underflow != (errno == ERANGE)) \
24682+ { \
24683+ puts ("FAIL: underflow from errno differs from expectations"); \
24684+ result = 1; \
24685+ } \
24686+ if (support_underflow_exception \
24687+ && got_fe_underflow != this_expect_underflow) \
24688+ { \
24689+ puts ("FAIL: underflow from exceptions " \
24690+ "differs from expectations"); \
24691+ result = 1; \
24692+ } \
24693+ return result; \
24694+}
24695+
24696+GEN_TEST_STRTOD_FOREACH (TEST_STRTOD)
24697+
24698+static int
24699+test_in_one_mode (size_t i, int rm, const char *mode_name)
24700+{
24701+ return STRTOD_TEST_FOREACH (test_strto, i, rm, mode_name);
24702 }
24703
24704 static int
24705@@ -191,12 +428,12 @@ do_test (void)
24706 #endif
24707 for (size_t i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
24708 {
24709- result |= test_in_one_mode (tests[i].s, tests[i].c, fe_tonearest,
24710+ result |= test_in_one_mode (i, fe_tonearest,
24711 "default rounding mode");
24712 #ifdef FE_DOWNWARD
24713 if (!fesetround (FE_DOWNWARD))
24714 {
24715- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_DOWNWARD,
24716+ result |= test_in_one_mode (i, FE_DOWNWARD,
24717 "FE_DOWNWARD");
24718 fesetround (save_round_mode);
24719 }
24720@@ -204,7 +441,7 @@ do_test (void)
24721 #ifdef FE_TOWARDZERO
24722 if (!fesetround (FE_TOWARDZERO))
24723 {
24724- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_TOWARDZERO,
24725+ result |= test_in_one_mode (i, FE_TOWARDZERO,
24726 "FE_TOWARDZERO");
24727 fesetround (save_round_mode);
24728 }
24729@@ -212,7 +449,7 @@ do_test (void)
24730 #ifdef FE_UPWARD
24731 if (!fesetround (FE_UPWARD))
24732 {
24733- result |= test_in_one_mode (tests[i].s, tests[i].c, FE_UPWARD,
24734+ result |= test_in_one_mode (i, FE_UPWARD,
24735 "FE_UPWARD");
24736 fesetround (save_round_mode);
24737 }
24738
24739commit 3a34851103d554b2c9b269ecae111648f9d7bb6d
24740Author: Florian Weimer <fweimer@redhat.com>
24741Date: Mon Oct 28 14:45:30 2024 +0100
24742
24743 elf: Change ldconfig auxcache magic number (bug 32231)
24744
24745 In commit c628c2296392ed3bf2cb8d8470668e64fe53389f (elf: Remove
24746 ldconfig kernel version check), the layout of auxcache entries
24747 changed because the osversion field was removed from
24748 struct aux_cache_file_entry. However, AUX_CACHEMAGIC was not
24749 changed, so existing files are still used, potentially leading
24750 to unintended ldconfig behavior. This commit changes AUX_CACHEMAGIC,
24751 so that the file is regenerated.
24752
24753 Reported-by: DJ Delorie <dj@redhat.com>
24754 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
24755 (cherry picked from commit 0a536f6e2f76e3ef581b3fd9af1e5cf4ddc7a5a2)
24756
24757diff --git a/NEWS b/NEWS
24758index 9033335db1..928c516bec 100644
24759--- a/NEWS
24760+++ b/NEWS
24761@@ -17,6 +17,7 @@ The following bugs are resolved with this release:
24762 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces
24763 [32052] Name space violation in fortify wrappers
24764 [32137] libio: Attempt wide backup free only for non-legacy code
24765+ [32231] elf: Change ldconfig auxcache magic number
24766
24767 Version 2.40
24768
24769diff --git a/elf/cache.c b/elf/cache.c
24770index 8a618e11fa..62d681df42 100644
24771--- a/elf/cache.c
24772+++ b/elf/cache.c
24773@@ -820,7 +820,7 @@ struct aux_cache_entry
24774 struct aux_cache_entry *next;
24775 };
24776
24777-#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-1.0"
24778+#define AUX_CACHEMAGIC "glibc-ld.so.auxcache-2.0"
24779
24780 struct aux_cache_file_entry
24781 {
24782
24783commit 234458024300f0b4b430785999f33eddf059af6a
24784Author: Michael Karcher <Michael.Karcher@fu-berlin.de>
24785Date: Sun Jul 28 15:30:57 2024 +0200
24786
24787 Mitigation for "clone on sparc might fail with -EFAULT for no valid reason" (bz 31394)
24788
24789 It seems the kernel can not deal with uncommitted stack space in the area intended
24790 for the register window when executing the clone() system call. So create a nested
24791 frame (proxy for the kernel frame) and flush it from the processor to memory to
24792 force committing pages to the stack before invoking the system call.
24793
24794 Bug: https://www.mail-archive.com/debian-glibc@lists.debian.org/msg62592.html
24795 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31394
24796 See-also: https://lore.kernel.org/sparclinux/62f9be9d-a086-4134-9a9f-5df8822708af@mkarcher.dialup.fu-berlin.de/
24797 Signed-off-by: Michael Karcher <sourceware-bugzilla@mkarcher.dialup.fu-berlin.de>
24798 Reviewed-by: DJ Delorie <dj@redhat.com>
24799 (cherry picked from commit faeaa3bc9f76030b9882ccfdee232fc0ca6dcb06)
24800
24801diff --git a/NEWS b/NEWS
24802index 928c516bec..dc815fb6d3 100644
24803--- a/NEWS
24804+++ b/NEWS
24805@@ -11,6 +11,7 @@ The following bugs are resolved with this release:
24806
24807 [27821] ungetc: Fix backup buffer leak on program exit
24808 [30081] resolv: Do not wait for non-existing second DNS response after error
24809+ [31394] clone on sparc might fail with -EFAULT for no valid reason
24810 [31717] elf: Avoid re-initializing already allocated TLS in dlopen
24811 [31890] resolv: Allow short error responses to match any DNS query
24812 [31968] mremap implementation in C does not handle arguments correctly
24813diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
24814index 748d25fcfe..c9cf9bb055 100644
24815--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
24816+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
24817@@ -28,6 +28,9 @@
24818 .text
24819 ENTRY (__clone)
24820 save %sp,-96,%sp
24821+ save %sp,-96,%sp
24822+ flushw
24823+ restore
24824 cfi_def_cfa_register(%fp)
24825 cfi_window_save
24826 cfi_register(%o7, %i7)
24827diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
24828index e5ff2cf1a0..370d51fda2 100644
24829--- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
24830+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
24831@@ -32,6 +32,9 @@
24832
24833 ENTRY (__clone)
24834 save %sp, -192, %sp
24835+ save %sp, -192, %sp
24836+ flushw
24837+ restore
24838 cfi_def_cfa_register(%fp)
24839 cfi_window_save
24840 cfi_register(%o7, %i7)
24841
24842commit efb710034e4c5e734d100cc4ef1b1e27d4315825
24843Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
24844Date: Mon Sep 2 16:58:51 2024 -0300
24845
24846 linux: sparc: Fix clone for LEON/sparcv8 (BZ 31394)
24847
24848 The sparc clone mitigation (faeaa3bc9f76030) added the use of
24849 flushw, which is not support by LEON/sparcv8. As discussed on
24850 the libc-alpha, 'ta 3' is a working alternative [1].
24851
24852 [1] https://sourceware.org/pipermail/libc-alpha/2024-August/158905.html
24853
24854 Checked with a build for sparcv8-linux-gnu targetting leon.
24855
24856 Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
24857 (cherry picked from commit 5e8cfc5d625e6dd000a0371d21d792836ea7951a)
24858
24859diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
24860index c9cf9bb055..c84244f56b 100644
24861--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
24862+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
24863@@ -29,7 +29,11 @@
24864 ENTRY (__clone)
24865 save %sp,-96,%sp
24866 save %sp,-96,%sp
24867+#ifdef __sparcv9
24868 flushw
24869+#else
24870+ ta 3
24871+#endif
24872 restore
24873 cfi_def_cfa_register(%fp)
24874 cfi_window_save
24875
24876commit 626c048f32a979f77662bdcb1cca477c11d3f9c1
24877Author: Aurelien Jarno <aurelien@aurel32.net>
24878Date: Sun Nov 10 10:50:34 2024 +0100
24879
24880 elf: handle addition overflow in _dl_find_object_update_1 [BZ #32245]
24881
24882 The remaining_to_add variable can be 0 if (current_used + count) wraps,
24883 This is caught by GCC 14+ on hppa, which determines from there that
24884 target_seg could be be NULL when remaining_to_add is zero, which in
24885 turns causes a -Wstringop-overflow warning:
24886
24887 In file included from ../include/atomic.h:49,
24888 from dl-find_object.c:20:
24889 In function '_dlfo_update_init_seg',
24890 inlined from '_dl_find_object_update_1' at dl-find_object.c:689:30,
24891 inlined from '_dl_find_object_update' at dl-find_object.c:805:13:
24892 ../sysdeps/unix/sysv/linux/hppa/atomic-machine.h:44:4: error: '__atomic_store_4' writing 4 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=]
24893 44 | __atomic_store_n ((mem), (val), __ATOMIC_RELAXED); \
24894 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24895 dl-find_object.c:644:3: note: in expansion of macro 'atomic_store_relaxed'
24896 644 | atomic_store_relaxed (&seg->size, new_seg_size);
24897 | ^~~~~~~~~~~~~~~~~~~~
24898 In function '_dl_find_object_update':
24899 cc1: note: destination object is likely at address zero
24900
24901 In practice, this is not possible as it represent counts of link maps.
24902 Link maps have sizes larger than 1 byte, so the sum of any two link map
24903 counts will always fit within a size_t without wrapping around.
24904
24905 This patch therefore adds a check on remaining_to_add == 0 and tell GCC
24906 that this can not happen using __builtin_unreachable.
24907
24908 Thanks to Andreas Schwab for the investigation.
24909
24910 Closes: BZ #32245
24911 Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
24912 Tested-by: John David Anglin <dave.anglin@bell.net>
24913 Reviewed-by: Florian Weimer <fweimer@redhat.com>
24914 (cherry picked from commit 6c915c73d08028987232f6dc718f218c61113240)
24915
24916diff --git a/NEWS b/NEWS
24917index dc815fb6d3..bd0b3bd66a 100644
24918--- a/NEWS
24919+++ b/NEWS
24920@@ -19,6 +19,7 @@ The following bugs are resolved with this release:
24921 [32052] Name space violation in fortify wrappers
24922 [32137] libio: Attempt wide backup free only for non-legacy code
24923 [32231] elf: Change ldconfig auxcache magic number
24924+ [32245] glibc -Wstringop-overflow= build failure on hppa
24925
24926 Version 2.40
24927
24928diff --git a/elf/dl-find_object.c b/elf/dl-find_object.c
24929index 449302eda3..ae18b438d3 100644
24930--- a/elf/dl-find_object.c
24931+++ b/elf/dl-find_object.c
24932@@ -662,6 +662,14 @@ _dl_find_object_update_1 (struct link_map **loaded, size_t count)
24933 = _dlfo_loaded_mappings[!active_idx];
24934 size_t remaining_to_add = current_used + count;
24935
24936+ /* remaining_to_add can be 0 if (current_used + count) wraps, but in practice
24937+ this is not possible as it represent counts of link maps. Link maps have
24938+ sizes larger than 1 byte, so the sum of any two link map counts will
24939+ always fit within a size_t without wrapping around. This check ensures
24940+ that target_seg is not erroneously considered potentially NULL by GCC. */
24941+ if (remaining_to_add == 0)
24942+ __builtin_unreachable ();
24943+
24944 /* Ensure that the new segment chain has enough space. */
24945 {
24946 size_t new_allocated
24947
24948commit 9b9545ba27613fa41efdfa7965b6fc580bf1b919
24949Author: Michael Jeanson <mjeanson@efficios.com>
24950Date: Thu Nov 7 22:23:49 2024 +0100
24951
24952 nptl: initialize rseq area prior to registration
24953
24954 Per the rseq syscall documentation, 3 fields are required to be
24955 initialized by userspace prior to registration, they are 'cpu_id',
24956 'rseq_cs' and 'flags'. Since we have no guarantee that 'struct pthread'
24957 is cleared on all architectures, explicitly set those 3 fields prior to
24958 registration.
24959
24960 Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
24961 Reviewed-by: Florian Weimer <fweimer@redhat.com>
24962 (cherry picked from commit 97f60abd25628425971f07e9b0e7f8eec0741235)
24963
24964diff --git a/nptl/descr.h b/nptl/descr.h
24965index 8cef95810c..c4bdd7757a 100644
24966--- a/nptl/descr.h
24967+++ b/nptl/descr.h
24968@@ -414,6 +414,8 @@ struct pthread
24969 {
24970 uint32_t cpu_id_start;
24971 uint32_t cpu_id;
24972+ uint64_t rseq_cs;
24973+ uint32_t flags;
24974 };
24975 char pad[32]; /* Original rseq area size. */
24976 } rseq_area __attribute__ ((aligned (32)));
24977diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h
24978index 7ea935b4ad..37a8f630b6 100644
24979--- a/sysdeps/unix/sysv/linux/rseq-internal.h
24980+++ b/sysdeps/unix/sysv/linux/rseq-internal.h
24981@@ -51,11 +51,21 @@ rseq_register_current_thread (struct pthread *self, bool do_rseq)
24982 /* The initial implementation used only 20 bytes out of 32,
24983 but still expected size 32. */
24984 size = RSEQ_AREA_SIZE_INITIAL;
24985+
24986+ /* Initialize the rseq fields that are read by the kernel on
24987+ registration, there is no guarantee that struct pthread is
24988+ cleared on all architectures. */
24989+ THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_UNINITIALIZED);
24990+ THREAD_SETMEM (self, rseq_area.rseq_cs, 0);
24991+ THREAD_SETMEM (self, rseq_area.flags, 0);
24992+
24993 int ret = INTERNAL_SYSCALL_CALL (rseq, &self->rseq_area,
24994 size, 0, RSEQ_SIG);
24995 if (!INTERNAL_SYSCALL_ERROR_P (ret))
24996 return true;
24997 }
24998+ /* When rseq is disabled by tunables or the registration fails, inform
24999+ userspace by setting 'cpu_id' to RSEQ_CPU_ID_REGISTRATION_FAILED. */
25000 THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_REGISTRATION_FAILED);
25001 return false;
25002 }
25003
25004commit 091dd12831792cef16eee24fe240c73a25b47a1d
25005Author: Michael Jeanson <mjeanson@efficios.com>
25006Date: Wed Nov 20 14:15:42 2024 -0500
25007
25008 nptl: initialize cpu_id_start prior to rseq registration
25009
25010 When adding explicit initialization of rseq fields prior to
25011 registration, I glossed over the fact that 'cpu_id_start' is also
25012 documented as initialized by user-space.
25013
25014 While current kernels don't validate the content of this field on
25015 registration, future ones could.
25016
25017 Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
25018 Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
25019 (cherry picked from commit d9f40387d3305d97e30a8cf8724218c42a63680a)
25020
25021diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h
25022index 37a8f630b6..ef3eab1fef 100644
25023--- a/sysdeps/unix/sysv/linux/rseq-internal.h
25024+++ b/sysdeps/unix/sysv/linux/rseq-internal.h
25025@@ -56,6 +56,7 @@ rseq_register_current_thread (struct pthread *self, bool do_rseq)
25026 registration, there is no guarantee that struct pthread is
25027 cleared on all architectures. */
25028 THREAD_SETMEM (self, rseq_area.cpu_id, RSEQ_CPU_ID_UNINITIALIZED);
25029+ THREAD_SETMEM (self, rseq_area.cpu_id_start, 0);
25030 THREAD_SETMEM (self, rseq_area.rseq_cs, 0);
25031 THREAD_SETMEM (self, rseq_area.flags, 0);
25032
25033
25034commit c6cdab1e01bc11bc4036dc5b1be6086f6259c123
25035Author: Sam James <sam@gentoo.org>
25036Date: Mon Dec 9 23:11:25 2024 +0000
25037
25038 malloc: add indirection for malloc(-like) functions in tests [BZ #32366]
25039
25040 GCC 15 introduces allocation dead code removal (DCE) for PR117370 in
25041 r15-5255-g7828dc070510f8. This breaks various glibc tests which want
25042 to assert various properties of the allocator without doing anything
25043 obviously useful with the allocated memory.
25044
25045 Alexander Monakov rightly pointed out that we can and should do better
25046 than passing -fno-malloc-dce to paper over the problem. Not least because
25047 GCC 14 already does such DCE where there's no testing of malloc's return
25048 value against NULL, and LLVM has such optimisations too.
25049
25050 Handle this by providing malloc (and friends) wrappers with a volatile
25051 function pointer to obscure that we're calling malloc (et. al) from the
25052 compiler.
25053
25054 Reviewed-by: Paul Eggert <eggert@cs.ucla.edu>
25055 (cherry picked from commit a9944a52c967ce76a5894c30d0274b824df43c7a)
25056
25057diff --git a/malloc/tst-aligned-alloc.c b/malloc/tst-aligned-alloc.c
25058index 91167d1392..b0f05a8fec 100644
25059--- a/malloc/tst-aligned-alloc.c
25060+++ b/malloc/tst-aligned-alloc.c
25061@@ -25,6 +25,8 @@
25062 #include <libc-diag.h>
25063 #include <support/check.h>
25064
25065+#include "tst-malloc-aux.h"
25066+
25067 static int
25068 do_test (void)
25069 {
25070diff --git a/malloc/tst-compathooks-off.c b/malloc/tst-compathooks-off.c
25071index d0106f3fb7..4cce6e5a80 100644
25072--- a/malloc/tst-compathooks-off.c
25073+++ b/malloc/tst-compathooks-off.c
25074@@ -25,6 +25,8 @@
25075 #include <support/check.h>
25076 #include <support/support.h>
25077
25078+#include "tst-malloc-aux.h"
25079+
25080 extern void (*volatile __free_hook) (void *, const void *);
25081 extern void *(*volatile __malloc_hook)(size_t, const void *);
25082 extern void *(*volatile __realloc_hook)(void *, size_t, const void *);
25083diff --git a/malloc/tst-malloc-aux.h b/malloc/tst-malloc-aux.h
25084new file mode 100644
25085index 0000000000..54908b4a24
25086--- /dev/null
25087+++ b/malloc/tst-malloc-aux.h
25088@@ -0,0 +1,41 @@
25089+/* Wrappers for malloc-like functions to allow testing the implementation
25090+ without optimization.
25091+ Copyright (C) 2024 Free Software Foundation, Inc.
25092+ This file is part of the GNU C Library.
25093+
25094+ The GNU C Library is free software; you can redistribute it and/or
25095+ modify it under the terms of the GNU Lesser General Public License as
25096+ published by the Free Software Foundation; either version 2.1 of the
25097+ License, or (at your option) any later version.
25098+
25099+ The GNU C Library is distributed in the hope that it will be useful,
25100+ but WITHOUT ANY WARRANTY; without even the implied warranty of
25101+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25102+ Lesser General Public License for more details.
25103+
25104+ You should have received a copy of the GNU Lesser General Public
25105+ License along with the GNU C Library; see the file COPYING.LIB. If
25106+ not, see <https://www.gnu.org/licenses/>. */
25107+
25108+#ifndef TST_MALLOC_AUX_H
25109+#define TST_MALLOC_AUX_H
25110+
25111+#include <stddef.h>
25112+#include <stdlib.h>
25113+
25114+static void *(*volatile aligned_alloc_indirect)(size_t, size_t) = aligned_alloc;
25115+static void *(*volatile calloc_indirect)(size_t, size_t) = calloc;
25116+static void *(*volatile malloc_indirect)(size_t) = malloc;
25117+static void *(*volatile realloc_indirect)(void*, size_t) = realloc;
25118+
25119+#undef aligned_alloc
25120+#undef calloc
25121+#undef malloc
25122+#undef realloc
25123+
25124+#define aligned_alloc aligned_alloc_indirect
25125+#define calloc calloc_indirect
25126+#define malloc malloc_indirect
25127+#define realloc realloc_indirect
25128+
25129+#endif /* TST_MALLOC_AUX_H */
25130diff --git a/malloc/tst-malloc-check.c b/malloc/tst-malloc-check.c
25131index fde8863ad7..cc88bff3b3 100644
25132--- a/malloc/tst-malloc-check.c
25133+++ b/malloc/tst-malloc-check.c
25134@@ -20,6 +20,8 @@
25135 #include <stdlib.h>
25136 #include <libc-diag.h>
25137
25138+#include "tst-malloc-aux.h"
25139+
25140 static int errors = 0;
25141
25142 static void
25143diff --git a/malloc/tst-malloc-too-large.c b/malloc/tst-malloc-too-large.c
25144index 8e9e0d5fa2..2b91377e54 100644
25145--- a/malloc/tst-malloc-too-large.c
25146+++ b/malloc/tst-malloc-too-large.c
25147@@ -43,6 +43,7 @@
25148 #include <unistd.h>
25149 #include <sys/param.h>
25150
25151+#include "tst-malloc-aux.h"
25152
25153 /* This function prepares for each 'too-large memory allocation' test by
25154 performing a small successful malloc/free and resetting errno prior to
25155diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c
25156index f7a6e4654c..68af399022 100644
25157--- a/malloc/tst-malloc.c
25158+++ b/malloc/tst-malloc.c
25159@@ -22,6 +22,8 @@
25160 #include <libc-diag.h>
25161 #include <time.h>
25162
25163+#include "tst-malloc-aux.h"
25164+
25165 static int errors = 0;
25166
25167 static void
25168diff --git a/malloc/tst-realloc.c b/malloc/tst-realloc.c
25169index f50499ecb1..74a28fb45e 100644
25170--- a/malloc/tst-realloc.c
25171+++ b/malloc/tst-realloc.c
25172@@ -23,6 +23,8 @@
25173 #include <libc-diag.h>
25174 #include <support/check.h>
25175
25176+#include "tst-malloc-aux.h"
25177+
25178 static int
25179 do_test (void)
25180 {
25181diff --git a/support/support.h b/support/support.h
25182index ba21ec9b5a..1a77f79793 100644
25183--- a/support/support.h
25184+++ b/support/support.h
25185@@ -113,7 +113,7 @@ void *xposix_memalign (size_t alignment, size_t n)
25186 __attribute_malloc__ __attribute_alloc_align__ ((1))
25187 __attribute_alloc_size__ ((2)) __attr_dealloc_free __returns_nonnull;
25188 char *xasprintf (const char *format, ...)
25189- __attribute__ ((format (printf, 1, 2), malloc)) __attr_dealloc_free
25190+ __attribute__ ((format (printf, 1, 2), __malloc__)) __attr_dealloc_free
25191 __returns_nonnull;
25192 char *xstrdup (const char *) __attr_dealloc_free __returns_nonnull;
25193 char *xstrndup (const char *, size_t) __attr_dealloc_free __returns_nonnull;
25194diff --git a/test-skeleton.c b/test-skeleton.c
25195index ae185a4f28..690f26e7cf 100644
25196--- a/test-skeleton.c
25197+++ b/test-skeleton.c
25198@@ -27,7 +27,6 @@
25199 #include <errno.h>
25200 #include <fcntl.h>
25201 #include <getopt.h>
25202-#include <malloc.h>
25203 #include <paths.h>
25204 #include <search.h>
25205 #include <signal.h>
25206
25207commit 846e64257e5fc9b5b723c2eec2b7155ab5944d1f
25208Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
25209Date: Fri Sep 13 11:10:05 2024 -0300
25210
25211 support: Make support_process_state_wait return the found state
25212
25213 So caller can check which state was found if multiple ones are
25214 asked.
25215
25216 Checked on x86_64-linux-gnu.
25217
25218 Reviewed-by: Florian Weimer <fweimer@redhat.com>
25219 (cherry picked from commit 38316352e0f742f3a2b5816a61a4b603cb5573f8)
25220 (cherry picked from commit 2e38c5a090b3a54040b6e508d42e5a76e492c6e8)
25221
25222diff --git a/support/process_state.h b/support/process_state.h
25223index 1cf902e91b..9541d8c343 100644
25224--- a/support/process_state.h
25225+++ b/support/process_state.h
25226@@ -31,13 +31,16 @@ enum support_process_state
25227 support_process_state_dead = 0x20, /* X (dead). */
25228 support_process_state_zombie = 0x40, /* Z (zombie). */
25229 support_process_state_parked = 0x80, /* P (parked). */
25230+ support_process_state_invalid = 0x100 /* Invalid state. */
25231 };
25232
25233 /* Wait for process PID to reach state STATE. It can be a combination of
25234 multiple possible states ('process_state_running | process_state_sleeping')
25235 where the function return when any of these state are observed.
25236 For an invalid state not represented by SUPPORT_PROCESS_STATE, it fallbacks
25237- to a 2 second sleep. */
25238-void support_process_state_wait (pid_t pid, enum support_process_state state);
25239+ to a 2 second sleep.
25240+ Return the found process state. */
25241+enum support_process_state
25242+support_process_state_wait (pid_t pid, enum support_process_state state);
25243
25244 #endif
25245diff --git a/support/support_process_state.c b/support/support_process_state.c
25246index 062335234f..ae8e0a531c 100644
25247--- a/support/support_process_state.c
25248+++ b/support/support_process_state.c
25249@@ -27,7 +27,7 @@
25250 #include <support/xstdio.h>
25251 #include <support/check.h>
25252
25253-void
25254+enum support_process_state
25255 support_process_state_wait (pid_t pid, enum support_process_state state)
25256 {
25257 #ifdef __linux__
25258@@ -75,7 +75,7 @@ support_process_state_wait (pid_t pid, enum support_process_state state)
25259 {
25260 free (line);
25261 xfclose (fstatus);
25262- return;
25263+ return process_states[i].s;
25264 }
25265
25266 rewind (fstatus);
25267@@ -90,4 +90,6 @@ support_process_state_wait (pid_t pid, enum support_process_state state)
25268 /* Fallback to nanosleep if an invalid state is found. */
25269 #endif
25270 nanosleep (&(struct timespec) { 1, 0 }, NULL);
25271+
25272+ return support_process_state_invalid;
25273 }
25274diff --git a/support/tst-support-process_state.c b/support/tst-support-process_state.c
25275index d73269320f..4a88eae3a7 100644
25276--- a/support/tst-support-process_state.c
25277+++ b/support/tst-support-process_state.c
25278@@ -68,28 +68,39 @@ do_test (void)
25279 if (test_verbose)
25280 printf ("info: waiting pid %d, state_stopped/state_tracing_stop\n",
25281 (int) pid);
25282- support_process_state_wait (pid, stop_state);
25283+ {
25284+ enum support_process_state state =
25285+ support_process_state_wait (pid, stop_state);
25286+ TEST_VERIFY (state == support_process_state_stopped
25287+ || state == support_process_state_tracing_stop);
25288+ }
25289
25290 if (kill (pid, SIGCONT) != 0)
25291 FAIL_RET ("kill (%d, SIGCONT): %m\n", pid);
25292
25293 if (test_verbose)
25294 printf ("info: waiting pid %d, state_sleeping\n", (int) pid);
25295- support_process_state_wait (pid, support_process_state_sleeping);
25296+ TEST_COMPARE (support_process_state_wait (pid,
25297+ support_process_state_sleeping),
25298+ support_process_state_sleeping);
25299
25300 if (kill (pid, SIGUSR1) != 0)
25301 FAIL_RET ("kill (%d, SIGUSR1): %m\n", pid);
25302
25303 if (test_verbose)
25304 printf ("info: waiting pid %d, state_running\n", (int) pid);
25305- support_process_state_wait (pid, support_process_state_running);
25306+ TEST_COMPARE (support_process_state_wait (pid,
25307+ support_process_state_running),
25308+ support_process_state_running);
25309
25310 if (kill (pid, SIGKILL) != 0)
25311 FAIL_RET ("kill (%d, SIGKILL): %m\n", pid);
25312
25313 if (test_verbose)
25314 printf ("info: waiting pid %d, state_zombie\n", (int) pid);
25315- support_process_state_wait (pid, support_process_state_zombie);
25316+ TEST_COMPARE (support_process_state_wait (pid,
25317+ support_process_state_zombie),
25318+ support_process_state_zombie);;
25319
25320 siginfo_t info;
25321 int r = waitid (P_PID, pid, &info, WEXITED);
25322
25323commit 11d9f49cebe64939f50e16a59c9ebefb80a294ab
25324Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
25325Date: Fri Sep 13 11:11:56 2024 -0300
25326
25327 sparc: Fix restartable syscalls (BZ 32173)
25328
25329 The commit 'sparc: Use Linux kABI for syscall return'
25330 (86c5d2cf0ce046279baddc7faa27da71f1a89fde) did not take into account
25331 a subtle sparc syscall kABI constraint. For syscalls that might block
25332 indefinitely, on an interrupt (like SIGCONT) the kernel will set the
25333 instruction pointer to just before the syscall:
25334
25335 arch/sparc/kernel/signal_64.c
25336 476 static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
25337 477 {
25338 [...]
25339 525 if (restart_syscall) {
25340 526 switch (regs->u_regs[UREG_I0]) {
25341 527 case ERESTARTNOHAND:
25342 528 case ERESTARTSYS:
25343 529 case ERESTARTNOINTR:
25344 530 /* replay the system call when we are done */
25345 531 regs->u_regs[UREG_I0] = orig_i0;
25346 532 regs->tpc -= 4;
25347 533 regs->tnpc -= 4;
25348 534 pt_regs_clear_syscall(regs);
25349 535 fallthrough;
25350 536 case ERESTART_RESTARTBLOCK:
25351 537 regs->u_regs[UREG_G1] = __NR_restart_syscall;
25352 538 regs->tpc -= 4;
25353 539 regs->tnpc -= 4;
25354 540 pt_regs_clear_syscall(regs);
25355 541 }
25356
25357 However, on a SIGCONT it seems that 'g1' register is being clobbered after the
25358 syscall returns. Before 86c5d2cf0ce046279, the 'g1' was always placed jus
25359 before the 'ta' instruction which then reloads the syscall number and restarts
25360 the syscall.
25361
25362 On master, where 'g1' might be placed before 'ta':
25363
25364 $ cat test.c
25365 #include <unistd.h>
25366
25367 int main ()
25368 {
25369 pause ();
25370 }
25371 $ gcc test.c -o test
25372 $ strace -f ./t
25373 [...]
25374 ppoll(NULL, 0, NULL, NULL, 0
25375
25376 On another terminal
25377
25378 $ kill -STOP 2262828
25379
25380 $ strace -f ./t
25381 [...]
25382 --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=2521813, si_uid=8289} ---
25383 --- stopped by SIGSTOP ---
25384
25385 And then
25386
25387 $ kill -CONT 2262828
25388
25389 Results in:
25390
25391 --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=2521813, si_uid=8289} ---
25392 restart_syscall(<... resuming interrupted ppoll ...>) = -1 EINTR (Interrupted system call)
25393
25394 Where the expected behaviour would be:
25395
25396 $ strace -f ./t
25397 [...]
25398 ppoll(NULL, 0, NULL, NULL, 0) = ? ERESTARTNOHAND (To be restarted if no handler)
25399 --- SIGSTOP {si_signo=SIGSTOP, si_code=SI_USER, si_pid=2521813, si_uid=8289} ---
25400 --- stopped by SIGSTOP ---
25401 --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=2521813, si_uid=8289} ---
25402 ppoll(NULL, 0, NULL, NULL, 0
25403
25404 Just moving the 'g1' setting near the syscall asm is not suffice,
25405 the compiler might optimize it away (as I saw on cancellation.c by
25406 trying this fix). Instead, I have change the inline asm to put the
25407 'g1' setup in ithe asm block. This would require to change the asm
25408 constraint for INTERNAL_SYSCALL_NCS, since the syscall number is not
25409 constant.
25410
25411 Checked on sparc64-linux-gnu.
25412
25413 Reported-by: René Rebe <rene@exactcode.de>
25414 Tested-by: Sam James <sam@gentoo.org>
25415 Reviewed-by: Sam James <sam@gentoo.org>
25416 (cherry picked from commit 2c1903cbbac0022153a67776f474c221250ad6ed)
25417 (cherry picked from commit 1cd7e13289b91e1495a1865c1f678196d1bb7be4)
25418
25419diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
25420index 59998c7af4..34890ef69a 100644
25421--- a/sysdeps/unix/sysv/linux/Makefile
25422+++ b/sysdeps/unix/sysv/linux/Makefile
25423@@ -227,6 +227,7 @@ tests += \
25424 tst-scm_rights \
25425 tst-sigtimedwait \
25426 tst-sync_file_range \
25427+ tst-syscall-restart \
25428 tst-sysconf-iov_max \
25429 tst-sysvmsg-linux \
25430 tst-sysvsem-linux \
25431diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
25432index d2d68f5312..c2ffbb5c8f 100644
25433--- a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
25434+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
25435@@ -107,6 +107,7 @@ ENTRY(name); \
25436 #else /* __ASSEMBLER__ */
25437
25438 #define __SYSCALL_STRING \
25439+ "mov %[scn], %%g1;" \
25440 "ta 0x10;" \
25441 "bcc 1f;" \
25442 " nop;" \
25443@@ -114,7 +115,7 @@ ENTRY(name); \
25444 "1:"
25445
25446 #define __SYSCALL_CLOBBERS \
25447- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
25448+ "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
25449 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
25450 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
25451 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \
25452diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
25453index 96047424e9..5598fab08a 100644
25454--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
25455+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
25456@@ -106,6 +106,7 @@ ENTRY(name); \
25457 #else /* __ASSEMBLER__ */
25458
25459 #define __SYSCALL_STRING \
25460+ "mov %[scn], %%g1;" \
25461 "ta 0x6d;" \
25462 "bcc,pt %%xcc, 1f;" \
25463 " nop;" \
25464@@ -113,7 +114,7 @@ ENTRY(name); \
25465 "1:"
25466
25467 #define __SYSCALL_CLOBBERS \
25468- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
25469+ "g1", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", \
25470 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
25471 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
25472 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \
25473diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sysdep.h
25474index dcabb57fe2..c287740a8c 100644
25475--- a/sysdeps/unix/sysv/linux/sparc/sysdep.h
25476+++ b/sysdeps/unix/sysv/linux/sparc/sysdep.h
25477@@ -50,97 +50,109 @@
25478
25479 #undef INTERNAL_SYSCALL_NCS
25480 #define INTERNAL_SYSCALL_NCS(name, nr, args...) \
25481- internal_syscall##nr(__SYSCALL_STRING, name, args)
25482+ _internal_syscall##nr(__SYSCALL_STRING, "p", name, args)
25483
25484-#define internal_syscall0(string,name,dummy...) \
25485+#define _internal_syscall0(string,nc,name,dummy...) \
25486 ({ \
25487- register long int __g1 __asm__ ("g1") = (name); \
25488 register long __o0 __asm__ ("o0"); \
25489+ long int _name = (long int) (name); \
25490 __asm __volatile (string : "=r" (__o0) : \
25491- "r" (__g1) : \
25492+ [scn] nc (_name) : \
25493 __SYSCALL_CLOBBERS); \
25494 __o0; \
25495 })
25496+#define internal_syscall0(string,name,args...) \
25497+ _internal_syscall0(string, "i", name, args)
25498
25499-#define internal_syscall1(string,name,arg1) \
25500+#define _internal_syscall1(string,nc,name,arg1) \
25501 ({ \
25502 long int _arg1 = (long int) (arg1); \
25503- register long int __g1 __asm__("g1") = (name); \
25504+ long int _name = (long int) (name); \
25505 register long int __o0 __asm__ ("o0") = _arg1; \
25506- __asm __volatile (string : "=r" (__o0) : \
25507- "r" (__g1), "0" (__o0) : \
25508+ __asm __volatile (string : "+r" (__o0) : \
25509+ [scn] nc (_name) : \
25510 __SYSCALL_CLOBBERS); \
25511 __o0; \
25512 })
25513+#define internal_syscall1(string,name,args...) \
25514+ _internal_syscall1(string, "i", name, args)
25515
25516-#define internal_syscall2(string,name,arg1,arg2) \
25517+#define _internal_syscall2(string,nc,name,arg1,arg2) \
25518 ({ \
25519 long int _arg1 = (long int) (arg1); \
25520 long int _arg2 = (long int) (arg2); \
25521- register long int __g1 __asm__("g1") = (name); \
25522+ long int _name = (long int) (name); \
25523 register long int __o0 __asm__ ("o0") = _arg1; \
25524 register long int __o1 __asm__ ("o1") = _arg2; \
25525- __asm __volatile (string : "=r" (__o0) : \
25526- "r" (__g1), "0" (__o0), "r" (__o1) : \
25527+ __asm __volatile (string : "+r" (__o0) : \
25528+ [scn] nc (_name), "r" (__o1) : \
25529 __SYSCALL_CLOBBERS); \
25530 __o0; \
25531 })
25532+#define internal_syscall2(string,name,args...) \
25533+ _internal_syscall2(string, "i", name, args)
25534
25535-#define internal_syscall3(string,name,arg1,arg2,arg3) \
25536+#define _internal_syscall3(string,nc,name,arg1,arg2,arg3) \
25537 ({ \
25538 long int _arg1 = (long int) (arg1); \
25539 long int _arg2 = (long int) (arg2); \
25540 long int _arg3 = (long int) (arg3); \
25541- register long int __g1 __asm__("g1") = (name); \
25542+ long int _name = (long int) (name); \
25543 register long int __o0 __asm__ ("o0") = _arg1; \
25544 register long int __o1 __asm__ ("o1") = _arg2; \
25545 register long int __o2 __asm__ ("o2") = _arg3; \
25546- __asm __volatile (string : "=r" (__o0) : \
25547- "r" (__g1), "0" (__o0), "r" (__o1), \
25548+ __asm __volatile (string : "+r" (__o0) : \
25549+ [scn] nc (_name), "r" (__o1), \
25550 "r" (__o2) : \
25551 __SYSCALL_CLOBBERS); \
25552 __o0; \
25553 })
25554+#define internal_syscall3(string,name,args...) \
25555+ _internal_syscall3(string, "i", name, args)
25556
25557-#define internal_syscall4(string,name,arg1,arg2,arg3,arg4) \
25558+#define _internal_syscall4(string,nc,name,arg1,arg2,arg3,arg4) \
25559 ({ \
25560 long int _arg1 = (long int) (arg1); \
25561 long int _arg2 = (long int) (arg2); \
25562 long int _arg3 = (long int) (arg3); \
25563 long int _arg4 = (long int) (arg4); \
25564- register long int __g1 __asm__("g1") = (name); \
25565+ long int _name = (long int) (name); \
25566 register long int __o0 __asm__ ("o0") = _arg1; \
25567 register long int __o1 __asm__ ("o1") = _arg2; \
25568 register long int __o2 __asm__ ("o2") = _arg3; \
25569 register long int __o3 __asm__ ("o3") = _arg4; \
25570- __asm __volatile (string : "=r" (__o0) : \
25571- "r" (__g1), "0" (__o0), "r" (__o1), \
25572+ __asm __volatile (string : "+r" (__o0) : \
25573+ [scn] nc (_name), "r" (__o1), \
25574 "r" (__o2), "r" (__o3) : \
25575 __SYSCALL_CLOBBERS); \
25576 __o0; \
25577 })
25578+#define internal_syscall4(string,name,args...) \
25579+ _internal_syscall4(string, "i", name, args)
25580
25581-#define internal_syscall5(string,name,arg1,arg2,arg3,arg4,arg5) \
25582+#define _internal_syscall5(string,nc,name,arg1,arg2,arg3,arg4,arg5) \
25583 ({ \
25584 long int _arg1 = (long int) (arg1); \
25585 long int _arg2 = (long int) (arg2); \
25586 long int _arg3 = (long int) (arg3); \
25587 long int _arg4 = (long int) (arg4); \
25588 long int _arg5 = (long int) (arg5); \
25589- register long int __g1 __asm__("g1") = (name); \
25590+ long int _name = (long int) (name); \
25591 register long int __o0 __asm__ ("o0") = _arg1; \
25592 register long int __o1 __asm__ ("o1") = _arg2; \
25593 register long int __o2 __asm__ ("o2") = _arg3; \
25594 register long int __o3 __asm__ ("o3") = _arg4; \
25595 register long int __o4 __asm__ ("o4") = _arg5; \
25596- __asm __volatile (string : "=r" (__o0) : \
25597- "r" (__g1), "0" (__o0), "r" (__o1), \
25598+ __asm __volatile (string : "+r" (__o0) : \
25599+ [scn] nc (_name), "r" (__o1), \
25600 "r" (__o2), "r" (__o3), "r" (__o4) : \
25601 __SYSCALL_CLOBBERS); \
25602 __o0; \
25603 })
25604+#define internal_syscall5(string,name,args...) \
25605+ _internal_syscall5(string, "i", name, args)
25606
25607-#define internal_syscall6(string,name,arg1,arg2,arg3,arg4,arg5,arg6) \
25608+#define _internal_syscall6(string,nc,name,arg1,arg2,arg3,arg4,arg5,arg6)\
25609 ({ \
25610 long int _arg1 = (long int) (arg1); \
25611 long int _arg2 = (long int) (arg2); \
25612@@ -148,20 +160,22 @@
25613 long int _arg4 = (long int) (arg4); \
25614 long int _arg5 = (long int) (arg5); \
25615 long int _arg6 = (long int) (arg6); \
25616- register long int __g1 __asm__("g1") = (name); \
25617+ long int _name = (long int) (name); \
25618 register long int __o0 __asm__ ("o0") = _arg1; \
25619 register long int __o1 __asm__ ("o1") = _arg2; \
25620 register long int __o2 __asm__ ("o2") = _arg3; \
25621 register long int __o3 __asm__ ("o3") = _arg4; \
25622 register long int __o4 __asm__ ("o4") = _arg5; \
25623 register long int __o5 __asm__ ("o5") = _arg6; \
25624- __asm __volatile (string : "=r" (__o0) : \
25625- "r" (__g1), "0" (__o0), "r" (__o1), \
25626+ __asm __volatile (string : "+r" (__o0) : \
25627+ [scn] nc (_name), "r" (__o1), \
25628 "r" (__o2), "r" (__o3), "r" (__o4), \
25629 "r" (__o5) : \
25630 __SYSCALL_CLOBBERS); \
25631 __o0; \
25632 })
25633+#define internal_syscall6(string,name,args...) \
25634+ _internal_syscall6(string, "i", name, args)
25635
25636 #define INLINE_CLONE_SYSCALL(arg1,arg2,arg3,arg4,arg5) \
25637 ({ \
25638@@ -170,15 +184,15 @@
25639 long int _arg3 = (long int) (arg3); \
25640 long int _arg4 = (long int) (arg4); \
25641 long int _arg5 = (long int) (arg5); \
25642+ long int _name = __NR_clone; \
25643 register long int __o0 __asm__ ("o0") = _arg1; \
25644 register long int __o1 __asm__ ("o1") = _arg2; \
25645 register long int __o2 __asm__ ("o2") = _arg3; \
25646 register long int __o3 __asm__ ("o3") = _arg4; \
25647 register long int __o4 __asm__ ("o4") = _arg5; \
25648- register long int __g1 __asm__ ("g1") = __NR_clone; \
25649 __asm __volatile (__SYSCALL_STRING : \
25650 "=r" (__o0), "=r" (__o1) : \
25651- "r" (__g1), "0" (__o0), "1" (__o1), \
25652+ [scn] "i" (_name), "0" (__o0), "1" (__o1), \
25653 "r" (__o2), "r" (__o3), "r" (__o4) : \
25654 __SYSCALL_CLOBBERS); \
25655 if (__glibc_unlikely ((unsigned long int) (__o0) > -4096UL)) \
25656diff --git a/sysdeps/unix/sysv/linux/tst-syscall-restart.c b/sysdeps/unix/sysv/linux/tst-syscall-restart.c
25657new file mode 100644
25658index 0000000000..84a8a41b5c
25659--- /dev/null
25660+++ b/sysdeps/unix/sysv/linux/tst-syscall-restart.c
25661@@ -0,0 +1,112 @@
25662+/* Test if a syscall is correctly restarted.
25663+ Copyright (C) 2024 Free Software Foundation, Inc.
25664+ This file is part of the GNU C Library.
25665+
25666+ The GNU C Library is free software; you can redistribute it and/or
25667+ modify it under the terms of the GNU Lesser General Public
25668+ License as published by the Free Software Foundation; either
25669+ version 2.1 of the License, or (at your option) any later version.
25670+
25671+ The GNU C Library is distributed in the hope that it will be useful,
25672+ but WITHOUT ANY WARRANTY; without even the implied warranty of
25673+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25674+ Lesser General Public License for more details.
25675+
25676+ You should have received a copy of the GNU Lesser General Public
25677+ License along with the GNU C Library; if not, see
25678+ <https://www.gnu.org/licenses/>. */
25679+
25680+#include <support/xsignal.h>
25681+#include <support/check.h>
25682+#include <support/process_state.h>
25683+#include <support/xunistd.h>
25684+#include <support/xthread.h>
25685+#include <sys/wait.h>
25686+
25687+static int
25688+check_pid (pid_t pid)
25689+{
25690+ /* Wait until the child has called pause and it blocking on kernel. */
25691+ support_process_state_wait (pid, support_process_state_sleeping);
25692+
25693+ TEST_COMPARE (kill (pid, SIGSTOP), 0);
25694+
25695+ /* Adding process_state_tracing_stop ('t') allows the test to work under
25696+ trace programs such as ptrace. */
25697+ support_process_state_wait (pid, support_process_state_stopped
25698+ | support_process_state_tracing_stop);
25699+
25700+ TEST_COMPARE (kill (pid, SIGCONT), 0);
25701+
25702+ enum support_process_state state
25703+ = support_process_state_wait (pid, support_process_state_sleeping
25704+ | support_process_state_zombie);
25705+
25706+ TEST_COMPARE (state, support_process_state_sleeping);
25707+
25708+ TEST_COMPARE (kill (pid, SIGTERM), 0);
25709+
25710+ siginfo_t info;
25711+ TEST_COMPARE (waitid (P_PID, pid, &info, WEXITED), 0);
25712+ TEST_COMPARE (info.si_signo, SIGCHLD);
25713+ TEST_COMPARE (info.si_code, CLD_KILLED);
25714+ TEST_COMPARE (info.si_status, SIGTERM);
25715+ TEST_COMPARE (info.si_pid, pid);
25716+
25717+ return 0;
25718+}
25719+
25720+static void *
25721+tf (void *)
25722+{
25723+ pause ();
25724+ return NULL;
25725+}
25726+
25727+static void
25728+child_mt (void)
25729+{
25730+ /* Let only the created thread to handle signals. */
25731+ sigset_t set;
25732+ sigfillset (&set);
25733+ xpthread_sigmask (SIG_BLOCK, &set, NULL);
25734+
25735+ sigdelset (&set, SIGSTOP);
25736+ sigdelset (&set, SIGCONT);
25737+ sigdelset (&set, SIGTERM);
25738+
25739+ pthread_attr_t attr;
25740+ xpthread_attr_init (&attr);
25741+ TEST_COMPARE (pthread_attr_setsigmask_np (&attr, &set), 0);
25742+
25743+ xpthread_join (xpthread_create (&attr, tf, NULL));
25744+}
25745+
25746+static void
25747+do_test_syscall (bool multithread)
25748+{
25749+ pid_t pid = xfork ();
25750+ if (pid == 0)
25751+ {
25752+ if (multithread)
25753+ child_mt ();
25754+ else
25755+ pause ();
25756+ _exit (127);
25757+ }
25758+
25759+ check_pid (pid);
25760+}
25761+
25762+static int
25763+do_test (void)
25764+{
25765+ /* Check for both single and multi thread, since they use different syscall
25766+ mechanisms. */
25767+ do_test_syscall (false);
25768+ do_test_syscall (true);
25769+
25770+ return 0;
25771+}
25772+
25773+#include <support/test-driver.c>
25774
25775commit 9af64ca64c532b7e42a40b48fe5e01726a9b7943
25776Author: H.J. Lu <hjl.tools@gmail.com>
25777Date: Thu Dec 5 08:39:44 2024 +0800
25778
25779 math: Exclude internal math symbols for tests [BZ #32414]
25780
25781 Since internal tests don't have access to internal symbols in libm,
25782 exclude them for internal tests. Also make tst-strtod5 and tst-strtod5i
25783 depend on $(libm) to support older versions of GCC which can't inline
25784 copysign family functions. This fixes BZ #32414.
25785
25786 Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
25787 Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
25788 (cherry picked from commit 5df09b444835fca6e64b3d4b4a5beb19b3b2ba21)
25789
25790diff --git a/include/math.h b/include/math.h
25791index fa11a710a6..035fd160ff 100644
25792--- a/include/math.h
25793+++ b/include/math.h
25794@@ -130,7 +130,10 @@ fabsf128 (_Float128 x)
25795 }
25796 # endif
25797
25798-# if !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
25799+
25800+/* NB: Internal tests don't have access to internal symbols. */
25801+# if !IS_IN (testsuite_internal) \
25802+ && !(defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ > 0)
25803 # ifndef NO_MATH_REDIRECT
25804 /* Declare some functions for use within GLIBC. Compilers typically
25805 inline those functions as a single instruction. Use an asm to
25806diff --git a/stdlib/Makefile b/stdlib/Makefile
25807index 8b0ac63ddb..8213fa83ef 100644
25808--- a/stdlib/Makefile
25809+++ b/stdlib/Makefile
25810@@ -603,6 +603,8 @@ $(objpfx)bug-strtod2: $(libm)
25811 $(objpfx)tst-strtod-round: $(libm)
25812 $(objpfx)tst-tininess: $(libm)
25813 $(objpfx)tst-strtod-underflow: $(libm)
25814+$(objpfx)tst-strtod5: $(libm)
25815+$(objpfx)tst-strtod5i: $(libm)
25816 $(objpfx)tst-strtod6: $(libm)
25817 $(objpfx)tst-strtod-nan-locale: $(libm)
25818 $(objpfx)tst-strtod-nan-sign: $(libm)
25819
25820commit 0b39fe801208e805cc911f64a2fdd25d04b7151e
25821Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
25822Date: Fri Oct 18 08:48:22 2024 -0300
25823
25824 linux: Fix tst-syscall-restart.c on old gcc (BZ 32283)
25825
25826 To avoid a parameter name omitted error.
25827
25828 (cherry picked from commit ab564362d0470d10947c24155ec048c4e14a009d)
25829
25830diff --git a/sysdeps/unix/sysv/linux/tst-syscall-restart.c b/sysdeps/unix/sysv/linux/tst-syscall-restart.c
25831index 84a8a41b5c..0ee7dc8517 100644
25832--- a/sysdeps/unix/sysv/linux/tst-syscall-restart.c
25833+++ b/sysdeps/unix/sysv/linux/tst-syscall-restart.c
25834@@ -57,7 +57,7 @@ check_pid (pid_t pid)
25835 }
25836
25837 static void *
25838-tf (void *)
25839+tf (void *closure)
25840 {
25841 pause ();
25842 return NULL;
25843
25844commit 94e4a8c7d68129075f1b494a0b26151a4f989b36
25845Author: Florian Weimer <fweimer@redhat.com>
25846Date: Tue Dec 17 18:12:03 2024 +0100
25847
25848 x86: Avoid integer truncation with large cache sizes (bug 32470)
25849
25850 Some hypervisors report 1 TiB L3 cache size. This results
25851 in some variables incorrectly getting zeroed, causing crashes
25852 in memcpy/memmove because invariants are violated.
25853
25854 (cherry picked from commit 61c3450db96dce96ad2b24b4f0b548e6a46d68e5)
25855
25856diff --git a/NEWS b/NEWS
25857index bd0b3bd66a..97a1e1f5d4 100644
25858--- a/NEWS
25859+++ b/NEWS
25860@@ -20,6 +20,7 @@ The following bugs are resolved with this release:
25861 [32137] libio: Attempt wide backup free only for non-legacy code
25862 [32231] elf: Change ldconfig auxcache magic number
25863 [32245] glibc -Wstringop-overflow= build failure on hppa
25864+ [32470] x86: Avoid integer truncation with large cache sizes
25865
25866 Version 2.40
25867
25868diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h
25869index a1c03b8903..ac97414b5b 100644
25870--- a/sysdeps/x86/dl-cacheinfo.h
25871+++ b/sysdeps/x86/dl-cacheinfo.h
25872@@ -961,11 +961,11 @@ dl_init_cacheinfo (struct cpu_features *cpu_features)
25873 non_temporal_threshold = maximum_non_temporal_threshold;
25874
25875 /* NB: The REP MOVSB threshold must be greater than VEC_SIZE * 8. */
25876- unsigned int minimum_rep_movsb_threshold;
25877+ unsigned long int minimum_rep_movsb_threshold;
25878 /* NB: The default REP MOVSB threshold is 4096 * (VEC_SIZE / 16) for
25879 VEC_SIZE == 64 or 32. For VEC_SIZE == 16, the default REP MOVSB
25880 threshold is 2048 * (VEC_SIZE / 16). */
25881- unsigned int rep_movsb_threshold;
25882+ unsigned long int rep_movsb_threshold;
25883 if (CPU_FEATURE_USABLE_P (cpu_features, AVX512F)
25884 && !CPU_FEATURE_PREFERRED_P (cpu_features, Prefer_No_AVX512))
25885 {
25886
25887commit 9fbfbd924f718663d5303858f34d1f857c375093
25888Author: John David Anglin <danglin@gcc.gnu.org>
25889Date: Thu Dec 19 11:30:09 2024 -0500
25890
25891 hppa: Fix strace detach-vfork test
25892
25893 This change implements vfork.S for direct support of the vfork
25894 syscall. clone.S is revised to correct child support for the
25895 vfork case.
25896
25897 The main bug was creating a frame prior to the clone syscall.
25898 This was done to allow the rp and r4 registers to be saved and
25899 restored from the stack frame. r4 was used to save and restore
25900 the PIC register, r19, across the system call and the call to
25901 set errno. But in the vfork case, it is undefined behavior
25902 for the child to return from the function in which vfork was
25903 called. It is surprising that this usually worked.
25904
25905 Syscalls on hppa save and restore rp and r19, so we don't need
25906 to create a frame prior to the clone syscall. We only need a
25907 frame when __syscall_error is called. We also don't need to
25908 save and restore r19 around the call to $$dyncall as r19 is not
25909 used in the code after $$dyncall.
25910
25911 This considerably simplifies clone.S.
25912
25913 Signed-off-by: John David Anglin <dave.anglin@bell.net>
25914
25915diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S
25916index a31afea429..c18163d0f7 100644
25917--- a/sysdeps/unix/sysv/linux/hppa/clone.S
25918+++ b/sysdeps/unix/sysv/linux/hppa/clone.S
25919@@ -59,16 +59,6 @@
25920
25921 .text
25922 ENTRY(__clone)
25923- /* Prologue */
25924- stwm %r4, 64(%sp)
25925- .cfi_def_cfa_offset -64
25926- .cfi_offset 4, 0
25927- stw %sp, -4(%sp)
25928-#ifdef PIC
25929- stw %r19, -32(%sp)
25930- .cfi_offset 19, 32
25931-#endif
25932-
25933 /* Sanity check arguments. */
25934 comib,=,n 0,%arg0,.LerrorSanity /* no NULL function pointers */
25935 comib,=,n 0,%arg1,.LerrorSanity /* no NULL stack pointers */
25936@@ -87,54 +77,34 @@ ENTRY(__clone)
25937 /* User stack pointer is in the correct register already */
25938
25939 /* Load args from stack... */
25940- ldw -116(%sp), %r24 /* Load parent_tidptr */
25941- ldw -120(%sp), %r23 /* Load newtls */
25942- ldw -124(%sp), %r22 /* Load child_tidptr */
25943-
25944- /* Save the PIC register. */
25945-#ifdef PIC
25946- copy %r19, %r4 /* parent */
25947-#endif
25948+ ldw -52(%sp), %r24 /* Load parent_tidptr */
25949+ ldw -56(%sp), %r23 /* Load newtls */
25950+ ldw -60(%sp), %r22 /* Load child_tidptr */
25951
25952 /* Do the system call */
25953 ble 0x100(%sr2, %r0)
25954 ldi __NR_clone, %r20
25955
25956 ldi -4096, %r1
25957- comclr,>>= %r1, %ret0, %r0 /* Note: unsigned compare. */
25958- b,n .LerrorRest
25959-
25960- /* Restore the PIC register. */
25961-#ifdef PIC
25962- copy %r4, %r19 /* parent */
25963-#endif
25964-
25965+ comb,<<,n %r1, %ret0, .LerrorRest /* Note: unsigned compare. */
25966 comib,=,n 0, %ret0, .LthreadStart
25967-
25968- /* Successful return from the parent
25969- No need to restore the PIC register,
25970- since we return immediately. */
25971-
25972- ldw -84(%sp), %rp
25973- bv %r0(%rp)
25974- ldwm -64(%sp), %r4
25975+ bv,n %r0(%rp)
25976
25977 .LerrorRest:
25978- /* Something bad happened -- no child created */
25979+ /* Something bad happened -- no child created -- need a frame */
25980+ ldo 64(%sp),%sp
25981+ .cfi_def_cfa_offset -64
25982 bl __syscall_error, %rp
25983 sub %r0, %ret0, %arg0
25984 ldw -84(%sp), %rp
25985 /* Return after setting errno, ret0 is set to -1 by __syscall_error. */
25986 bv %r0(%rp)
25987- ldwm -64(%sp), %r4
25988+ ldo -64(%sp), %sp
25989
25990 .LerrorSanity:
25991 /* Sanity checks failed, return -1, and set errno to EINVAL. */
25992- bl __syscall_error, %rp
25993- ldi EINVAL, %arg0
25994- ldw -84(%sp), %rp
25995- bv %r0(%rp)
25996- ldwm -64(%sp), %r4
25997+ b .LerrorRest
25998+ ldi -EINVAL, %ret0
25999
26000 .LthreadStart:
26001 /* Load up the arguments. */
26002@@ -144,14 +114,8 @@ ENTRY(__clone)
26003 /* $$dyncall fixes child's PIC register */
26004
26005 /* Call the user's function */
26006-#ifdef PIC
26007- copy %r19, %r4
26008-#endif
26009 bl $$dyncall, %r31
26010 copy %r31, %rp
26011-#ifdef PIC
26012- copy %r4, %r19
26013-#endif
26014 copy %r28, %r26
26015 ble 0x100(%sr2, %r0)
26016 ldi __NR_exit, %r20
26017diff --git a/sysdeps/unix/sysv/linux/hppa/vfork.S b/sysdeps/unix/sysv/linux/hppa/vfork.S
26018new file mode 100644
26019index 0000000000..5fd368f3cf
26020--- /dev/null
26021+++ b/sysdeps/unix/sysv/linux/hppa/vfork.S
26022@@ -0,0 +1,53 @@
26023+/* Copyright (C) 1999-2024 Free Software Foundation, Inc.
26024+
26025+ This file is part of the GNU C Library.
26026+
26027+ The GNU C Library is free software; you can redistribute it and/or
26028+ modify it under the terms of the GNU Lesser General Public License as
26029+ published by the Free Software Foundation; either version 2.1 of the
26030+ License, or (at your option) any later version.
26031+
26032+ The GNU C Library is distributed in the hope that it will be useful,
26033+ but WITHOUT ANY WARRANTY; without even the implied warranty of
26034+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26035+ Lesser General Public License for more details.
26036+
26037+ You should have received a copy of the GNU Lesser General Public
26038+ License along with the GNU C Library; if not, see
26039+ <https://www.gnu.org/licenses/>. */
26040+
26041+#include <sysdep.h>
26042+#define _ERRNO_H 1
26043+#include <bits/errno.h>
26044+
26045+/* Clone the calling process, but without copying the whole address space.
26046+ The calling process is suspended until the new process exits or is
26047+ replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
26048+ and the process ID of the new process to the old process. */
26049+
26050+ENTRY (__vfork)
26051+ ble 0x100(%sr2, %r0)
26052+ ldi __NR_vfork, %r20
26053+
26054+ ldi -4096, %r1
26055+ comclr,<< %r1, %ret0, %r0 /* Note: unsigned compare. */
26056+ bv,n %r0(%rp)
26057+
26058+ /* Something bad happened -- no child created -- we need a frame */
26059+ ldo 64(%sp), %sp
26060+ .cfi_def_cfa_offset -64
26061+
26062+ /* Set errno */
26063+ bl __syscall_error, %rp
26064+ sub %r0, %ret0, %arg0
26065+
26066+ /* ret0 is set to -1 by __syscall_error */
26067+ ldw -84(%sp), %rp
26068+ bv %r0(%rp)
26069+ ldo -64(%sp), %sp
26070+
26071+PSEUDO_END (__vfork)
26072+libc_hidden_def (__vfork)
26073+
26074+weak_alias (__vfork, vfork)
26075+strong_alias (__vfork, __libc_vfork)
26076
26077commit 7648e3c8e80b3f1b3b43506b2fbe370e4824ab97
26078Author: John David Anglin <danglin@gcc.gnu.org>
26079Date: Sun Dec 22 09:58:02 2024 -0500
26080
26081 hppa: Simplify handling of sanity check errors in clone.S.
26082
26083 This simplifies the handling of sanity check errors in clone.S.
26084 Adjusted a couple of comments to reflect current code.
26085
26086 Signed-off-by: John David Anglin <dave.anglin@bell.net>
26087
26088diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S
26089index c18163d0f7..e85e7f517f 100644
26090--- a/sysdeps/unix/sysv/linux/hppa/clone.S
26091+++ b/sysdeps/unix/sysv/linux/hppa/clone.S
26092@@ -90,6 +90,10 @@ ENTRY(__clone)
26093 comib,=,n 0, %ret0, .LthreadStart
26094 bv,n %r0(%rp)
26095
26096+.LerrorSanity:
26097+ /* Sanity checks failed, set errno to EINVAL. */
26098+ ldi -EINVAL, %ret0
26099+
26100 .LerrorRest:
26101 /* Something bad happened -- no child created -- need a frame */
26102 ldo 64(%sp),%sp
26103@@ -101,11 +105,6 @@ ENTRY(__clone)
26104 bv %r0(%rp)
26105 ldo -64(%sp), %sp
26106
26107-.LerrorSanity:
26108- /* Sanity checks failed, return -1, and set errno to EINVAL. */
26109- b .LerrorRest
26110- ldi -EINVAL, %ret0
26111-
26112 .LthreadStart:
26113 /* Load up the arguments. */
26114 ldw -60(%sp), %arg0
26115@@ -121,7 +120,7 @@ ENTRY(__clone)
26116 ldi __NR_exit, %r20
26117
26118 /* We should not return from exit.
26119- We do not restore r4, or the stack state. */
26120+ We do not restore the stack state. */
26121 iitlbp %r0, (%sr0, %r0)
26122
26123 PSEUDO_END(__clone)
26124
26125commit 473597d8167f86afee3544215db108b170ec13c0
26126Author: Andreas Schwab <schwab@suse.de>
26127Date: Wed Sep 25 11:49:30 2024 +0200
26128
26129 Fix missing randomness in __gen_tempname (bug 32214)
26130
26131 Make sure to update the random value also if getrandom fails.
26132
26133 Fixes: 686d542025 ("posix: Sync tempname with gnulib")
26134 (cherry picked from commit 5f62cf88c4530c11904482775b7582bd7f6d80d2)
26135
26136diff --git a/NEWS b/NEWS
26137index 97a1e1f5d4..57feba81cd 100644
26138--- a/NEWS
26139+++ b/NEWS
26140@@ -18,6 +18,7 @@ The following bugs are resolved with this release:
26141 [32026] strerror/strsignal TLS not handled correctly for secondary namespaces
26142 [32052] Name space violation in fortify wrappers
26143 [32137] libio: Attempt wide backup free only for non-legacy code
26144+ [32214] Fix missing randomness in __gen_tempname
26145 [32231] elf: Change ldconfig auxcache magic number
26146 [32245] glibc -Wstringop-overflow= build failure on hppa
26147 [32470] x86: Avoid integer truncation with large cache sizes
26148diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c
26149index c00fe0c181..fc30958a0c 100644
26150--- a/sysdeps/posix/tempname.c
26151+++ b/sysdeps/posix/tempname.c
26152@@ -117,6 +117,8 @@ random_bits (random_value *r, random_value s)
26153 succeed. */
26154 #if !_LIBC
26155 *r = mix_random_values (v, clock ());
26156+#else
26157+ *r = v;
26158 #endif
26159 return false;
26160 }
26161
26162commit 7d4b6bcae91f29d7b4daf15bab06b66cf1d2217c
26163Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
26164Date: Tue Jan 21 16:11:06 2025 -0500
26165
26166 Fix underallocation of abort_msg_s struct (CVE-2025-0395)
26167
26168 Include the space needed to store the length of the message itself, in
26169 addition to the message string. This resolves BZ #32582.
26170
26171 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
26172 Reviewed: Adhemerval Zanella <adhemerval.zanella@linaro.org>
26173 (cherry picked from commit 68ee0f704cb81e9ad0a78c644a83e1e9cd2ee578)
26174
26175diff --git a/assert/assert.c b/assert/assert.c
26176index c29629f5f6..b6e37d694c 100644
26177--- a/assert/assert.c
26178+++ b/assert/assert.c
26179@@ -18,6 +18,7 @@
26180 #include <assert.h>
26181 #include <atomic.h>
26182 #include <ldsodefs.h>
26183+#include <libc-pointer-arith.h>
26184 #include <libintl.h>
26185 #include <stdio.h>
26186 #include <stdlib.h>
26187@@ -65,7 +66,8 @@ __assert_fail_base (const char *fmt, const char *assertion, const char *file,
26188 (void) __fxprintf (NULL, "%s", str);
26189 (void) fflush (stderr);
26190
26191- total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1);
26192+ total = ALIGN_UP (total + sizeof (struct abort_msg_s) + 1,
26193+ GLRO(dl_pagesize));
26194 struct abort_msg_s *buf = __mmap (NULL, total, PROT_READ | PROT_WRITE,
26195 MAP_ANON | MAP_PRIVATE, -1, 0);
26196 if (__glibc_likely (buf != MAP_FAILED))
26197diff --git a/sysdeps/posix/libc_fatal.c b/sysdeps/posix/libc_fatal.c
26198index f9e3425e04..089c47b04b 100644
26199--- a/sysdeps/posix/libc_fatal.c
26200+++ b/sysdeps/posix/libc_fatal.c
26201@@ -20,6 +20,7 @@
26202 #include <errno.h>
26203 #include <fcntl.h>
26204 #include <ldsodefs.h>
26205+#include <libc-pointer-arith.h>
26206 #include <paths.h>
26207 #include <stdarg.h>
26208 #include <stdbool.h>
26209@@ -105,7 +106,8 @@ __libc_message_impl (const char *fmt, ...)
26210 {
26211 WRITEV_FOR_FATAL (fd, iov, iovcnt, total);
26212
26213- total = (total + 1 + GLRO(dl_pagesize) - 1) & ~(GLRO(dl_pagesize) - 1);
26214+ total = ALIGN_UP (total + sizeof (struct abort_msg_s) + 1,
26215+ GLRO(dl_pagesize));
26216 struct abort_msg_s *buf = __mmap (NULL, total,
26217 PROT_READ | PROT_WRITE,
26218 MAP_ANON | MAP_PRIVATE, -1, 0);