1 | // REQUIRES: target-is-powerpc64le |
2 | // RUN: %clang_builtins %s %librt -o %t && %run %t |
3 | #include <stdio.h> |
4 | #include <limits.h> |
5 | #include <stdint.h> |
6 | #include "DD.h" |
7 | |
8 | struct testVector { double xhi; double xlo; int64_t result; }; |
9 | |
10 | #define INFINITY __builtin_inf() |
11 | #define HUGE 0x1.fffffffffffffp1023 |
12 | #define QNAN __builtin_nan("") |
13 | |
14 | const struct testVector testCases[] = { |
15 | // Edge cases |
16 | // { HUGE, 0.0, INT64_MAX }, |
17 | // { INFINITY, 0.0, INT64_MAX }, |
18 | // { -HUGE, 0.0, INT64_MIN }, |
19 | // { -INFINITY, 0.0, INT64_MIN }, |
20 | // { QNAN, 0.0, INT64_MIN }, |
21 | |
22 | // Exact cases: |
23 | { .xhi: 0.0, .xlo: 0.0, .result: 0LL }, |
24 | { .xhi: -0.0, .xlo: 0.0, .result: 0LL }, |
25 | { .xhi: 1.0, .xlo: 0.0, .result: 1LL }, |
26 | { .xhi: -1.0, .xlo: 0.0, .result: -1LL }, |
27 | { .xhi: 2.0, .xlo: 0.0, .result: 2LL }, |
28 | { .xhi: -2.0, .xlo: 0.0, .result: -2LL }, |
29 | { .xhi: 3.0, .xlo: 0.0, .result: 3LL }, |
30 | { .xhi: -3.0, .xlo: 0.0, .result: -3LL }, |
31 | { .xhi: 4.0, .xlo: 0.0, .result: 4LL }, |
32 | { .xhi: -4.0, .xlo: 0.0, .result: -4LL }, |
33 | { .xhi: 5.0, .xlo: 0.0, .result: 5LL }, |
34 | { .xhi: -5.0, .xlo: 0.0, .result: -5LL }, |
35 | { .xhi: 6.0, .xlo: 0.0, .result: 6LL }, |
36 | { .xhi: -6.0, .xlo: 0.0, .result: -6LL }, |
37 | { .xhi: 7.0, .xlo: 0.0, .result: 7LL }, |
38 | { .xhi: -7.0, .xlo: 0.0, .result: -7LL }, |
39 | { .xhi: 8.0, .xlo: 0.0, .result: 8LL }, |
40 | { .xhi: -8.0, .xlo: 0.0, .result: -8LL }, |
41 | { .xhi: 9.0, .xlo: 0.0, .result: 9LL }, |
42 | { .xhi: -9.0, .xlo: 0.0, .result: -9LL }, |
43 | |
44 | // Near integer cases: |
45 | { .xhi: 1.0, .xlo: -0x1.0p-54, .result: 0LL }, |
46 | { .xhi: 1.0, .xlo: -0.0, .result: 1LL }, |
47 | { .xhi: 1.0, .xlo: 0x1.0p-54, .result: 1LL }, |
48 | { .xhi: 0x1.0000000000001p0, .xlo: -0x1.0p-54, .result: 1LL }, |
49 | { .xhi: 0x1.0000000000001p0, .xlo: -0.0, .result: 1LL }, |
50 | { .xhi: 0x1.0000000000001p0, .xlo: 0.0, .result: 1LL }, |
51 | { .xhi: 0x1.0000000000001p0, .xlo: 0x1.0p-54, .result: 1LL }, |
52 | { .xhi: -1.0, .xlo: 0x1.0p-54, .result: 0LL }, |
53 | { .xhi: -1.0, .xlo: 0.0, .result: -1LL }, |
54 | { .xhi: -1.0, .xlo: 0.0, .result: -1LL }, |
55 | { .xhi: -1.0, .xlo: -0x1.0p-54, .result: -1LL }, |
56 | { .xhi: -0x1.0000000000001p0, .xlo: 0x1.0p-54, .result: -1LL }, |
57 | { .xhi: -0x1.0000000000001p0, .xlo: -0.0, .result: -1LL }, |
58 | { .xhi: -0x1.0000000000001p0, .xlo: -0x1.0p-54, .result: -1LL }, |
59 | |
60 | // Close to 32-bit overflow boundaries: |
61 | { .xhi: 0x1.fffffffcp30, .xlo: -0x1.0p-24, INT64_C(0x7ffffffe) }, |
62 | { .xhi: 0x1.fffffffcp30, .xlo: 0.0, INT64_C(0x7fffffff) }, |
63 | { .xhi: 0x1.fffffffcp30, .xlo: 0x1.0p-24, INT64_C(0x7fffffff) }, |
64 | { .xhi: 0x1.fffffffffffffp30, .xlo: -0x1.0p-24, INT64_C(0x7fffffff) }, |
65 | { .xhi: 0x1.fffffffffffffp30, .xlo: 0.0, INT64_C(0x7fffffff) }, |
66 | { .xhi: 0x1.fffffffffffffp30, .xlo: 0x1.fffffffffffffp-24, INT64_C(0x7fffffff) }, |
67 | { .xhi: 0x1.0p31, .xlo: -0x1.fffffffffffffp-24, INT64_C(0x7fffffff) }, |
68 | { .xhi: 0x1.0p31, .xlo: 0.0, INT64_C(0x80000000) }, |
69 | { .xhi: 0x1.0p31, .xlo: 0x1.fffffffffffffp-24, INT64_C(0x80000000) }, |
70 | { .xhi: 0x1.0000000000001p31, .xlo: -0x1.fffffffffffffp-24, INT64_C(0x80000000) }, |
71 | { .xhi: 0x1.0000000000001p31, .xlo: 0.0, INT64_C(0x80000000) }, |
72 | { .xhi: 0x1.0000000000001p31, .xlo: 0x1.fffffffffffffp-24, INT64_C(0x80000000) }, |
73 | { .xhi: 0x1.00000002p31, .xlo: -0x1.fffffffffffffp-24, INT64_C(0x80000000) }, |
74 | { .xhi: 0x1.00000002p31, .xlo: 0.0, INT64_C(0x80000001) }, |
75 | { .xhi: 0x1.00000002p31, .xlo: 0x1.fffffffffffffp-24, INT64_C(0x80000001) }, |
76 | |
77 | { .xhi: 0x1.fffffffep31, .xlo: -0x1.0p-24, INT64_C(0xfffffffe) }, |
78 | { .xhi: 0x1.fffffffep31, .xlo: 0.0, INT64_C(0xffffffff) }, |
79 | { .xhi: 0x1.fffffffep31, .xlo: 0x1.0p-24, INT64_C(0xffffffff) }, |
80 | { .xhi: 0x1.fffffffffffffp31, .xlo: -0x1.0p-24, INT64_C(0xffffffff) }, |
81 | { .xhi: 0x1.fffffffffffffp31, .xlo: 0.0, INT64_C(0xffffffff) }, |
82 | { .xhi: 0x1.fffffffffffffp31, .xlo: 0x1.fffffffffffffp-24, INT64_C(0xffffffff) }, |
83 | { .xhi: 0x1.0p32, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff) }, |
84 | { .xhi: 0x1.0p32, .xlo: 0.0, INT64_C(0x100000000) }, |
85 | { .xhi: 0x1.0p32, .xlo: 0x1.fffffffffffffp-24, INT64_C(0x100000000) }, |
86 | { .xhi: 0x1.0000000000001p32, .xlo: -0x1.fffffffffffffp-24, INT64_C(0x100000000) }, |
87 | { .xhi: 0x1.0000000000001p32, .xlo: 0.0, INT64_C(0x100000000) }, |
88 | { .xhi: 0x1.0000000000001p32, .xlo: 0x1.fffffffffffffp-24, INT64_C(0x100000000) }, |
89 | { .xhi: 0x1.00000001p32, .xlo: -0x1.fffffffffffffp-24, INT64_C(0x100000000) }, |
90 | { .xhi: 0x1.00000001p32, .xlo: 0.0, INT64_C(0x100000001) }, |
91 | { .xhi: 0x1.00000001p32, .xlo: 0x1.fffffffffffffp-24, INT64_C(0x100000001) }, |
92 | |
93 | { .xhi: -0x1.fffffffcp30, .xlo: 0x1.0p-24, INT64_C(0xffffffff80000002) }, |
94 | { .xhi: -0x1.fffffffcp30, .xlo: 0.0, INT64_C(0xffffffff80000001) }, |
95 | { .xhi: -0x1.fffffffcp30, .xlo: -0x1.0p-24, INT64_C(0xffffffff80000001) }, |
96 | { .xhi: -0x1.fffffffffffffp30, .xlo: 0x1.0p-24, INT64_C(0xffffffff80000001) }, |
97 | { .xhi: -0x1.fffffffffffffp30, .xlo: 0.0, INT64_C(0xffffffff80000001) }, |
98 | { .xhi: -0x1.fffffffffffffp30, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff80000001) }, |
99 | { .xhi: -0x1.0p31, .xlo: 0x1.fffffffffffffp-24, INT64_C(0xffffffff80000001) }, |
100 | { .xhi: -0x1.0p31, .xlo: 0.0, INT64_C(0xffffffff80000000) }, |
101 | { .xhi: -0x1.0p31, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff80000000) }, |
102 | { .xhi: -0x1.0000000000001p31, .xlo: 0x1.fffffffffffffp-24, INT64_C(0xffffffff80000000) }, |
103 | { .xhi: -0x1.0000000000001p31, .xlo: 0.0, INT64_C(0xffffffff80000000) }, |
104 | { .xhi: -0x1.0000000000001p31, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff80000000) }, |
105 | { .xhi: -0x1.00000002p31, .xlo: 0x1.fffffffffffffp-24, INT64_C(0xffffffff80000000) }, |
106 | { .xhi: -0x1.00000002p31, .xlo: 0.0, INT64_C(0xffffffff7fffffff) }, |
107 | { .xhi: -0x1.00000002p31, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff7fffffff) }, |
108 | |
109 | { .xhi: -0x1.fffffffep31, .xlo: 0x1.0p-24, INT64_C(0xffffffff00000002) }, |
110 | { .xhi: -0x1.fffffffep31, .xlo: 0.0, INT64_C(0xffffffff00000001) }, |
111 | { .xhi: -0x1.fffffffep31, .xlo: -0x1.0p-24, INT64_C(0xffffffff00000001) }, |
112 | { .xhi: -0x1.fffffffffffffp31, .xlo: 0x1.0p-24, INT64_C(0xffffffff00000001) }, |
113 | { .xhi: -0x1.fffffffffffffp31, .xlo: 0.0, INT64_C(0xffffffff00000001) }, |
114 | { .xhi: -0x1.fffffffffffffp31, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff00000001) }, |
115 | { .xhi: -0x1.0p32, .xlo: 0x1.fffffffffffffp-24, INT64_C(0xffffffff00000001) }, |
116 | { .xhi: -0x1.0p32, .xlo: 0.0, INT64_C(0xffffffff00000000) }, |
117 | { .xhi: -0x1.0p32, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff00000000) }, |
118 | { .xhi: -0x1.0000000000001p32, .xlo: 0x1.fffffffffffffp-24, INT64_C(0xffffffff00000000) }, |
119 | { .xhi: -0x1.0000000000001p32, .xlo: 0.0, INT64_C(0xffffffff00000000) }, |
120 | { .xhi: -0x1.0000000000001p32, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xffffffff00000000) }, |
121 | { .xhi: -0x1.00000001p32, .xlo: 0x1.fffffffffffffp-24, INT64_C(0xffffffff00000000) }, |
122 | { .xhi: -0x1.00000001p32, .xlo: 0.0, INT64_C(0xfffffffeffffffff) }, |
123 | { .xhi: -0x1.00000001p32, .xlo: -0x1.fffffffffffffp-24, INT64_C(0xfffffffeffffffff) }, |
124 | |
125 | // Randomly generated in-range values: |
126 | {.xhi: 0x1.00ffc00ffff00p+11, .xlo: 0x1.fe0007fffff00p-45, INT64_C(0x0000000000000807)}, |
127 | {.xhi: -0x1.00001fffff800p+38, .xlo: -0x1.fffffffe00000p-36, INT64_C(0xffffffbffff80001)}, |
128 | {.xhi: 0x1.000003fffc002p+48, .xlo: -0x1.0000000000000p-57, INT64_C(0x0001000003fffc00)}, |
129 | {.xhi: -0x1.000003ffffffep+3, .xlo: 0x1.ffe0080000000p-81, INT64_C(0xfffffffffffffff8)}, |
130 | {.xhi: 0x1.0800000000000p+21, .xlo: -0x1.0000000000000p-75, INT64_C(0x000000000020ffff)}, |
131 | {.xhi: -0x1.007fffffe0000p+61, .xlo: 0x0.0000000000000p+0, INT64_C(0xdff0000004000000)}, |
132 | {.xhi: 0x1.3fe0000100000p+33, .xlo: -0x1.0000000000000p-40, INT64_C(0x000000027fc00001)}, |
133 | {.xhi: -0x1.0001fff800000p+1, .xlo: -0x1.ffffff0000ffep-53, INT64_C(0xfffffffffffffffe)}, |
134 | {.xhi: 0x1.0000800000000p+54, .xlo: -0x1.ffffffe400000p-9, INT64_C(0x0040001fffffffff)}, |
135 | {.xhi: -0x1.007fffffffc00p+15, .xlo: -0x1.fffffc0000000p-56, INT64_C(0xffffffffffff7fc1)}, |
136 | {.xhi: 0x1.0080000000000p+13, .xlo: -0x1.0000000000000p-60, INT64_C(0x000000000000200f)}, |
137 | {.xhi: -0x1.00f3ffffff000p+56, .xlo: -0x1.fff8000000000p-12, INT64_C(0xfeff0c0000010000)}, |
138 | {.xhi: 0x1.3dfffffffc000p+47, .xlo: 0x1.ff000003ffe00p-14, INT64_C(0x00009efffffffe00)}, |
139 | {.xhi: -0x1.0000001ffff80p+12, .xlo: -0x1.fffffdfffff8ep-42, INT64_C(0xfffffffffffff000)}, |
140 | {.xhi: 0x1.0000000000000p+4, .xlo: -0x1.0000000000000p-66, INT64_C(0x000000000000000f)}, |
141 | {.xhi: -0x1.001fffffffe00p+39, .xlo: 0x0.0000000000000p+0, INT64_C(0xffffff7ff0000001)}, |
142 | {.xhi: 0x1.00000007ff800p+5, .xlo: 0x1.ffff800000000p-83, INT64_C(0x0000000000000020)}, |
143 | {.xhi: -0x1.000ffffff8000p+57, .xlo: -0x1.ffffffffffc00p+2, INT64_C(0xfdffe000000ffff9)}, |
144 | {.xhi: 0x1.007fbfffffcf0p+43, .xlo: 0x1.ffff803ffe000p-12, INT64_C(0x00000803fdfffffe)}, |
145 | {.xhi: -0x1.01ffffffc0004p+24, .xlo: 0x1.fffc100000000p-37, INT64_C(0xfffffffffefe0001)}, |
146 | {.xhi: 0x1.0000001000000p+19, .xlo: -0x1.ffffff0000800p-45, INT64_C(0x0000000000080000)}, |
147 | {.xhi: -0x1.00000003ff800p+25, .xlo: -0x1.ffffe00000000p-61, INT64_C(0xfffffffffe000000)}, |
148 | {.xhi: 0x1.0000001000000p+23, .xlo: -0x1.fffffff804000p-44, INT64_C(0x0000000000800000)}, |
149 | {.xhi: -0x1.0008000000000p+20, .xlo: 0x1.0000000000000p-48, INT64_C(0xffffffffffefff81)}, |
150 | {.xhi: 0x1.0000183ffffc0p+60, .xlo: 0x1.fff07fcfffffcp+6, INT64_C(0x10000183ffffc07f)}, |
151 | {.xhi: -0x1.0001000000000p+42, .xlo: 0x1.fffffff800400p-21, INT64_C(0xfffffbfffc000001)}, |
152 | {.xhi: 0x1.0000800000000p+11, .xlo: -0x1.fffff80100000p-62, INT64_C(0x0000000000000800)}, |
153 | {.xhi: -0x1.1fffffff00000p+28, .xlo: -0x1.fffffff000000p-49, INT64_C(0xffffffffee000001)}, |
154 | {.xhi: 0x1.fffffc0000100p+59, .xlo: -0x1.fffe000040000p-12, INT64_C(0x0fffffe000007fff)}, |
155 | {.xhi: -0x1.0000800000000p+39, .xlo: 0x1.c000fffffffd0p-18, INT64_C(0xffffff7fffc00001)}, |
156 | {.xhi: 0x1.3ff8007ffffc0p+61, .xlo: 0x1.e0007ff000000p-5, INT64_C(0x27ff000fffff8000)}, |
157 | {.xhi: -0x1.ffffffe000000p+13, .xlo: 0x1.ff80000020000p-43, INT64_C(0xffffffffffffc001)}, |
158 | {.xhi: 0x1.7fffe00800000p+35, .xlo: -0x1.0000000000000p-70, INT64_C(0x0000000bffff003f)}, |
159 | {.xhi: -0x1.0000400000000p+62, .xlo: 0x1.0000000000000p-29, INT64_C(0xbffff00000000001)}, |
160 | {.xhi: 0x1.4000000000000p+31, .xlo: -0x1.ffffffff00020p-27, INT64_C(0x000000009fffffff)}, |
161 | {.xhi: -0x1.0000010000000p+29, .xlo: 0x1.8000000000020p-29, INT64_C(0xffffffffdfffffe1)}, |
162 | {.xhi: 0x1.7fffffffc0000p+45, .xlo: 0x1.fffc000000000p-25, INT64_C(0x00002ffffffff800)}, |
163 | {.xhi: -0x1.0000001fe0000p+46, .xlo: -0x1.fffffc0001f00p-15, INT64_C(0xffffbffffff80800)}, |
164 | {.xhi: 0x1.0000004000000p+54, .xlo: -0x1.0000000000000p-4, INT64_C(0x004000000fffffff)}, |
165 | {.xhi: -0x1.8000000000000p+48, .xlo: 0x1.ffe7ffc001000p-17, INT64_C(0xfffe800000000001)}, |
166 | {.xhi: 0x1.007fc00007800p+34, .xlo: 0x1.e0000f80001e0p-24, INT64_C(0x0000000401ff0000)}, |
167 | {.xhi: -0x1.3fffff0000000p+8, .xlo: -0x1.fffffe0000000p-55, INT64_C(0xfffffffffffffec1)}, |
168 | {.xhi: 0x1.0000200000000p+14, .xlo: -0x1.0000000000000p-91, INT64_C(0x0000000000004000)}, |
169 | {.xhi: -0x1.00000fffffff8p+1, .xlo: -0x1.fffffffc00000p-58, INT64_C(0xfffffffffffffffe)}, |
170 | {.xhi: 0x1.001fffc000400p+34, .xlo: -0x1.e000000001000p-31, INT64_C(0x00000004007fff00)}, |
171 | {.xhi: -0x1.0200000000000p+41, .xlo: 0x1.0000000000000p-62, INT64_C(0xfffffdfc00000001)}, |
172 | {.xhi: 0x1.03ffffffe0000p+55, .xlo: 0x1.ff80000000000p-34, INT64_C(0x0081fffffff00000)}, |
173 | {.xhi: -0x1.0010000000000p+45, .xlo: 0x1.0000000000000p-32, INT64_C(0xffffdffe00000001)}, |
174 | {.xhi: 0x1.0000008000000p+31, .xlo: -0x1.fff0000000100p-28, INT64_C(0x000000008000003f)}, |
175 | {.xhi: -0x1.0000c00400000p+26, .xlo: 0x1.ff80800000000p-55, INT64_C(0xfffffffffbfffd00)}, |
176 | {.xhi: 0x1.0000007fff000p+48, .xlo: 0x1.ffffff8000000p-27, INT64_C(0x00010000007fff00)}, |
177 | {.xhi: -0x1.3ffffff800200p+60, .xlo: 0x1.0000000000000p-17, INT64_C(0xec0000007ffe0001)}, |
178 | {.xhi: 0x1.0000200000000p+8, .xlo: -0x1.ffffffffffc40p-51, INT64_C(0x0000000000000100)}, |
179 | {.xhi: -0x1.007ffffffff80p+54, .xlo: -0x1.fffffffe00000p-20, INT64_C(0xffbfe00000000200)}, |
180 | {.xhi: 0x1.00003ffffff00p+25, .xlo: 0x1.ffc003ffffe00p-30, INT64_C(0x000000000200007f)}, |
181 | {.xhi: -0x1.0200000000000p+26, .xlo: 0x1.c000000000008p-30, INT64_C(0xfffffffffbf80001)}, |
182 | {.xhi: 0x1.1fffffc000000p+8, .xlo: 0x1.ffffffffffff0p-49, INT64_C(0x000000000000011f)}, |
183 | {.xhi: -0x1.007fc00000800p+2, .xlo: 0x1.fffff03fff000p-58, INT64_C(0xfffffffffffffffc)}, |
184 | {.xhi: 0x1.00007fffff000p+31, .xlo: 0x1.ffffffff00000p-41, INT64_C(0x0000000080003fff)}, |
185 | {.xhi: -0x1.0000003ffff80p+54, .xlo: -0x1.fffffefff8000p-14, INT64_C(0xffbffffff0000200)}, |
186 | {.xhi: 0x1.00007ffc00000p+46, .xlo: 0x1.ffffe00000000p-23, INT64_C(0x000040001fff0000)}, |
187 | {.xhi: -0x1.3fffffc004000p+8, .xlo: 0x1.ffffe00010000p-56, INT64_C(0xfffffffffffffec1)}, |
188 | {.xhi: 0x1.01fffffffe000p+49, .xlo: 0x1.fffc000000000p-39, INT64_C(0x000203fffffffc00)}, |
189 | {.xhi: -0x1.07ffffff80000p+54, .xlo: -0x1.8007ffffc0000p-17, INT64_C(0xffbe000000200000)}, |
190 | {.xhi: 0x1.00003ff810000p+56, .xlo: -0x1.fffffffc00800p-8, INT64_C(0x0100003ff80fffff)}, |
191 | {.xhi: -0x1.01ffffff00004p+25, .xlo: 0x1.0000000000000p-65, INT64_C(0xfffffffffdfc0001)}, |
192 | {.xhi: 0x1.000000ffffff8p+11, .xlo: 0x1.ffe0000000000p-61, INT64_C(0x0000000000000800)}, |
193 | {.xhi: -0x1.001f03f07ff00p+10, .xlo: -0x1.ffffff8000000p-63, INT64_C(0xfffffffffffffc00)}, |
194 | {.xhi: 0x1.00003fffffffcp+9, .xlo: 0x1.ffe0000700000p-64, INT64_C(0x0000000000000200)}, |
195 | {.xhi: -0x1.0000100000000p+27, .xlo: 0x1.0000000000000p-55, INT64_C(0xfffffffff7ffff81)}, |
196 | {.xhi: 0x1.0000020000000p+62, .xlo: -0x1.0000000000000p-30, INT64_C(0x4000007fffffffff)}, |
197 | {.xhi: -0x1.00001fffcffc0p+52, .xlo: 0x1.fffe000000004p-3, INT64_C(0xffeffffe00030041)}, |
198 | {.xhi: 0x1.03fffff800000p+47, .xlo: 0x1.fffffe0000000p-21, INT64_C(0x000081fffffc0000)}, |
199 | {.xhi: -0x1.000fff8000000p+0, .xlo: -0x1.fffffe0000000p-62, INT64_C(0xffffffffffffffff)}, |
200 | {.xhi: 0x1.0003fc0000000p+57, .xlo: 0x1.ffff80ffffc00p+0, INT64_C(0x020007f800000001)}, |
201 | {.xhi: -0x1.0300000001f00p+61, .xlo: -0x1.fffffff800000p-15, INT64_C(0xdf9fffffffc20000)}, |
202 | {.xhi: 0x1.fffff1ff80000p+43, .xlo: 0x1.ffffc000fe000p-12, INT64_C(0x00000fffff8ffc00)}, |
203 | {.xhi: -0x1.000001d000000p+33, .xlo: 0x1.ff80000200000p-22, INT64_C(0xfffffffdfffffc61)}, |
204 | {.xhi: 0x1.000007fffffc0p+24, .xlo: 0x1.fc0003fc00000p-36, INT64_C(0x0000000001000007)}, |
205 | {.xhi: -0x1.0000004000000p+23, .xlo: 0x1.fff0000004000p-44, INT64_C(0xffffffffff800000)}, |
206 | {.xhi: 0x1.0fc007c004000p+9, .xlo: -0x1.fffe100000000p-55, INT64_C(0x000000000000021f)}, |
207 | {.xhi: -0x1.00007fffffe00p+13, .xlo: -0x1.ffffffc003f00p-48, INT64_C(0xffffffffffffe000)}, |
208 | {.xhi: 0x1.0080000000000p+24, .xlo: -0x1.0000000000000p-34, INT64_C(0x0000000001007fff)}, |
209 | {.xhi: -0x1.00000ffffff80p+60, .xlo: -0x1.ffffff0007ff8p+4, INT64_C(0xefffff0000007fe1)}, |
210 | {.xhi: 0x1.01e0000000002p+44, .xlo: -0x1.fffffffffc200p-15, INT64_C(0x0000101e00000000)}, |
211 | {.xhi: -0x1.0000080000000p+35, .xlo: 0x1.0000000000000p-70, INT64_C(0xfffffff7ffffc001)}, |
212 | {.xhi: 0x1.000000f1fe001p+23, .xlo: -0x1.0000000000000p-60, INT64_C(0x0000000000800000)}, |
213 | {.xhi: -0x1.00003fffffff0p+40, .xlo: -0x1.fc00000000000p-37, INT64_C(0xfffffeffffc00001)}, |
214 | {.xhi: 0x1.00001ffff0000p+16, .xlo: 0x1.ffff80001f000p-41, INT64_C(0x0000000000010000)}, |
215 | {.xhi: -0x1.0000100000000p+12, .xlo: 0x1.0000000000000p-93, INT64_C(0xfffffffffffff000)}, |
216 | {.xhi: 0x1.0038000800000p+41, .xlo: -0x1.fffffe0000080p-19, INT64_C(0x0000020070000fff)}, |
217 | {.xhi: -0x1.00003fe008000p+14, .xlo: 0x1.fffdff0000080p-45, INT64_C(0xffffffffffffc000)}, |
218 | {.xhi: 0x1.0000100000000p+42, .xlo: -0x1.0000000000000p-52, INT64_C(0x00000400003fffff)}, |
219 | {.xhi: -0x1.00003ff002010p+17, .xlo: 0x1.0000020000000p-48, INT64_C(0xfffffffffffe0000)}, |
220 | {.xhi: 0x1.00ffffffc0000p+8, .xlo: 0x1.fffffe00003f0p-47, INT64_C(0x0000000000000100)}, |
221 | {.xhi: -0x1.1fffffffff020p+39, .xlo: 0x1.ffff000400000p-36, INT64_C(0xffffff7000000001)}, |
222 | {.xhi: 0x1.0200000000000p+33, .xlo: -0x1.0000000000000p-20, INT64_C(0x0000000203ffffff)}, |
223 | {.xhi: -0x1.0000700000000p+0, .xlo: -0x1.ffffffe000000p-71, INT64_C(0xffffffffffffffff)}, |
224 | {.xhi: 0x1.00000ffffffd0p+33, .xlo: -0x1.ffffff8200000p-33, INT64_C(0x0000000200001fff)}, |
225 | {.xhi: -0x1.00000c0000004p+59, .xlo: 0x1.ff80000800000p-9, INT64_C(0xf7ffff9ffffffe01)}, |
226 | {.xhi: 0x1.1ffff80000040p+5, .xlo: -0x1.0000000000000p-85, INT64_C(0x0000000000000023)}, |
227 | {.xhi: -0x1.0ffffff9ffff0p+58, .xlo: -0x1.f800008200000p-12, INT64_C(0xfbc0000018000400)}, |
228 | {.xhi: 0x1.000000ffffff8p+13, .xlo: 0x1.ff0000007ffc0p-46, INT64_C(0x0000000000002000)}, |
229 | {.xhi: -0x1.0000008000000p+6, .xlo: 0x1.fffffc0000008p-50, INT64_C(0xffffffffffffffc0)}, |
230 | {.xhi: 0x1.0000200000000p+25, .xlo: -0x1.fffffff804000p-42, INT64_C(0x000000000200003f)}, |
231 | {.xhi: -0x1.0000080000000p+61, .xlo: 0x1.0000000000000p-34, INT64_C(0xdfffff0000000001)}, |
232 | {.xhi: 0x1.03ffff0000010p+42, .xlo: -0x1.fffc010000000p-34, INT64_C(0x0000040ffffc0000)}, |
233 | {.xhi: -0x1.7ffffffc00000p+38, .xlo: -0x1.fff80000fc000p-23, INT64_C(0xffffffa000000100)}, |
234 | {.xhi: 0x1.0010000000000p+23, .xlo: -0x1.ffffffffc4000p-44, INT64_C(0x00000000008007ff)}, |
235 | {.xhi: -0x1.000007fffc004p+7, .xlo: 0x1.8000004000000p-52, INT64_C(0xffffffffffffff80)}, |
236 | {.xhi: 0x1.7fe000001ff00p+11, .xlo: 0x1.f000000000000p-90, INT64_C(0x0000000000000bff)}, |
237 | {.xhi: -0x1.0ffffff000000p+0, .xlo: -0x1.fffffff000000p-70, INT64_C(0xffffffffffffffff)}, |
238 | {.xhi: 0x1.0000010000000p+45, .xlo: -0x1.ffffffffe4000p-17, INT64_C(0x00002000001fffff)}, |
239 | {.xhi: -0x1.0000020000000p+50, .xlo: 0x1.ff80000100000p-23, INT64_C(0xfffbfffff8000001)}, |
240 | {.xhi: 0x1.1ffffffff8000p+8, .xlo: 0x1.fe001ffffffe0p-48, INT64_C(0x000000000000011f)}, |
241 | {.xhi: -0x1.0000000fffe00p+44, .xlo: -0x1.3fffff87fc000p-16, INT64_C(0xffffefffffff0002)}, |
242 | {.xhi: 0x1.0000000800000p+3, .xlo: -0x1.0000000000000p-102, INT64_C(0x0000000000000008)}, |
243 | {.xhi: -0x1.00fffffff8000p+3, .xlo: -0x1.fffe000000000p-71, INT64_C(0xfffffffffffffff8)}, |
244 | {.xhi: 0x1.0007ffffffff0p+60, .xlo: 0x1.fffffc0000000p-23, INT64_C(0x10007ffffffff000)}, |
245 | {.xhi: -0x1.0003800000080p+32, .xlo: 0x1.0000000000000p-73, INT64_C(0xfffffffefffc8000)}, |
246 | {.xhi: 0x1.000001fffff80p+14, .xlo: 0x1.ff00000000000p-70, INT64_C(0x0000000000004000)}, |
247 | {.xhi: -0x1.000007ffffe00p+52, .xlo: 0x1.fe0c000004000p-6, INT64_C(0xffefffff80000201)}, |
248 | {.xhi: 0x1.00000003f0000p+56, .xlo: 0x1.ffffffe000000p-22, INT64_C(0x0100000003f00000)}, |
249 | {.xhi: -0x1.0100000000000p+5, .xlo: 0x1.fffffff000080p-55, INT64_C(0xffffffffffffffe0)}, |
250 | {.xhi: 0x1.007fffffffc00p+16, .xlo: 0x1.fffffe0000000p-66, INT64_C(0x000000000001007f)}, |
251 | {.xhi: -0x1.007ffffffc000p+11, .xlo: -0x1.ffffff8000000p-56, INT64_C(0xfffffffffffff7fd)}, |
252 | {.xhi: 0x1.0003fffffffe0p+61, .xlo: 0x1.fffffff000780p+1, INT64_C(0x20007fffffffc003)}, |
253 | {.xhi: -0x1.1ffff00800000p+3, .xlo: 0x1.0000000000000p-94, INT64_C(0xfffffffffffffff8)}, |
254 | {.xhi: 0x1.000003fff8000p+9, .xlo: 0x1.ffff00000003cp-46, INT64_C(0x0000000000000200)}, |
255 | {.xhi: -0x1.000001ffff020p+48, .xlo: 0x1.fff0000200000p-22, INT64_C(0xfffefffffe0000ff)}, |
256 | {.xhi: 0x1.00ffe00000000p+43, .xlo: 0x1.fe00000000000p-17, INT64_C(0x00000807ff000000)}, |
257 | {.xhi: -0x1.0000100000000p+29, .xlo: 0x1.ffff800010000p-40, INT64_C(0xffffffffdffffe01)}, |
258 | {.xhi: 0x1.0100000000000p+52, .xlo: -0x1.0000000000000p-35, INT64_C(0x00100fffffffffff)}, |
259 | {.xhi: -0x1.000003fff8001p+19, .xlo: 0x1.0000000000000p-64, INT64_C(0xfffffffffff80000)}, |
260 | {.xhi: 0x1.00f8000200000p+40, .xlo: -0x1.ff80000100000p-33, INT64_C(0x00000100f80001ff)}, |
261 | {.xhi: -0x1.003ffffffe000p+23, .xlo: -0x1.f007fffffc000p-36, INT64_C(0xffffffffff7fe001)}, |
262 | {.xhi: 0x1.0000080000000p+55, .xlo: -0x1.0000000000000p-50, INT64_C(0x00800003ffffffff)}, |
263 | {.xhi: -0x1.0200000000000p+52, .xlo: 0x1.0000000000000p-18, INT64_C(0xffefe00000000001)}, |
264 | {.xhi: 0x1.03fffffc00000p+6, .xlo: 0x1.fe0000c000000p-54, INT64_C(0x0000000000000040)}, |
265 | {.xhi: -0x1.7ff0000040000p+38, .xlo: 0x1.0000000000000p-37, INT64_C(0xffffffa003fffff1)}, |
266 | {.xhi: 0x1.0000018000010p+16, .xlo: -0x1.fffffe0200000p-58, INT64_C(0x0000000000010000)}, |
267 | {.xhi: -0x1.001ffffffff00p+30, .xlo: -0x1.ffffffe000000p-25, INT64_C(0xffffffffbff80001)}, |
268 | {.xhi: 0x1.07fc000007ffep+52, .xlo: 0x1.8000000010000p-17, INT64_C(0x00107fc000007ffe)}, |
269 | {.xhi: -0x1.0007fffffff00p+11, .xlo: -0x1.fffe000000000p-79, INT64_C(0xfffffffffffff800)}, |
270 | {.xhi: 0x1.0000003fffffcp+31, .xlo: 0x1.fffff8007fff0p-26, INT64_C(0x000000008000001f)}, |
271 | {.xhi: -0x1.0000003f000f8p+4, .xlo: -0x1.fffc03fffe000p-54, INT64_C(0xfffffffffffffff0)}, |
272 | {.xhi: 0x1.00000007ffe00p+2, .xlo: 0x1.ffffe000007f8p-54, INT64_C(0x0000000000000004)}, |
273 | {.xhi: -0x1.00001fffc0000p+12, .xlo: -0x1.fffffffffe1f0p-45, INT64_C(0xfffffffffffff000)}, |
274 | {.xhi: 0x1.00001fffff801p+23, .xlo: -0x1.80003f0000040p-36, INT64_C(0x000000000080000f)}, |
275 | {.xhi: -0x1.00001ffffe000p+23, .xlo: -0x1.f00001f000000p-41, INT64_C(0xffffffffff7ffff1)}, |
276 | {.xhi: 0x1.0000007007f80p+38, .xlo: 0x1.c00ffffffe000p-27, INT64_C(0x0000004000001c01)}, |
277 | {.xhi: -0x1.0000010000000p+26, .xlo: 0x1.0000000000000p-79, INT64_C(0xfffffffffbfffffd)}, |
278 | {.xhi: 0x1.0000002000000p+7, .xlo: -0x1.0000000000000p-98, INT64_C(0x0000000000000080)}, |
279 | {.xhi: -0x1.00001ffe00010p+13, .xlo: 0x1.0000000000000p-69, INT64_C(0xffffffffffffe000)}, |
280 | {.xhi: 0x1.0fe0000008000p+30, .xlo: -0x1.c00007fffc100p-31, INT64_C(0x0000000043f80000)}, |
281 | {.xhi: -0x1.0000001fc0000p+0, .xlo: -0x1.ffc003ffff000p-65, INT64_C(0xffffffffffffffff)}, |
282 | {.xhi: 0x1.00007e3fffff0p+44, .xlo: 0x1.ffff000000000p-28, INT64_C(0x0000100007e3ffff)}, |
283 | {.xhi: -0x1.ffffff0002000p+56, .xlo: 0x1.ffffc00000040p+2, INT64_C(0xfe000000fffe0008)}, |
284 | {.xhi: 0x1.0000ffffffc00p+21, .xlo: 0x1.ffffffffffe00p-41, INT64_C(0x000000000020001f)}, |
285 | {.xhi: -0x1.07ffff0000000p+35, .xlo: -0x1.ffff0003ffffep-19, INT64_C(0xfffffff7c0000800)}, |
286 | {.xhi: 0x1.0000040000000p+18, .xlo: -0x1.0000000000000p-74, INT64_C(0x0000000000040000)}, |
287 | {.xhi: -0x1.0003ffffffe00p+55, .xlo: -0x1.ffff800000000p-13, INT64_C(0xff7ffe0000001000)}, |
288 | {.xhi: 0x1.001fc00000300p+30, .xlo: -0x1.ffff000040000p-41, INT64_C(0x000000004007f000)}, |
289 | {.xhi: -0x1.07fffffc01000p+11, .xlo: 0x1.ffffffe002000p-46, INT64_C(0xfffffffffffff7c1)}, |
290 | {.xhi: 0x1.03ffff81f8001p+55, .xlo: -0x1.f800800000000p-22, INT64_C(0x0081ffffc0fc0007)}, |
291 | {.xhi: -0x1.0040000000000p+4, .xlo: 0x1.fffffffffffe0p-54, INT64_C(0xfffffffffffffff0)}, |
292 | {.xhi: 0x1.0008000000000p+47, .xlo: -0x1.ffffffff01000p-18, INT64_C(0x00008003ffffffff)}, |
293 | {.xhi: -0x1.0000010000000p+23, .xlo: 0x1.0000000000000p-82, INT64_C(0xffffffffff800000)}, |
294 | {.xhi: 0x1.0000007fffff4p+62, .xlo: -0x1.f800003ffffe0p+4, INT64_C(0x4000001fffffcfe0)}, |
295 | {.xhi: -0x1.0000001ff8000p+12, .xlo: -0x1.8003fffff0c00p-51, INT64_C(0xfffffffffffff000)}, |
296 | {.xhi: 0x1.00000007ffff8p+62, .xlo: 0x1.ffffffffff000p+7, INT64_C(0x40000001ffffe0ff)}, |
297 | {.xhi: -0x1.03ffffffffff8p+5, .xlo: -0x1.fffffffc00000p-70, INT64_C(0xffffffffffffffe0)}, |
298 | {.xhi: 0x1.0003f00000040p+58, .xlo: -0x1.fffffe0800000p-18, INT64_C(0x04000fc000000fff)}, |
299 | {.xhi: -0x1.07fffffc00100p+55, .xlo: 0x1.0000000000000p-27, INT64_C(0xff7c000001fff801)}, |
300 | {.xhi: 0x1.fffffe0000000p+57, .xlo: 0x1.ffffffff00000p-16, INT64_C(0x03fffffc00000000)}, |
301 | {.xhi: -0x1.0000000ffffe0p+53, .xlo: -0x1.fffffff000000p-16, INT64_C(0xffdffffffe000040)}, |
302 | {.xhi: 0x1.0001fffff8000p-1, .xlo: 0x1.fffffff800000p-69, INT64_C(0x0000000000000000)}, |
303 | {.xhi: -0x1.001fffffff000p+45, .xlo: -0x1.fffffc0000000p-13, INT64_C(0xffffdffc00000020)}, |
304 | {.xhi: 0x1.000f00007fff8p+2, .xlo: 0x1.ffffff8000000p-60, INT64_C(0x0000000000000004)}, |
305 | {.xhi: -0x1.0080000000000p+46, .xlo: 0x1.0000000000000p-37, INT64_C(0xffffbfe000000001)}, |
306 | {.xhi: 0x1.7fffffffffffep+34, .xlo: 0x0.0000000000000p+0, INT64_C(0x00000005ffffffff)}, |
307 | {.xhi: -0x1.00000007ffffep+2, .xlo: -0x1.ff003f8000380p-53, INT64_C(0xfffffffffffffffc)}, |
308 | {.xhi: 0x1.0067ffffe0000p+19, .xlo: 0x1.fffffff800000p-52, INT64_C(0x000000000008033f)}, |
309 | {.xhi: -0x1.1ff1000000000p+12, .xlo: 0x1.fff0000100000p-61, INT64_C(0xffffffffffffee01)}, |
310 | {.xhi: 0x1.0000100000000p+46, .xlo: -0x1.0000000000000p-33, INT64_C(0x0000400003ffffff)}, |
311 | {.xhi: -0x1.0000ffe000080p+14, .xlo: 0x1.fffffe0002000p-50, INT64_C(0xffffffffffffc000)}, |
312 | {.xhi: 0x1.0000100000000p+22, .xlo: -0x1.ffffff0020000p-36, INT64_C(0x0000000000400003)}, |
313 | {.xhi: -0x1.001fffff01f00p+22, .xlo: -0x1.fffffff800000p-44, INT64_C(0xffffffffffbff801)}, |
314 | {.xhi: 0x1.0000ffc000000p+35, .xlo: 0x1.ff003fffffe00p-27, INT64_C(0x000000080007fe00)}, |
315 | {.xhi: -0x1.07c0000001ff8p+54, .xlo: -0x1.fffff00000000p-26, INT64_C(0xffbe0fffffff8020)}, |
316 | {.xhi: 0x1.0000400000000p+12, .xlo: -0x1.8000000400000p-60, INT64_C(0x0000000000001000)}, |
317 | {.xhi: -0x1.0000000300000p+30, .xlo: 0x0.0000000000000p+0, INT64_C(0xffffffffc0000000)}, |
318 | {.xhi: 0x1.00ff000008000p+29, .xlo: -0x1.fffff02000000p-38, INT64_C(0x00000000201fe000)}, |
319 | {.xhi: -0x1.000fffff80000p+29, .xlo: -0x1.3ffffffc00000p-46, INT64_C(0xffffffffdffe0001)}, |
320 | {.xhi: 0x1.007f8000007fcp+9, .xlo: 0x1.fffffe0000000p-58, INT64_C(0x0000000000000200)}, |
321 | {.xhi: -0x1.1ffffffffc004p+23, .xlo: 0x1.0000000000000p-75, INT64_C(0xffffffffff700001)}, |
322 | {.xhi: 0x1.0000001f00010p+29, .xlo: -0x1.0000000000000p-45, INT64_C(0x0000000020000003)}, |
323 | {.xhi: -0x1.0007fffffe000p+5, .xlo: -0x1.fffff80000300p-56, INT64_C(0xffffffffffffffe0)}, |
324 | {.xhi: 0x1.00003f0000800p+41, .xlo: -0x1.ffffff8000080p-13, INT64_C(0x00000200007e0000)}, |
325 | {.xhi: -0x1.000001ffffff0p+0, .xlo: -0x1.fffc000000000p-80, INT64_C(0xffffffffffffffff)}, |
326 | {.xhi: 0x1.00007ffc00080p+24, .xlo: -0x1.ffffffc000100p-30, INT64_C(0x000000000100007f)}, |
327 | {.xhi: -0x1.0ffe000100000p+38, .xlo: 0x1.fff8200000000p-48, INT64_C(0xffffffbc007fffc1)}, |
328 | {.xhi: 0x1.fffffff000008p+5, .xlo: -0x1.8001000000000p-67, INT64_C(0x000000000000003f)}, |
329 | {.xhi: -0x1.0000000800000p+32, .xlo: 0x1.ffffc00200000p-24, INT64_C(0xfffffffefffffff9)}, |
330 | {.xhi: 0x1.7fffc00000000p+58, .xlo: 0x1.ffffe00000000p-28, INT64_C(0x05ffff0000000000)}, |
331 | {.xhi: -0x1.00fffffffff80p+40, .xlo: 0x0.0000000000000p+0, INT64_C(0xfffffeff00000001)}, |
332 | {.xhi: 0x1.0010000000000p+28, .xlo: -0x1.0000000000000p-61, INT64_C(0x000000001000ffff)}, |
333 | {.xhi: -0x1.00ffffe07fc00p+30, .xlo: -0x1.fffffc3000000p-24, INT64_C(0xffffffffbfc00008)}, |
334 | {.xhi: 0x1.000ffe0fffffep+38, .xlo: 0x1.ffffc00000000p-49, INT64_C(0x0000004003ff83ff)}, |
335 | {.xhi: -0x1.0000003ff0000p+24, .xlo: -0x1.fffffff080000p-42, INT64_C(0xffffffffff000000)}, |
336 | {.xhi: 0x1.0000e00003ff8p+34, .xlo: 0x1.ffffff8ffc000p-33, INT64_C(0x0000000400038000)}, |
337 | {.xhi: -0x1.0080000000000p+47, .xlo: 0x1.0000000000000p-58, INT64_C(0xffff7fc000000001)}, |
338 | {.xhi: 0x1.0008000000000p+19, .xlo: 0x0.0000000000000p+0, INT64_C(0x0000000000080040)}, |
339 | {.xhi: -0x1.0001fe0000002p+49, .xlo: 0x1.fff0000080008p-7, INT64_C(0xfffdfffc04000000)}, |
340 | {.xhi: 0x1.03c03c0000020p+39, .xlo: -0x1.0000000000000p-40, INT64_C(0x00000081e01e0000)}, |
341 | {.xhi: -0x1.0001fff9c0008p+0, .xlo: 0x1.ffffff0002000p-56, INT64_C(0xffffffffffffffff)}, |
342 | {.xhi: 0x1.ffffffff80000p+49, .xlo: 0x1.fffffffffe000p-17, INT64_C(0x0003ffffffff0000)}, |
343 | {.xhi: -0x1.0000fffc00000p+3, .xlo: -0x1.1ffffe0000000p-60, INT64_C(0xfffffffffffffff8)}, |
344 | {.xhi: 0x1.0000020000000p+56, .xlo: -0x1.0000000000000p-40, INT64_C(0x01000001ffffffff)}, |
345 | {.xhi: -0x1.007fffffffffcp+41, .xlo: -0x1.fffefffffff80p-19, INT64_C(0xfffffdff00000001)}, |
346 | {.xhi: 0x1.007ffffffffc0p+15, .xlo: 0x1.ffffff8000000p-52, INT64_C(0x000000000000803f)}, |
347 | {.xhi: -0x1.ffffff0000000p+60, .xlo: -0x1.fffffffff0000p-2, INT64_C(0xe000001000000000)}, |
348 | {.xhi: 0x1.00000003f81ffp+0, .xlo: 0x1.ffc0000000000p-82, INT64_C(0x0000000000000001)}, |
349 | {.xhi: -0x1.0000001ff8039p+45, .xlo: 0x1.ffff800080000p-27, INT64_C(0xffffdffffffc0100)}, |
350 | {.xhi: 0x1.0008000000000p+32, .xlo: -0x1.f000000000080p-28, INT64_C(0x000000010007ffff)}, |
351 | {.xhi: -0x1.00c1fffc00000p+21, .xlo: -0x1.ffff800000000p-67, INT64_C(0xffffffffffdfe7c1)}, |
352 | {.xhi: 0x1.1fe0000080000p+15, .xlo: -0x1.fffffe0000008p-39, INT64_C(0x0000000000008ff0)}, |
353 | {.xhi: -0x1.01ffffff00000p+55, .xlo: -0x1.ffffffe000000p-22, INT64_C(0xff7f000000800000)}, |
354 | {.xhi: 0x1.0000003ffffe0p+45, .xlo: 0x0.0000000000000p+0, INT64_C(0x000020000007ffff)}, |
355 | {.xhi: -0x1.003ffffe00000p+21, .xlo: 0x0.0000000000000p+0, INT64_C(0xffffffffffdff801)}, |
356 | {.xhi: 0x1.00007fc000000p+54, .xlo: 0x1.fffffff000000p-3, INT64_C(0x0040001ff0000000)}, |
357 | {.xhi: -0x1.0000000000000p+58, .xlo: 0x1.0000000000000p-14, INT64_C(0xfc00000000000001)}, |
358 | {.xhi: 0x1.0400000000000p+23, .xlo: -0x1.0000000000000p-39, INT64_C(0x000000000081ffff)}, |
359 | {.xhi: -0x1.000003fffff00p+32, .xlo: -0x1.ffc00003c0000p-39, INT64_C(0xfffffffefffffc01)}, |
360 | {.xhi: 0x1.7ffffffffffe0p+9, .xlo: 0x0.0000000000000p+0, INT64_C(0x00000000000002ff)}, |
361 | {.xhi: -0x1.0000fffff0400p+59, .xlo: 0x1.f000000fe0020p+1, INT64_C(0xf7fff800007e0004)}, |
362 | {.xhi: 0x1.0000000400000p+45, .xlo: -0x1.fffe000010200p-17, INT64_C(0x0000200000007fff)}, |
363 | {.xhi: -0x1.0ffe000008000p+41, .xlo: 0x1.ffffffff80100p-20, INT64_C(0xfffffde003fffff1)}, |
364 | {.xhi: 0x1.4000000000000p+34, .xlo: -0x1.0000000000000p-71, INT64_C(0x00000004ffffffff)}, |
365 | {.xhi: -0x1.0000010000000p+54, .xlo: 0x1.0000000000000p-16, INT64_C(0xffbfffffc0000001)}, |
366 | {.xhi: 0x1.fffffffc00000p+21, .xlo: 0x1.fffff801ffffep-33, INT64_C(0x00000000003fffff)}, |
367 | {.xhi: -0x1.00001ff7fc000p+60, .xlo: -0x1.8000000001f80p+0, INT64_C(0xeffffe00803fffff)}, |
368 | {.xhi: 0x1.3e00001000000p+52, .xlo: -0x1.e07ff80001000p-6, INT64_C(0x0013e00000ffffff)}, |
369 | {.xhi: -0x1.0000000400000p+38, .xlo: 0x1.0000000000000p-67, INT64_C(0xffffffbfffffff01)}, |
370 | {.xhi: 0x1.0000010000000p+62, .xlo: -0x1.0000000000000p-12, INT64_C(0x4000003fffffffff)}, |
371 | {.xhi: -0x1.000000ffc0008p+59, .xlo: 0x1.0000000000000p-23, INT64_C(0xf7fffff801fffc01)}, |
372 | {.xhi: 0x1.0000002000000p+55, .xlo: -0x1.ffffffffff004p+0, INT64_C(0x008000000ffffffe)}, |
373 | {.xhi: -0x1.000001fffc000p+62, .xlo: -0x1.fffffffffe000p+1, INT64_C(0xbfffff8000fffffd)}, |
374 | {.xhi: 0x1.001ffff800002p+36, .xlo: -0x1.c3fe800000000p-33, INT64_C(0x0000001001ffff80)}, |
375 | {.xhi: -0x1.00000ffffffe0p+26, .xlo: -0x1.fff8000000000p-61, INT64_C(0xfffffffffbffffc1)}, |
376 | {.xhi: 0x1.00007fe080000p+59, .xlo: -0x1.ff00040000000p-1, INT64_C(0x080003ff03ffffff)}, |
377 | {.xhi: -0x1.0000001000000p+39, .xlo: 0x1.0000000000000p-60, INT64_C(0xffffff7ffffff801)}, |
378 | {.xhi: 0x1.0000003f80002p+48, .xlo: -0x1.0000000000000p-52, INT64_C(0x00010000003f8000)}, |
379 | {.xhi: -0x1.0800000000000p+28, .xlo: 0x1.0000000000000p-26, INT64_C(0xffffffffef800001)}, |
380 | {.xhi: 0x1.0000004000000p+4, .xlo: -0x1.fc000000fff08p-52, INT64_C(0x0000000000000010)}, |
381 | {.xhi: -0x1.0000ff8000000p+55, .xlo: -0x1.f803ff0000000p-26, INT64_C(0xff7fff8040000000)}, |
382 | |
383 | // Out-of-range values: |
384 | {.xhi: 0x1.3fffffff80000p+666, .xlo: 0x1.ffffffff00000p+593, INT64_C(0x7fffffffffffffff)}, |
385 | {.xhi: -0x1.007fffffe0000p+756, .xlo: 0x0.0000000000000p+0, INT64_C(0x8000000000000000)}, |
386 | {.xhi: 0x1.00001ffff8000p+939, .xlo: 0x1.00007f001e000p+884, INT64_C(0x7fffffffffffffff)}, |
387 | {.xhi: -0x1.3dfffffffc000p+294, .xlo: -0x1.ff000003ffe00p+233, INT64_C(0x8000000000000000)}, |
388 | {.xhi: 0x1.0000000000000p+1023, .xlo: -0x1.0000000000000p+953, INT64_C(0x7fffffffffffffff)}, |
389 | {.xhi: -0x1.001fffffffe00p+730, .xlo: 0x0.0000000000000p+0, INT64_C(0x8000000000000000)}, |
390 | {.xhi: 0x1.0000002000000p+702, .xlo: -0x1.0000000000000p+602, INT64_C(0x7fffffffffffffff)}, |
391 | {.xhi: -0x1.01ffffffe0000p+902, .xlo: -0x1.c000000200000p+841, INT64_C(0x8000000000000000)}, |
392 | {.xhi: 0x1.00003fe0c4000p+973, .xlo: -0x1.fffc032000000p+910, INT64_C(0x7fffffffffffffff)}, |
393 | {.xhi: -0x1.000ffffff8000p+593, .xlo: -0x1.ffffffffffc00p+538, INT64_C(0x8000000000000000)}, |
394 | {.xhi: 0x1.0007ffff00000p+383, .xlo: 0x1.fffff80000000p+313, INT64_C(0x7fffffffffffffff)}, |
395 | {.xhi: -0x1.01ffffffc0004p+997, .xlo: 0x1.fffc100000000p+936, INT64_C(0x8000000000000000)}, |
396 | {.xhi: 0x1.0000001000000p+62, .xlo: -0x1.ffffff0000800p-2, INT64_C(0x40000003ffffffff)}, |
397 | {.xhi: -0x1.00000003ff800p+64, .xlo: -0x1.ffffe00000000p-22, INT64_C(0x8000000000000000)}, |
398 | {.xhi: 0x1.003ffffff8000p+696, .xlo: 0x1.f00000007fc00p+638, INT64_C(0x7fffffffffffffff)}, |
399 | {.xhi: -0x1.1ffff80000000p+591, .xlo: -0x1.ffffff7ff8000p+532, INT64_C(0x8000000000000000)}, |
400 | {.xhi: 0x1.00ff000000004p+69, .xlo: -0x1.ffffff0000400p+6, INT64_C(0x7fffffffffffffff)}, |
401 | {.xhi: -0x1.0008000000000p+75, .xlo: 0x1.0000000000000p+7, INT64_C(0x8000000000000000)}, |
402 | {.xhi: 0x1.0000183ffffc0p+670, .xlo: 0x1.fff07fcfffffcp+616, INT64_C(0x7fffffffffffffff)}, |
403 | {.xhi: -0x1.0000010000000p+363, .xlo: 0x1.0000000000000p+288, INT64_C(0x8000000000000000)}, |
404 | {.xhi: 0x1.1fffffff00000p+890, .xlo: 0x1.fffffff000000p+813, INT64_C(0x7fffffffffffffff)}, |
405 | {.xhi: -0x1.0000ffffff000p+38, .xlo: -0x1.ffe000003ffe0p-20, INT64_C(0xffffffbfffc00001)}, |
406 | {.xhi: 0x1.000003fffff80p+967, .xlo: 0x1.f007ffe00fc00p+904, INT64_C(0x7fffffffffffffff)}, |
407 | {.xhi: -0x1.0000ffffff81fp+121, .xlo: -0x1.ffc7fff800000p+57, INT64_C(0x8000000000000000)}, |
408 | {.xhi: 0x1.0000400000000p+600, .xlo: -0x1.0000000000000p+509, INT64_C(0x7fffffffffffffff)}, |
409 | {.xhi: -0x1.0000004000000p+707, .xlo: 0x1.0000000000000p+649, INT64_C(0x8000000000000000)}, |
410 | {.xhi: 0x1.8000000000000p+850, .xlo: -0x1.ffe7ffc001000p+785, INT64_C(0x7fffffffffffffff)}, |
411 | {.xhi: -0x1.0000000800000p+842, .xlo: 0x1.fffffff400000p+767, INT64_C(0x8000000000000000)}, |
412 | {.xhi: 0x1.007fc00007800p+448, .xlo: 0x1.e0000f80001e0p+390, INT64_C(0x7fffffffffffffff)}, |
413 | {.xhi: -0x1.3fffff0000000p+131, .xlo: -0x1.fffffe0000000p+68, INT64_C(0x8000000000000000)}, |
414 | {.xhi: 0x1.0000200000000p+733, .xlo: -0x1.0000000000000p+628, INT64_C(0x7fffffffffffffff)}, |
415 | {.xhi: -0x1.7fe0000000008p+383, .xlo: 0x1.fffff3ff80200p+321, INT64_C(0x8000000000000000)}, |
416 | |
417 | // Values smaller than one: |
418 | {.xhi: 0x1.00001ffffff00p-784, .xlo: 0x1.fffff83ff8000p-839, INT64_C(0x0000000000000000)}, |
419 | {.xhi: -0x1.00ffc00ffff00p-771, .xlo: -0x1.fe0007fffff00p-827, INT64_C(0x0000000000000000)}, |
420 | {.xhi: 0x1.00001fffff800p-705, .xlo: 0x1.fffffffe00000p-779, INT64_C(0x0000000000000000)}, |
421 | {.xhi: -0x1.0000000800000p-800, .xlo: 0x1.0000000000000p-872, INT64_C(0x0000000000000000)}, |
422 | {.xhi: 0x1.000003fffc002p-916, .xlo: -0x1.0000000000000p-1021, INT64_C(0x0000000000000000)}, |
423 | {.xhi: -0x1.000003ffffffep-19, .xlo: 0x1.ffe0080000000p-103, INT64_C(0x0000000000000000)}, |
424 | {.xhi: 0x1.0800000000000p-211, .xlo: -0x1.0000000000000p-307, INT64_C(0x0000000000000000)}, |
425 | {.xhi: -0x1.0000007fffc00p-464, .xlo: -0x1.efe0000000000p-558, INT64_C(0x0000000000000000)}, |
426 | {.xhi: 0x1.3fe0000100000p-20, .xlo: -0x1.0000000000000p-93, INT64_C(0x0000000000000000)}, |
427 | {.xhi: -0x1.3fffffffffe00p-397, .xlo: -0x1.fe00040000000p-472, INT64_C(0x0000000000000000)}, |
428 | {.xhi: 0x1.0001fff800000p-371, .xlo: 0x1.ffffff0000ffep-425, INT64_C(0x0000000000000000)}, |
429 | {.xhi: -0x1.00ff000000800p-806, .xlo: 0x1.0000000800000p-872, INT64_C(0x0000000000000000)}, |
430 | {.xhi: 0x1.0000800000000p-723, .xlo: -0x1.ffffffe400000p-786, INT64_C(0x0000000000000000)}, |
431 | {.xhi: -0x1.000001ffffffap-94, .xlo: 0x1.ffe1f80400000p-169, INT64_C(0x0000000000000000)}, |
432 | {.xhi: 0x1.0000010000000p-343, .xlo: -0x1.0000000000000p-448, INT64_C(0x0000000000000000)}, |
433 | {.xhi: -0x1.007fffffffc00p-425, .xlo: -0x1.fffffc0000000p-496, INT64_C(0x0000000000000000)}, |
434 | {.xhi: 0x1.0080000000000p-417, .xlo: -0x1.0000000000000p-490, INT64_C(0x0000000000000000)}, |
435 | {.xhi: -0x1.001ffffffc000p-985, .xlo: -0x1.0000000000000p-1039, INT64_C(0x0000000000000000)}, |
436 | {.xhi: 0x1.000001fffff80p-758, .xlo: 0x1.fffffc001fffcp-813, INT64_C(0x0000000000000000)}, |
437 | {.xhi: -0x1.00f3ffffff000p-189, .xlo: -0x1.fff8000000000p-257, INT64_C(0x0000000000000000)}, |
438 | {.xhi: 0x1.0000001ffff80p-98, .xlo: 0x1.fffffdfffff8ep-152, INT64_C(0x0000000000000000)}, |
439 | {.xhi: -0x1.0001fff800ffep-251, .xlo: -0x1.c000000000000p-354, INT64_C(0x0000000000000000)}, |
440 | {.xhi: 0x1.00000007ff800p-179, .xlo: 0x1.ffff800000000p-267, INT64_C(0x0000000000000000)}, |
441 | {.xhi: -0x1.000001fff8008p-475, .xlo: 0x1.0000000000000p-557, INT64_C(0x0000000000000000)}, |
442 | {.xhi: 0x1.007fbfffffcf0p-964, .xlo: 0x1.ffff803ffe000p-1019, INT64_C(0x0000000000000000)}, |
443 | {.xhi: -0x1.0000001fc4000p-493, .xlo: 0x1.fe003ffe00000p-549, INT64_C(0x0000000000000000)}, |
444 | {.xhi: 0x1.0007e3ffe0000p-845, .xlo: 0x1.fe0ffffffe000p-909, INT64_C(0x0000000000000000)}, |
445 | {.xhi: -0x1.0000200000000p-1021, .xlo: 0x0.0000000000000p+0, INT64_C(0x0000000000000000)}, |
446 | {.xhi: 0x1.0000001000000p-487, .xlo: -0x1.fffffff804000p-554, INT64_C(0x0000000000000000)}, |
447 | {.xhi: -0x1.000000ffff800p-309, .xlo: -0x1.fffffc0000000p-392, INT64_C(0x0000000000000000)}, |
448 | {.xhi: 0x1.0001000000000p-455, .xlo: -0x1.fffffff800400p-518, INT64_C(0x0000000000000000)}, |
449 | {.xhi: -0x1.0000800000000p-998, .xlo: 0x1.0000000000000p-1070, INT64_C(0x0000000000000000)}, |
450 | }; |
451 | |
452 | const int numTestCases = sizeof(testCases) / sizeof(struct testVector); |
453 | |
454 | int64_t __fixtfdi(long double x); |
455 | |
456 | int main(int argc, char *argv[]) { |
457 | |
458 | int i; |
459 | DD input; |
460 | int64_t expected_result, computed_result; |
461 | |
462 | for (i=0; i<numTestCases; ++i) { |
463 | input.hi = testCases[i].xhi; |
464 | input.lo = testCases[i].xlo; |
465 | expected_result = testCases[i].result; |
466 | |
467 | computed_result = __fixtfdi(x: input.ld); |
468 | |
469 | if (computed_result != expected_result) { |
470 | printf(format: "Error for __fixtfdi at %La = ( %a , %a ):\n" , input.ld, input.hi, input.lo); |
471 | printf(format: "\tExpected %016llx ( %lld )\n" , expected_result, expected_result); |
472 | printf(format: "\tComputed %016llx ( %lld )\n" , computed_result, computed_result); |
473 | |
474 | return 1; |
475 | } |
476 | } |
477 | |
478 | return 0; |
479 | } |
480 | |