fastmaths 0.1.0

High-performance no_std math routines targeting glibc parity and strict f64 accuracy.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
//! Auto-generated from glibc s_erfc_data.c
#![allow(clippy::excessive_precision)]

pub const T: &[[f64; 13]] = &[
    [
        f64::from_bits(0x3fe20dd750429b6d),
        f64::from_bits(0x3c61a1feb75a48a8),
        f64::from_bits(0xbfd20dd750429b6c),
        f64::from_bits(0x3fdb14c2f863e403),
        f64::from_bits(0xbff0ecf9db3af35d),
        f64::from_bits(0x400d9eb53ca6eeed),
        f64::from_bits(0xc030a945830d95c8),
        f64::from_bits(0x4056e8a963e2f1f5),
        f64::from_bits(0xc0829b7ccc8f396f),
        f64::from_bits(0x40b15e716e83c27e),
        f64::from_bits(0xc0e1cfdcfbcaf22a),
        f64::from_bits(0x4111986cc7a7e8fe),
        f64::from_bits(0xc1371f7540590a91),
    ],
    [
        f64::from_bits(0x3fe20dd750429ae7),
        f64::from_bits(0x3c863da89e801fd4),
        f64::from_bits(0xbfd20dd750400795),
        f64::from_bits(0x3fdb14c2f57c490c),
        f64::from_bits(0xbff0ecf95c8c9014),
        f64::from_bits(0x400d9e981f2321ef),
        f64::from_bits(0xc030a81482de1506),
        f64::from_bits(0x4056d662420a604b),
        f64::from_bits(0xc08233c96fff7772),
        f64::from_bits(0x40af5d62018d3e37),
        f64::from_bits(0xc0d9ae55e9554450),
        f64::from_bits(0x410052901e10d139),
        f64::from_bits(0xc1166465df1385f0),
    ],
    [
        f64::from_bits(0x3fe20dd75041e3fc),
        f64::from_bits(0xbc7c9b491c4920fc),
        f64::from_bits(0xbfd20dd74e5f1526),
        f64::from_bits(0x3fdb14c1d35a40e0),
        f64::from_bits(0xbff0ecdecd30e86b),
        f64::from_bits(0x400d9b4e7f725263),
        f64::from_bits(0xc030958b5ca8fb39),
        f64::from_bits(0x40563e3179bf609c),
        f64::from_bits(0xc0806bbd1cd2d0fd),
        f64::from_bits(0x40a7b66eb6d1d2f2),
        f64::from_bits(0xc0cce5a4b1afab75),
        f64::from_bits(0x40e8b5c6ae6f773c),
        f64::from_bits(0xc0f5475860326f86),
    ],
    [
        f64::from_bits(0x3fe20dd75025cfe9),
        f64::from_bits(0x3c55a92eef32fb20),
        f64::from_bits(0xbfd20dd71eb9d4e7),
        f64::from_bits(0x3fdb14af4c25db28),
        f64::from_bits(0xbff0ebc78a22b3d8),
        f64::from_bits(0x400d85287a0b3399),
        f64::from_bits(0xc03045f751e5ca1d),
        f64::from_bits(0x4054a0d87ddea589),
        f64::from_bits(0xc07ac6a0981d1eee),
        f64::from_bits(0x409f44822f567956),
        f64::from_bits(0xc0bcba372de71349),
        f64::from_bits(0x40d1a4a19f550ca4),
        f64::from_bits(0xc0d52a580455ed79),
    ],
    [
        f64::from_bits(0x3fe20dd74eb31d84),
        f64::from_bits(0xbc439c4054b7c090),
        f64::from_bits(0xbfd20dd561af98c4),
        f64::from_bits(0x3fdb1435165d9df1),
        f64::from_bits(0xbff0e6b60308e940),
        f64::from_bits(0x400d3ce30c140882),
        f64::from_bits(0xc02f2083e404c299),
        f64::from_bits(0x40520f113d89b42a),
        f64::from_bits(0xc0741433ebd89f19),
        f64::from_bits(0x4092f35b6a3154f6),
        f64::from_bits(0xc0ab020a4313cf3b),
        f64::from_bits(0x40b90f07e92da7ee),
        f64::from_bits(0xc0b6565e1d7665c3),
    ],
    [
        f64::from_bits(0x3fe20dd744b3517b),
        f64::from_bits(0xbc6f77ab25e01ab4),
        f64::from_bits(0xbfd20dcc62ec4024),
        f64::from_bits(0x3fdb125bfa4f66c1),
        f64::from_bits(0xbff0d80e65381970),
        f64::from_bits(0x400ca11fbcfa65b2),
        f64::from_bits(0xc02cd9eaffb88315),
        f64::from_bits(0x404e010db42e0da7),
        f64::from_bits(0xc06c5c85250ef6a3),
        f64::from_bits(0x4085e118d9c1eeaf),
        f64::from_bits(0xc098d74be13d3d30),
        f64::from_bits(0x40a211b1b2b5ac83),
        f64::from_bits(0xc09900be759fc663),
    ],
];

pub const E2: &[f64] = &[
    f64::from_bits(0x3ff0000000000000),
    f64::from_bits(0xb960000000000000),
    f64::from_bits(0x3ff0000000000000),
    f64::from_bits(0xb9be200000000000),
    f64::from_bits(0x3fe0000000000000),
    f64::from_bits(0x3a03c00000000000),
    f64::from_bits(0x3fc5555555555555),
    f64::from_bits(0x3c655555555c78d9),
    f64::from_bits(0x3fa5555555555555),
    f64::from_bits(0x3c455555545616e2),
    f64::from_bits(0x3f81111111111111),
    f64::from_bits(0x3c011110121fc314),
    f64::from_bits(0x3f56c16c16c16c17),
    f64::from_bits(0xbbef49e06ee3a56e),
    f64::from_bits(0x3f2a01a01a01a01a),
    f64::from_bits(0x3b6b053e1eeab9c0),
    f64::from_bits(0x3efa01a01a01a01a),
    f64::from_bits(0x3ec71de3a556c733),
    f64::from_bits(0x3e927e4fb7789f66),
    f64::from_bits(0x3e5ae64567f54abe),
    f64::from_bits(0x3e21eed8eff8958b),
    f64::from_bits(0x3de6124613837216),
    f64::from_bits(0x3da93974aaf26a57),
    f64::from_bits(0x3d6ae7f4fd6d0bd9),
    f64::from_bits(0x3d2ae7e982620b25),
    f64::from_bits(0x3ce94e4ca59460d8),
    f64::from_bits(0x3ca69a2a4b7ef36d),
    f64::from_bits(0x3c6abfe1602308c9),
];

pub const TACC: &[[f64; 30]] = &[
    [
        f64::from_bits(0x3fe20dd750429b6d),
        f64::from_bits(0x3c61ae3a912b08f0),
        f64::from_bits(0xbfd20dd750429b6d),
        f64::from_bits(0xbc51ae34c0606d68),
        f64::from_bits(0x3fdb14c2f863e924),
        f64::from_bits(0xbc796c0f4c848fc8),
        f64::from_bits(0xbff0ecf9db3e71b6),
        f64::from_bits(0x3c645d756bd288b0),
        f64::from_bits(0x400d9eb53fad4672),
        f64::from_bits(0xbcac61629de9adf2),
        f64::from_bits(0xc030a945f3d147ea),
        f64::from_bits(0x3cb8fec5ad7ece20),
        f64::from_bits(0x4056e8c02f27ca6d),
        f64::from_bits(0xc0829d1c21c363e0),
        f64::from_bits(0x40b17349b70be627),
        f64::from_bits(0xc0e28a6bb4686182),
        f64::from_bits(0x411602d1662523ca),
        f64::from_bits(0xc14ccae7625c4111),
        f64::from_bits(0x4184237d064f6e0d),
        f64::from_bits(0xc1bb1e5466ca3a2f),
        f64::from_bits(0x41e90ae06a0f6cc1),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd750429b6d),
        f64::from_bits(0x3c61adaa62435c10),
        f64::from_bits(0xbfd20dd750429b6d),
        f64::from_bits(0xbc441516126827c8),
        f64::from_bits(0x3fdb14c2f863e90b),
        f64::from_bits(0x3c7a535780ba5ed4),
        f64::from_bits(0xbff0ecf9db3e65d6),
        f64::from_bits(0xbc9089edde27ad07),
        f64::from_bits(0x400d9eb53fa52f20),
        f64::from_bits(0xbcabc9737e9464ac),
        f64::from_bits(0xc030a945f2cd7621),
        f64::from_bits(0xbcc589f28b700332),
        f64::from_bits(0x4056e8bffd7e194e),
        f64::from_bits(0xc0829d18716876e2),
        f64::from_bits(0x40b17312abe18250),
        f64::from_bits(0xc0e287e73592805c),
        f64::from_bits(0x4115ebf7394a39c1),
        f64::from_bits(0xc14c2f14d46d0cf9),
        f64::from_bits(0x4182af3d256f955e),
        f64::from_bits(0xc1b7041659ebd7aa),
        f64::from_bits(0x41e6039c232e2f71),
        f64::from_bits(0xc2070ca15c5a07cb),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd750429b6d),
        f64::from_bits(0x3c5d3c35b5d37410),
        f64::from_bits(0xbfd20dd750429b56),
        f64::from_bits(0xbc7c028415f6f81b),
        f64::from_bits(0x3fdb14c2f863c1cf),
        f64::from_bits(0x3c51bb0de6470dbc),
        f64::from_bits(0xbff0ecf9db33c363),
        f64::from_bits(0x3c80f8068459eb16),
        f64::from_bits(0x400d9eb53b9ce57b),
        f64::from_bits(0x3ca20cce33e7d84a),
        f64::from_bits(0xc030a945aa2ec4fa),
        f64::from_bits(0xbcdf6e0fcd7c6030),
        f64::from_bits(0x4056e8b824d2bfaa),
        f64::from_bits(0xc0829cc372a6d0b0),
        f64::from_bits(0x40b1703a99ddd429),
        f64::from_bits(0xc0e2749f9a267cc6),
        f64::from_bits(0x4115856a17271849),
        f64::from_bits(0xc14a8bcb4ba9753f),
        f64::from_bits(0x418035dcce882940),
        f64::from_bits(0xc1b1e5d8c5e6e043),
        f64::from_bits(0x41dfe3b4f365386e),
        f64::from_bits(0xc20398fdef2b98fe),
        f64::from_bits(0x42184234d4f4ea12),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd750429b6a),
        f64::from_bits(0x3c8ae622b765e9fd),
        f64::from_bits(0xbfd20dd750428f0e),
        f64::from_bits(0x3c703c6c67d69513),
        f64::from_bits(0x3fdb14c2f8563e8e),
        f64::from_bits(0x3c6766a6bd7aa89c),
        f64::from_bits(0xbff0ecf9d8dedd48),
        f64::from_bits(0x3c90af52e90336e3),
        f64::from_bits(0x400d9eb4aad086fe),
        f64::from_bits(0x3ca640d371d54a19),
        f64::from_bits(0xc030a93f1d01cfe0),
        f64::from_bits(0xbcc68dbd8d9c522c),
        f64::from_bits(0x4056e842e9fd5898),
        f64::from_bits(0xc08299886ef1fb80),
        f64::from_bits(0x40b15e0f0162c9a0),
        f64::from_bits(0xc0e222dbc6b04cd8),
        f64::from_bits(0x411460268db1ebdf),
        f64::from_bits(0xc1474f53ce065fb3),
        f64::from_bits(0x417961ca8553f870),
        f64::from_bits(0xc1a8788395d13798),
        f64::from_bits(0x41d35e37b25d0e81),
        f64::from_bits(0xc1f707b7457c8f5e),
        f64::from_bits(0x4211ff852df1c023),
        f64::from_bits(0xc21b75d0ec56e2cd),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd750429a8f),
        f64::from_bits(0xbc766d8dda59bcea),
        f64::from_bits(0xbfd20dd7503fdbab),
        f64::from_bits(0x3c6707bdffc2b3fe),
        f64::from_bits(0x3fdb14c2f6526025),
        f64::from_bits(0xbc27fa4bb9541140),
        f64::from_bits(0xbff0ecf99c417d45),
        f64::from_bits(0xbc9748645ef7af94),
        f64::from_bits(0x400d9eaa9c712a7d),
        f64::from_bits(0x3ca79e478994ebb4),
        f64::from_bits(0xc030a8ef11fbf141),
        f64::from_bits(0x3cbb5c72d69f8954),
        f64::from_bits(0x4056e4653e0455b1),
        f64::from_bits(0xc08286909448e6cf),
        f64::from_bits(0x40b113424ce76821),
        f64::from_bits(0xc0e1346d859e76de),
        f64::from_bits(0x4111f9f6cf2293bf),
        f64::from_bits(0xc14258e6e3b337db),
        f64::from_bits(0x41714029ecd465fb),
        f64::from_bits(0xc19c530df5337a6f),
        f64::from_bits(0x41c34bc4bbccd336),
        f64::from_bits(0xc1e4a37c52641688),
        f64::from_bits(0x420019707cec2974),
        f64::from_bits(0xc21031fe736ea169),
        f64::from_bits(0x420f6b3003de3ddf),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd75042756b),
        f64::from_bits(0x3c84ad9178b56910),
        f64::from_bits(0xbfd20dd74feda9e8),
        f64::from_bits(0xbc78141c70bbc8d6),
        f64::from_bits(0x3fdb14c2cb128467),
        f64::from_bits(0xbc709aebaa106821),
        f64::from_bits(0xbff0ecf603921a0b),
        f64::from_bits(0x3c97d3cb5bceaf0b),
        f64::from_bits(0x400d9e3e1751ca59),
        f64::from_bits(0x3c76622ae5642670),
        f64::from_bits(0xc030a686af57f547),
        f64::from_bits(0x3cc083b320aff6b6),
        f64::from_bits(0x4056cf0b6c027326),
        f64::from_bits(0xc0823afcb69443d3),
        f64::from_bits(0x40b03ab450d9f1b9),
        f64::from_bits(0xc0de74cdb76bcab4),
        f64::from_bits(0x410c671b60e607f1),
        f64::from_bits(0xc138f1376d324ce4),
        f64::from_bits(0x4163b64276234676),
        f64::from_bits(0xc18aff0ce13c5a8e),
        f64::from_bits(0x41aef20247251e87),
        f64::from_bits(0xc1cc9f5662f721f6),
        f64::from_bits(0x41e4687858e185e1),
        f64::from_bits(0xc1f4fa507be073c2),
        f64::from_bits(0x41fb99ac35ee4acc),
        f64::from_bits(0xc1f16cb585ee3fa9),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd7503e730d),
        f64::from_bits(0x3c84e524a098a467),
        f64::from_bits(0xbfd20dd7498fa6b2),
        f64::from_bits(0x3c260a4e27751c80),
        f64::from_bits(0x3fdb14c061bd2a0c),
        f64::from_bits(0x3c695a8f847d2fc2),
        f64::from_bits(0xbff0ecd0f11b8c7d),
        f64::from_bits(0xbc94126deea76061),
        f64::from_bits(0x400d9b1344463548),
        f64::from_bits(0x3cafe09a4eca9b0e),
        f64::from_bits(0xc030996ea52a87ed),
        f64::from_bits(0xbca924f920db26c0),
        f64::from_bits(0x40567a2264b556b0),
        f64::from_bits(0xc0815dfc2c86b6b5),
        f64::from_bits(0x40accc291b62efe4),
        f64::from_bits(0xc0d81375a78e746a),
        f64::from_bits(0x41033a6f15546329),
        f64::from_bits(0xc12c1e9dc1216010),
        f64::from_bits(0x4152397ea3d43fda),
        f64::from_bits(0xc174661e5b2ea512),
        f64::from_bits(0x4193412367ca5d45),
        f64::from_bits(0xc1ade56b9d7f37c4),
        f64::from_bits(0x41c2851d9722146d),
        f64::from_bits(0xc1d19027baf0c3fe),
        f64::from_bits(0x41d7e7b8b6ab58ac),
        f64::from_bits(0xc1d4c446d56aaf22),
        f64::from_bits(0x41c1492190400505),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd74ff10852),
        f64::from_bits(0x3c8a32f26deff875),
        f64::from_bits(0xbfd20dd6f06c491c),
        f64::from_bits(0x3c770c16e1793358),
        f64::from_bits(0x3fdb14a7d5e7fd4a),
        f64::from_bits(0x3c7479998b54db5b),
        f64::from_bits(0xbff0ebbdb3889c5f),
        f64::from_bits(0xbc759b853e11369c),
        f64::from_bits(0x400d89dd249d7ef8),
        f64::from_bits(0xbc84b5edf0c8c314),
        f64::from_bits(0xc0306526fb386114),
        f64::from_bits(0xbc840d04eed7c7e0),
        f64::from_bits(0x40557ff657e429ce),
        f64::from_bits(0xc07ef63e90d38630),
        f64::from_bits(0x40a6d4f34c4ea3da),
        f64::from_bits(0xc0d04542b9e36a54),
        f64::from_bits(0x40f577bf19097738),
        f64::from_bits(0xc119702fe47c736d),
        f64::from_bits(0x413a7ae12b54fdc6),
        f64::from_bits(0xc157ca3f0f7c4fa9),
        f64::from_bits(0x417225d983963cbf),
        f64::from_bits(0xc1871a6eac612f9e),
        f64::from_bits(0x4198086324225e1e),
        f64::from_bits(0xc1a3de68670a7716),
        f64::from_bits(0x41a91674de4dcbe9),
        f64::from_bits(0xc1a6b44cc15b76c2),
        f64::from_bits(0x419a36dae0f30d80),
        f64::from_bits(0xc17cffc1747ea3dc),
        f64::from_bits(0x0000000000000000),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd74ba8f300),
        f64::from_bits(0xbc59dd256871d210),
        f64::from_bits(0xbfd20dd3593675bc),
        f64::from_bits(0x3c7ec0e7ffa91ad9),
        f64::from_bits(0x3fdb13eef86a077a),
        f64::from_bits(0xbc74fb5d78d411b8),
        f64::from_bits(0xbff0e5cf52a11f3a),
        f64::from_bits(0xbc851f36c779dc8c),
        f64::from_bits(0x400d4417a08b39d5),
        f64::from_bits(0x3c91be9fb5956638),
        f64::from_bits(0xc02f91b9f6ce80c3),
        f64::from_bits(0xbccc9c99dd42829c),
        f64::from_bits(0x405356439f45bb43),
        f64::from_bits(0xc078c0ca12819b48),
        f64::from_bits(0x409efcad2ecd6671),
        f64::from_bits(0xc0c21b0af6fc1039),
        f64::from_bits(0x40e327d215ee30c9),
        f64::from_bits(0xc101fabda96167b0),
        f64::from_bits(0x411d82e4373b315d),
        f64::from_bits(0xc134ed9e2ff591e9),
        f64::from_bits(0x41495c85dcd8eab5),
        f64::from_bits(0xc159f016f0a3d62a),
        f64::from_bits(0x41660e89d918b96f),
        f64::from_bits(0xc16e97be202cba64),
        f64::from_bits(0x4170d8a081619793),
        f64::from_bits(0xc16c5422b4fcfc65),
        f64::from_bits(0x4161131a9dc6aed1),
        f64::from_bits(0xc14a457d9dced257),
        f64::from_bits(0x4123605e980e8b86),
        f64::from_bits(0x0000000000000000),
    ],
    [
        f64::from_bits(0x3fe20dd7319d4d25),
        f64::from_bits(0x3c82b02992c3b7ab),
        f64::from_bits(0xbfd20dc29c13ab1b),
        f64::from_bits(0xbc7d78d79b4ad767),
        f64::from_bits(0x3fdb115a57b5ab13),
        f64::from_bits(0xbc6aa8c45be0aa2e),
        f64::from_bits(0xbff0d58ec437efd7),
        f64::from_bits(0xbc5994f00a15e850),
        f64::from_bits(0x400cb1742e229f23),
        f64::from_bits(0xbca8000471d54399),
        f64::from_bits(0xc02d99a5edf7b946),
        f64::from_bits(0xbcbaf76ed7e35cde),
        f64::from_bits(0x4050a8b71058eb28),
        f64::from_bits(0xc072d88289da5bfc),
        f64::from_bits(0x40943ddf24168edb),
        f64::from_bits(0xc0b3e9dfc38b6d1a),
        f64::from_bits(0x40d18d4df97ab3df),
        f64::from_bits(0xc0eb550fc62dcab5),
        f64::from_bits(0x41029cb71f116ed1),
        f64::from_bits(0xc115fc9cc4e854e3),
        f64::from_bits(0x41265915fd0567b1),
        f64::from_bits(0xc1335eb5fca0e46d),
        f64::from_bits(0x413c5261ecc0d789),
        f64::from_bits(0xc14138932dc4eafc),
        f64::from_bits(0x414117d4eb18facd),
        f64::from_bits(0xc13af96163e35eca),
        f64::from_bits(0x4130454a3a63c766),
        f64::from_bits(0xc11c2ebc1d39b44a),
        f64::from_bits(0x40ff3327698e0e6b),
        f64::from_bits(0xc0d094febc3dff35),
    ],
];

