VirtualBox

source: vbox/trunk/src/libs/softfloat-3e/testfloat/source/genCases_f128.c@ 107044

Last change on this file since 107044 was 94551, checked in by vboxsync, 3 years ago

libs/softfloat: Copied TestFloat-3e from vendor branch and to testfloat subdir. bugref:9898

  • Property svn:eol-style set to native
File size: 53.6 KB
Line 
1
2/*============================================================================
3
4This C source file is part of TestFloat, Release 3e, a package of programs for
5testing the correctness of floating-point arithmetic complying with the IEEE
6Standard for Floating-Point, by John R. Hauser.
7
8Copyright 2011, 2012, 2013, 2014 The Regents of the University of California.
9All rights reserved.
10
11Redistribution and use in source and binary forms, with or without
12modification, are permitted provided that the following conditions are met:
13
14 1. Redistributions of source code must retain the above copyright notice,
15 this list of conditions, and the following disclaimer.
16
17 2. Redistributions in binary form must reproduce the above copyright notice,
18 this list of conditions, and the following disclaimer in the documentation
19 and/or other materials provided with the distribution.
20
21 3. Neither the name of the University nor the names of its contributors may
22 be used to endorse or promote products derived from this software without
23 specific prior written permission.
24
25THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
26EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
28DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
29DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
32ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
36=============================================================================*/
37
38#include <stdbool.h>
39#include <stdint.h>
40#include "platform.h"
41#include "uint128.h"
42#include "random.h"
43#include "softfloat.h"
44#include "genCases.h"
45
46#ifdef FLOAT128
47
48struct sequence {
49 int expNum, term1Num, term2Num;
50 bool done;
51};
52
53enum {
54 f128NumQIn = 22,
55 f128NumQOut = 78,
56 f128NumP1 = 4,
57 f128NumP2 = 443
58};
59static const uint64_t f128QIn[f128NumQIn] = {
60 UINT64_C( 0x0000000000000000 ), /* positive, subnormal */
61 UINT64_C( 0x0001000000000000 ), /* positive, -16382 */
62 UINT64_C( 0x3F8E000000000000 ), /* positive, -113 */
63 UINT64_C( 0x3FFD000000000000 ), /* positive, -2 */
64 UINT64_C( 0x3FFE000000000000 ), /* positive, -1 */
65 UINT64_C( 0x3FFF000000000000 ), /* positive, 0 */
66 UINT64_C( 0x4000000000000000 ), /* positive, 1 */
67 UINT64_C( 0x4001000000000000 ), /* positive, 2 */
68 UINT64_C( 0x4070000000000000 ), /* positive, 113 */
69 UINT64_C( 0x7FFE000000000000 ), /* positive, 16383 */
70 UINT64_C( 0x7FFF000000000000 ), /* positive, infinity or NaN */
71 UINT64_C( 0x8000000000000000 ), /* negative, subnormal */
72 UINT64_C( 0x8001000000000000 ), /* negative, -16382 */
73 UINT64_C( 0xBF8E000000000000 ), /* negative, -113 */
74 UINT64_C( 0xBFFD000000000000 ), /* negative, -2 */
75 UINT64_C( 0xBFFE000000000000 ), /* negative, -1 */
76 UINT64_C( 0xBFFF000000000000 ), /* negative, 0 */
77 UINT64_C( 0xC000000000000000 ), /* negative, 1 */
78 UINT64_C( 0xC001000000000000 ), /* negative, 2 */
79 UINT64_C( 0xC070000000000000 ), /* negative, 113 */
80 UINT64_C( 0xFFFE000000000000 ), /* negative, 16383 */
81 UINT64_C( 0xFFFF000000000000 ) /* negative, infinity or NaN */
82};
83static const uint64_t f128QOut[f128NumQOut] = {
84 UINT64_C( 0x0000000000000000 ), /* positive, subnormal */
85 UINT64_C( 0x0001000000000000 ), /* positive, -16382 */
86 UINT64_C( 0x0002000000000000 ), /* positive, -16381 */
87 UINT64_C( 0x3BFE000000000000 ), /* positive, -1025 */
88 UINT64_C( 0x3BFF000000000000 ), /* positive, -1024 */
89 UINT64_C( 0x3C00000000000000 ), /* positive, -1023 */
90 UINT64_C( 0x3C01000000000000 ), /* positive, -1022 */
91 UINT64_C( 0x3F7E000000000000 ), /* positive, -129 */
92 UINT64_C( 0x3F7F000000000000 ), /* positive, -128 */
93 UINT64_C( 0x3F80000000000000 ), /* positive, -127 */
94 UINT64_C( 0x3F81000000000000 ), /* positive, -126 */
95 UINT64_C( 0x3F8E000000000000 ), /* positive, -113 */
96 UINT64_C( 0x3FFB000000000000 ), /* positive, -4 */
97 UINT64_C( 0x3FFC000000000000 ), /* positive, -3 */
98 UINT64_C( 0x3FFD000000000000 ), /* positive, -2 */
99 UINT64_C( 0x3FFE000000000000 ), /* positive, -1 */
100 UINT64_C( 0x3FFF000000000000 ), /* positive, 0 */
101 UINT64_C( 0x4000000000000000 ), /* positive, 1 */
102 UINT64_C( 0x4001000000000000 ), /* positive, 2 */
103 UINT64_C( 0x4002000000000000 ), /* positive, 3 */
104 UINT64_C( 0x4003000000000000 ), /* positive, 4 */
105 UINT64_C( 0x401C000000000000 ), /* positive, 29 */
106 UINT64_C( 0x401D000000000000 ), /* positive, 30 */
107 UINT64_C( 0x401E000000000000 ), /* positive, 31 */
108 UINT64_C( 0x401F000000000000 ), /* positive, 32 */
109 UINT64_C( 0x403C000000000000 ), /* positive, 61 */
110 UINT64_C( 0x403D000000000000 ), /* positive, 62 */
111 UINT64_C( 0x403E000000000000 ), /* positive, 63 */
112 UINT64_C( 0x403F000000000000 ), /* positive, 64 */
113 UINT64_C( 0x4070000000000000 ), /* positive, 113 */
114 UINT64_C( 0x407E000000000000 ), /* positive, 127 */
115 UINT64_C( 0x407F000000000000 ), /* positive, 128 */
116 UINT64_C( 0x4080000000000000 ), /* positive, 129 */
117 UINT64_C( 0x43FE000000000000 ), /* positive, 1023 */
118 UINT64_C( 0x43FF000000000000 ), /* positive, 1024 */
119 UINT64_C( 0x4400000000000000 ), /* positive, 1025 */
120 UINT64_C( 0x7FFD000000000000 ), /* positive, 16382 */
121 UINT64_C( 0x7FFE000000000000 ), /* positive, 16383 */
122 UINT64_C( 0x7FFF000000000000 ), /* positive, infinity or NaN */
123 UINT64_C( 0x8000000000000000 ), /* negative, subnormal */
124 UINT64_C( 0x8001000000000000 ), /* negative, -16382 */
125 UINT64_C( 0x8002000000000000 ), /* negative, -16381 */
126 UINT64_C( 0xBBFE000000000000 ), /* negative, -1025 */
127 UINT64_C( 0xBBFF000000000000 ), /* negative, -1024 */
128 UINT64_C( 0xBC00000000000000 ), /* negative, -1023 */
129 UINT64_C( 0xBC01000000000000 ), /* negative, -1022 */
130 UINT64_C( 0xBF7E000000000000 ), /* negative, -129 */
131 UINT64_C( 0xBF7F000000000000 ), /* negative, -128 */
132 UINT64_C( 0xBF80000000000000 ), /* negative, -127 */
133 UINT64_C( 0xBF81000000000000 ), /* negative, -126 */
134 UINT64_C( 0xBF8E000000000000 ), /* negative, -113 */
135 UINT64_C( 0xBFFB000000000000 ), /* negative, -4 */
136 UINT64_C( 0xBFFC000000000000 ), /* negative, -3 */
137 UINT64_C( 0xBFFD000000000000 ), /* negative, -2 */
138 UINT64_C( 0xBFFE000000000000 ), /* negative, -1 */
139 UINT64_C( 0xBFFF000000000000 ), /* negative, 0 */
140 UINT64_C( 0xC000000000000000 ), /* negative, 1 */
141 UINT64_C( 0xC001000000000000 ), /* negative, 2 */
142 UINT64_C( 0xC002000000000000 ), /* negative, 3 */
143 UINT64_C( 0xC003000000000000 ), /* negative, 4 */
144 UINT64_C( 0xC01C000000000000 ), /* negative, 29 */
145 UINT64_C( 0xC01D000000000000 ), /* negative, 30 */
146 UINT64_C( 0xC01E000000000000 ), /* negative, 31 */
147 UINT64_C( 0xC01F000000000000 ), /* negative, 32 */
148 UINT64_C( 0xC03C000000000000 ), /* negative, 61 */
149 UINT64_C( 0xC03D000000000000 ), /* negative, 62 */
150 UINT64_C( 0xC03E000000000000 ), /* negative, 63 */
151 UINT64_C( 0xC03F000000000000 ), /* negative, 64 */
152 UINT64_C( 0xC070000000000000 ), /* negative, 113 */
153 UINT64_C( 0xC07E000000000000 ), /* negative, 127 */
154 UINT64_C( 0xC07F000000000000 ), /* negative, 128 */
155 UINT64_C( 0xC080000000000000 ), /* negative, 129 */
156 UINT64_C( 0xC3FE000000000000 ), /* negative, 1023 */
157 UINT64_C( 0xC3FF000000000000 ), /* negative, 1024 */
158 UINT64_C( 0xC400000000000000 ), /* negative, 1025 */
159 UINT64_C( 0xFFFD000000000000 ), /* negative, 16382 */
160 UINT64_C( 0xFFFE000000000000 ), /* negative, 16383 */
161 UINT64_C( 0xFFFF000000000000 ) /* negative, infinity or NaN */
162};
163static const struct { uint64_t v64, v0; } f128P1[f128NumP1] = {
164 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000000 ) },
165 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000001 ) },
166 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
167 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFE ) }
168};
169static const struct { uint64_t v64, v0; } f128P2[f128NumP2] = {
170 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000000 ) },
171 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000001 ) },
172 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000002 ) },
173 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000004 ) },
174 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000008 ) },
175 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000010 ) },
176 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000020 ) },
177 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000040 ) },
178 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000080 ) },
179 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000100 ) },
180 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000200 ) },
181 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000400 ) },
182 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000800 ) },
183 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000001000 ) },
184 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000002000 ) },
185 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000004000 ) },
186 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000008000 ) },
187 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000010000 ) },
188 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000020000 ) },
189 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000040000 ) },
190 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000080000 ) },
191 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000100000 ) },
192 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000200000 ) },
193 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000400000 ) },
194 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000800000 ) },
195 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000001000000 ) },
196 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000002000000 ) },
197 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000004000000 ) },
198 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000008000000 ) },
199 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000010000000 ) },
200 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000020000000 ) },
201 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000040000000 ) },
202 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000080000000 ) },
203 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000100000000 ) },
204 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000200000000 ) },
205 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000400000000 ) },
206 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000800000000 ) },
207 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000001000000000 ) },
208 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000002000000000 ) },
209 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000004000000000 ) },
210 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000008000000000 ) },
211 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000010000000000 ) },
212 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000020000000000 ) },
213 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000040000000000 ) },
214 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000080000000000 ) },
215 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000100000000000 ) },
216 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000200000000000 ) },
217 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000400000000000 ) },
218 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000800000000000 ) },
219 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0001000000000000 ) },
220 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0002000000000000 ) },
221 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0004000000000000 ) },
222 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0008000000000000 ) },
223 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0010000000000000 ) },
224 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0020000000000000 ) },
225 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0040000000000000 ) },
226 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0080000000000000 ) },
227 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0100000000000000 ) },
228 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0200000000000000 ) },
229 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0400000000000000 ) },
230 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0800000000000000 ) },
231 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x1000000000000000 ) },
232 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x2000000000000000 ) },
233 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x4000000000000000 ) },
234 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x8000000000000000 ) },
235 { UINT64_C( 0x0000000000000001 ), UINT64_C( 0x0000000000000000 ) },
236 { UINT64_C( 0x0000000000000002 ), UINT64_C( 0x0000000000000000 ) },
237 { UINT64_C( 0x0000000000000004 ), UINT64_C( 0x0000000000000000 ) },
238 { UINT64_C( 0x0000000000000008 ), UINT64_C( 0x0000000000000000 ) },
239 { UINT64_C( 0x0000000000000010 ), UINT64_C( 0x0000000000000000 ) },
240 { UINT64_C( 0x0000000000000020 ), UINT64_C( 0x0000000000000000 ) },
241 { UINT64_C( 0x0000000000000040 ), UINT64_C( 0x0000000000000000 ) },
242 { UINT64_C( 0x0000000000000080 ), UINT64_C( 0x0000000000000000 ) },
243 { UINT64_C( 0x0000000000000100 ), UINT64_C( 0x0000000000000000 ) },
244 { UINT64_C( 0x0000000000000200 ), UINT64_C( 0x0000000000000000 ) },
245 { UINT64_C( 0x0000000000000400 ), UINT64_C( 0x0000000000000000 ) },
246 { UINT64_C( 0x0000000000000800 ), UINT64_C( 0x0000000000000000 ) },
247 { UINT64_C( 0x0000000000001000 ), UINT64_C( 0x0000000000000000 ) },
248 { UINT64_C( 0x0000000000002000 ), UINT64_C( 0x0000000000000000 ) },
249 { UINT64_C( 0x0000000000004000 ), UINT64_C( 0x0000000000000000 ) },
250 { UINT64_C( 0x0000000000008000 ), UINT64_C( 0x0000000000000000 ) },
251 { UINT64_C( 0x0000000000010000 ), UINT64_C( 0x0000000000000000 ) },
252 { UINT64_C( 0x0000000000020000 ), UINT64_C( 0x0000000000000000 ) },
253 { UINT64_C( 0x0000000000040000 ), UINT64_C( 0x0000000000000000 ) },
254 { UINT64_C( 0x0000000000080000 ), UINT64_C( 0x0000000000000000 ) },
255 { UINT64_C( 0x0000000000100000 ), UINT64_C( 0x0000000000000000 ) },
256 { UINT64_C( 0x0000000000200000 ), UINT64_C( 0x0000000000000000 ) },
257 { UINT64_C( 0x0000000000400000 ), UINT64_C( 0x0000000000000000 ) },
258 { UINT64_C( 0x0000000000800000 ), UINT64_C( 0x0000000000000000 ) },
259 { UINT64_C( 0x0000000001000000 ), UINT64_C( 0x0000000000000000 ) },
260 { UINT64_C( 0x0000000002000000 ), UINT64_C( 0x0000000000000000 ) },
261 { UINT64_C( 0x0000000004000000 ), UINT64_C( 0x0000000000000000 ) },
262 { UINT64_C( 0x0000000008000000 ), UINT64_C( 0x0000000000000000 ) },
263 { UINT64_C( 0x0000000010000000 ), UINT64_C( 0x0000000000000000 ) },
264 { UINT64_C( 0x0000000020000000 ), UINT64_C( 0x0000000000000000 ) },
265 { UINT64_C( 0x0000000040000000 ), UINT64_C( 0x0000000000000000 ) },
266 { UINT64_C( 0x0000000080000000 ), UINT64_C( 0x0000000000000000 ) },
267 { UINT64_C( 0x0000000100000000 ), UINT64_C( 0x0000000000000000 ) },
268 { UINT64_C( 0x0000000200000000 ), UINT64_C( 0x0000000000000000 ) },
269 { UINT64_C( 0x0000000400000000 ), UINT64_C( 0x0000000000000000 ) },
270 { UINT64_C( 0x0000000800000000 ), UINT64_C( 0x0000000000000000 ) },
271 { UINT64_C( 0x0000001000000000 ), UINT64_C( 0x0000000000000000 ) },
272 { UINT64_C( 0x0000002000000000 ), UINT64_C( 0x0000000000000000 ) },
273 { UINT64_C( 0x0000004000000000 ), UINT64_C( 0x0000000000000000 ) },
274 { UINT64_C( 0x0000008000000000 ), UINT64_C( 0x0000000000000000 ) },
275 { UINT64_C( 0x0000010000000000 ), UINT64_C( 0x0000000000000000 ) },
276 { UINT64_C( 0x0000020000000000 ), UINT64_C( 0x0000000000000000 ) },
277 { UINT64_C( 0x0000040000000000 ), UINT64_C( 0x0000000000000000 ) },
278 { UINT64_C( 0x0000080000000000 ), UINT64_C( 0x0000000000000000 ) },
279 { UINT64_C( 0x0000100000000000 ), UINT64_C( 0x0000000000000000 ) },
280 { UINT64_C( 0x0000200000000000 ), UINT64_C( 0x0000000000000000 ) },
281 { UINT64_C( 0x0000400000000000 ), UINT64_C( 0x0000000000000000 ) },
282 { UINT64_C( 0x0000800000000000 ), UINT64_C( 0x0000000000000000 ) },
283 { UINT64_C( 0x0000C00000000000 ), UINT64_C( 0x0000000000000000 ) },
284 { UINT64_C( 0x0000E00000000000 ), UINT64_C( 0x0000000000000000 ) },
285 { UINT64_C( 0x0000F00000000000 ), UINT64_C( 0x0000000000000000 ) },
286 { UINT64_C( 0x0000F80000000000 ), UINT64_C( 0x0000000000000000 ) },
287 { UINT64_C( 0x0000FC0000000000 ), UINT64_C( 0x0000000000000000 ) },
288 { UINT64_C( 0x0000FE0000000000 ), UINT64_C( 0x0000000000000000 ) },
289 { UINT64_C( 0x0000FF0000000000 ), UINT64_C( 0x0000000000000000 ) },
290 { UINT64_C( 0x0000FF8000000000 ), UINT64_C( 0x0000000000000000 ) },
291 { UINT64_C( 0x0000FFC000000000 ), UINT64_C( 0x0000000000000000 ) },
292 { UINT64_C( 0x0000FFE000000000 ), UINT64_C( 0x0000000000000000 ) },
293 { UINT64_C( 0x0000FFF000000000 ), UINT64_C( 0x0000000000000000 ) },
294 { UINT64_C( 0x0000FFF800000000 ), UINT64_C( 0x0000000000000000 ) },
295 { UINT64_C( 0x0000FFFC00000000 ), UINT64_C( 0x0000000000000000 ) },
296 { UINT64_C( 0x0000FFFE00000000 ), UINT64_C( 0x0000000000000000 ) },
297 { UINT64_C( 0x0000FFFF00000000 ), UINT64_C( 0x0000000000000000 ) },
298 { UINT64_C( 0x0000FFFF80000000 ), UINT64_C( 0x0000000000000000 ) },
299 { UINT64_C( 0x0000FFFFC0000000 ), UINT64_C( 0x0000000000000000 ) },
300 { UINT64_C( 0x0000FFFFE0000000 ), UINT64_C( 0x0000000000000000 ) },
301 { UINT64_C( 0x0000FFFFF0000000 ), UINT64_C( 0x0000000000000000 ) },
302 { UINT64_C( 0x0000FFFFF8000000 ), UINT64_C( 0x0000000000000000 ) },
303 { UINT64_C( 0x0000FFFFFC000000 ), UINT64_C( 0x0000000000000000 ) },
304 { UINT64_C( 0x0000FFFFFE000000 ), UINT64_C( 0x0000000000000000 ) },
305 { UINT64_C( 0x0000FFFFFF000000 ), UINT64_C( 0x0000000000000000 ) },
306 { UINT64_C( 0x0000FFFFFF800000 ), UINT64_C( 0x0000000000000000 ) },
307 { UINT64_C( 0x0000FFFFFFC00000 ), UINT64_C( 0x0000000000000000 ) },
308 { UINT64_C( 0x0000FFFFFFE00000 ), UINT64_C( 0x0000000000000000 ) },
309 { UINT64_C( 0x0000FFFFFFF00000 ), UINT64_C( 0x0000000000000000 ) },
310 { UINT64_C( 0x0000FFFFFFF80000 ), UINT64_C( 0x0000000000000000 ) },
311 { UINT64_C( 0x0000FFFFFFFC0000 ), UINT64_C( 0x0000000000000000 ) },
312 { UINT64_C( 0x0000FFFFFFFE0000 ), UINT64_C( 0x0000000000000000 ) },
313 { UINT64_C( 0x0000FFFFFFFF0000 ), UINT64_C( 0x0000000000000000 ) },
314 { UINT64_C( 0x0000FFFFFFFF8000 ), UINT64_C( 0x0000000000000000 ) },
315 { UINT64_C( 0x0000FFFFFFFFC000 ), UINT64_C( 0x0000000000000000 ) },
316 { UINT64_C( 0x0000FFFFFFFFE000 ), UINT64_C( 0x0000000000000000 ) },
317 { UINT64_C( 0x0000FFFFFFFFF000 ), UINT64_C( 0x0000000000000000 ) },
318 { UINT64_C( 0x0000FFFFFFFFF800 ), UINT64_C( 0x0000000000000000 ) },
319 { UINT64_C( 0x0000FFFFFFFFFC00 ), UINT64_C( 0x0000000000000000 ) },
320 { UINT64_C( 0x0000FFFFFFFFFE00 ), UINT64_C( 0x0000000000000000 ) },
321 { UINT64_C( 0x0000FFFFFFFFFF00 ), UINT64_C( 0x0000000000000000 ) },
322 { UINT64_C( 0x0000FFFFFFFFFF80 ), UINT64_C( 0x0000000000000000 ) },
323 { UINT64_C( 0x0000FFFFFFFFFFC0 ), UINT64_C( 0x0000000000000000 ) },
324 { UINT64_C( 0x0000FFFFFFFFFFE0 ), UINT64_C( 0x0000000000000000 ) },
325 { UINT64_C( 0x0000FFFFFFFFFFF0 ), UINT64_C( 0x0000000000000000 ) },
326 { UINT64_C( 0x0000FFFFFFFFFFF8 ), UINT64_C( 0x0000000000000000 ) },
327 { UINT64_C( 0x0000FFFFFFFFFFFC ), UINT64_C( 0x0000000000000000 ) },
328 { UINT64_C( 0x0000FFFFFFFFFFFE ), UINT64_C( 0x0000000000000000 ) },
329 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0x0000000000000000 ) },
330 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0x8000000000000000 ) },
331 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xC000000000000000 ) },
332 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xE000000000000000 ) },
333 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xF000000000000000 ) },
334 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xF800000000000000 ) },
335 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFC00000000000000 ) },
336 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFE00000000000000 ) },
337 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFF00000000000000 ) },
338 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFF80000000000000 ) },
339 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFC0000000000000 ) },
340 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFE0000000000000 ) },
341 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFF0000000000000 ) },
342 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFF8000000000000 ) },
343 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFC000000000000 ) },
344 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFE000000000000 ) },
345 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFF000000000000 ) },
346 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFF800000000000 ) },
347 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFC00000000000 ) },
348 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFE00000000000 ) },
349 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFF00000000000 ) },
350 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFF80000000000 ) },
351 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFC0000000000 ) },
352 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFE0000000000 ) },
353 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFF0000000000 ) },
354 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFF8000000000 ) },
355 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFC000000000 ) },
356 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFE000000000 ) },
357 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFF000000000 ) },
358 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFF800000000 ) },
359 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFC00000000 ) },
360 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFE00000000 ) },
361 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFF00000000 ) },
362 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFF80000000 ) },
363 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFC0000000 ) },
364 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFE0000000 ) },
365 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFF0000000 ) },
366 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFF8000000 ) },
367 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFC000000 ) },
368 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFE000000 ) },
369 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFF000000 ) },
370 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFF800000 ) },
371 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFC00000 ) },
372 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFE00000 ) },
373 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFF00000 ) },
374 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFF80000 ) },
375 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFC0000 ) },
376 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFE0000 ) },
377 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFF0000 ) },
378 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFF8000 ) },
379 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFC000 ) },
380 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFE000 ) },
381 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFF000 ) },
382 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFF800 ) },
383 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFC00 ) },
384 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFE00 ) },
385 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFF00 ) },
386 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFF80 ) },
387 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFC0 ) },
388 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFE0 ) },
389 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFF0 ) },
390 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFF8 ) },
391 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFC ) },
392 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFE ) },
393 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
394 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFD ) },
395 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFB ) },
396 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFF7 ) },
397 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFEF ) },
398 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFDF ) },
399 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFBF ) },
400 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFF7F ) },
401 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFEFF ) },
402 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFDFF ) },
403 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFBFF ) },
404 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFF7FF ) },
405 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFEFFF ) },
406 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFDFFF ) },
407 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFBFFF ) },
408 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFF7FFF ) },
409 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFEFFFF ) },
410 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFDFFFF ) },
411 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFBFFFF ) },
412 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFF7FFFF ) },
413 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFEFFFFF ) },
414 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFDFFFFF ) },
415 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFBFFFFF ) },
416 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFF7FFFFF ) },
417 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFEFFFFFF ) },
418 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFDFFFFFF ) },
419 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFBFFFFFF ) },
420 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFF7FFFFFF ) },
421 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFEFFFFFFF ) },
422 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFDFFFFFFF ) },
423 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFBFFFFFFF ) },
424 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFF7FFFFFFF ) },
425 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFEFFFFFFFF ) },
426 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFDFFFFFFFF ) },
427 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFBFFFFFFFF ) },
428 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFF7FFFFFFFF ) },
429 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFEFFFFFFFFF ) },
430 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFDFFFFFFFFF ) },
431 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFFBFFFFFFFFF ) },
432 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFF7FFFFFFFFF ) },
433 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFEFFFFFFFFFF ) },
434 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFDFFFFFFFFFF ) },
435 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFFBFFFFFFFFFF ) },
436 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFF7FFFFFFFFFF ) },
437 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFEFFFFFFFFFFF ) },
438 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFDFFFFFFFFFFF ) },
439 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFFBFFFFFFFFFFF ) },
440 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFF7FFFFFFFFFFF ) },
441 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFEFFFFFFFFFFFF ) },
442 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFDFFFFFFFFFFFF ) },
443 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFFBFFFFFFFFFFFF ) },
444 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFF7FFFFFFFFFFFF ) },
445 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFEFFFFFFFFFFFFF ) },
446 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFDFFFFFFFFFFFFF ) },
447 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFFBFFFFFFFFFFFFF ) },
448 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFF7FFFFFFFFFFFFF ) },
449 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFEFFFFFFFFFFFFFF ) },
450 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFDFFFFFFFFFFFFFF ) },
451 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xFBFFFFFFFFFFFFFF ) },
452 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xF7FFFFFFFFFFFFFF ) },
453 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xEFFFFFFFFFFFFFFF ) },
454 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xDFFFFFFFFFFFFFFF ) },
455 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0xBFFFFFFFFFFFFFFF ) },
456 { UINT64_C( 0x0000FFFFFFFFFFFF ), UINT64_C( 0x7FFFFFFFFFFFFFFF ) },
457 { UINT64_C( 0x0000FFFFFFFFFFFD ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
458 { UINT64_C( 0x0000FFFFFFFFFFFB ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
459 { UINT64_C( 0x0000FFFFFFFFFFF7 ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
460 { UINT64_C( 0x0000FFFFFFFFFFEF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
461 { UINT64_C( 0x0000FFFFFFFFFFDF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
462 { UINT64_C( 0x0000FFFFFFFFFFBF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
463 { UINT64_C( 0x0000FFFFFFFFFF7F ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
464 { UINT64_C( 0x0000FFFFFFFFFEFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
465 { UINT64_C( 0x0000FFFFFFFFFDFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
466 { UINT64_C( 0x0000FFFFFFFFFBFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
467 { UINT64_C( 0x0000FFFFFFFFF7FF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
468 { UINT64_C( 0x0000FFFFFFFFEFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
469 { UINT64_C( 0x0000FFFFFFFFDFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
470 { UINT64_C( 0x0000FFFFFFFFBFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
471 { UINT64_C( 0x0000FFFFFFFF7FFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
472 { UINT64_C( 0x0000FFFFFFFEFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
473 { UINT64_C( 0x0000FFFFFFFDFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
474 { UINT64_C( 0x0000FFFFFFFBFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
475 { UINT64_C( 0x0000FFFFFFF7FFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
476 { UINT64_C( 0x0000FFFFFFEFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
477 { UINT64_C( 0x0000FFFFFFDFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
478 { UINT64_C( 0x0000FFFFFFBFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
479 { UINT64_C( 0x0000FFFFFF7FFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
480 { UINT64_C( 0x0000FFFFFEFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
481 { UINT64_C( 0x0000FFFFFDFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
482 { UINT64_C( 0x0000FFFFFBFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
483 { UINT64_C( 0x0000FFFFF7FFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
484 { UINT64_C( 0x0000FFFFEFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
485 { UINT64_C( 0x0000FFFFDFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
486 { UINT64_C( 0x0000FFFFBFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
487 { UINT64_C( 0x0000FFFF7FFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
488 { UINT64_C( 0x0000FFFEFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
489 { UINT64_C( 0x0000FFFDFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
490 { UINT64_C( 0x0000FFFBFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
491 { UINT64_C( 0x0000FFF7FFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
492 { UINT64_C( 0x0000FFEFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
493 { UINT64_C( 0x0000FFDFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
494 { UINT64_C( 0x0000FFBFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
495 { UINT64_C( 0x0000FF7FFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
496 { UINT64_C( 0x0000FEFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
497 { UINT64_C( 0x0000FDFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
498 { UINT64_C( 0x0000FBFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
499 { UINT64_C( 0x0000F7FFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
500 { UINT64_C( 0x0000EFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
501 { UINT64_C( 0x0000DFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
502 { UINT64_C( 0x0000BFFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
503 { UINT64_C( 0x00007FFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
504 { UINT64_C( 0x00003FFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
505 { UINT64_C( 0x00001FFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
506 { UINT64_C( 0x00000FFFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
507 { UINT64_C( 0x000007FFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
508 { UINT64_C( 0x000003FFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
509 { UINT64_C( 0x000001FFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
510 { UINT64_C( 0x000000FFFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
511 { UINT64_C( 0x0000007FFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
512 { UINT64_C( 0x0000003FFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
513 { UINT64_C( 0x0000001FFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
514 { UINT64_C( 0x0000000FFFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
515 { UINT64_C( 0x00000007FFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
516 { UINT64_C( 0x00000003FFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
517 { UINT64_C( 0x00000001FFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
518 { UINT64_C( 0x00000000FFFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
519 { UINT64_C( 0x000000007FFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
520 { UINT64_C( 0x000000003FFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
521 { UINT64_C( 0x000000001FFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
522 { UINT64_C( 0x000000000FFFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
523 { UINT64_C( 0x0000000007FFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
524 { UINT64_C( 0x0000000003FFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
525 { UINT64_C( 0x0000000001FFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
526 { UINT64_C( 0x0000000000FFFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
527 { UINT64_C( 0x00000000007FFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
528 { UINT64_C( 0x00000000003FFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
529 { UINT64_C( 0x00000000001FFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
530 { UINT64_C( 0x00000000000FFFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
531 { UINT64_C( 0x000000000007FFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
532 { UINT64_C( 0x000000000003FFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
533 { UINT64_C( 0x000000000001FFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
534 { UINT64_C( 0x000000000000FFFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
535 { UINT64_C( 0x0000000000007FFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
536 { UINT64_C( 0x0000000000003FFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
537 { UINT64_C( 0x0000000000001FFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
538 { UINT64_C( 0x0000000000000FFF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
539 { UINT64_C( 0x00000000000007FF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
540 { UINT64_C( 0x00000000000003FF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
541 { UINT64_C( 0x00000000000001FF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
542 { UINT64_C( 0x00000000000000FF ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
543 { UINT64_C( 0x000000000000007F ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
544 { UINT64_C( 0x000000000000003F ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
545 { UINT64_C( 0x000000000000001F ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
546 { UINT64_C( 0x000000000000000F ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
547 { UINT64_C( 0x0000000000000007 ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
548 { UINT64_C( 0x0000000000000003 ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
549 { UINT64_C( 0x0000000000000001 ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
550 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0xFFFFFFFFFFFFFFFF ) },
551 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x7FFFFFFFFFFFFFFF ) },
552 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x3FFFFFFFFFFFFFFF ) },
553 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x1FFFFFFFFFFFFFFF ) },
554 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0FFFFFFFFFFFFFFF ) },
555 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x07FFFFFFFFFFFFFF ) },
556 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x03FFFFFFFFFFFFFF ) },
557 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x01FFFFFFFFFFFFFF ) },
558 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00FFFFFFFFFFFFFF ) },
559 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x007FFFFFFFFFFFFF ) },
560 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x003FFFFFFFFFFFFF ) },
561 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x001FFFFFFFFFFFFF ) },
562 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000FFFFFFFFFFFFF ) },
563 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0007FFFFFFFFFFFF ) },
564 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0003FFFFFFFFFFFF ) },
565 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0001FFFFFFFFFFFF ) },
566 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000FFFFFFFFFFFF ) },
567 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00007FFFFFFFFFFF ) },
568 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00003FFFFFFFFFFF ) },
569 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00001FFFFFFFFFFF ) },
570 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000FFFFFFFFFFF ) },
571 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000007FFFFFFFFFF ) },
572 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000003FFFFFFFFFF ) },
573 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000001FFFFFFFFFF ) },
574 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000FFFFFFFFFF ) },
575 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000007FFFFFFFFF ) },
576 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000003FFFFFFFFF ) },
577 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000001FFFFFFFFF ) },
578 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000FFFFFFFFF ) },
579 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000007FFFFFFFF ) },
580 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000003FFFFFFFF ) },
581 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000001FFFFFFFF ) },
582 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000FFFFFFFF ) },
583 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000007FFFFFFF ) },
584 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000003FFFFFFF ) },
585 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000001FFFFFFF ) },
586 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000FFFFFFF ) },
587 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000007FFFFFF ) },
588 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000003FFFFFF ) },
589 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000001FFFFFF ) },
590 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000FFFFFF ) },
591 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000007FFFFF ) },
592 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000003FFFFF ) },
593 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000001FFFFF ) },
594 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000000FFFFF ) },
595 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000007FFFF ) },
596 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000003FFFF ) },
597 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000001FFFF ) },
598 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000000FFFF ) },
599 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000007FFF ) },
600 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000003FFF ) },
601 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000001FFF ) },
602 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000FFF ) },
603 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000000007FF ) },
604 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000000003FF ) },
605 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000000001FF ) },
606 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x00000000000000FF ) },
607 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000000007F ) },
608 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000000003F ) },
609 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000000001F ) },
610 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x000000000000000F ) },
611 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000007 ) },
612 { UINT64_C( 0x0000000000000000 ), UINT64_C( 0x0000000000000003 ) }
613};
614
615static const uint_fast64_t f128NumQInP1 = f128NumQIn * f128NumP1;
616static const uint_fast64_t f128NumQOutP1 = f128NumQOut * f128NumP1;
617
618static void f128NextQInP1( struct sequence *sequencePtr, float128_t *zPtr )
619{
620 struct uint128 *uiZPtr;
621 int expNum, sigNum;
622
623 uiZPtr = (struct uint128 *) zPtr;
624 expNum = sequencePtr->expNum;
625 sigNum = sequencePtr->term1Num;
626 uiZPtr->v64 = f128QIn[expNum] | f128P1[sigNum].v64;
627 uiZPtr->v0 = f128P1[sigNum].v0;
628 ++sigNum;
629 if ( f128NumP1 <= sigNum ) {
630 sigNum = 0;
631 ++expNum;
632 if ( f128NumQIn <= expNum ) {
633 expNum = 0;
634 sequencePtr->done = true;
635 }
636 sequencePtr->expNum = expNum;
637 }
638 sequencePtr->term1Num = sigNum;
639
640}
641
642static void f128NextQOutP1( struct sequence *sequencePtr, float128_t *zPtr )
643{
644 struct uint128 *uiZPtr;
645 int expNum, sigNum;
646
647 uiZPtr = (struct uint128 *) zPtr;
648 expNum = sequencePtr->expNum;
649 sigNum = sequencePtr->term1Num;
650 uiZPtr->v64 = f128QOut[expNum] | f128P1[sigNum].v64;
651 uiZPtr->v0 = f128P1[sigNum].v0;
652 ++sigNum;
653 if ( f128NumP1 <= sigNum ) {
654 sigNum = 0;
655 ++expNum;
656 if ( f128NumQOut <= expNum ) {
657 expNum = 0;
658 sequencePtr->done = true;
659 }
660 sequencePtr->expNum = expNum;
661 }
662 sequencePtr->term1Num = sigNum;
663
664}
665
666static const uint_fast64_t f128NumQInP2 = f128NumQIn * f128NumP2;
667static const uint_fast64_t f128NumQOutP2 = f128NumQOut * f128NumP2;
668
669static void f128NextQInP2( struct sequence *sequencePtr, float128_t *zPtr )
670{
671 struct uint128 *uiZPtr;
672 int expNum, sigNum;
673
674 uiZPtr = (struct uint128 *) zPtr;
675 expNum = sequencePtr->expNum;
676 sigNum = sequencePtr->term1Num;
677 uiZPtr->v64 = f128QIn[expNum] | f128P2[sigNum].v64;
678 uiZPtr->v0 = f128P2[sigNum].v0;
679 ++sigNum;
680 if ( f128NumP2 <= sigNum ) {
681 sigNum = 0;
682 ++expNum;
683 if ( f128NumQIn <= expNum ) {
684 expNum = 0;
685 sequencePtr->done = true;
686 }
687 sequencePtr->expNum = expNum;
688 }
689 sequencePtr->term1Num = sigNum;
690
691}
692
693static void f128NextQOutP2( struct sequence *sequencePtr, float128_t *zPtr )
694{
695 struct uint128 *uiZPtr;
696 int expNum, sigNum;
697
698 uiZPtr = (struct uint128 *) zPtr;
699 expNum = sequencePtr->expNum;
700 sigNum = sequencePtr->term1Num;
701 uiZPtr->v64 = f128QOut[expNum] | f128P2[sigNum].v64;
702 uiZPtr->v0 = f128P2[sigNum].v0;
703 ++sigNum;
704 if ( f128NumP2 <= sigNum ) {
705 sigNum = 0;
706 ++expNum;
707 if ( f128NumQOut <= expNum ) {
708 expNum = 0;
709 sequencePtr->done = true;
710 }
711 sequencePtr->expNum = expNum;
712 }
713 sequencePtr->term1Num = sigNum;
714
715}
716
717static void f128RandomQOutP3( float128_t *zPtr )
718{
719 struct uint128 *uiZPtr;
720 int sigNum1, sigNum2;
721 uint_fast64_t sig1_0;
722
723 uiZPtr = (struct uint128 *) zPtr;
724 sigNum1 = randomN_ui16( f128NumP2 );
725 sigNum2 = randomN_ui16( f128NumP2 );
726 sig1_0 = f128P2[sigNum1].v0;
727 uiZPtr->v0 = sig1_0 + f128P2[sigNum2].v0;
728 uiZPtr->v64 =
729 f128QOut[randomN_ui8( f128NumQOut )]
730 | ((f128P2[sigNum1].v64 + f128P2[sigNum2].v64 + (uiZPtr->v0 < sig1_0))
731 & UINT64_C( 0x0000FFFFFFFFFFFF ));
732
733}
734
735static void f128RandomQOutPInf( float128_t *zPtr )
736{
737 struct uint128 *uiZPtr;
738
739 uiZPtr = (struct uint128 *) zPtr;
740 uiZPtr->v64 =
741 f128QOut[randomN_ui8( f128NumQOut )]
742 | (random_ui64() & UINT64_C( 0x0000FFFFFFFFFFFF ));
743 uiZPtr->v0 = random_ui64();
744
745}
746
747enum { f128NumQInfWeightMasks = 14 };
748static const uint64_t f128QInfWeightMasks[f128NumQInfWeightMasks] = {
749 UINT64_C( 0xFFFF000000000000 ),
750 UINT64_C( 0xFFFF000000000000 ),
751 UINT64_C( 0xBFFF000000000000 ),
752 UINT64_C( 0x9FFF000000000000 ),
753 UINT64_C( 0x87FF000000000000 ),
754 UINT64_C( 0x87FF000000000000 ),
755 UINT64_C( 0x83FF000000000000 ),
756 UINT64_C( 0x81FF000000000000 ),
757 UINT64_C( 0x80FF000000000000 ),
758 UINT64_C( 0x807F000000000000 ),
759 UINT64_C( 0x803F000000000000 ),
760 UINT64_C( 0x801F000000000000 ),
761 UINT64_C( 0x800F000000000000 ),
762 UINT64_C( 0x8007000000000000 )
763};
764static const uint64_t f128QInfWeightOffsets[f128NumQInfWeightMasks] = {
765 UINT64_C( 0x0000000000000000 ),
766 UINT64_C( 0x0000000000000000 ),
767 UINT64_C( 0x2000000000000000 ),
768 UINT64_C( 0x3000000000000000 ),
769 UINT64_C( 0x3800000000000000 ),
770 UINT64_C( 0x3C00000000000000 ),
771 UINT64_C( 0x3E00000000000000 ),
772 UINT64_C( 0x3F00000000000000 ),
773 UINT64_C( 0x3F80000000000000 ),
774 UINT64_C( 0x3FC0000000000000 ),
775 UINT64_C( 0x3FE0000000000000 ),
776 UINT64_C( 0x3FF0000000000000 ),
777 UINT64_C( 0x3FF8000000000000 ),
778 UINT64_C( 0x3FFC000000000000 )
779};
780
781static void f128RandomQInfP3( float128_t *zPtr )
782{
783 struct uint128 *uiZPtr;
784 int sigNum1, sigNum2;
785 uint_fast64_t sig1_0;
786 int weightMaskNum;
787
788 uiZPtr = (struct uint128 *) zPtr;
789 sigNum1 = randomN_ui16( f128NumP2 );
790 sigNum2 = randomN_ui16( f128NumP2 );
791 sig1_0 = f128P2[sigNum1].v0;
792 uiZPtr->v0 = sig1_0 + f128P2[sigNum2].v0;
793 weightMaskNum = randomN_ui8( f128NumQInfWeightMasks );
794 uiZPtr->v64 =
795 (((uint_fast64_t) random_ui16()<<48
796 & f128QInfWeightMasks[weightMaskNum])
797 + f128QInfWeightOffsets[weightMaskNum])
798 | ((f128P2[sigNum1].v64 + f128P2[sigNum2].v64 + (uiZPtr->v0 < sig1_0))
799 & UINT64_C( 0x0000FFFFFFFFFFFF ));
800
801}
802
803static void f128RandomQInfPInf( float128_t *zPtr )
804{
805 struct uint128 *uiZPtr;
806 int weightMaskNum;
807
808 uiZPtr = (struct uint128 *) zPtr;
809 weightMaskNum = randomN_ui8( f128NumQInfWeightMasks );
810 uiZPtr->v64 =
811 (random_ui64()
812 & (f128QInfWeightMasks[weightMaskNum]
813 | UINT64_C( 0x0000FFFFFFFFFFFF )))
814 + f128QInfWeightOffsets[weightMaskNum];
815 uiZPtr->v0 = random_ui64();
816
817}
818
819static void f128Random( float128_t *zPtr )
820{
821
822 switch ( random_ui8() & 7 ) {
823 case 0:
824 case 1:
825 case 2:
826 f128RandomQOutP3( zPtr );
827 break;
828 case 3:
829 f128RandomQOutPInf( zPtr );
830 break;
831 case 4:
832 case 5:
833 case 6:
834 f128RandomQInfP3( zPtr );
835 break;
836 case 7:
837 f128RandomQInfPInf( zPtr );
838 break;
839 }
840
841}
842
843static struct sequence sequenceA, sequenceB, sequenceC;
844static float128_t currentA, currentB, currentC;
845static int subcase;
846
847float128_t genCases_f128_a, genCases_f128_b, genCases_f128_c;
848
849void genCases_f128_a_init( void )
850{
851
852 sequenceA.expNum = 0;
853 sequenceA.term1Num = 0;
854 sequenceA.term2Num = 0;
855 sequenceA.done = false;
856 subcase = 0;
857 genCases_total =
858 (genCases_level == 1) ? 3 * f128NumQOutP1 : 2 * f128NumQOutP2;
859 genCases_done = false;
860
861}
862
863void genCases_f128_a_next( void )
864{
865
866 if ( genCases_level == 1 ) {
867 switch ( subcase ) {
868 case 0:
869 case 1:
870 f128Random( &genCases_f128_a );
871 break;
872 case 2:
873 f128NextQOutP1( &sequenceA, &genCases_f128_a );
874 genCases_done = sequenceA.done;
875 subcase = -1;
876 break;
877 }
878 } else {
879 switch ( subcase ) {
880 case 0:
881 f128Random( &genCases_f128_a );
882 break;
883 case 1:
884 f128NextQOutP2( &sequenceA, &genCases_f128_a );
885 genCases_done = sequenceA.done;
886 subcase = -1;
887 break;
888 }
889 }
890 ++subcase;
891
892}
893
894void genCases_f128_ab_init( void )
895{
896
897 sequenceA.expNum = 0;
898 sequenceA.term1Num = 0;
899 sequenceA.term2Num = 0;
900 sequenceA.done = false;
901 sequenceB.expNum = 0;
902 sequenceB.term1Num = 0;
903 sequenceB.term2Num = 0;
904 sequenceB.done = false;
905 subcase = 0;
906 if ( genCases_level == 1 ) {
907 genCases_total = 6 * f128NumQInP1 * f128NumQInP1;
908 f128NextQInP1( &sequenceA, &currentA );
909 } else {
910 genCases_total = 2 * f128NumQInP2 * f128NumQInP2;
911 f128NextQInP2( &sequenceA, &currentA );
912 }
913 genCases_done = false;
914
915}
916
917void genCases_f128_ab_next( void )
918{
919
920 if ( genCases_level == 1 ) {
921 switch ( subcase ) {
922 case 0:
923 if ( sequenceB.done ) {
924 sequenceB.done = false;
925 f128NextQInP1( &sequenceA, &currentA );
926 }
927 f128NextQInP1( &sequenceB, &currentB );
928 case 2:
929 case 4:
930 f128Random( &genCases_f128_a );
931 f128Random( &genCases_f128_b );
932 break;
933 case 1:
934 genCases_f128_a = currentA;
935 f128Random( &genCases_f128_b );
936 break;
937 case 3:
938 f128Random( &genCases_f128_a );
939 genCases_f128_b = currentB;
940 break;
941 case 5:
942 genCases_f128_a = currentA;
943 genCases_f128_b = currentB;
944 genCases_done = sequenceA.done & sequenceB.done;
945 subcase = -1;
946 break;
947 }
948 } else {
949 switch ( subcase ) {
950 case 0:
951 f128Random( &genCases_f128_a );
952 f128Random( &genCases_f128_b );
953 break;
954 case 1:
955 if ( sequenceB.done ) {
956 sequenceB.done = false;
957 f128NextQInP2( &sequenceA, &currentA );
958 }
959 genCases_f128_a = currentA;
960 f128NextQInP2( &sequenceB, &genCases_f128_b );
961 genCases_done = sequenceA.done & sequenceB.done;
962 subcase = -1;
963 break;
964 }
965 }
966 ++subcase;
967
968}
969
970void genCases_f128_abc_init( void )
971{
972
973 sequenceA.expNum = 0;
974 sequenceA.term1Num = 0;
975 sequenceA.term2Num = 0;
976 sequenceA.done = false;
977 sequenceB.expNum = 0;
978 sequenceB.term1Num = 0;
979 sequenceB.term2Num = 0;
980 sequenceB.done = false;
981 sequenceC.expNum = 0;
982 sequenceC.term1Num = 0;
983 sequenceC.term2Num = 0;
984 sequenceC.done = false;
985 subcase = 0;
986 if ( genCases_level == 1 ) {
987 genCases_total = 9 * f128NumQInP1 * f128NumQInP1 * f128NumQInP1;
988 f128NextQInP1( &sequenceA, &currentA );
989 f128NextQInP1( &sequenceB, &currentB );
990 } else {
991 genCases_total = 2 * f128NumQInP2 * f128NumQInP2 * f128NumQInP2;
992 f128NextQInP2( &sequenceA, &currentA );
993 f128NextQInP2( &sequenceB, &currentB );
994 }
995 genCases_done = false;
996
997}
998
999void genCases_f128_abc_next( void )
1000{
1001
1002 if ( genCases_level == 1 ) {
1003 switch ( subcase ) {
1004 case 0:
1005 if ( sequenceC.done ) {
1006 sequenceC.done = false;
1007 if ( sequenceB.done ) {
1008 sequenceB.done = false;
1009 f128NextQInP1( &sequenceA, &currentA );
1010 }
1011 f128NextQInP1( &sequenceB, &currentB );
1012 }
1013 f128NextQInP1( &sequenceC, &currentC );
1014 f128Random( &genCases_f128_a );
1015 f128Random( &genCases_f128_b );
1016 genCases_f128_c = currentC;
1017 break;
1018 case 1:
1019 genCases_f128_a = currentA;
1020 genCases_f128_b = currentB;
1021 f128Random( &genCases_f128_c );
1022 break;
1023 case 2:
1024 f128Random( &genCases_f128_a );
1025 f128Random( &genCases_f128_b );
1026 f128Random( &genCases_f128_c );
1027 break;
1028 case 3:
1029 f128Random( &genCases_f128_a );
1030 genCases_f128_b = currentB;
1031 genCases_f128_c = currentC;
1032 break;
1033 case 4:
1034 genCases_f128_a = currentA;
1035 f128Random( &genCases_f128_b );
1036 f128Random( &genCases_f128_c );
1037 break;
1038 case 5:
1039 f128Random( &genCases_f128_a );
1040 genCases_f128_b = currentB;
1041 f128Random( &genCases_f128_c );
1042 break;
1043 case 6:
1044 genCases_f128_a = currentA;
1045 f128Random( &genCases_f128_b );
1046 genCases_f128_c = currentC;
1047 break;
1048 case 7:
1049 f128Random( &genCases_f128_a );
1050 f128Random( &genCases_f128_b );
1051 f128Random( &genCases_f128_c );
1052 break;
1053 case 8:
1054 genCases_f128_a = currentA;
1055 genCases_f128_b = currentB;
1056 genCases_f128_c = currentC;
1057 genCases_done = sequenceA.done & sequenceB.done & sequenceC.done;
1058 subcase = -1;
1059 break;
1060 }
1061 } else {
1062 switch ( subcase ) {
1063 case 0:
1064 f128Random( &genCases_f128_a );
1065 f128Random( &genCases_f128_b );
1066 f128Random( &genCases_f128_c );
1067 break;
1068 case 1:
1069 if ( sequenceC.done ) {
1070 sequenceC.done = false;
1071 if ( sequenceB.done ) {
1072 sequenceB.done = false;
1073 f128NextQInP2( &sequenceA, &currentA );
1074 }
1075 f128NextQInP2( &sequenceB, &currentB );
1076 }
1077 genCases_f128_a = currentA;
1078 genCases_f128_b = currentB;
1079 f128NextQInP2( &sequenceC, &genCases_f128_c );
1080 genCases_done = sequenceA.done & sequenceB.done & sequenceC.done;
1081 subcase = -1;
1082 break;
1083 }
1084 }
1085 ++subcase;
1086
1087}
1088
1089#endif
1090
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette