pxfm/bessel/
j1f_coeffs.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
30/**
31Generating Taylor expansions for zero and extremums see [crate::bessel::j1_coeffs::J1_ZEROS]
32to start of explanation.
33
34Generated by SageMath and Sollya:
35```python
36def compute_intervals(zeros):
37    intervals = []
38    for i in range(0, len(zeros)):
39        if i == 0:
40            a = (zeros[i]) / 2 - 0.05 - zeros[i]
41            b = (zeros[i] + zeros[i + 1]) / 2 + 0.05 - zeros[i]
42            intervals.append((RealField(18)(a), RealField(18)(b), RealField(110)(zeros[i])))
43        elif i + 1 > len(zeros) - 1:
44            a = (zeros[i - 1] + zeros[i]) / 2 - 0.05 - zeros[i]
45            b = (zeros[i]) + 0.83 + 0.05 - zeros[i]
46            intervals.append((RealField(18)(a), RealField(18)(b), RealField(110)(zeros[i])))
47        else:
48            a = (zeros[i - 1] + zeros[i]) / 2 - zeros[i] - 0.05
49            b = (zeros[i] + zeros[i + 1]) / 2 + 0.05  - zeros[i]
50            intervals.append((RealField(18)(a), RealField(18)(b), RealField(110)(zeros[i])))
51    return intervals
52
53intervals = compute_intervals(j1_zeros)
54# print(intervals)
55
56def build_sollya_script(a, b, zero, deg):
57    return f"""
58prec = 500;
59bessel_j1 = library("./pxfm/notes/bessel_sollya/cmake-build-release/libbessel_sollya.dylib");
60f = bessel_j1(x + {zero});
61d = [{a}, {b}];
62pf = remez(f, {deg}, d, 1, 1e-25);
63for i from 0 to degree(pf) do {{
64    write(coeff(pf, i)) >> "coefficients.txt";
65    write("\\n") >> "coefficients.txt";
66}};
67"""
68
69def load_coefficients(filename):
70    with open(filename, "r") as f:
71        return [RR(line.strip()) for line in f if line.strip()]
72
73def call_sollya_on_interval(a, b, zero, degree=12):
74    sollya_script = build_sollya_script(a, b, zero, degree)
75    with open("tmp_interval.sollya", "w") as f:
76        f.write(sollya_script)
77    import subprocess
78    if os.path.exists("coefficients.txt"):
79        os.remove("coefficients.txt")
80    try:
81        result = subprocess.run(
82            ["sollya", "tmp_interval.sollya"],
83            check=True,
84            capture_output=True,
85            text=True
86        )
87    except subprocess.CalledProcessError as e:
88        return
89
90degree = 13
91
92print(f"pub(crate) static J1F_COEFFS: [[u64;{degree + 1}]; {len(intervals)}] = [")
93for i in range(0, len(intervals)):
94    interval = intervals[i]
95    call_sollya_on_interval(interval[0], interval[1], interval[2], degree)
96    coeffs = load_coefficients(f"coefficients.txt")
97    print("[")
98    for c in coeffs:
99        print(double_to_hex(c) + ",")
100    print("],")
101print("];")
102```
103**/
104pub(crate) static J1F_COEFFS: [[u64; 14]; 47] = [
105    [
106        0x3fe29ea3d19f035d,
107        0xbce22d3695a081b6,
108        0xbfca41115c5deeab,
109        0x3f78d1448e710c46,
110        0x3f8c441a2f9a4f69,
111        0xbf386671c22a634e,
112        0xbf39e2504b2e7b5b,
113        0x3ee34ccc14eef789,
114        0x3eda49718b72405e,
115        0xbe810474efe3c9c6,
116        0xbe70fa29fb791201,
117        0x3e1362d76c062ab0,
118        0x3dfdd76f07295520,
119        0xbda1a753bf39cb58,
120    ],
121    [
122        0xbc600f4743bf63e1,
123        0xbfd9c6cf582cbf8a,
124        0x3faae8a39f51ad73,
125        0x3fab589d1da1462b,
126        0xbf7537544c334c23,
127        0xbf624b34099ee01c,
128        0x3f26e4c2d53c4f46,
129        0x3f083a06ee794927,
130        0xbec9799d241e5d2b,
131        0xbea3382caabc394d,
132        0x3e617039a48bb9f6,
133        0x3e345a8c920dcd07,
134        0xbdf014c3bf3000a5,
135        0xbdc034aa4e0a0169,
136    ],
137    [
138        0xbfd626ee83500bf2,
139        0x3cb26dfd317b25ec,
140        0x3fc55f6bec9ef90d,
141        0xbf83d23336fd2aca,
142        0xbf88c77a98398e83,
143        0x3f45cdc98dc64f81,
144        0x3f373576fec2e394,
145        0xbef24614559dc202,
146        0xbed7b852bb05a2ff,
147        0x3e90ac054c63ba46,
148        0x3e6ea70b302a9ba3,
149        0xbe23616f333984e9,
150        0xbdfb0a064790ebe6,
151        0x3db0d9e08e0394a8,
152    ],
153    [
154        0xbc69b70cbe5811c2,
155        0x3fd33518b3874e8d,
156        0xbf95e70dc6036109,
157        0xbfa80c83bdeee89d,
158        0x3f69a4b292e2ab0d,
159        0x3f613fbc7d6bc462,
160        0xbf207358bb38afba,
161        0xbf0796a754e5c2d1,
162        0x3ec4255a5a67b552,
163        0x3ea3026fd5c83da8,
164        0xbe5d482c06555943,
165        0xbe34473271553ffa,
166        0x3dec0515656e1a0c,
167        0x3dbf11e1948b68d2,
168    ],
169    [
170        0x3fd17dbf09d40d24,
171        0xbca5b86542306439,
172        0xbfc1404bf647c233,
173        0x3f74f4df276a170d,
174        0x3f85c628542932bb,
175        0xbf3d68ab724123eb,
176        0xbf356acb63c4c7d5,
177        0x3eec10b48d91d910,
178        0x3ed67eaa56c73092,
179        0xbe8bb65dbfeed0f6,
180        0xbe6d8683c673b075,
181        0x3e20f7b6316797c6,
182        0x3dfa451f70b9922a,
183        0xbdadce2c76e4d044,
184    ],
185    [
186        0x3c65df812ede650d,
187        0xbfcff654544ebcd3,
188        0x3f89223ff2c07565,
189        0x3fa4b0c5d5da68d8,
190        0xbf5f91a9ee0b0e8a,
191        0xbf5f51c2489da5c1,
192        0x3f16b4c9c8efdfe6,
193        0x3f063c54768ebb67,
194        0xbebe3724b50493f9,
195        0xbea25c12f8827c9d,
196        0x3e5747d49182153b,
197        0x3e33e41718262cb9,
198        0xbde738f2d8f2cac8,
199        0xbdbe80a4948dbf09,
200    ],
201    [
202        0xbfcddceb4ce1bf49,
203        0x3c9e79566c79eb3d,
204        0x3fbda52116c0a587,
205        0xbf6a9da4603b9358,
206        0xbf8331e74ea51630,
207        0x3f33e5cb6ecbca42,
208        0x3f33885fe920e6b8,
209        0xbee494c100626ece,
210        0xbed512b940a2ae49,
211        0x3e85a8688c9ba4ce,
212        0x3e6c31a31b773184,
213        0xbe1bd11439ffd259,
214        0xbdf96a9daeb33936,
215        0x3da9176221cc5aa0,
216    ],
217    [
218        0xbc62383f10698557,
219        0x3fcbf3337873a7d9,
220        0xbf80c83a2d7adab7,
221        0xbfa251858011820e,
222        0x3f559eb160bdad7b,
223        0x3f5c5bce33b024a1,
224        0xbf10413e2f7af958,
225        0xbf04a6704d9a9d07,
226        0x3eb6c43df550ea17,
227        0x3ea16abdc27eeb92,
228        0xbe52576e7fc9d1e6,
229        0xbe332dc1c1ed3ee2,
230        0x3de2f6391206ebbc,
231        0x3dbda410af6fe5f4,
232    ],
233    [
234        0x3fca7f63fea81f25,
235        0xbc9710bf367611f2,
236        0xbfba60afb0664019,
237        0x3f62c1e930937e24,
238        0x3f814506466cfd08,
239        0xbf2cca8c0c28fab3,
240        0xbf31df821c353039,
241        0x3edee8816088c0d5,
242        0x3ed3a365144be247,
243        0xbe80ed354ac60d34,
244        0xbe6ab31b90ea8e41,
245        0x3e168836e968cdd7,
246        0x3df8613c2e496c6b,
247        0xbda4daa0300cec8d,
248    ],
249    [
250        0x3c5e59bc05abf185,
251        0xbfc925c6fca08f55,
252        0x3f786dd32e0596e8,
253        0x3fa09463bbd036c8,
254        0xbf4fda0298c57ed5,
255        0xbf59f4be6075f749,
256        0x3f0877991961e89e,
257        0x3f032cb00f1d1bde,
258        0xbeb19d8c17e4c965,
259        0xbea06a043bd432bf,
260        0x3e4d398ca8f49a5e,
261        0x3e3250f2ec743ceb,
262        0xbddf086f08c63838,
263        0xbdbc8e4fa8a9f9e9,
264    ],
265    [
266        0xbfc810f50225b04a,
267        0x3c923e2f625151bc,
268        0x3fb7fdf97ac36a6f,
269        0xbf5c3c256a8cde19,
270        0xbf7f98feb7276ef1,
271        0x3f25f6559e6b5a2c,
272        0x3f3080f57a3a527d,
273        0xbed80c5147824d09,
274        0xbed256dac8ee5bae,
275        0x3e7af7628377d0c7,
276        0x3e6938ef2e239da2,
277        0xbe12633fe4f5465f,
278        0xbdf745af34a2de92,
279        0x3da15e1c189cc1e4,
280    ],
281    [
282        0xbc59737d6e4fe431,
283        0x3fc70c511227d5aa,
284        0xbf72ccb0e975555d,
285        0xbf9e7dc08e70e9c5,
286        0x3f48acdc5b030cb1,
287        0x3f580503724ae80a,
288        0xbf032ee4c8c82218,
289        0xbf01e5d2836968fa,
290        0x3eac129da754f086,
291        0x3e9ef1612a209ee4,
292        0xbe47b90193cc5cb3,
293        0xbe316f0e2a3b6246,
294        0x3dd9aabe334f3655,
295        0x3dbb62c2bd937db8,
296    ],
297    [
298        0x3fc633e7f7f05300,
299        0xbc8dba9947515d38,
300        0xbfb6273784c1bfc4,
301        0x3f563ae94ade4347,
302        0x3f7d4666536b9564,
303        0xbf216d528356c33f,
304        0xbf2ec0dcdab1fcc9,
305        0x3ed34e967676159e,
306        0x3ed135c5c78436c9,
307        0xbe75f7c3c6380689,
308        0xbe67dba82b616a97,
309        0x3e0e71b8431ababd,
310        0x3df62fc761d5cf41,
311        0xbd9d2fe54f4a496b,
312    ],
313    [
314        0x3c558a68c87f4030,
315        0xbfc5664e13b70622,
316        0x3f6e16555e1087dd,
317        0x3f9c5e1ad9fb2f2d,
318        0xbf43d369f956c6bd,
319        0xbf566f4ec27a7a37,
320        0x3eff0de050de72b9,
321        0x3f00cf26431ce3a2,
322        0xbea6f46c2694b0df,
323        0xbe9d407f232dd5f2,
324        0x3e43a29f2e4c9c8a,
325        0x3e3098ca879e4471,
326        0xbdd585d6255bc3df,
327        0xbdba39fcc1ea78bf,
328    ],
329    [
330        0xbfc4b71d4ca2cc69,
331        0x3c88c930c0b4c560,
332        0x3fb4ae245697fb03,
333        0xbf5215e4e1a6153c,
334        0xbf7b633ed6d8e543,
335        0x3f1c7f17b4d42a82,
336        0x3f2ce01b8a6eca10,
337        0xbecfced72e1b750f,
338        0xbed03c9cd706bc3a,
339        0x3e72450e1e5d9dd3,
340        0x3e66a249f63c5bc1,
341        0xbe0999366388212b,
342        0xbdf52ba007be60f3,
343        0x3d98ced5beb32a74,
344    ],
345    [
346        0xbc526f6d035edf6d,
347        0x3fc40f90793605bb,
348        0xbf68c833077fb99d,
349        0xbf9aa0ce0421d16e,
350        0x3f405fa598ed8bab,
351        0x3f551d30d78a7993,
352        0xbef9c5807480a6e1,
353        0xbeffc1bbf50ca15b,
354        0x3ea32dfda14ee884,
355        0x3e9bc2119616c18d,
356        0xbe408b0d01f43d88,
357        0xbe2fa87db40715d8,
358        0x3dd24d20c9bf3988,
359        0x3db920af9a64d8b9,
360    ],
361    [
362        0x3fc37dfa8f5a550a,
363        0xbc850d0284917193,
364        0xbfb3775c1a04efff,
365        0x3f4e2b4810a4a882,
366        0x3f79d151a72aa26d,
367        0xbf17d8e5a0a8f01d,
368        0xbf2b49a641814268,
369        0x3ecac10968085b43,
370        0x3ececa610eed952d,
371        0xbe6eefd23aebb19b,
372        0xbe658bda5ec8aafe,
373        0x3e05d77b1c39da47,
374        0x3df43d63ca6b9538,
375        0xbd9555dba21d3a76,
376    ],
377    [
378        0x3c4fe3057c054c4c,
379        0xbfc2f2072e638cf3,
380        0x3f64df208bbd408f,
381        0x3f992bb5e1e159a9,
382        0xbf3ba181c0657121,
383        0xbf53fe9d5ba9fb4a,
384        0x3ef5d17600fd9483,
385        0x3efe26d373f4ffea,
386        0xbea0509689b62f58,
387        0xbe9a70f1b160bc28,
388        0x3e3c4fa74da61f57,
389        0x3e2e44cc2feeed24,
390        0xbdcf87b5a4255e18,
391        0xbdb81bebaaec3c7c,
392    ],
393    [
394        0xbfc2768d29c69936,
395        0x3c822565e3c86e7f,
396        0x3fb271811730b057,
397        0xbf49a8df96a15635,
398        0xbf787c81cf1b96e9,
399        0x3f14549cdbcc339c,
400        0x3f29ed2567282f3d,
401        0xbec6e4137cf2411c,
402        0xbecd53321406f402,
403        0x3e6a98443cd6fc90,
404        0x3e6494adc7c6521b,
405        0xbe02e1d787962f20,
406        0xbdf3653d7772f823,
407        0x3d928dbabedf1d31,
408    ],
409    [
410        0xbc4bd8c1a48b98b5,
411        0x3fc1ff5eec6a01cd,
412        0xbf61e438b722bfe0,
413        0xbf97ed5fffc1c711,
414        0x3f37b7997ba917ee,
415        0x3f53081def95b78f,
416        0xbef2c5f5ec3350b1,
417        0xbefcc11a59469f36,
418        0x3e9c2c3894e80d05,
419        0x3e9946d150444e47,
420        0xbe388ce82c32666d,
421        0xbe2d044ba8d28f8d,
422        0x3dcb7a77f047774e,
423        0x3db72cad88060e0b,
424    ],
425    [
426        0x3fc194eba75b32f9,
427        0xbc7faef3b1a5e821,
428        0xbfb190f7dc273599,
429        0x3f462bb47a5c8cc1,
430        0x3f7756ef20f501d3,
431        0xbf1198b0baaa058c,
432        0xbf28be8cf854b2d7,
433        0x3ec3dd6f88b69c69,
434        0x3ecc09c72877c12b,
435        0xbe6728ec2da828ad,
436        0xbe63b897c2c7b139,
437        0x3e008344f3db34b5,
438        0x3df2a1a5ef6e57ff,
439        0xbd904c70dc90d3bc,
440    ],
441    [
442        0x3c4888e51c985983,
443        0xbfc12dd57bf18ad9,
444        0x3f5f1e1e7f3937bf,
445        0x3f96d9afe883018e,
446        0xbf34a538a4802887,
447        0xbf52316250b44b33,
448        0x3ef05f11562b37ff,
449        0x3efb86bad38b7b43,
450        0xbe98a1b250bb7d2f,
451        0xbe983dca646511fe,
452        0x3e3588f1be962e6d,
453        0x3e2be36513882145,
454        0xbdc831edc515fa05,
455        0xbdb6520b1c14e6f6,
456    ],
457    [
458        0xbfc0d0d36473e98c,
459        0x3c7bf69dcc64d467,
460        0x3fb0cda9974abd9e,
461        0xbf4367f38f204418,
462        0xbf7656b75e3b5a4f,
463        0x3f0ed82abf947b58,
464        0x3f27b4e5b765cd39,
465        0xbec171fd1a726d85,
466        0xbecae62a6c526e99,
467        0x3e64648b6f18fd5e,
468        0x3e62f3b53a117819,
469        0xbdfd2c72ca1c90f8,
470        0xbdf1f085bd0fab41,
471        0x3d8ce566a6478844,
472    ],
473    [
474        0xbc45ca84b624bf30,
475        0x3fc076826cc2c191,
476        0xbf5b62885e006ac2,
477        0xbf95e7f53001e43e,
478        0x3f322ebeb8d9f78a,
479        0x3f517444a79fe500,
480        0xbeece06f1cc95449,
481        0xbefa7006e603acdb,
482        0x3e95c42dcf4cb755,
483        0x3e9750c9cbea6158,
484        0xbe3313f5f0d7c83f,
485        0xbe2ade4e1f9c8db0,
486        0x3dc57f801723eb46,
487        0x3db58a5b7895974e,
488    ],
489    [
490        0x3fc02455675ab6d2,
491        0xbc78e3f9125495c0,
492        0xbfb021c155a72057,
493        0x3f412be56fc16829,
494        0x3f75749d556a12df,
495        0xbf0b51f1f9db1832,
496        0xbf26c96a07103bad,
497        0x3ebef3a7bef163ee,
498        0x3ec9e206eb2ce693,
499        0xbe6220bf8745e1a3,
500        0xbe6242a68bb3eb7f,
501        0x3df9ffc1c0ac86f0,
502        0x3df14fb8a5e39fac,
503        0xbd89d286115bf7a6,
504    ],
505    [
506        0x3c4380441b0b0c6a,
507        0xbfbfa8b41711c839,
508        0x3f5857d39699926e,
509        0x3f9511c6dadaa99b,
510        0xbf302c289dbbcc5a,
511        0xbf50cc2238d1bf52,
512        0x3ee9b64d5a4aa86c,
513        0x3ef976fb01920f8b,
514        0xbe93693a8cc790fd,
515        0xbe967b9496685d1b,
516        0x3e310c25f77e4f25,
517        0x3e29f17f3e13ecd9,
518        0xbdc3414987038eec,
519        0xbdb4d3b9dc98b4b1,
520    ],
521    [
522        0xbfbf161d0c28b48b,
523        0x3c765dc0b792167d,
524        0x3faf11d837aa6e5c,
525        0xbf3eab76da4d4788,
526        0xbf74ab329f05bdc5,
527        0x3f086ada57d5a903,
528        0x3f25f6e78e464093,
529        0xbebbb2720677d252,
530        0xbec8f8525854df7e,
531        0x3e603f882886871e,
532        0x3e61a293516bd71e,
533        0xbdf75995de0fcb8d,
534        0xbdf0bd411cec4c70,
535        0x3d873e4d136b8f8b,
536    ],
537    [
538        0xbc418c91b7939a2c,
539        0x3fbe8727daa3daec,
540        0xbf55d353e285455c,
541        0xbf94524d4813cbac,
542        0x3f2d037574df02eb,
543        0x3f50356bb7473b5d,
544        0xbee7156bfaea76f5,
545        0xbef896d7dbd3810e,
546        0x3e9172c5e1abd5c6,
547        0x3e95baadfc18282d,
548        0xbe2eb240c0cc9c75,
549        0xbe2919d9b9e0a0b9,
550        0x3dc15e50952db326,
551        0x3db42c51c147e65d,
552    ],
553    [
554        0x3fbe0357c158b118,
555        0xbc74361048923786,
556        0xbfadffc2fc1a90f5,
557        0x3f3b9b82ae081404,
558        0x3f73f64e05315346,
559        0xbf05fe4b66e63077,
560        0xbf2539518d55a85c,
561        0x3eb8f8d02bcc2897,
562        0x3ec825039164993f,
563        0xbe5d566920c2c9ab,
564        0xbe61111befe6e2b8,
565        0x3df51d4c70439a2f,
566        0x3df0375b8b7f66b3,
567        0xbd850e412a9bff06,
568    ],
569    [
570        0x3c3fc518d24f616f,
571        0xbfbd8293aa55d18f,
572        0x3f53b6beb83f212f,
573        0x3f93a5ccbc12a602,
574        0xbf2a3765d26776da,
575        0xbf4f5ab33747e91e,
576        0x3ee4df6f1a6da3df,
577        0x3ef7cbd49b834b1a,
578        0xbe8f9607c8362a02,
579        0xbe950b374b4c0d92,
580        0x3e2bd1f7180ef6ba,
581        0x3e2854abbc0c7de8,
582        0xbdbf87db79765a71,
583        0xbdb3926b2e69585a,
584    ],
585    [
586        0xbfbd0b36e5737457,
587        0x3c726585805a22d8,
588        0x3fad082ce3c6b4a2,
589        0xbf3905d00c5e9c91,
590        0xbf7352b073fcfa33,
591        0x3f03f1ccfed800a0,
592        0x3f248d74577878fa,
593        0xbeb6a9ef1ba885bb,
594        0xbec764d8b51b8b1c,
595        0x3e5aa78ed7e846ea,
596        0x3e608c46d6182272,
597        0xbdf33581106d6379,
598        0xbdef78fcff7e62ac,
599        0x3d832f39fadd44c1,
600    ],
601    [
602        0xbc3cea65a1050db5,
603        0x3fbc96700bf039e1,
604        0xbf51ec0b5de4bafb,
605        0xbf93095734a2441c,
606        0x3f27d74e122576e6,
607        0x3f4e636fe2585c98,
608        0xbee2fe11959a4f56,
609        0xbef712e4d39f1e3a,
610        0x3e8cc3ac0e3e5a57,
611        0x3e946ad2493deefc,
612        0xbe295ca72f5034a9,
613        0xbe279fa7ce9e0732,
614        0x3dbcc7fe67868a0c,
615        0x3db30482af82a3e3,
616    ],
617    [
618        0x3fbc29ae8400a31f,
619        0xbc70d624180ba1cb,
620        0xbfac27138da31b39,
621        0x3f36d141fcbed86f,
622        0x3f72bdc71061ff60,
623        0xbf0231cf645337e2,
624        0xbf23f0bf3a855d26,
625        0x3eb4b05ea24a407d,
626        0x3ec6b52ac7705590,
627        0xbe585a82e1962dc0,
628        0xbe60126ea6b0d3d5,
629        0x3df191f5eda7279d,
630        0x3dee96ae83ca14cd,
631        0xbd8191df21c5049c,
632    ],
633    [
634        0x3c3a725871d54f1e,
635        0xbfbbbf246914235e,
636        0x3f5062daee353d6e,
637        0x3f927a96f174b658,
638        0xbf25cdb5dea7195a,
639        0xbf4d818348f8b2ae,
640        0x3ee160aab6b91ebc,
641        0x3ef6698d6e3dde27,
642        0xbe8a56325d99553d,
643        0xbe93d7884737e010,
644        0x3e273dfa1c71021f,
645        0x3e26f8d7f1f40cd1,
646        0xbdba675a7a73a904,
647        0xbdb28141631b6b6a,
648    ],
649    [
650        0xbfbb5b8273b75054,
651        0x3c6ef081b4f49e8c,
652        0x3fab59418c36a598,
653        0xbf34eafeaa92d6ad,
654        0xbf7235801af9154a,
655        0x3f00af9747e26a9d,
656        0x3f23611db02b9d63,
657        0xbeb2fbe420b9b6ee,
658        0xbec613cc016f8c79,
659        0x3e565cfa070daeea,
660        0x3e5f4465aa2f3924,
661        0xbdf0262c878a66b9,
662        0xbdedc58772bf3be9,
663        0x3d802a5900529d85,
664    ],
665    [
666        0xbc384aa4fbafc099,
667        0x3fbaf9cb49c4f934,
668        0xbf4e1d930b512b68,
669        0xbf91f7a8fec6eb30,
670        0x3f240a553105f569,
671        0x3f4cb20c812efe23,
672        0xbedff5195120ac4b,
673        0xbef5cdc48eb38532,
674        0x3e883b07bbc753fc,
675        0x3e934fb5f8f40030,
676        0xbe2566435ca657bc,
677        0xbe265e90a4422b0e,
678        0x3db85513c8865e5e,
679        0x3db2077cf853887e,
680    ],
681    [
682        0x3fba9e13a0db6429,
683        0xbc6c8fc49071e774,
684        0xbfaa9c1ca2161ab5,
685        0x3f3344a09efdef03,
686        0x3f71b82c43097eb4,
687        0xbefebfb97beaa2a2,
688        0xbf22dcdb1b1095b7,
689        0x3eb180048a016cca,
690        0x3ec57eee38f33b34,
691        0xbe54a0cd96cea7fb,
692        0xbe5e74d5d6cab4bf,
693        0x3dedd0d2df39d680,
694        0x3ded0395b2b002c8,
695        0xbd7ddf4961633a0a,
696    ],
697    [
698        0x3c366129d7cdda38,
699        0xbfba4407e04298d1,
700        0x3f4bcc9df0cefa78,
701        0x3f917f0266db20d1,
702        0xbf2280a052210834,
703        0xbf4bf2ada1f36d37,
704        0x3edd83d57dbfecdc,
705        0x3ef53dd97231158c,
706        0xbe8663c0bacd7255,
707        0xbe92d1fb6736ed8c,
708        0x3e23c94599131ea8,
709        0x3e25cf6504993c56,
710        0xbdb683e80faa06e8,
711        0xbdb19631ce482d25,
712    ],
713    [
714        0xbfb9ef3bb2213b0a,
715        0x3c6a7968b4e09650,
716        0x3fa9ed82007a9965,
717        0xbf31d2fdeeb2c55d,
718        0xbf71446866fe7a9f,
719        0x3efc73b6851770db,
720        0x3f22628de4e7b12f,
721        0xbeb03303cb6b68e6,
722        0xbec4f50f5682c560,
723        0x3e531ae61db4a107,
724        0x3e5db4387e5cde8e,
725        0xbdeba1fde369500d,
726        0xbdec4f2d9a6ca338,
727        0x3d7bb4d1335b858d,
728    ],
729    [
730        0xbc34b2fde0d60fa7,
731        0x3fb99be744018c90,
732        0xbf49c3f52a2af15f,
733        0xbf910f5ca51f983b,
734        0x3f2126c8e8c80fca,
735        0x3f4b416f7d4ef26a,
736        0xbedb5e2e533b6e90,
737        0xbef4b86226f8434d,
738        0x3e84c505ef1872eb,
739        0x3e925d2f3adca31c,
740        0xbe225d5434e81821,
741        0xbe254a1c99a03af6,
742        0x3db4e94bd07d8a6f,
743        0x3db12c7cbd69804c,
744    ],
745    [
746        0x3fb94d3276914e50,
747        0xbc68a054fb407a48,
748        0xbfa94bac1950e23d,
749        0x3f308d4ff8f228ce,
750        0x3f70d90d29bf518f,
751        0xbefa6d56164ba1ad,
752        0xbf21f107d97a6716,
753        0x3eae1a62755de03b,
754        0x3ec474ea4fd020bb,
755        0xbe51c2774b54b19c,
756        0xbe5d00e34f95d0da,
757        0x3de9b39b1acf50d9,
758        0x3deba6dd96aebb23,
759        0xbd79c96d87e11eb2,
760    ],
761    [
762        0x3c3336a57f397478,
763        0xbfb8ffc9bd24fe07,
764        0x3f47f7d46ab331c5,
765        0x3f90a7a725d3fb50,
766        0xbf1fea1728ee3283,
767        0xbf4a9cac69f01f7f,
768        0x3ed977f48dd3df20,
769        0x3ef43c2d8dc63c79,
770        0xbe8355d08ef44310,
771        0xbe91f054ae49cd66,
772        0x3e211ab3e0c31baf,
773        0x3e24cdaac969d4dd,
774        0xbdb37cc6ee5acaa3,
775        0xbdb0c99a10f9a149,
776    ],
777    [
778        0xbfb8b67a2481077c,
779        0x3c66ff282f533f22,
780        0x3fa8b51f21068dcb,
781        0xbf2ed935c7af3be8,
782        0xbf707522a502e55b,
783        0x3ef8a1960639d120,
784        0x3f21874a473e56eb,
785        0xbeac10cf4666ac95,
786        0xbec3fd6b83d91ed3,
787        0x3e509072f594172b,
788        0x3e5c5969c0715bb8,
789        0xbde7fbce7fa1d168,
790        0xbdeb09679444c7c3,
791        0x3d7813cf0f88ee50,
792    ],
793    [
794        0xbc31df60e9bfe4d4,
795        0x3fb86e51be0a9153,
796        0xbf465ed1b387e0dc,
797        0xbf9046fc5a218a13,
798        0x3f1dca617fec07ec,
799        0x3f4a030022145da6,
800        0xbed7c761870dcbbb,
801        0xbef3c83888dc1ceb,
802        0x3e820edd9a880dbb,
803        0x3e918a9391ba3964,
804        0xbe1ff64d38db85c5,
805        0xbe245927a9c55d79,
806        0x3db2377b4d9f1923,
807        0x3db06cdd9727d79f,
808    ],
809    [
810        0x3fb829d06fee9265,
811        0xbc6580de45a47453,
812        0xbfa8289a526d76b3,
813        0x3f2cd680355cdc28,
814        0x3f7017d70f5091c7,
815        0xbef707978e429e47,
816        0xbf21247ce0bc7ead,
817        0x3eaa3f6135c91ad4,
818        0x3ec38da7a255e74a,
819        0xbe4efe445dfcd93f,
820        0xbe5bbc925c9c4b66,
821        0x3de6729121dc2aec,
822        0x3dea75b6fa634294,
823        0xbd768bad7f03cc70,
824    ],
825    [
826        0x3c30ac9cf88bc679,
827        0xbfb7e656efb009ad,
828        0x3f44f15066f3d3cc,
829        0x3f8fd932c26aacb2,
830        0xbf1be460dd833bb1,
831        0xbf49733b5917b1ec,
832        0x3ed64488c387546b,
833        0x3ef35ba58b547387,
834        0xbe80ea46c863072a,
835        0xbe912b31edd1db5a,
836        0x3e1df32c5fd2f995,
837        0x3e23ebca247be24d,
838        0xbdb113cb7b7c70db,
839        0xbdb015b1107de244,
840    ],
841    [
842        0xbfb7a62320798174,
843        0x3c9957b1463c023c,
844        0x3fa7a50ca4504ab9,
845        0xbf2b095ccb52d0c4,
846        0xbf6f80ef11d944d8,
847        0x3ef59822dd4acc8e,
848        0x3f20c7e6a7116068,
849        0xbea89e01408239eb,
850        0xbec324d470ec229a,
851        0x3e4d13ff680fb32a,
852        0x3e5b2943a9554368,
853        0xbde5283c9b463c57,
854        0xbde9e8488fabd47c,
855        0x3d7a620fb02a1ce9,
856    ],
857];