pub const EXCEPTIONS: &[[f64; 3]] = &[
    [
        f64::from_bits(0x4024a42b163f7a7d),
        f64::from_bits(0x361183d60a1f7e3c),
        f64::from_bits(0xb2bfffffffffffff),
    ],
    [
        f64::from_bits(0x402a631d4bc7f56b),
        f64::from_bits(0x2ff3f07281bb43ae),
        f64::from_bits(0xaca0000000000000),
    ],
    [
        f64::from_bits(0x4031b2588f5d972e),
        f64::from_bits(0x2362923609150ff0),
        f64::from_bits(0xa00ffffffffffffd),
    ],
    [
        f64::from_bits(0x4031d41cb671cad3),
        f64::from_bits(0x22f5c4d8d179be8c),
        f64::from_bits(0x9f9fffffffffffff),
    ],
    [
        f64::from_bits(0x40348de452fb1a15),
        f64::from_bits(0x1983c2a1264045ad),
        f64::from_bits(0x162fffffffffffff),
    ],
    [
        f64::from_bits(0x3ffbb1ef58eda440),
        f64::from_bits(0x3f8d6d259cb81801),
        f64::from_bits(0x38d387cbdb500a5e),
    ],
    [
        f64::from_bits(0x4000ca37ce17afa6),
        f64::from_bits(0x3f688cc1284157f5),
        f64::from_bits(0x3876fd53d489a2c1),
    ],
    [
        f64::from_bits(0x4001cb6b0f91a4cc),
        f64::from_bits(0x3f5b2639c7a46899),
        f64::from_bits(0x38df8111f4b0ab0f),
    ],
    [
        f64::from_bits(0x3ffd1e19af184c6e),
        f64::from_bits(0x3f849bf1937979ed),
        f64::from_bits(0x38fc1b55587c1381),
    ],
    [
        f64::from_bits(0x40037994c710a4d2),
        f64::from_bits(0x3f42df150139d8ea),
        f64::from_bits(0x38dd46afcc145630),
    ],
    [
        f64::from_bits(0x4008966f65d9a1a1),
        f64::from_bits(0x3eed01a8497b522d),
        f64::from_bits(0x386c935c97d5bfe4),
    ],
    [
        f64::from_bits(0x4019f4a466c51bb5),
        f64::from_bits(0x3bea3d059f3770b9),
        f64::from_bits(0x3583f16dde099b74),
    ],
    [
        f64::from_bits(0x402164f857d1749c),
        f64::from_bits(0x38de35102e39e989),
        f64::from_bits(0x32432b4c82bbb9e3),
    ],
    [
        f64::from_bits(0x40076957728f1f31),
        f64::from_bits(0x3f0251dea1afe1ad),
        f64::from_bits(0xb88155995aa5bae6),
    ],
    [
        f64::from_bits(0x401651c78cec84f6),
        f64::from_bits(0x3ceaf9d1df8b5e80),
        f64::from_bits(0xb66fe39e86292256),
    ],
    [
        f64::from_bits(0x40277d0f07e113dc),
        f64::from_bits(0x3338b93f18b3cdc6),
        f64::from_bits(0x2cc6ffd370fba52a),
    ],
    [
        f64::from_bits(0x401ef72633933d36),
        f64::from_bits(0x3a4aee3861d8657e),
        f64::from_bits(0xb3d00ca47f3ced2a),
    ],
    [
        f64::from_bits(0x403391f434b53d18),
        f64::from_bits(0x1d144e8c50fa25e9),
        f64::from_bits(0x96915aa7b49bc597),
    ],
    [
        f64::from_bits(0x3ffb8940788b825d),
        f64::from_bits(0x3f8e97eaf1080bff),
        f64::from_bits(0x39438836346525ea),
    ],
    [
        f64::from_bits(0x40116ffd71e2d8c6),
        f64::from_bits(0x3e0834e2899c5506),
        f64::from_bits(0xb78b7516e4549528),
    ],
    [
        f64::from_bits(0x4007fa5439251a75),
        f64::from_bits(0x3ef7923ec231992d),
        f64::from_bits(0xb8674f633ea13fec),
    ],
    [
        f64::from_bits(0x401a8fb2b7ef1f80),
        f64::from_bits(0x3bbc1b9f4cda246b),
        f64::from_bits(0x3546fce2e1cae1a5),
    ],
];

