pxfm/
powf_tables.rs

1/*
2 * // Copyright (c) Radzivon Bartoshyk 7/2025. All rights reserved.
3 * //
4 * // Redistribution and use in source and binary forms, with or without modification,
5 * // are permitted provided that the following conditions are met:
6 * //
7 * // 1.  Redistributions of source code must retain the above copyright notice, this
8 * // list of conditions and the following disclaimer.
9 * //
10 * // 2.  Redistributions in binary form must reproduce the above copyright notice,
11 * // this list of conditions and the following disclaimer in the documentation
12 * // and/or other materials provided with the distribution.
13 * //
14 * // 3.  Neither the name of the copyright holder nor the names of its
15 * // contributors may be used to endorse or promote products derived from
16 * // this software without specific prior written permission.
17 * //
18 * // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 * // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 * // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 * // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30pub(crate) static POWF_R2: [u64; 193] = [
31    0x3ff0101000000000,
32    0x3ff00fd000000000,
33    0x3ff00f9000000000,
34    0x3ff00f5000000000,
35    0x3ff00f1000000000,
36    0x3ff00ed000000000,
37    0x3ff00e9000000000,
38    0x3ff00e5000000000,
39    0x3ff00e1000000000,
40    0x3ff00dd000000000,
41    0x3ff00d9000000000,
42    0x3ff00d5000000000,
43    0x3ff00d1000000000,
44    0x3ff00cd000000000,
45    0x3ff00c9000000000,
46    0x3ff00c5000000000,
47    0x3ff00c1000000000,
48    0x3ff00bd000000000,
49    0x3ff00b9000000000,
50    0x3ff00b4000000000,
51    0x3ff00b0000000000,
52    0x3ff00ac000000000,
53    0x3ff00a8000000000,
54    0x3ff00a4000000000,
55    0x3ff00a0000000000,
56    0x3ff009c000000000,
57    0x3ff0098000000000,
58    0x3ff0094000000000,
59    0x3ff0090000000000,
60    0x3ff008c000000000,
61    0x3ff0088000000000,
62    0x3ff0084000000000,
63    0x3ff0080000000000,
64    0x3ff007c000000000,
65    0x3ff0078000000000,
66    0x3ff0074000000000,
67    0x3ff0070000000000,
68    0x3ff006c000000000,
69    0x3ff0068000000000,
70    0x3ff0064000000000,
71    0x3ff0060000000000,
72    0x3ff005c000000000,
73    0x3ff0058000000000,
74    0x3ff0054000000000,
75    0x3ff0050000000000,
76    0x3ff004c000000000,
77    0x3ff0048000000000,
78    0x3ff0044000000000,
79    0x3ff0040000000000,
80    0x3ff003c000000000,
81    0x3ff0038000000000,
82    0x3ff0034000000000,
83    0x3ff0030000000000,
84    0x3ff002c000000000,
85    0x3ff0028000000000,
86    0x3ff0024000000000,
87    0x3ff0020000000000,
88    0x3ff001c000000000,
89    0x3ff0018000000000,
90    0x3ff0014000000000,
91    0x3ff0010000000000,
92    0x3ff000c000000000,
93    0x3ff0008000000000,
94    0x3ff0004000000000,
95    0x3ff0000000000000,
96    0x3fefff8000000000,
97    0x3fefff0000000000,
98    0x3feffe8000000000,
99    0x3feffe0000000000,
100    0x3feffd8000000000,
101    0x3feffd0000000000,
102    0x3feffc8000000000,
103    0x3feffc0000000000,
104    0x3feffb8000000000,
105    0x3feffb0000000000,
106    0x3feffa8000000000,
107    0x3feffa0000000000,
108    0x3feff98000000000,
109    0x3feff90000000000,
110    0x3feff88000000000,
111    0x3feff80000000000,
112    0x3feff78000000000,
113    0x3feff70000000000,
114    0x3feff68000000000,
115    0x3feff60000000000,
116    0x3feff58000000000,
117    0x3feff50000000000,
118    0x3feff48000000000,
119    0x3feff40000000000,
120    0x3feff38000000000,
121    0x3feff30000000000,
122    0x3feff28000000000,
123    0x3feff20000000000,
124    0x3feff18000000000,
125    0x3feff10000000000,
126    0x3feff08000000000,
127    0x3feff00000000000,
128    0x3fefef8000000000,
129    0x3fefef0000000000,
130    0x3fefee8000000000,
131    0x3fefee0000000000,
132    0x3fefed8000000000,
133    0x3fefed0000000000,
134    0x3fefec8000000000,
135    0x3fefec0000000000,
136    0x3fefeb8000000000,
137    0x3fefeb0000000000,
138    0x3fefea8000000000,
139    0x3fefea0000000000,
140    0x3fefe98000000000,
141    0x3fefe92000000000,
142    0x3fefe8a000000000,
143    0x3fefe82000000000,
144    0x3fefe7a000000000,
145    0x3fefe72000000000,
146    0x3fefe6a000000000,
147    0x3fefe62000000000,
148    0x3fefe5a000000000,
149    0x3fefe52000000000,
150    0x3fefe4a000000000,
151    0x3fefe42000000000,
152    0x3fefe3a000000000,
153    0x3fefe32000000000,
154    0x3fefe2a000000000,
155    0x3fefe22000000000,
156    0x3fefe1a000000000,
157    0x3fefe12000000000,
158    0x3fefe0a000000000,
159    0x3fefe02000000000,
160    0x3fefdfa000000000,
161    0x3fefdf2000000000,
162    0x3fefdea000000000,
163    0x3fefde2000000000,
164    0x3fefdda000000000,
165    0x3fefdd2000000000,
166    0x3fefdca000000000,
167    0x3fefdc2000000000,
168    0x3fefdba000000000,
169    0x3fefdb2000000000,
170    0x3fefdaa000000000,
171    0x3fefda2000000000,
172    0x3fefd9a000000000,
173    0x3fefd92000000000,
174    0x3fefd8c000000000,
175    0x3fefd84000000000,
176    0x3fefd7c000000000,
177    0x3fefd74000000000,
178    0x3fefd6c000000000,
179    0x3fefd64000000000,
180    0x3fefd5c000000000,
181    0x3fefd54000000000,
182    0x3fefd4c000000000,
183    0x3fefd44000000000,
184    0x3fefd3c000000000,
185    0x3fefd34000000000,
186    0x3fefd2c000000000,
187    0x3fefd24000000000,
188    0x3fefd1c000000000,
189    0x3fefd14000000000,
190    0x3fefd0c000000000,
191    0x3fefd04000000000,
192    0x3fefcfc000000000,
193    0x3fefcf4000000000,
194    0x3fefcec000000000,
195    0x3fefce4000000000,
196    0x3fefcdc000000000,
197    0x3fefcd6000000000,
198    0x3fefcce000000000,
199    0x3fefcc6000000000,
200    0x3fefcbe000000000,
201    0x3fefcb6000000000,
202    0x3fefcae000000000,
203    0x3fefca6000000000,
204    0x3fefc9e000000000,
205    0x3fefc96000000000,
206    0x3fefc8e000000000,
207    0x3fefc86000000000,
208    0x3fefc7e000000000,
209    0x3fefc76000000000,
210    0x3fefc6e000000000,
211    0x3fefc66000000000,
212    0x3fefc5e000000000,
213    0x3fefc56000000000,
214    0x3fefc4e000000000,
215    0x3fefc46000000000,
216    0x3fefc40000000000,
217    0x3fefc38000000000,
218    0x3fefc30000000000,
219    0x3fefc28000000000,
220    0x3fefc20000000000,
221    0x3fefc18000000000,
222    0x3fefc10000000000,
223    0x3fefc08000000000,
224];
225
226pub(crate) static LOG2_R_TD: [(u64, u64, u64); 128] = [
227    (0x0000000000000000, 0x0000000000000000, 0x0000000000000000),
228    (0x3b084a2c615b70ad, 0xbe6177c23362928c, 0x3f872c8000000000),
229    (0xbb3f27b820fd03ea, 0xbe9179e0caa9c9ab, 0x3f97440000000000),
230    (0xbb2f27ef487c8f34, 0xbe8c6cea541f5b70, 0x3fa184c000000000),
231    (0xbb3e3f80fbc71454, 0xbe966c4d4e554434, 0x3fa773a000000000),
232    (0xbb09f8ef14d5f6ee, 0xbe770700a00fdd55, 0x3fad6ec000000000),
233    (0x3b2452bbce7398c1, 0x3e853002a4e86631, 0x3fb1bb3000000000),
234    (0xbae990555535afd0, 0x3e6fcd15f101c142, 0x3fb4c56000000000),
235    (0x3b1447e30ad393ee, 0x3e925b3eed319ced, 0x3fb7d60000000000),
236    (0x3b3b7759da88a2da, 0xbe94195120d8486f, 0x3fb960d000000000),
237    (0x3b1cee7766ece702, 0x3e845b878e27d0d9, 0x3fbc7b5000000000),
238    (0xbb2a55c745ecdc2f, 0x3e9770744593a4cb, 0x3fbf9c9000000000),
239    (0x3b2f7ec992caa67f, 0x3e9c673032495d24, 0x3fc097e000000000),
240    (0xbb2433638c6ece3e, 0xbe91eaa65b49696e, 0x3fc22db000000000),
241    (0x3b358f27b6518824, 0x3e9b2866f2850b22, 0x3fc3c6f800000000),
242    (0xbb086bdcfdfd4a4c, 0x3e68ee37cd2ea9d3, 0x3fc494f800000000),
243    (0xbafff7044a68a7fa, 0x3e77e86f9c2154fb, 0x3fc633a800000000),
244    (0xbaeaa21694561327, 0x3e58e3cfc25f0ce6, 0x3fc7046000000000),
245    (0xba8d209f2d4239c6, 0x3e357f7a64ccd537, 0x3fc8a89800000000),
246    (0xbb3a55e97e60e632, 0xbe9a761c09fbd2ae, 0x3fc97c2000000000),
247    (0x3b3261179225541e, 0x3e924bea9a2c66f3, 0x3fcb260000000000),
248    (0xbad08fa30510fca9, 0xbe660002ccfe43f5, 0x3fcbfc6800000000),
249    (0xbb363ec8d56242f9, 0x3e969f220e97f22c, 0x3fcdac2000000000),
250    (0x3b38bcdaf0534365, 0xbe96164f64c210e0, 0x3fce858000000000),
251    (0x3b11003282896056, 0xbe70c1678ae89767, 0x3fd01d9c00000000),
252    (0x3b101bcc7025fa92, 0xbe9f26a05c813d57, 0x3fd08bd000000000),
253    (0xbaffe8a8648e9ebc, 0x3e74d8fc561c8d44, 0x3fd169c000000000),
254    (0x3b008dfb23650c75, 0xbe9362ad8f7ca2d0, 0x3fd1d98400000000),
255    (0xbb0f8d5a89861a5e, 0x3e92b13cd6c4d042, 0x3fd249cc00000000),
256    (0xbb3a1c872983511e, 0xbe91c8f11979a5db, 0x3fd32c0000000000),
257    (0x3b2e8e21bff3336b, 0x3e8c2ab3edefe569, 0x3fd39de800000000),
258    (0x3affd1994fb2c4a1, 0x3e57c3eca28e69ca, 0x3fd4106000000000),
259    (0x3af6b94b51cf76b1, 0xbe734c4e99e1c6c6, 0x3fd4f6fc00000000),
260    (0xbb331d55da1d0f66, 0xbe9194a871b63619, 0x3fd56b2400000000),
261    (0xbb2378b22691e28b, 0x3e8e3dd5c1c885ae, 0x3fd5dfdc00000000),
262    (0x3ac99e302970e411, 0xbe86ccf3b1129b7c, 0x3fd6552c00000000),
263    (0x3ad20164a049664d, 0xbe82f346e2bf924b, 0x3fd6cb1000000000),
264    (0xbb2d14aac4d864c3, 0xbe8fa61aaa59c1d8, 0x3fd7b8a000000000),
265    (0x3b0496ab4e4b293f, 0x3e990c11fd32a3ab, 0x3fd8304c00000000),
266    (0xba9d209f2d4239c6, 0x3e457f7a64ccd537, 0x3fd8a89800000000),
267    (0x3aeeae3326327bab, 0x3e4249ba76fee235, 0x3fd9218000000000),
268    (0x3b2fa05bddfded8c, 0xbe8aad2729b21ae5, 0x3fd99b0800000000),
269    (0xbb2624140d175ba2, 0x3e971810a5e18180, 0x3fda8ff800000000),
270    (0x3aef1c5160c515c1, 0xbe46172fe015e13c, 0x3fdb0b6800000000),
271    (0xbb086a6204eec8c0, 0x3e75ec6c1bfbf89a, 0x3fdb877c00000000),
272    (0x3b1718f761dd3915, 0x3e7678bf6cdedf51, 0x3fdc043800000000),
273    (0xbb3d4ee66c3700e4, 0x3e9c2d45fe43895e, 0x3fdc819c00000000),
274    (0xbb27d14533586306, 0xbe99ee52ed49d71d, 0x3fdcffb000000000),
275    (0x3ae5ce9fb5a7bb5b, 0x3e45786af187a96b, 0x3fdd7e6c00000000),
276    (0xbb2ae6face57ad3b, 0x3e83ab0dc56138c9, 0x3fddfdd800000000),
277    (0x3b15ac93b443d55f, 0x3e9fe538ab34efb5, 0x3fde7df400000000),
278    (0x3b3f1753e0ae1e8f, 0xbe9e4fee07aa4b68, 0x3fdefec800000000),
279    (0x3b3cdfd4c297069b, 0xbe9172f32fe67287, 0x3fdf804c00000000),
280    (0x3b097a0e8f3ba742, 0xbe99a83ff9ab9cc8, 0x3fe0014400000000),
281    (0xbb1800450f5b2357, 0xbe968cb06cece193, 0x3fe042be00000000),
282    (0xbb1a839041241fe7, 0x3e98cd71ddf82e20, 0x3fe0849400000000),
283    (0x3b1ed0b8eeccca86, 0x3e95e18ab2df3ae6, 0x3fe0c6ca00000000),
284    (0x3b03dd41df9689b3, 0x3e65dee4d9d8a273, 0x3fe1096000000000),
285    (0xbad990555535afd0, 0x3e5fcd15f101c142, 0x3fe14c5600000000),
286    (0xbb21773d02c9055c, 0xbe82474b0f992ba1, 0x3fe18fae00000000),
287    (0xbb14aeef330c53c1, 0x3e74b5a92a606047, 0x3fe1d36800000000),
288    (0x3b28e6ff749ebacb, 0x3e916186fcf54bbd, 0x3fe2178600000000),
289    (0x3abc09d761c548eb, 0x3e418efabeb7d722, 0x3fe25c0a00000000),
290    (0x3b1aaa73a428e1e4, 0xbe7e5fc7d238691d, 0x3fe2a0f400000000),
291    (0xbb0af2f3d8b63fba, 0x3e9f5809faf6283c, 0x3fe2e64400000000),
292    (0xbb0af2f3d8b63fba, 0x3e9f5809faf6283c, 0x3fe2e64400000000),
293    (0x3b278de359f2bb88, 0x3e9c6e1dcd0cb449, 0x3fe32bfe00000000),
294    (0xbb3415ae1a715618, 0x3e976e0e8f74b4d5, 0x3fe3722200000000),
295    (0xbb04991b5375621f, 0xbe7cb82c89692d99, 0x3fe3b8b200000000),
296    (0xbb3827d37deb2236, 0xbe963161c5432aeb, 0x3fe3ffae00000000),
297    (0x3b29576edac01c78, 0x3e9458104c41b901, 0x3fe4471600000000),
298    (0x3b29576edac01c78, 0x3e9458104c41b901, 0x3fe4471600000000),
299    (0xbb205a27b81e2219, 0xbe9cd9d0cde578d5, 0x3fe48ef000000000),
300    (0x3ad237616778b4ba, 0x3e5b9884591add87, 0x3fe4d73800000000),
301    (0x3b33b7d7e5d148bb, 0x3e9c6042978605ff, 0x3fe51ff200000000),
302    (0xbb0cc3f936a5977c, 0xbe9fc4c96b37dcf6, 0x3fe5692200000000),
303    (0x3ac20164a049664d, 0xbe72f346e2bf924b, 0x3fe5b2c400000000),
304    (0x3ac20164a049664d, 0xbe72f346e2bf924b, 0x3fe5b2c400000000),
305    (0xbb2a212919a92f7a, 0x3e9c4e4fbb68a4d1, 0x3fe5fcdc00000000),
306    (0xbb2b64b03f7230dd, 0xbe89d499bd9b3226, 0x3fe6476e00000000),
307    (0xbb21ec6379e6e3b9, 0xbe8f89b355ede26f, 0x3fe6927800000000),
308    (0xbb21ec6379e6e3b9, 0xbe8f89b355ede26f, 0x3fe6927800000000),
309    (0xbb14ba44c03bfbbd, 0x3e753c7e319f6e92, 0x3fe6ddfc00000000),
310    (0xbb2c36fc650d030f, 0xbe9b291f070528c7, 0x3fe729fe00000000),
311    (0xbaf69e5693a7f067, 0x3e62967a451a7b48, 0x3fe7767c00000000),
312    (0xbaf69e5693a7f067, 0x3e62967a451a7b48, 0x3fe7767c00000000),
313    (0x3b36598aae91499a, 0x3e9244fcff690fce, 0x3fe7c37a00000000),
314    (0x3b299d61ec432837, 0x3e846fd97f5dc572, 0x3fe810fa00000000),
315    (0x3b299d61ec432837, 0x3e846fd97f5dc572, 0x3fe810fa00000000),
316    (0x3b3855c42078f81b, 0xbe9f3a7352663e50, 0x3fe85efe00000000),
317    (0xbb259408e8151070, 0x3e8b3cda690370b5, 0x3fe8ad8400000000),
318    (0xbb259408e8151070, 0x3e8b3cda690370b5, 0x3fe8ad8400000000),
319    (0x3b133b318085e50a, 0x3e83226b211bf1d9, 0x3fe8fc9200000000),
320    (0x3b0343fe7c9cb4ae, 0x3e8d24b136c101ee, 0x3fe94c2800000000),
321    (0x3b0343fe7c9cb4ae, 0x3e8d24b136c101ee, 0x3fe94c2800000000),
322    (0xbb3d19522e56fe60, 0x3e97c40c7907e82a, 0x3fe99c4800000000),
323    (0xbb223b9d8ea55c3e, 0xbe9e81781d97ee91, 0x3fe9ecf600000000),
324    (0xbb223b9d8ea55c3e, 0xbe9e81781d97ee91, 0x3fe9ecf600000000),
325    (0x3b1829440c24aeb6, 0xbe96a77813f94e01, 0x3fea3e3000000000),
326    (0xbb3624140d175ba2, 0xbe91cfdeb43cfd00, 0x3fea8ffa00000000),
327    (0xbb3624140d175ba2, 0xbe91cfdeb43cfd00, 0x3fea8ffa00000000),
328    (0x3b2afa6f024fb045, 0xbe8f983f74d3138f, 0x3feae25600000000),
329    (0xbb1603ad3a5d326d, 0xbe8e278ae1a1f51f, 0x3feb354600000000),
330    (0xbb1603ad3a5d326d, 0xbe8e278ae1a1f51f, 0x3feb354600000000),
331    (0xbb20c1e0e5855d6a, 0xbe897552b7b5ea45, 0x3feb88cc00000000),
332    (0xbb20c1e0e5855d6a, 0xbe897552b7b5ea45, 0x3feb88cc00000000),
333    (0x3b1c817ad56baa16, 0xbe719b4f3c72c4f8, 0x3febdcea00000000),
334    (0x3b244c47ac1bf62b, 0x3e8f7402d26f1a12, 0x3fec31a200000000),
335    (0x3b244c47ac1bf62b, 0x3e8f7402d26f1a12, 0x3fec31a200000000),
336    (0xbb169b9465eae1e6, 0xbe82056d5dd31d96, 0x3fec86f800000000),
337    (0xbb169b9465eae1e6, 0xbe82056d5dd31d96, 0x3fec86f800000000),
338    (0xbb024a6d9d1d1904, 0xbe76e46335aae723, 0x3fecdcec00000000),
339    (0xbb33826144575ac4, 0xbe9beb244c59f331, 0x3fed338200000000),
340    (0xbb33826144575ac4, 0xbe9beb244c59f331, 0x3fed338200000000),
341    (0x3aedbc96b3b12b25, 0x3e416c071e93fd97, 0x3fed8aba00000000),
342    (0x3aedbc96b3b12b25, 0x3e416c071e93fd97, 0x3fed8aba00000000),
343    (0x3b268a8ccdbd1f33, 0x3e9d8175819530c2, 0x3fede29800000000),
344    (0x3b268a8ccdbd1f33, 0x3e9d8175819530c2, 0x3fede29800000000),
345    (0x3b0e586711df5ea1, 0x3e851bd552842c1c, 0x3fee3b2000000000),
346    (0x3b0e586711df5ea1, 0x3e851bd552842c1c, 0x3fee3b2000000000),
347    (0xbb0bc25adf042483, 0x3e9914e204f19d94, 0x3fee945200000000),
348    (0xbb0bc25adf042483, 0x3e9914e204f19d94, 0x3fee945200000000),
349    (0x3b3d7d82b65c5686, 0x3e9c55d997da24fd, 0x3feeee3200000000),
350    (0x3b3d7d82b65c5686, 0x3e9c55d997da24fd, 0x3feeee3200000000),
351    (0xbb23f108c0857ca3, 0xbe9685c2d2298a6e, 0x3fef48c400000000),
352    (0xbb23f108c0857ca3, 0xbe9685c2d2298a6e, 0x3fef48c400000000),
353    (0xbb1bd800bca7a221, 0x3e97a4887bd74039, 0x3fefa40600000000),
354    (0x0000000000000000, 0x0000000000000000, 0x3ff0000000000000),
355];
356
357// Look up table for the second range reduction step:
358// Generated by Sollya with:
359// > for i from -64 to 128 do {
360//     r = 2^-16 * nearestint(2^16 / (1 + i * 2^-14) );
361//     a = -log2(r);
362//     b = round(a, D, RN);
363//     c = round(a - b, D, RN);
364//     print("{", c, ", ", b, "},");
365//    };
366pub(crate) static LOG2_R2_DD: [(u64, u64); 193] = [
367    (0x3c1ff25180953e64, 0xbf7720c2ab2312a9),
368    (0xbc115ffd79560d8f, 0xbf76c4c92b1478ff),
369    (0x3c1b8d6d6f2e3579, 0xbf7668ce3c873549),
370    (0xbc15bfc3f0d5ef71, 0xbf760cd1df6fde91),
371    (0xbbfd1f7a8777984a, 0xbf75b0d413c30b5e),
372    (0x3bd8e858515b8343, 0xbf7554d4d97551ab),
373    (0x3c1e165c4014c1f2, 0xbf74f8d4307b46ec),
374    (0x3c00f84b2cc14c7e, 0xbf749cd218c9800b),
375    (0x3c1de618ed0db9a6, 0xbf7440ce9254916c),
376    (0xbc1f6b8587e64f22, 0xbf73e4c99d110ee7),
377    (0xbbf7f793c84cfa63, 0xbf7388c338f38bd0),
378    (0xbbe7d7ecf6258c9a, 0xbf732cbb65f09aee),
379    (0xbc1810bc5ac188f5, 0xbf72d0b223fcce81),
380    (0xbc1950035fc5b67c, 0xbf7274a7730cb841),
381    (0x3c14f47f3048cdad, 0xbf72189b5314e95d),
382    (0x3bb269519861e298, 0xbf71bc8dc409f279),
383    (0xbc15c2b0a46a7e2f, 0xbf71607ec5e063b3),
384    (0x3c05001ac8f0bda8, 0xbf71046e588ccca0),
385    (0x3c1106f246af5d41, 0xbf70a85c7c03bc4a),
386    (0x3bd82a00583b34ba, 0xbf70354423e3c666),
387    (0x3beb6f37deb31370, 0xbf6fb25e19f11aec),
388    (0xbc044a2140444811, 0xbf6efa310d6550ec),
389    (0x3c0f5e68a763133f, 0xbf6e4201220d4858),
390    (0x3c0692083115f0b9, 0xbf6d89ce57d219a6),
391    (0x3c0144bb17b9ac9c, 0xbf6cd198ae9cdc3d),
392    (0x3c0ee7f086d32c05, 0xbf6c19602656a671),
393    (0xbc0d4f1167538dbe, 0xbf6b6124bee88d82),
394    (0x3c07df8d226c67e0, 0xbf6aa8e6783ba5a2),
395    (0x3c060545d61b9512, 0xbf69f0a5523901eb),
396    (0x3c054c99c2917020, 0xbf6938614cc9b468),
397    (0xbbfa7e678d7280de, 0xbf68801a67d6ce10),
398    (0xbbf6d419bbeb223a, 0xbf67c7d0a3495ec9),
399    (0x3bfce2b9892e27e9, 0xbf670f83ff0a7565),
400    (0xbc0a4db4eff7bd61, 0xbf6657347b031fa2),
401    (0x3c05bb04682fab82, 0xbf659ee2171c6a2f),
402    (0xbbf78b8bfe6a3ade, 0xbf64e68cd33f60a3),
403    (0x3c0574c3ce9b89b1, 0xbf642e34af550d87),
404    (0x3c008fb216647b7b, 0xbf6375d9ab467a4d),
405    (0x3bded5a50e7b919c, 0xbf62bd7bc6fcaf56),
406    (0x3c091ad7a23f86fe, 0xbf62051b0260b3f0),
407    (0x3bf3ab2c932b8b0a, 0xbf614cb75d5b8e54),
408    (0xbc0c63bcdf120f7a, 0xbf609450d7d643a9),
409    (0x3bf8af8c4ab4e82d, 0xbf5fb7cee373b008),
410    (0x3bea52c2ca9d8b9b, 0xbf5e46f655de9cc6),
411    (0xbbf460b177a58742, 0xbf5cd61806bf5166),
412    (0x3bd611089de8d12a, 0xbf5b6533f5e7cf9b),
413    (0xbba4209853cee70c, 0xbf59f44a232a16ee),
414    (0x3bf964e032541a28, 0xbf58835a8e5824c3),
415    (0xbbdfa9f94392637b, 0xbf5712653743f454),
416    (0xbbf3293693721a53, 0xbf55a16a1dbf7eb6),
417    (0xbbb6e2af03c83c6e, 0xbf543069419cbad5),
418    (0xbbeb5f05b9d5bd29, 0xbf52bf62a2ad9d74),
419    (0x3bf3db883c072f72, 0xbf514e5640c41930),
420    (0xbbba675a1c045304, 0xbf4fba8837643cf6),
421    (0x3bd3b9c2aeb00068, 0xbf4cd85866933743),
422    (0xbbd2911a381901eb, 0xbf49f61d0eb8f98b),
423    (0xbbb5ea75a74def03, 0xbf4713d62f7957c3),
424    (0xbbc305b92f93ffe0, 0xbf443183c878218d),
425    (0x3bbb7c8c8dd40d35, 0xbf414f25d959223a),
426    (0x3bddc915d58a62f6, 0xbf3cd978c3804191),
427    (0x3bdc7bc3fe53cd94, 0xbf37148ec2a1bfc9),
428    (0xbbc427ce595cc53c, 0xbf314f8daf5e3bcf),
429    (0xbbcd523885ac824c, 0xbf2714eb11fa5363),
430    (0xbba945957f63330a, 0xbf1715193b17d35d),
431    (0x0000000000000000, 0x0000000000000000),
432    (0xbb988fb2ea8bf9ea, 0x3f17157590356aee),
433    (0xbbb5aeaee345d04e, 0x3f2715a3bc3593d5),
434    (0xbbd7fce430230132, 0x3f31505d6ee104c5),
435    (0xbb99a480f204ff09, 0x3f3716001718cb2b),
436    (0xbbb00e7233f2d8bd, 0x3f3cdbb9d77ae5a8),
437    (0x3bc09d379fa18c5d, 0x3f4150c5586012b8),
438    (0x3beb6b9d90a104d3, 0x3f4433b951d0b231),
439    (0x3be4d9a3ea651885, 0x3f4716b8d86bc285),
440    (0xbbc7590b3a76f0f9, 0x3f49f9c3ec8db94f),
441    (0x3bef183ca5b21bfe, 0x3f4cdcda8e93107f),
442    (0xbbda7e3465ba1270, 0x3f4fbffcbed8465f),
443    (0xbbf7821f738d1221, 0x3f5151953edceec6),
444    (0x3be3bb4c0fb95359, 0x3f52c331e5ca2e7d),
445    (0x3bf236028e962f80, 0x3f5434d4546227fc),
446    (0x3bdaaaa64d30f184, 0x3f55a67c8ad32315),
447    (0xbbfa821b7cc57a7a, 0x3f57182a894b69c6),
448    (0xbbf13d9d78aace21, 0x3f5889de4ff94838),
449    (0xbbf2f249a6b923a0, 0x3f59fb97df0b0cc2),
450    (0xbbbd47dc3664be7a, 0x3f5b6d5736af07e6),
451    (0x3bfbd1522c6418fb, 0x3f5cdf1c57138c53),
452    (0xbbfbacdbb22d2163, 0x3f5e50e74066eee6),
453    (0xbbfca7604812d77b, 0x3f5fc2b7f2d786a5),
454    (0xbc02b6832f8830bf, 0x3f609a473749d663),
455    (0x3be4e712033d0457, 0x3f61533559e4de55),
456    (0xbbd473dd044017b5, 0x3f620c26615409f1),
457    (0xbc0e033bcac726d3, 0x3f62c51a4dae8915),
458    (0xbc04a47a2b18a0fa, 0x3f637e111f0b8cb5),
459    (0x3bd6f3615771c17b, 0x3f64370ad58246dd),
460    (0x3bec0ee6c32d6236, 0x3f64f0077129eab0),
461    (0x3bffa94c99761b8f, 0x3f65a906f219ac67),
462    (0xbbf979e6b473fbf8, 0x3f6662095868c153),
463    (0x3bf30edde8d24c7b, 0x3f671b0ea42e5fda),
464    (0xbbfd01594fe1421c, 0x3f67d416d581bf7c),
465    (0x3c050bf7b995b49a, 0x3f688d21ec7a18cd),
466    (0xbc028ea2bcec5018, 0x3f69462fe92ea57c),
467    (0x3beed6add489c30b, 0x3f69ff40cbb6a04b),
468    (0x3bf201d5c3bbeb69, 0x3f6ab85494294517),
469    (0xbbfa05d0d4461ea9, 0x3f6b716b429dd0d3),
470    (0xbc07c974c8a392fd, 0x3f6c2a84d72b8189),
471    (0xbbff068238451bde, 0x3f6ce3a151e9965b),
472    (0xbbd5e4d95c6259c3, 0x3f6d9cc0b2ef4f83),
473    (0xbc01fc262efaad6c, 0x3f6e55e2fa53ee53),
474    (0x3c049eee7abc7716, 0x3f6f0f08282eb533),
475    (0xbbe903de284d2782, 0x3f6fc8303c96e7a6),
476    (0xbc0ec564845134cb, 0x3f7040ad9bd1e522),
477    (0xbbd7692b7791cf1f, 0x3f70861eadabc3dc),
478    (0xbc137829afb11c10, 0x3f70e2b6b51e4f7e),
479    (0x3c16706b91c3b0ba, 0x3f713f5030033459),
480    (0xbc17558ccd710756, 0x3f719beb1e6616c9),
481    (0x3c179f72a5bbe9de, 0x3f71f88780529bb1),
482    (0xbc1e1297c110b250, 0x3f72552555d46886),
483    (0x3c129930d567ca26, 0x3f72b1c49ef72343),
484    (0x3bea08cbd7592a17, 0x3f730e655bc67275),
485    (0x3c1e4f9d4ac5db83, 0x3f736b078c4dfd31),
486    (0xbc1ed1b0aafd30c2, 0x3f73c7ab30996b1c),
487    (0x3c1e78f0aa014b32, 0x3f74245048b46462),
488    (0x3ba8594548038a0f, 0x3f7480f6d4aa91c2),
489    (0x3c03df498168a333, 0x3f74dd9ed4879c82),
490    (0x3c1b1c502544f82a, 0x3f753a4848572e77),
491    (0xbc0dc50552fe0da9, 0x3f7596f33024f203),
492    (0xbc1671d85c357d5e, 0x3f75f39f8bfc9212),
493    (0x3bf1c670cabccefa, 0x3f76504d5be9ba1e),
494    (0xbc19983a9e98f318, 0x3f76acfc9ff8162f),
495    (0x3c1ae1a26af3eebe, 0x3f7709ad583352d6),
496    (0x3c1655eb510bfda3, 0x3f77665f84a71d35),
497    (0xbbfe287bc0192e15, 0x3f77c313255f22f8),
498    (0x3c0cc4944139ccbf, 0x3f781fc83a671257),
499    (0x3c14e09b4cb8645b, 0x3f787c7ec3ca9a19),
500    (0xbbf5becc991e3a5f, 0x3f78d936c1956991),
501    (0xbc1ddfa3f1e15ba8, 0x3f7935f033d3309e),
502    (0xbc1b7b06ea3fb362, 0x3f7992ab1a8f9fac),
503    (0x3c132d614904e46c, 0x3f79ef6775d667b4),
504    (0xbbf7186892b5bfae, 0x3f7a4c2545b33a3e),
505    (0xbc1d4de10b28dfd8, 0x3f7aa8e48a31c95c),
506    (0x3c14bb4b3bdc8175, 0x3f7b05a5435dc7ad),
507    (0x3c19cedbd1d7fba5, 0x3f7b62677142e860),
508    (0xbbd0ed3379beaffd, 0x3f7bbf2b13ecdf2f),
509    (0x3c16e86a125567a6, 0x3f7c1bf02b676060),
510    (0xbc135038e0c0a52c, 0x3f7c6184f1b326d9),
511    (0x3bc05ef8bf5adf5e, 0x3f7cbe4c95b6c5ab),
512    (0xbbeb7338b99a6b26, 0x3f7d1b15aeab217c),
513    (0x3c09e901c30c427e, 0x3f7d77e03c9bf0a4),
514    (0xbc11f28a9c0b3d47, 0x3f7dd4ac3f94ea0a),
515    (0xbc1140ef760d3b63, 0x3f7e3179b7a1c520),
516    (0xbc0ab65b1037f517, 0x3f7e8e48a4ce39e7),
517    (0xbc076940c457ce6d, 0x3f7eeb19072600ed),
518    (0x3bfda3ae65a605cf, 0x3f7f47eadeb4d34d),
519    (0x3c1b15d0bce2ede6, 0x3f7fa4be2b866ab0),
520    (0x3c2e02aa1fa9dc57, 0x3f8000c976d340a6),
521    (0x3c16be971a5565b9, 0x3f802f34929068f3),
522    (0xbbf8a9319a6ed164, 0x3f805da069008be7),
523    (0x3c1825079f1e0ec5, 0x3f808c0cfa298771),
524    (0x3c060d5749321466, 0x3f80ba7a461139c8),
525    (0xbc25b8f4c479e2e0, 0x3f80e8e84cbd8169),
526    (0xbc1e3e1248004e29, 0x3f8117570e343d17),
527    (0x3c09ac06487c3750, 0x3f8145c68a7b4bdd),
528    (0x3c1f657ea5c03ea4, 0x3f817436c1988d0d),
529    (0xbc25a965659a05e2, 0x3f81a2a7b391e040),
530    (0xbc221ce9b9bfc512, 0x3f81d119606d2554),
531    (0xbc230fda247ad0e1, 0x3f81ff8bc8303c70),
532    (0xbc1382c78a45cdea, 0x3f822dfeeae10601),
533    (0x3c246ae4a64073d4, 0x3f8250d5bf952374),
534    (0xbc1dcad2cec3b84b, 0x3f827f4a29740a2f),
535    (0xbc2413fbeb0b0635, 0x3f82adbf4e50cdf9),
536    (0x3c2f28e6a48bcb90, 0x3f82dc352e315049),
537    (0xbc296f286e1eb086, 0x3f830aabc91b72e0),
538    (0xbc2f88c04206dfa1, 0x3f8339231f1517c1),
539    (0xbc211ea20e195841, 0x3f83679b30242139),
540    (0xbc0d6e71452b674a, 0x3f839613fc4e71dc),
541    (0xbc257c578233b1b3, 0x3f83c48d8399ec85),
542    (0xbc0ec430f03b76e0, 0x3f83f307c60c7455),
543    (0x3c2e00dd1902ffb9, 0x3f842182c3abecb5),
544    (0xbc2f22bcd96afe38, 0x3f844ffe7c7e3957),
545    (0x3c208fd90f841d30, 0x3f847e7af0893e2f),
546    (0x3c109594c5552bcc, 0x3f84acf81fd2df7e),
547    (0xbc201a8a652e5602, 0x3f84db760a6101c9),
548    (0xbbf826168febb3d0, 0x3f8509f4b03989dc),
549    (0xbc17eb21a35021e3, 0x3f85387411625ccc),
550    (0xbc266cbc818e1750, 0x3f8566f42de15ff4),
551    (0x3bf9b784dd6cebda, 0x3f85957505bc78f6),
552    (0x3c22b121ab482456, 0x3f85b8562298c65b),
553    (0xbc15d29869dd8233, 0x3f85e6d842633702),
554    (0xbc2572a1b6cd63cf, 0x3f86155b1d99f672),
555    (0xbc1a1f355360e877, 0x3f8643deb442eb59),
556    (0xbc2b6f1cd2e1c03f, 0x3f8672630663fcad),
557    (0xbc22aaa11ccddcae, 0x3f86a0e8140311aa),
558    (0x3c23d979ddf4746c, 0x3f86cf6ddd2611d4),
559    (0xbc0dc930484501f8, 0x3f86fdf461d2e4f8),
560];