pub const EXCEPTIONS_ACCURATE: &[[f64; 3]] = &[
    [
        f64::from_bits(0xbc9c5bf891b4ef6b),
        f64::from_bits(0x3ff0000000000001),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbccfe777a3eb8d58),
        f64::from_bits(0x3ff0000000000005),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbced3ed8564296e6),
        f64::from_bits(0x3ff0000000000011),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbce29c5b1f9ebd1e),
        f64::from_bits(0x3ff000000000000b),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbcfe9327fd17121f),
        f64::from_bits(0x3ff0000000000023),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbcf941e961c5253b),
        f64::from_bits(0x3ff000000000001d),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbcf3f0aac6733857),
        f64::from_bits(0x3ff0000000000017),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbdadc87cb831c792),
        f64::from_bits(0x3ff0000000010cdb),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbdab71f3a10691d9),
        f64::from_bits(0x3ff000000000f7bf),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbdfcea935ba73f4c),
        f64::from_bits(0x3ff000000020a0e9),
        f64::from_bits(0x3c9fffffffffffff),
    ],
    [
        f64::from_bits(0xbe6abaf3b436049e),
        f64::from_bits(0x3ff000000f14b8e3),
        f64::from_bits(0x3c9fffffffffffff),
    ],
    [
        f64::from_bits(0xbecd4c18d3599cbe),
        f64::from_bits(0x3ff0000421de806f),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbf0607b67e03b83b),
        f64::from_bits(0x3ff00031b7780fe5),
        f64::from_bits(0xbc9fffffffffffff),
    ],
    [
        f64::from_bits(0xbf34a943c917ed26),
        f64::from_bits(0x3ff0017504bc67c1),
        f64::from_bits(0x3c9fffffffffffff),
    ],
    [
        f64::from_bits(0xbf6106c2cd5ea6c3),
        f64::from_bits(0x3ff0099b29fab8cf),
        f64::from_bits(0x3c9fffffffffffff),
    ],
    [
        f64::from_bits(0xbfbd4af8adb90116),
        f64::from_bits(0x3ff20e8e5d1e73ff),
        f64::from_bits(0x3c9ffffffffffffe),
    ],
    [
        f64::from_bits(0xbfff9a4a209ca0e4),
        f64::from_bits(0x3fffeaa166e384c9),
        f64::from_bits(0x3c9ffffffffffffe),
    ],
];

pub const EXCEPTIONS_ACCURATE_2: &[[f64; 3]] = &[
    [
        f64::from_bits(0x3c8c5bf891b4ef6b),
        f64::from_bits(0x3fefffffffffffff),
        f64::from_bits(0x3c8ffffffffffffe),
    ],
    [
        f64::from_bits(0x3cbfe777a3eb8d58),
        f64::from_bits(0x3feffffffffffffb),
        f64::from_bits(0x3c8ffffffffffffe),
    ],
    [
        f64::from_bits(0x3cd29c5b1f9ebd1e),
        f64::from_bits(0x3feffffffffffff5),
        f64::from_bits(0x3c8ffffffffffffe),
    ],
    [
        f64::from_bits(0x3cdd3ed8564296e6),
        f64::from_bits(0x3fefffffffffffef),
        f64::from_bits(0x3c8ffffffffffffe),
    ],
    [
        f64::from_bits(0x3ce3f0aac6733857),
        f64::from_bits(0x3fefffffffffffe9),
        f64::from_bits(0x3c8fffffffffffff),
    ],
    [
        f64::from_bits(0x3ce941e961c5253b),
        f64::from_bits(0x3fefffffffffffe3),
        f64::from_bits(0x3c8fffffffffffff),
    ],
    [
        f64::from_bits(0x3cee9327fd17121f),
        f64::from_bits(0x3fefffffffffffdd),
        f64::from_bits(0x3c8fffffffffffff),
    ],
    [
        f64::from_bits(0x3d9b71f3a10691d9),
        f64::from_bits(0x3fefffffffff0841),
        f64::from_bits(0xbc8ffffffffffffe),
    ],
    [
        f64::from_bits(0x3d9dc87cb831c792),
        f64::from_bits(0x3feffffffffef325),
        f64::from_bits(0x3c8fffffffffffff),
    ],
    [
        f64::from_bits(0x3db52b18fe8fbad1),
        f64::from_bits(0x3feffffffffd03a7),
        f64::from_bits(0xbc8ffffffffffffe),
    ],
    [
        f64::from_bits(0x3e3cf0ed5959b276),
        f64::from_bits(0x3feffffffbeafd79),
        f64::from_bits(0xbc8fffffffffffff),
    ],
    [
        f64::from_bits(0x3e46af79a30bbf3c),
        f64::from_bits(0x3feffffff999bdd3),
        f64::from_bits(0x3c8fffffffffffff),
    ],
    [
        f64::from_bits(0x3e5dd48360dd7824),
        f64::from_bits(0x3fefffffef2b8f0d),
        f64::from_bits(0x3c8fffffffffffff),
    ],
    [
        f64::from_bits(0x3e740757fba82477),
        f64::from_bits(0x3fefffffd2ccd30d),
        f64::from_bits(0xbc8fffffffffffff),
    ],
    [
        f64::from_bits(0x3f68bc46e0d85524),
        f64::from_bits(0x3fefe416cffa803d),
        f64::from_bits(0xbc8fffffffffffff),
    ],
    [
        f64::from_bits(0x3fbd4af8adb90116),
        f64::from_bits(0x3febe2e345c31801),
        f64::from_bits(0x395ea7fa18173ab8),
    ],
    [
        f64::from_bits(0x3fd3229110bf9d66),
        f64::from_bits(0x3fe5847806aef94b),
        f64::from_bits(0x3c8fffffffffffff),
    ],
    [
        f64::from_bits(0x3fea93059aabe4bc),
        f64::from_bits(0x3fcebfa1229d0dce),
        f64::from_bits(0x39499b4b80fd9415),
    ],
    [
        f64::from_bits(0x3febc466342a2296),
        f64::from_bits(0x3fcc2153a8529156),
        f64::from_bits(0xb94088fb70829f71),
    ],
    [
        f64::from_bits(0x3feeef77c6caae18),
        f64::from_bits(0x3fc5f61e96f60783),
        f64::from_bits(0xbc6ffffffffffffd),
    ],
    [
        f64::from_bits(0x3fefd5d9d8c9ef66),
        f64::from_bits(0x3fc468ba052c2fe0),
        f64::from_bits(0xb9603fa708a553b3),
    ],
    [
        f64::from_bits(0x3ff23c67ff8b8a0a),
        f64::from_bits(0x3fbb640be5efa2e3),
        f64::from_bits(0xb94b9a66b42d9160),
    ],
    [
        f64::from_bits(0x3ff3a013a3c71e92),
        f64::from_bits(0x3fb5329743c2c15c),
        f64::from_bits(0x3927766eb5263404),
    ],
    [
        f64::from_bits(0x3ff589bbd3ae5489),
        f64::from_bits(0x3fad2847b1409248),
        f64::from_bits(0x39457b4a906bc605),
    ],
    [
        f64::from_bits(0x3ff757fe152a87c9),
        f64::from_bits(0x3fa402acce35d833),
        f64::from_bits(0x393d38ccfa0c1d6b),
    ],
    [
        f64::from_bits(0x3ff7749479e598d3),
        f64::from_bits(0x3fa3891521afe3e3),
        f64::from_bits(0x3938b8423c82ad72),
    ],
    [
        f64::from_bits(0x3ff9a3a5f5f28f30),
        f64::from_bits(0x3f980040c25bab90),
        f64::from_bits(0xb93a8686704bdb14),
    ],
    [
        f64::from_bits(0x3ffa44869b34ea46),
        f64::from_bits(0x3f94bb609c105c2d),
        f64::from_bits(0xb929182dae766fc4),
    ],
    [
        f64::from_bits(0x3ffaf08ae30c9364),
        f64::from_bits(0x3f91ac47852096cb),
        f64::from_bits(0xbc3fffffffffffda),
    ],
];