microfft 0.1.0

Embedded-friendly Fast Fourier Transforms
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
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
use num_complex::Complex32;

#[allow(clippy::approx_constant)]
#[allow(clippy::excessive_precision)]
#[allow(clippy::unreadable_literal)]
pub(crate) const TWIDDLE: &[&[Complex32]] = &[
    &[],
    &[Complex32::new(1.0, 0.0)],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(6.123233995736766e-17, -1.0),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.9238795325112867, -0.3826834323650898),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(0.38268343236508984, -0.9238795325112867),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.3826834323650897, -0.9238795325112867),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
        Complex32::new(-0.9238795325112867, -0.3826834323650899),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.9807852804032304, -0.19509032201612825),
        Complex32::new(0.9238795325112867, -0.3826834323650898),
        Complex32::new(0.8314696123025452, -0.5555702330196022),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(0.5555702330196023, -0.8314696123025452),
        Complex32::new(0.38268343236508984, -0.9238795325112867),
        Complex32::new(0.19509032201612833, -0.9807852804032304),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.1950903220161282, -0.9807852804032304),
        Complex32::new(-0.3826834323650897, -0.9238795325112867),
        Complex32::new(-0.555570233019602, -0.8314696123025455),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
        Complex32::new(-0.8314696123025453, -0.5555702330196022),
        Complex32::new(-0.9238795325112867, -0.3826834323650899),
        Complex32::new(-0.9807852804032304, -0.1950903220161286),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.9951847266721969, -0.0980171403295606),
        Complex32::new(0.9807852804032304, -0.19509032201612825),
        Complex32::new(0.9569403357322088, -0.29028467725446233),
        Complex32::new(0.9238795325112867, -0.3826834323650898),
        Complex32::new(0.881921264348355, -0.47139673682599764),
        Complex32::new(0.8314696123025452, -0.5555702330196022),
        Complex32::new(0.773010453362737, -0.6343932841636455),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(0.6343932841636455, -0.773010453362737),
        Complex32::new(0.5555702330196023, -0.8314696123025452),
        Complex32::new(0.4713967368259978, -0.8819212643483549),
        Complex32::new(0.38268343236508984, -0.9238795325112867),
        Complex32::new(0.29028467725446233, -0.9569403357322089),
        Complex32::new(0.19509032201612833, -0.9807852804032304),
        Complex32::new(0.09801714032956077, -0.9951847266721968),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.09801714032956065, -0.9951847266721969),
        Complex32::new(-0.1950903220161282, -0.9807852804032304),
        Complex32::new(-0.29028467725446216, -0.9569403357322089),
        Complex32::new(-0.3826834323650897, -0.9238795325112867),
        Complex32::new(-0.4713967368259977, -0.881921264348355),
        Complex32::new(-0.555570233019602, -0.8314696123025455),
        Complex32::new(-0.6343932841636454, -0.7730104533627371),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
        Complex32::new(-0.773010453362737, -0.6343932841636455),
        Complex32::new(-0.8314696123025453, -0.5555702330196022),
        Complex32::new(-0.8819212643483549, -0.47139673682599786),
        Complex32::new(-0.9238795325112867, -0.3826834323650899),
        Complex32::new(-0.9569403357322088, -0.2902846772544624),
        Complex32::new(-0.9807852804032304, -0.1950903220161286),
        Complex32::new(-0.9951847266721968, -0.09801714032956083),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.9987954562051724, -0.049067674327418015),
        Complex32::new(0.9951847266721969, -0.0980171403295606),
        Complex32::new(0.989176509964781, -0.14673047445536175),
        Complex32::new(0.9807852804032304, -0.19509032201612825),
        Complex32::new(0.970031253194544, -0.24298017990326387),
        Complex32::new(0.9569403357322088, -0.29028467725446233),
        Complex32::new(0.9415440651830208, -0.33688985339222005),
        Complex32::new(0.9238795325112867, -0.3826834323650898),
        Complex32::new(0.9039892931234433, -0.4275550934302821),
        Complex32::new(0.881921264348355, -0.47139673682599764),
        Complex32::new(0.8577286100002721, -0.5141027441932217),
        Complex32::new(0.8314696123025452, -0.5555702330196022),
        Complex32::new(0.8032075314806449, -0.5956993044924334),
        Complex32::new(0.773010453362737, -0.6343932841636455),
        Complex32::new(0.7409511253549591, -0.6715589548470183),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(0.6715589548470183, -0.7409511253549591),
        Complex32::new(0.6343932841636455, -0.773010453362737),
        Complex32::new(0.5956993044924335, -0.8032075314806448),
        Complex32::new(0.5555702330196023, -0.8314696123025452),
        Complex32::new(0.5141027441932217, -0.8577286100002721),
        Complex32::new(0.4713967368259978, -0.8819212643483549),
        Complex32::new(0.4275550934302822, -0.9039892931234433),
        Complex32::new(0.38268343236508984, -0.9238795325112867),
        Complex32::new(0.33688985339222005, -0.9415440651830208),
        Complex32::new(0.29028467725446233, -0.9569403357322089),
        Complex32::new(0.24298017990326398, -0.970031253194544),
        Complex32::new(0.19509032201612833, -0.9807852804032304),
        Complex32::new(0.14673047445536175, -0.989176509964781),
        Complex32::new(0.09801714032956077, -0.9951847266721968),
        Complex32::new(0.049067674327418126, -0.9987954562051724),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.04906767432741801, -0.9987954562051724),
        Complex32::new(-0.09801714032956065, -0.9951847266721969),
        Complex32::new(-0.14673047445536164, -0.989176509964781),
        Complex32::new(-0.1950903220161282, -0.9807852804032304),
        Complex32::new(-0.24298017990326387, -0.970031253194544),
        Complex32::new(-0.29028467725446216, -0.9569403357322089),
        Complex32::new(-0.33688985339221994, -0.9415440651830208),
        Complex32::new(-0.3826834323650897, -0.9238795325112867),
        Complex32::new(-0.42755509343028186, -0.9039892931234434),
        Complex32::new(-0.4713967368259977, -0.881921264348355),
        Complex32::new(-0.5141027441932217, -0.8577286100002721),
        Complex32::new(-0.555570233019602, -0.8314696123025455),
        Complex32::new(-0.5956993044924334, -0.8032075314806449),
        Complex32::new(-0.6343932841636454, -0.7730104533627371),
        Complex32::new(-0.6715589548470184, -0.740951125354959),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
        Complex32::new(-0.7409511253549589, -0.6715589548470186),
        Complex32::new(-0.773010453362737, -0.6343932841636455),
        Complex32::new(-0.8032075314806448, -0.5956993044924335),
        Complex32::new(-0.8314696123025453, -0.5555702330196022),
        Complex32::new(-0.857728610000272, -0.5141027441932218),
        Complex32::new(-0.8819212643483549, -0.47139673682599786),
        Complex32::new(-0.9039892931234433, -0.42755509343028203),
        Complex32::new(-0.9238795325112867, -0.3826834323650899),
        Complex32::new(-0.9415440651830207, -0.33688985339222033),
        Complex32::new(-0.9569403357322088, -0.2902846772544624),
        Complex32::new(-0.970031253194544, -0.24298017990326407),
        Complex32::new(-0.9807852804032304, -0.1950903220161286),
        Complex32::new(-0.989176509964781, -0.1467304744553618),
        Complex32::new(-0.9951847266721968, -0.09801714032956083),
        Complex32::new(-0.9987954562051724, -0.049067674327417966),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.9996988186962042, -0.024541228522912288),
        Complex32::new(0.9987954562051724, -0.049067674327418015),
        Complex32::new(0.9972904566786902, -0.07356456359966743),
        Complex32::new(0.9951847266721969, -0.0980171403295606),
        Complex32::new(0.99247953459871, -0.1224106751992162),
        Complex32::new(0.989176509964781, -0.14673047445536175),
        Complex32::new(0.9852776423889412, -0.17096188876030122),
        Complex32::new(0.9807852804032304, -0.19509032201612825),
        Complex32::new(0.9757021300385286, -0.2191012401568698),
        Complex32::new(0.970031253194544, -0.24298017990326387),
        Complex32::new(0.9637760657954398, -0.26671275747489837),
        Complex32::new(0.9569403357322088, -0.29028467725446233),
        Complex32::new(0.9495281805930367, -0.3136817403988915),
        Complex32::new(0.9415440651830208, -0.33688985339222005),
        Complex32::new(0.932992798834739, -0.3598950365349881),
        Complex32::new(0.9238795325112867, -0.3826834323650898),
        Complex32::new(0.9142097557035307, -0.40524131400498986),
        Complex32::new(0.9039892931234433, -0.4275550934302821),
        Complex32::new(0.8932243011955153, -0.44961132965460654),
        Complex32::new(0.881921264348355, -0.47139673682599764),
        Complex32::new(0.8700869911087115, -0.49289819222978404),
        Complex32::new(0.8577286100002721, -0.5141027441932217),
        Complex32::new(0.8448535652497071, -0.5349976198870972),
        Complex32::new(0.8314696123025452, -0.5555702330196022),
        Complex32::new(0.8175848131515837, -0.5758081914178453),
        Complex32::new(0.8032075314806449, -0.5956993044924334),
        Complex32::new(0.7883464276266063, -0.6152315905806268),
        Complex32::new(0.773010453362737, -0.6343932841636455),
        Complex32::new(0.7572088465064846, -0.6531728429537768),
        Complex32::new(0.7409511253549591, -0.6715589548470183),
        Complex32::new(0.724247082951467, -0.6895405447370668),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(0.6895405447370669, -0.7242470829514669),
        Complex32::new(0.6715589548470183, -0.7409511253549591),
        Complex32::new(0.6531728429537768, -0.7572088465064845),
        Complex32::new(0.6343932841636455, -0.773010453362737),
        Complex32::new(0.6152315905806268, -0.7883464276266062),
        Complex32::new(0.5956993044924335, -0.8032075314806448),
        Complex32::new(0.5758081914178453, -0.8175848131515837),
        Complex32::new(0.5555702330196023, -0.8314696123025452),
        Complex32::new(0.5349976198870973, -0.844853565249707),
        Complex32::new(0.5141027441932217, -0.8577286100002721),
        Complex32::new(0.4928981922297841, -0.8700869911087113),
        Complex32::new(0.4713967368259978, -0.8819212643483549),
        Complex32::new(0.4496113296546066, -0.8932243011955153),
        Complex32::new(0.4275550934302822, -0.9039892931234433),
        Complex32::new(0.40524131400498986, -0.9142097557035307),
        Complex32::new(0.38268343236508984, -0.9238795325112867),
        Complex32::new(0.3598950365349883, -0.9329927988347388),
        Complex32::new(0.33688985339222005, -0.9415440651830208),
        Complex32::new(0.3136817403988916, -0.9495281805930367),
        Complex32::new(0.29028467725446233, -0.9569403357322089),
        Complex32::new(0.2667127574748984, -0.9637760657954398),
        Complex32::new(0.24298017990326398, -0.970031253194544),
        Complex32::new(0.21910124015686977, -0.9757021300385286),
        Complex32::new(0.19509032201612833, -0.9807852804032304),
        Complex32::new(0.17096188876030136, -0.9852776423889412),
        Complex32::new(0.14673047445536175, -0.989176509964781),
        Complex32::new(0.12241067519921628, -0.99247953459871),
        Complex32::new(0.09801714032956077, -0.9951847266721968),
        Complex32::new(0.07356456359966745, -0.9972904566786902),
        Complex32::new(0.049067674327418126, -0.9987954562051724),
        Complex32::new(0.024541228522912264, -0.9996988186962042),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.024541228522912142, -0.9996988186962042),
        Complex32::new(-0.04906767432741801, -0.9987954562051724),
        Complex32::new(-0.07356456359966733, -0.9972904566786902),
        Complex32::new(-0.09801714032956065, -0.9951847266721969),
        Complex32::new(-0.12241067519921615, -0.99247953459871),
        Complex32::new(-0.14673047445536164, -0.989176509964781),
        Complex32::new(-0.17096188876030124, -0.9852776423889412),
        Complex32::new(-0.1950903220161282, -0.9807852804032304),
        Complex32::new(-0.21910124015686966, -0.9757021300385286),
        Complex32::new(-0.24298017990326387, -0.970031253194544),
        Complex32::new(-0.2667127574748983, -0.9637760657954398),
        Complex32::new(-0.29028467725446216, -0.9569403357322089),
        Complex32::new(-0.3136817403988914, -0.9495281805930367),
        Complex32::new(-0.33688985339221994, -0.9415440651830208),
        Complex32::new(-0.35989503653498817, -0.9329927988347388),
        Complex32::new(-0.3826834323650897, -0.9238795325112867),
        Complex32::new(-0.40524131400498975, -0.9142097557035307),
        Complex32::new(-0.42755509343028186, -0.9039892931234434),
        Complex32::new(-0.4496113296546067, -0.8932243011955152),
        Complex32::new(-0.4713967368259977, -0.881921264348355),
        Complex32::new(-0.492898192229784, -0.8700869911087115),
        Complex32::new(-0.5141027441932217, -0.8577286100002721),
        Complex32::new(-0.534997619887097, -0.8448535652497072),
        Complex32::new(-0.555570233019602, -0.8314696123025455),
        Complex32::new(-0.5758081914178453, -0.8175848131515837),
        Complex32::new(-0.5956993044924334, -0.8032075314806449),
        Complex32::new(-0.6152315905806267, -0.7883464276266063),
        Complex32::new(-0.6343932841636454, -0.7730104533627371),
        Complex32::new(-0.6531728429537765, -0.7572088465064847),
        Complex32::new(-0.6715589548470184, -0.740951125354959),
        Complex32::new(-0.6895405447370669, -0.7242470829514669),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
        Complex32::new(-0.7242470829514668, -0.689540544737067),
        Complex32::new(-0.7409511253549589, -0.6715589548470186),
        Complex32::new(-0.7572088465064846, -0.6531728429537766),
        Complex32::new(-0.773010453362737, -0.6343932841636455),
        Complex32::new(-0.7883464276266062, -0.6152315905806269),
        Complex32::new(-0.8032075314806448, -0.5956993044924335),
        Complex32::new(-0.8175848131515836, -0.5758081914178454),
        Complex32::new(-0.8314696123025453, -0.5555702330196022),
        Complex32::new(-0.8448535652497071, -0.5349976198870972),
        Complex32::new(-0.857728610000272, -0.5141027441932218),
        Complex32::new(-0.8700869911087113, -0.49289819222978415),
        Complex32::new(-0.8819212643483549, -0.47139673682599786),
        Complex32::new(-0.8932243011955152, -0.4496113296546069),
        Complex32::new(-0.9039892931234433, -0.42755509343028203),
        Complex32::new(-0.9142097557035307, -0.4052413140049899),
        Complex32::new(-0.9238795325112867, -0.3826834323650899),
        Complex32::new(-0.9329927988347388, -0.35989503653498833),
        Complex32::new(-0.9415440651830207, -0.33688985339222033),
        Complex32::new(-0.9495281805930367, -0.3136817403988914),
        Complex32::new(-0.9569403357322088, -0.2902846772544624),
        Complex32::new(-0.9637760657954398, -0.2667127574748985),
        Complex32::new(-0.970031253194544, -0.24298017990326407),
        Complex32::new(-0.9757021300385285, -0.21910124015687005),
        Complex32::new(-0.9807852804032304, -0.1950903220161286),
        Complex32::new(-0.9852776423889412, -0.17096188876030122),
        Complex32::new(-0.989176509964781, -0.1467304744553618),
        Complex32::new(-0.99247953459871, -0.12241067519921635),
        Complex32::new(-0.9951847266721968, -0.09801714032956083),
        Complex32::new(-0.9972904566786902, -0.07356456359966773),
        Complex32::new(-0.9987954562051724, -0.049067674327417966),
        Complex32::new(-0.9996988186962042, -0.024541228522912326),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.9999247018391445, -0.012271538285719925),
        Complex32::new(0.9996988186962042, -0.024541228522912288),
        Complex32::new(0.9993223845883495, -0.03680722294135883),
        Complex32::new(0.9987954562051724, -0.049067674327418015),
        Complex32::new(0.9981181129001492, -0.06132073630220858),
        Complex32::new(0.9972904566786902, -0.07356456359966743),
        Complex32::new(0.996312612182778, -0.0857973123444399),
        Complex32::new(0.9951847266721969, -0.0980171403295606),
        Complex32::new(0.9939069700023561, -0.11022220729388306),
        Complex32::new(0.99247953459871, -0.1224106751992162),
        Complex32::new(0.99090263542778, -0.13458070850712617),
        Complex32::new(0.989176509964781, -0.14673047445536175),
        Complex32::new(0.9873014181578584, -0.15885814333386145),
        Complex32::new(0.9852776423889412, -0.17096188876030122),
        Complex32::new(0.9831054874312163, -0.18303988795514095),
        Complex32::new(0.9807852804032304, -0.19509032201612825),
        Complex32::new(0.9783173707196277, -0.20711137619221856),
        Complex32::new(0.9757021300385286, -0.2191012401568698),
        Complex32::new(0.9729399522055602, -0.2310581082806711),
        Complex32::new(0.970031253194544, -0.24298017990326387),
        Complex32::new(0.9669764710448521, -0.25486565960451457),
        Complex32::new(0.9637760657954398, -0.26671275747489837),
        Complex32::new(0.9604305194155658, -0.27851968938505306),
        Complex32::new(0.9569403357322088, -0.29028467725446233),
        Complex32::new(0.9533060403541939, -0.3020059493192281),
        Complex32::new(0.9495281805930367, -0.3136817403988915),
        Complex32::new(0.9456073253805213, -0.3253102921622629),
        Complex32::new(0.9415440651830208, -0.33688985339222005),
        Complex32::new(0.937339011912575, -0.34841868024943456),
        Complex32::new(0.932992798834739, -0.3598950365349881),
        Complex32::new(0.9285060804732156, -0.37131719395183754),
        Complex32::new(0.9238795325112867, -0.3826834323650898),
        Complex32::new(0.9191138516900578, -0.3939920400610481),
        Complex32::new(0.9142097557035307, -0.40524131400498986),
        Complex32::new(0.9091679830905224, -0.41642956009763715),
        Complex32::new(0.9039892931234433, -0.4275550934302821),
        Complex32::new(0.8986744656939538, -0.43861623853852766),
        Complex32::new(0.8932243011955153, -0.44961132965460654),
        Complex32::new(0.8876396204028539, -0.46053871095824),
        Complex32::new(0.881921264348355, -0.47139673682599764),
        Complex32::new(0.8760700941954066, -0.4821837720791227),
        Complex32::new(0.8700869911087115, -0.49289819222978404),
        Complex32::new(0.8639728561215868, -0.5035383837257176),
        Complex32::new(0.8577286100002721, -0.5141027441932217),
        Complex32::new(0.8513551931052652, -0.524589682678469),
        Complex32::new(0.8448535652497071, -0.5349976198870972),
        Complex32::new(0.8382247055548381, -0.5453249884220465),
        Complex32::new(0.8314696123025452, -0.5555702330196022),
        Complex32::new(0.8245893027850253, -0.5657318107836131),
        Complex32::new(0.8175848131515837, -0.5758081914178453),
        Complex32::new(0.8104571982525948, -0.5857978574564389),
        Complex32::new(0.8032075314806449, -0.5956993044924334),
        Complex32::new(0.7958369046088836, -0.6055110414043255),
        Complex32::new(0.7883464276266063, -0.6152315905806268),
        Complex32::new(0.7807372285720945, -0.6248594881423863),
        Complex32::new(0.773010453362737, -0.6343932841636455),
        Complex32::new(0.765167265622459, -0.6438315428897914),
        Complex32::new(0.7572088465064846, -0.6531728429537768),
        Complex32::new(0.7491363945234594, -0.6624157775901718),
        Complex32::new(0.7409511253549591, -0.6715589548470183),
        Complex32::new(0.7326542716724128, -0.680600997795453),
        Complex32::new(0.724247082951467, -0.6895405447370668),
        Complex32::new(0.7157308252838186, -0.6983762494089729),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(0.6983762494089729, -0.7157308252838186),
        Complex32::new(0.6895405447370669, -0.7242470829514669),
        Complex32::new(0.6806009977954531, -0.7326542716724128),
        Complex32::new(0.6715589548470183, -0.7409511253549591),
        Complex32::new(0.6624157775901718, -0.7491363945234593),
        Complex32::new(0.6531728429537768, -0.7572088465064845),
        Complex32::new(0.6438315428897915, -0.765167265622459),
        Complex32::new(0.6343932841636455, -0.773010453362737),
        Complex32::new(0.6248594881423865, -0.7807372285720944),
        Complex32::new(0.6152315905806268, -0.7883464276266062),
        Complex32::new(0.6055110414043255, -0.7958369046088835),
        Complex32::new(0.5956993044924335, -0.8032075314806448),
        Complex32::new(0.5857978574564389, -0.8104571982525948),
        Complex32::new(0.5758081914178453, -0.8175848131515837),
        Complex32::new(0.5657318107836132, -0.8245893027850253),
        Complex32::new(0.5555702330196023, -0.8314696123025452),
        Complex32::new(0.5453249884220465, -0.838224705554838),
        Complex32::new(0.5349976198870973, -0.844853565249707),
        Complex32::new(0.5245896826784688, -0.8513551931052652),
        Complex32::new(0.5141027441932217, -0.8577286100002721),
        Complex32::new(0.5035383837257176, -0.8639728561215867),
        Complex32::new(0.4928981922297841, -0.8700869911087113),
        Complex32::new(0.48218377207912283, -0.8760700941954066),
        Complex32::new(0.4713967368259978, -0.8819212643483549),
        Complex32::new(0.46053871095824, -0.8876396204028539),
        Complex32::new(0.4496113296546066, -0.8932243011955153),
        Complex32::new(0.4386162385385277, -0.8986744656939538),
        Complex32::new(0.4275550934302822, -0.9039892931234433),
        Complex32::new(0.4164295600976373, -0.9091679830905223),
        Complex32::new(0.40524131400498986, -0.9142097557035307),
        Complex32::new(0.3939920400610481, -0.9191138516900578),
        Complex32::new(0.38268343236508984, -0.9238795325112867),
        Complex32::new(0.3713171939518376, -0.9285060804732155),
        Complex32::new(0.3598950365349883, -0.9329927988347388),
        Complex32::new(0.3484186802494345, -0.937339011912575),
        Complex32::new(0.33688985339222005, -0.9415440651830208),
        Complex32::new(0.325310292162263, -0.9456073253805213),
        Complex32::new(0.3136817403988916, -0.9495281805930367),
        Complex32::new(0.3020059493192282, -0.9533060403541938),
        Complex32::new(0.29028467725446233, -0.9569403357322089),
        Complex32::new(0.27851968938505306, -0.9604305194155658),
        Complex32::new(0.2667127574748984, -0.9637760657954398),
        Complex32::new(0.2548656596045146, -0.9669764710448521),
        Complex32::new(0.24298017990326398, -0.970031253194544),
        Complex32::new(0.23105810828067128, -0.9729399522055601),
        Complex32::new(0.21910124015686977, -0.9757021300385286),
        Complex32::new(0.20711137619221856, -0.9783173707196277),
        Complex32::new(0.19509032201612833, -0.9807852804032304),
        Complex32::new(0.18303988795514106, -0.9831054874312163),
        Complex32::new(0.17096188876030136, -0.9852776423889412),
        Complex32::new(0.1588581433338614, -0.9873014181578584),
        Complex32::new(0.14673047445536175, -0.989176509964781),
        Complex32::new(0.13458070850712622, -0.99090263542778),
        Complex32::new(0.12241067519921628, -0.99247953459871),
        Complex32::new(0.11022220729388318, -0.9939069700023561),
        Complex32::new(0.09801714032956077, -0.9951847266721968),
        Complex32::new(0.08579731234443988, -0.996312612182778),
        Complex32::new(0.07356456359966745, -0.9972904566786902),
        Complex32::new(0.06132073630220865, -0.9981181129001492),
        Complex32::new(0.049067674327418126, -0.9987954562051724),
        Complex32::new(0.03680722294135899, -0.9993223845883495),
        Complex32::new(0.024541228522912264, -0.9996988186962042),
        Complex32::new(0.012271538285719944, -0.9999247018391445),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.012271538285719823, -0.9999247018391445),
        Complex32::new(-0.024541228522912142, -0.9996988186962042),
        Complex32::new(-0.036807222941358866, -0.9993223845883495),
        Complex32::new(-0.04906767432741801, -0.9987954562051724),
        Complex32::new(-0.06132073630220853, -0.9981181129001492),
        Complex32::new(-0.07356456359966733, -0.9972904566786902),
        Complex32::new(-0.08579731234443976, -0.996312612182778),
        Complex32::new(-0.09801714032956065, -0.9951847266721969),
        Complex32::new(-0.11022220729388306, -0.9939069700023561),
        Complex32::new(-0.12241067519921615, -0.99247953459871),
        Complex32::new(-0.1345807085071261, -0.99090263542778),
        Complex32::new(-0.14673047445536164, -0.989176509964781),
        Complex32::new(-0.15885814333386128, -0.9873014181578584),
        Complex32::new(-0.17096188876030124, -0.9852776423889412),
        Complex32::new(-0.18303988795514092, -0.9831054874312163),
        Complex32::new(-0.1950903220161282, -0.9807852804032304),
        Complex32::new(-0.20711137619221845, -0.9783173707196277),
        Complex32::new(-0.21910124015686966, -0.9757021300385286),
        Complex32::new(-0.23105810828067114, -0.9729399522055602),
        Complex32::new(-0.24298017990326387, -0.970031253194544),
        Complex32::new(-0.2548656596045145, -0.9669764710448521),
        Complex32::new(-0.2667127574748983, -0.9637760657954398),
        Complex32::new(-0.27851968938505295, -0.9604305194155659),
        Complex32::new(-0.29028467725446216, -0.9569403357322089),
        Complex32::new(-0.3020059493192281, -0.9533060403541939),
        Complex32::new(-0.3136817403988914, -0.9495281805930367),
        Complex32::new(-0.32531029216226287, -0.9456073253805214),
        Complex32::new(-0.33688985339221994, -0.9415440651830208),
        Complex32::new(-0.3484186802494344, -0.937339011912575),
        Complex32::new(-0.35989503653498817, -0.9329927988347388),
        Complex32::new(-0.3713171939518375, -0.9285060804732156),
        Complex32::new(-0.3826834323650897, -0.9238795325112867),
        Complex32::new(-0.393992040061048, -0.9191138516900578),
        Complex32::new(-0.40524131400498975, -0.9142097557035307),
        Complex32::new(-0.416429560097637, -0.9091679830905225),
        Complex32::new(-0.42755509343028186, -0.9039892931234434),
        Complex32::new(-0.4386162385385274, -0.8986744656939539),
        Complex32::new(-0.4496113296546067, -0.8932243011955152),
        Complex32::new(-0.46053871095824006, -0.8876396204028539),
        Complex32::new(-0.4713967368259977, -0.881921264348355),
        Complex32::new(-0.4821837720791227, -0.8760700941954066),
        Complex32::new(-0.492898192229784, -0.8700869911087115),
        Complex32::new(-0.5035383837257175, -0.8639728561215868),
        Complex32::new(-0.5141027441932217, -0.8577286100002721),
        Complex32::new(-0.5245896826784687, -0.8513551931052652),
        Complex32::new(-0.534997619887097, -0.8448535652497072),
        Complex32::new(-0.5453249884220462, -0.8382247055548382),
        Complex32::new(-0.555570233019602, -0.8314696123025455),
        Complex32::new(-0.5657318107836132, -0.8245893027850252),
        Complex32::new(-0.5758081914178453, -0.8175848131515837),
        Complex32::new(-0.5857978574564389, -0.8104571982525948),
        Complex32::new(-0.5956993044924334, -0.8032075314806449),
        Complex32::new(-0.6055110414043254, -0.7958369046088836),
        Complex32::new(-0.6152315905806267, -0.7883464276266063),
        Complex32::new(-0.6248594881423862, -0.7807372285720946),
        Complex32::new(-0.6343932841636454, -0.7730104533627371),
        Complex32::new(-0.6438315428897913, -0.7651672656224591),
        Complex32::new(-0.6531728429537765, -0.7572088465064847),
        Complex32::new(-0.6624157775901719, -0.7491363945234593),
        Complex32::new(-0.6715589548470184, -0.740951125354959),
        Complex32::new(-0.680600997795453, -0.7326542716724128),
        Complex32::new(-0.6895405447370669, -0.7242470829514669),
        Complex32::new(-0.6983762494089728, -0.7157308252838187),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
        Complex32::new(-0.7157308252838186, -0.6983762494089729),
        Complex32::new(-0.7242470829514668, -0.689540544737067),
        Complex32::new(-0.7326542716724127, -0.6806009977954532),
        Complex32::new(-0.7409511253549589, -0.6715589548470186),
        Complex32::new(-0.7491363945234591, -0.662415777590172),
        Complex32::new(-0.7572088465064846, -0.6531728429537766),
        Complex32::new(-0.765167265622459, -0.6438315428897914),
        Complex32::new(-0.773010453362737, -0.6343932841636455),
        Complex32::new(-0.7807372285720945, -0.6248594881423863),
        Complex32::new(-0.7883464276266062, -0.6152315905806269),
        Complex32::new(-0.7958369046088835, -0.6055110414043257),
        Complex32::new(-0.8032075314806448, -0.5956993044924335),
        Complex32::new(-0.8104571982525947, -0.585797857456439),
        Complex32::new(-0.8175848131515836, -0.5758081914178454),
        Complex32::new(-0.8245893027850251, -0.5657318107836135),
        Complex32::new(-0.8314696123025453, -0.5555702330196022),
        Complex32::new(-0.8382247055548381, -0.5453249884220464),
        Complex32::new(-0.8448535652497071, -0.5349976198870972),
        Complex32::new(-0.8513551931052652, -0.524589682678469),
        Complex32::new(-0.857728610000272, -0.5141027441932218),
        Complex32::new(-0.8639728561215867, -0.5035383837257177),
        Complex32::new(-0.8700869911087113, -0.49289819222978415),
        Complex32::new(-0.8760700941954065, -0.4821837720791229),
        Complex32::new(-0.8819212643483549, -0.47139673682599786),
        Complex32::new(-0.8876396204028538, -0.4605387109582402),
        Complex32::new(-0.8932243011955152, -0.4496113296546069),
        Complex32::new(-0.8986744656939539, -0.43861623853852755),
        Complex32::new(-0.9039892931234433, -0.42755509343028203),
        Complex32::new(-0.9091679830905224, -0.41642956009763715),
        Complex32::new(-0.9142097557035307, -0.4052413140049899),
        Complex32::new(-0.9191138516900578, -0.39399204006104815),
        Complex32::new(-0.9238795325112867, -0.3826834323650899),
        Complex32::new(-0.9285060804732155, -0.3713171939518377),
        Complex32::new(-0.9329927988347388, -0.35989503653498833),
        Complex32::new(-0.9373390119125748, -0.3484186802494348),
        Complex32::new(-0.9415440651830207, -0.33688985339222033),
        Complex32::new(-0.9456073253805212, -0.32531029216226326),
        Complex32::new(-0.9495281805930367, -0.3136817403988914),
        Complex32::new(-0.9533060403541939, -0.30200594931922803),
        Complex32::new(-0.9569403357322088, -0.2902846772544624),
        Complex32::new(-0.9604305194155658, -0.27851968938505317),
        Complex32::new(-0.9637760657954398, -0.2667127574748985),
        Complex32::new(-0.9669764710448521, -0.2548656596045147),
        Complex32::new(-0.970031253194544, -0.24298017990326407),
        Complex32::new(-0.9729399522055601, -0.23105810828067133),
        Complex32::new(-0.9757021300385285, -0.21910124015687005),
        Complex32::new(-0.9783173707196275, -0.20711137619221884),
        Complex32::new(-0.9807852804032304, -0.1950903220161286),
        Complex32::new(-0.9831054874312163, -0.1830398879551409),
        Complex32::new(-0.9852776423889412, -0.17096188876030122),
        Complex32::new(-0.9873014181578584, -0.15885814333386147),
        Complex32::new(-0.989176509964781, -0.1467304744553618),
        Complex32::new(-0.99090263542778, -0.13458070850712628),
        Complex32::new(-0.99247953459871, -0.12241067519921635),
        Complex32::new(-0.9939069700023561, -0.11022220729388324),
        Complex32::new(-0.9951847266721968, -0.09801714032956083),
        Complex32::new(-0.996312612182778, -0.08579731234444016),
        Complex32::new(-0.9972904566786902, -0.07356456359966773),
        Complex32::new(-0.9981181129001492, -0.06132073630220849),
        Complex32::new(-0.9987954562051724, -0.049067674327417966),
        Complex32::new(-0.9993223845883495, -0.03680722294135883),
        Complex32::new(-0.9996988186962042, -0.024541228522912326),
        Complex32::new(-0.9999247018391445, -0.012271538285720007),
    ],
    &[
        Complex32::new(1.0, 0.0),
        Complex32::new(0.9999811752826011, -0.006135884649154475),
        Complex32::new(0.9999247018391445, -0.012271538285719925),
        Complex32::new(0.9998305817958234, -0.01840672990580482),
        Complex32::new(0.9996988186962042, -0.024541228522912288),
        Complex32::new(0.9995294175010931, -0.030674803176636626),
        Complex32::new(0.9993223845883495, -0.03680722294135883),
        Complex32::new(0.9990777277526454, -0.04293825693494082),
        Complex32::new(0.9987954562051724, -0.049067674327418015),
        Complex32::new(0.9984755805732948, -0.055195244349689934),
        Complex32::new(0.9981181129001492, -0.06132073630220858),
        Complex32::new(0.9977230666441916, -0.06744391956366405),
        Complex32::new(0.9972904566786902, -0.07356456359966743),
        Complex32::new(0.9968202992911657, -0.07968243797143013),
        Complex32::new(0.996312612182778, -0.0857973123444399),
        Complex32::new(0.9957674144676598, -0.09190895649713272),
        Complex32::new(0.9951847266721969, -0.0980171403295606),
        Complex32::new(0.9945645707342554, -0.10412163387205459),
        Complex32::new(0.9939069700023561, -0.11022220729388306),
        Complex32::new(0.9932119492347945, -0.11631863091190475),
        Complex32::new(0.99247953459871, -0.1224106751992162),
        Complex32::new(0.9917097536690995, -0.12849811079379317),
        Complex32::new(0.99090263542778, -0.13458070850712617),
        Complex32::new(0.9900582102622971, -0.1406582393328492),
        Complex32::new(0.989176509964781, -0.14673047445536175),
        Complex32::new(0.9882575677307495, -0.15279718525844344),
        Complex32::new(0.9873014181578584, -0.15885814333386145),
        Complex32::new(0.9863080972445987, -0.16491312048996992),
        Complex32::new(0.9852776423889412, -0.17096188876030122),
        Complex32::new(0.984210092386929, -0.17700422041214875),
        Complex32::new(0.9831054874312163, -0.18303988795514095),
        Complex32::new(0.9819638691095552, -0.1890686641498062),
        Complex32::new(0.9807852804032304, -0.19509032201612825),
        Complex32::new(0.9795697656854405, -0.2011046348420919),
        Complex32::new(0.9783173707196277, -0.20711137619221856),
        Complex32::new(0.9770281426577544, -0.21311031991609136),
        Complex32::new(0.9757021300385286, -0.2191012401568698),
        Complex32::new(0.9743393827855759, -0.22508391135979283),
        Complex32::new(0.9729399522055602, -0.2310581082806711),
        Complex32::new(0.9715038909862518, -0.2370236059943672),
        Complex32::new(0.970031253194544, -0.24298017990326387),
        Complex32::new(0.9685220942744174, -0.24892760574572015),
        Complex32::new(0.9669764710448521, -0.25486565960451457),
        Complex32::new(0.9653944416976894, -0.2607941179152755),
        Complex32::new(0.9637760657954398, -0.26671275747489837),
        Complex32::new(0.9621214042690416, -0.272621355449949),
        Complex32::new(0.9604305194155658, -0.27851968938505306),
        Complex32::new(0.9587034748958716, -0.2844075372112719),
        Complex32::new(0.9569403357322088, -0.29028467725446233),
        Complex32::new(0.9551411683057708, -0.2961508882436238),
        Complex32::new(0.9533060403541939, -0.3020059493192281),
        Complex32::new(0.9514350209690083, -0.30784964004153487),
        Complex32::new(0.9495281805930367, -0.3136817403988915),
        Complex32::new(0.9475855910177411, -0.3195020308160157),
        Complex32::new(0.9456073253805213, -0.3253102921622629),
        Complex32::new(0.9435934581619604, -0.33110630575987643),
        Complex32::new(0.9415440651830208, -0.33688985339222005),
        Complex32::new(0.9394592236021899, -0.3426607173119944),
        Complex32::new(0.937339011912575, -0.34841868024943456),
        Complex32::new(0.9351835099389476, -0.35416352542049034),
        Complex32::new(0.932992798834739, -0.3598950365349881),
        Complex32::new(0.9307669610789837, -0.36561299780477385),
        Complex32::new(0.9285060804732156, -0.37131719395183754),
        Complex32::new(0.9262102421383114, -0.37700741021641826),
        Complex32::new(0.9238795325112867, -0.3826834323650898),
        Complex32::new(0.921514039342042, -0.38834504669882625),
        Complex32::new(0.9191138516900578, -0.3939920400610481),
        Complex32::new(0.9166790599210427, -0.3996241998456468),
        Complex32::new(0.9142097557035307, -0.40524131400498986),
        Complex32::new(0.9117060320054299, -0.4108431710579039),
        Complex32::new(0.9091679830905224, -0.41642956009763715),
        Complex32::new(0.9065957045149153, -0.4220002707997997),
        Complex32::new(0.9039892931234433, -0.4275550934302821),
        Complex32::new(0.901348847046022, -0.43309381885315196),
        Complex32::new(0.8986744656939538, -0.43861623853852766),
        Complex32::new(0.8959662497561852, -0.4441221445704292),
        Complex32::new(0.8932243011955153, -0.44961132965460654),
        Complex32::new(0.8904487232447579, -0.45508358712634384),
        Complex32::new(0.8876396204028539, -0.46053871095824),
        Complex32::new(0.8847970984309378, -0.4659764957679662),
        Complex32::new(0.881921264348355, -0.47139673682599764),
        Complex32::new(0.8790122264286335, -0.4767992300633221),
        Complex32::new(0.8760700941954066, -0.4821837720791227),
        Complex32::new(0.8730949784182901, -0.487550160148436),
        Complex32::new(0.8700869911087115, -0.49289819222978404),
        Complex32::new(0.8670462455156926, -0.49822766697278187),
        Complex32::new(0.8639728561215868, -0.5035383837257176),
        Complex32::new(0.8608669386377673, -0.508830142543107),
        Complex32::new(0.8577286100002721, -0.5141027441932217),
        Complex32::new(0.8545579883654005, -0.5193559901655896),
        Complex32::new(0.8513551931052652, -0.524589682678469),
        Complex32::new(0.8481203448032972, -0.5298036246862946),
        Complex32::new(0.8448535652497071, -0.5349976198870972),
        Complex32::new(0.8415549774368984, -0.5401714727298929),
        Complex32::new(0.8382247055548381, -0.5453249884220465),
        Complex32::new(0.83486287498638, -0.5504579729366048),
        Complex32::new(0.8314696123025452, -0.5555702330196022),
        Complex32::new(0.8280450452577558, -0.560661576197336),
        Complex32::new(0.8245893027850253, -0.5657318107836131),
        Complex32::new(0.8211025149911046, -0.5707807458869673),
        Complex32::new(0.8175848131515837, -0.5758081914178453),
        Complex32::new(0.8140363297059484, -0.5808139580957645),
        Complex32::new(0.8104571982525948, -0.5857978574564389),
        Complex32::new(0.8068475535437993, -0.5907597018588742),
        Complex32::new(0.8032075314806449, -0.5956993044924334),
        Complex32::new(0.799537269107905, -0.600616479383869),
        Complex32::new(0.7958369046088836, -0.6055110414043255),
        Complex32::new(0.7921065773002124, -0.6103828062763095),
        Complex32::new(0.7883464276266063, -0.6152315905806268),
        Complex32::new(0.7845565971555752, -0.6200572117632891),
        Complex32::new(0.7807372285720945, -0.6248594881423863),
        Complex32::new(0.7768884656732324, -0.629638238914927),
        Complex32::new(0.773010453362737, -0.6343932841636455),
        Complex32::new(0.7691033376455797, -0.6391244448637757),
        Complex32::new(0.765167265622459, -0.6438315428897914),
        Complex32::new(0.7612023854842618, -0.6485144010221124),
        Complex32::new(0.7572088465064846, -0.6531728429537768),
        Complex32::new(0.7531867990436125, -0.6578066932970786),
        Complex32::new(0.7491363945234594, -0.6624157775901718),
        Complex32::new(0.7450577854414661, -0.6669999223036375),
        Complex32::new(0.7409511253549591, -0.6715589548470183),
        Complex32::new(0.7368165688773699, -0.6760927035753159),
        Complex32::new(0.7326542716724128, -0.680600997795453),
        Complex32::new(0.7284643904482252, -0.6850836677727004),
        Complex32::new(0.724247082951467, -0.6895405447370668),
        Complex32::new(0.7200025079613817, -0.693971460889654),
        Complex32::new(0.7157308252838186, -0.6983762494089729),
        Complex32::new(0.7114321957452164, -0.7027547444572253),
        Complex32::new(0.7071067811865476, -0.7071067811865475),
        Complex32::new(0.7027547444572253, -0.7114321957452164),
        Complex32::new(0.6983762494089729, -0.7157308252838186),
        Complex32::new(0.693971460889654, -0.7200025079613817),
        Complex32::new(0.6895405447370669, -0.7242470829514669),
        Complex32::new(0.6850836677727004, -0.7284643904482252),
        Complex32::new(0.6806009977954531, -0.7326542716724128),
        Complex32::new(0.676092703575316, -0.7368165688773698),
        Complex32::new(0.6715589548470183, -0.7409511253549591),
        Complex32::new(0.6669999223036375, -0.745057785441466),
        Complex32::new(0.6624157775901718, -0.7491363945234593),
        Complex32::new(0.6578066932970786, -0.7531867990436124),
        Complex32::new(0.6531728429537768, -0.7572088465064845),
        Complex32::new(0.6485144010221126, -0.7612023854842618),
        Complex32::new(0.6438315428897915, -0.765167265622459),
        Complex32::new(0.6391244448637757, -0.7691033376455796),
        Complex32::new(0.6343932841636455, -0.773010453362737),
        Complex32::new(0.6296382389149271, -0.7768884656732324),
        Complex32::new(0.6248594881423865, -0.7807372285720944),
        Complex32::new(0.6200572117632892, -0.7845565971555752),
        Complex32::new(0.6152315905806268, -0.7883464276266062),
        Complex32::new(0.6103828062763095, -0.7921065773002124),
        Complex32::new(0.6055110414043255, -0.7958369046088835),
        Complex32::new(0.600616479383869, -0.799537269107905),
        Complex32::new(0.5956993044924335, -0.8032075314806448),
        Complex32::new(0.5907597018588743, -0.8068475535437992),
        Complex32::new(0.5857978574564389, -0.8104571982525948),
        Complex32::new(0.5808139580957645, -0.8140363297059483),
        Complex32::new(0.5758081914178453, -0.8175848131515837),
        Complex32::new(0.5707807458869674, -0.8211025149911046),
        Complex32::new(0.5657318107836132, -0.8245893027850253),
        Complex32::new(0.560661576197336, -0.8280450452577558),
        Complex32::new(0.5555702330196023, -0.8314696123025452),
        Complex32::new(0.5504579729366048, -0.83486287498638),
        Complex32::new(0.5453249884220465, -0.838224705554838),
        Complex32::new(0.540171472729893, -0.8415549774368983),
        Complex32::new(0.5349976198870973, -0.844853565249707),
        Complex32::new(0.5298036246862948, -0.8481203448032971),
        Complex32::new(0.5245896826784688, -0.8513551931052652),
        Complex32::new(0.5193559901655895, -0.8545579883654005),
        Complex32::new(0.5141027441932217, -0.8577286100002721),
        Complex32::new(0.508830142543107, -0.8608669386377673),
        Complex32::new(0.5035383837257176, -0.8639728561215867),
        Complex32::new(0.49822766697278187, -0.8670462455156926),
        Complex32::new(0.4928981922297841, -0.8700869911087113),
        Complex32::new(0.48755016014843605, -0.8730949784182901),
        Complex32::new(0.48218377207912283, -0.8760700941954066),
        Complex32::new(0.47679923006332225, -0.8790122264286334),
        Complex32::new(0.4713967368259978, -0.8819212643483549),
        Complex32::new(0.4659764957679661, -0.8847970984309378),
        Complex32::new(0.46053871095824, -0.8876396204028539),
        Complex32::new(0.45508358712634384, -0.8904487232447579),
        Complex32::new(0.4496113296546066, -0.8932243011955153),
        Complex32::new(0.44412214457042926, -0.8959662497561851),
        Complex32::new(0.4386162385385277, -0.8986744656939538),
        Complex32::new(0.433093818853152, -0.901348847046022),
        Complex32::new(0.4275550934302822, -0.9039892931234433),
        Complex32::new(0.4220002707997998, -0.9065957045149153),
        Complex32::new(0.4164295600976373, -0.9091679830905223),
        Complex32::new(0.4108431710579039, -0.9117060320054299),
        Complex32::new(0.40524131400498986, -0.9142097557035307),
        Complex32::new(0.3996241998456468, -0.9166790599210427),
        Complex32::new(0.3939920400610481, -0.9191138516900578),
        Complex32::new(0.3883450466988263, -0.9215140393420419),
        Complex32::new(0.38268343236508984, -0.9238795325112867),
        Complex32::new(0.3770074102164183, -0.9262102421383113),
        Complex32::new(0.3713171939518376, -0.9285060804732155),
        Complex32::new(0.36561299780477396, -0.9307669610789837),
        Complex32::new(0.3598950365349883, -0.9329927988347388),
        Complex32::new(0.3541635254204905, -0.9351835099389475),
        Complex32::new(0.3484186802494345, -0.937339011912575),
        Complex32::new(0.3426607173119944, -0.9394592236021899),
        Complex32::new(0.33688985339222005, -0.9415440651830208),
        Complex32::new(0.33110630575987643, -0.9435934581619604),
        Complex32::new(0.325310292162263, -0.9456073253805213),
        Complex32::new(0.31950203081601575, -0.9475855910177411),
        Complex32::new(0.3136817403988916, -0.9495281805930367),
        Complex32::new(0.307849640041535, -0.9514350209690083),
        Complex32::new(0.3020059493192282, -0.9533060403541938),
        Complex32::new(0.29615088824362396, -0.9551411683057707),
        Complex32::new(0.29028467725446233, -0.9569403357322089),
        Complex32::new(0.2844075372112718, -0.9587034748958716),
        Complex32::new(0.27851968938505306, -0.9604305194155658),
        Complex32::new(0.272621355449949, -0.9621214042690416),
        Complex32::new(0.2667127574748984, -0.9637760657954398),
        Complex32::new(0.26079411791527557, -0.9653944416976894),
        Complex32::new(0.2548656596045146, -0.9669764710448521),
        Complex32::new(0.24892760574572026, -0.9685220942744173),
        Complex32::new(0.24298017990326398, -0.970031253194544),
        Complex32::new(0.23702360599436734, -0.9715038909862518),
        Complex32::new(0.23105810828067128, -0.9729399522055601),
        Complex32::new(0.22508391135979278, -0.9743393827855759),
        Complex32::new(0.21910124015686977, -0.9757021300385286),
        Complex32::new(0.21311031991609136, -0.9770281426577544),
        Complex32::new(0.20711137619221856, -0.9783173707196277),
        Complex32::new(0.20110463484209196, -0.9795697656854405),
        Complex32::new(0.19509032201612833, -0.9807852804032304),
        Complex32::new(0.18906866414980628, -0.9819638691095552),
        Complex32::new(0.18303988795514106, -0.9831054874312163),
        Complex32::new(0.17700422041214886, -0.984210092386929),
        Complex32::new(0.17096188876030136, -0.9852776423889412),
        Complex32::new(0.1649131204899701, -0.9863080972445987),
        Complex32::new(0.1588581433338614, -0.9873014181578584),
        Complex32::new(0.1527971852584434, -0.9882575677307495),
        Complex32::new(0.14673047445536175, -0.989176509964781),
        Complex32::new(0.14065823933284924, -0.9900582102622971),
        Complex32::new(0.13458070850712622, -0.99090263542778),
        Complex32::new(0.12849811079379322, -0.9917097536690995),
        Complex32::new(0.12241067519921628, -0.99247953459871),
        Complex32::new(0.11631863091190488, -0.9932119492347945),
        Complex32::new(0.11022220729388318, -0.9939069700023561),
        Complex32::new(0.10412163387205473, -0.9945645707342554),
        Complex32::new(0.09801714032956077, -0.9951847266721968),
        Complex32::new(0.0919089564971327, -0.9957674144676598),
        Complex32::new(0.08579731234443988, -0.996312612182778),
        Complex32::new(0.07968243797143013, -0.9968202992911657),
        Complex32::new(0.07356456359966745, -0.9972904566786902),
        Complex32::new(0.0674439195636641, -0.9977230666441916),
        Complex32::new(0.06132073630220865, -0.9981181129001492),
        Complex32::new(0.05519524434969003, -0.9984755805732948),
        Complex32::new(0.049067674327418126, -0.9987954562051724),
        Complex32::new(0.04293825693494096, -0.9990777277526454),
        Complex32::new(0.03680722294135899, -0.9993223845883495),
        Complex32::new(0.03067480317663658, -0.9995294175010931),
        Complex32::new(0.024541228522912264, -0.9996988186962042),
        Complex32::new(0.01840672990580482, -0.9998305817958234),
        Complex32::new(0.012271538285719944, -0.9999247018391445),
        Complex32::new(0.006135884649154515, -0.9999811752826011),
        Complex32::new(6.123233995736766e-17, -1.0),
        Complex32::new(-0.006135884649154393, -0.9999811752826011),
        Complex32::new(-0.012271538285719823, -0.9999247018391445),
        Complex32::new(-0.018406729905804695, -0.9998305817958234),
        Complex32::new(-0.024541228522912142, -0.9996988186962042),
        Complex32::new(-0.03067480317663646, -0.9995294175010931),
        Complex32::new(-0.036807222941358866, -0.9993223845883495),
        Complex32::new(-0.042938256934940834, -0.9990777277526454),
        Complex32::new(-0.04906767432741801, -0.9987954562051724),
        Complex32::new(-0.05519524434968991, -0.9984755805732948),
        Complex32::new(-0.06132073630220853, -0.9981181129001492),
        Complex32::new(-0.06744391956366398, -0.9977230666441916),
        Complex32::new(-0.07356456359966733, -0.9972904566786902),
        Complex32::new(-0.07968243797143001, -0.9968202992911658),
        Complex32::new(-0.08579731234443976, -0.996312612182778),
        Complex32::new(-0.09190895649713257, -0.9957674144676598),
        Complex32::new(-0.09801714032956065, -0.9951847266721969),
        Complex32::new(-0.1041216338720546, -0.9945645707342554),
        Complex32::new(-0.11022220729388306, -0.9939069700023561),
        Complex32::new(-0.11631863091190475, -0.9932119492347945),
        Complex32::new(-0.12241067519921615, -0.99247953459871),
        Complex32::new(-0.1284981107937931, -0.9917097536690995),
        Complex32::new(-0.1345807085071261, -0.99090263542778),
        Complex32::new(-0.14065823933284913, -0.9900582102622971),
        Complex32::new(-0.14673047445536164, -0.989176509964781),
        Complex32::new(-0.1527971852584433, -0.9882575677307495),
        Complex32::new(-0.15885814333386128, -0.9873014181578584),
        Complex32::new(-0.16491312048996995, -0.9863080972445987),
        Complex32::new(-0.17096188876030124, -0.9852776423889412),
        Complex32::new(-0.17700422041214875, -0.984210092386929),
        Complex32::new(-0.18303988795514092, -0.9831054874312163),
        Complex32::new(-0.18906866414980616, -0.9819638691095552),
        Complex32::new(-0.1950903220161282, -0.9807852804032304),
        Complex32::new(-0.20110463484209182, -0.9795697656854405),
        Complex32::new(-0.20711137619221845, -0.9783173707196277),
        Complex32::new(-0.21311031991609125, -0.9770281426577544),
        Complex32::new(-0.21910124015686966, -0.9757021300385286),
        Complex32::new(-0.22508391135979267, -0.9743393827855759),
        Complex32::new(-0.23105810828067114, -0.9729399522055602),
        Complex32::new(-0.23702360599436723, -0.9715038909862518),
        Complex32::new(-0.24298017990326387, -0.970031253194544),
        Complex32::new(-0.24892760574572012, -0.9685220942744174),
        Complex32::new(-0.2548656596045145, -0.9669764710448521),
        Complex32::new(-0.26079411791527546, -0.9653944416976894),
        Complex32::new(-0.2667127574748983, -0.9637760657954398),
        Complex32::new(-0.27262135544994887, -0.9621214042690416),
        Complex32::new(-0.27851968938505295, -0.9604305194155659),
        Complex32::new(-0.2844075372112717, -0.9587034748958716),
        Complex32::new(-0.29028467725446216, -0.9569403357322089),
        Complex32::new(-0.29615088824362384, -0.9551411683057707),
        Complex32::new(-0.3020059493192281, -0.9533060403541939),
        Complex32::new(-0.30784964004153487, -0.9514350209690083),
        Complex32::new(-0.3136817403988914, -0.9495281805930367),
        Complex32::new(-0.31950203081601564, -0.9475855910177412),
        Complex32::new(-0.32531029216226287, -0.9456073253805214),
        Complex32::new(-0.3311063057598763, -0.9435934581619604),
        Complex32::new(-0.33688985339221994, -0.9415440651830208),
        Complex32::new(-0.34266071731199427, -0.9394592236021899),
        Complex32::new(-0.3484186802494344, -0.937339011912575),
        Complex32::new(-0.3541635254204904, -0.9351835099389476),
        Complex32::new(-0.35989503653498817, -0.9329927988347388),
        Complex32::new(-0.36561299780477385, -0.9307669610789837),
        Complex32::new(-0.3713171939518375, -0.9285060804732156),
        Complex32::new(-0.3770074102164182, -0.9262102421383114),
        Complex32::new(-0.3826834323650897, -0.9238795325112867),
        Complex32::new(-0.3883450466988262, -0.921514039342042),
        Complex32::new(-0.393992040061048, -0.9191138516900578),
        Complex32::new(-0.3996241998456467, -0.9166790599210427),
        Complex32::new(-0.40524131400498975, -0.9142097557035307),
        Complex32::new(-0.4108431710579038, -0.9117060320054299),
        Complex32::new(-0.416429560097637, -0.9091679830905225),
        Complex32::new(-0.4220002707997997, -0.9065957045149153),
        Complex32::new(-0.42755509343028186, -0.9039892931234434),
        Complex32::new(-0.4330938188531519, -0.901348847046022),
        Complex32::new(-0.4386162385385274, -0.8986744656939539),
        Complex32::new(-0.44412214457042914, -0.8959662497561852),
        Complex32::new(-0.4496113296546067, -0.8932243011955152),
        Complex32::new(-0.4550835871263437, -0.890448723244758),
        Complex32::new(-0.46053871095824006, -0.8876396204028539),
        Complex32::new(-0.465976495767966, -0.8847970984309379),
        Complex32::new(-0.4713967368259977, -0.881921264348355),
        Complex32::new(-0.4767992300633219, -0.8790122264286335),
        Complex32::new(-0.4821837720791227, -0.8760700941954066),
        Complex32::new(-0.4875501601484357, -0.8730949784182902),
        Complex32::new(-0.492898192229784, -0.8700869911087115),
        Complex32::new(-0.4982276669727816, -0.8670462455156928),
        Complex32::new(-0.5035383837257175, -0.8639728561215868),
        Complex32::new(-0.5088301425431071, -0.8608669386377672),
        Complex32::new(-0.5141027441932217, -0.8577286100002721),
        Complex32::new(-0.5193559901655896, -0.8545579883654005),
        Complex32::new(-0.5245896826784687, -0.8513551931052652),
        Complex32::new(-0.5298036246862947, -0.8481203448032972),
        Complex32::new(-0.534997619887097, -0.8448535652497072),
        Complex32::new(-0.5401714727298929, -0.8415549774368984),
        Complex32::new(-0.5453249884220462, -0.8382247055548382),
        Complex32::new(-0.5504579729366047, -0.8348628749863801),
        Complex32::new(-0.555570233019602, -0.8314696123025455),
        Complex32::new(-0.5606615761973359, -0.8280450452577558),
        Complex32::new(-0.5657318107836132, -0.8245893027850252),
        Complex32::new(-0.5707807458869671, -0.8211025149911048),
        Complex32::new(-0.5758081914178453, -0.8175848131515837),
        Complex32::new(-0.5808139580957644, -0.8140363297059485),
        Complex32::new(-0.5857978574564389, -0.8104571982525948),
        Complex32::new(-0.590759701858874, -0.8068475535437994),
        Complex32::new(-0.5956993044924334, -0.8032075314806449),
        Complex32::new(-0.6006164793838688, -0.7995372691079052),
        Complex32::new(-0.6055110414043254, -0.7958369046088836),
        Complex32::new(-0.6103828062763096, -0.7921065773002123),
        Complex32::new(-0.6152315905806267, -0.7883464276266063),
        Complex32::new(-0.6200572117632892, -0.7845565971555751),
        Complex32::new(-0.6248594881423862, -0.7807372285720946),
        Complex32::new(-0.6296382389149271, -0.7768884656732324),
        Complex32::new(-0.6343932841636454, -0.7730104533627371),
        Complex32::new(-0.6391244448637757, -0.7691033376455796),
        Complex32::new(-0.6438315428897913, -0.7651672656224591),
        Complex32::new(-0.6485144010221124, -0.7612023854842619),
        Complex32::new(-0.6531728429537765, -0.7572088465064847),
        Complex32::new(-0.6578066932970786, -0.7531867990436125),
        Complex32::new(-0.6624157775901719, -0.7491363945234593),
        Complex32::new(-0.6669999223036374, -0.7450577854414661),
        Complex32::new(-0.6715589548470184, -0.740951125354959),
        Complex32::new(-0.6760927035753158, -0.73681656887737),
        Complex32::new(-0.680600997795453, -0.7326542716724128),
        Complex32::new(-0.6850836677727002, -0.7284643904482253),
        Complex32::new(-0.6895405447370669, -0.7242470829514669),
        Complex32::new(-0.6939714608896538, -0.7200025079613818),
        Complex32::new(-0.6983762494089728, -0.7157308252838187),
        Complex32::new(-0.7027547444572251, -0.7114321957452167),
        Complex32::new(-0.7071067811865475, -0.7071067811865476),
        Complex32::new(-0.7114321957452165, -0.7027547444572252),
        Complex32::new(-0.7157308252838186, -0.6983762494089729),
        Complex32::new(-0.7200025079613817, -0.693971460889654),
        Complex32::new(-0.7242470829514668, -0.689540544737067),
        Complex32::new(-0.7284643904482252, -0.6850836677727004),
        Complex32::new(-0.7326542716724127, -0.6806009977954532),
        Complex32::new(-0.7368165688773699, -0.6760927035753159),
        Complex32::new(-0.7409511253549589, -0.6715589548470186),
        Complex32::new(-0.745057785441466, -0.6669999223036376),
        Complex32::new(-0.7491363945234591, -0.662415777590172),
        Complex32::new(-0.7531867990436124, -0.6578066932970787),
        Complex32::new(-0.7572088465064846, -0.6531728429537766),
        Complex32::new(-0.7612023854842617, -0.6485144010221126),
        Complex32::new(-0.765167265622459, -0.6438315428897914),
        Complex32::new(-0.7691033376455795, -0.6391244448637758),
        Complex32::new(-0.773010453362737, -0.6343932841636455),
        Complex32::new(-0.7768884656732323, -0.6296382389149272),
        Complex32::new(-0.7807372285720945, -0.6248594881423863),
        Complex32::new(-0.784556597155575, -0.6200572117632894),
        Complex32::new(-0.7883464276266062, -0.6152315905806269),
        Complex32::new(-0.7921065773002122, -0.6103828062763097),
        Complex32::new(-0.7958369046088835, -0.6055110414043257),
        Complex32::new(-0.7995372691079051, -0.6006164793838689),
        Complex32::new(-0.8032075314806448, -0.5956993044924335),
        Complex32::new(-0.8068475535437993, -0.5907597018588742),
        Complex32::new(-0.8104571982525947, -0.585797857456439),
        Complex32::new(-0.8140363297059484, -0.5808139580957645),
        Complex32::new(-0.8175848131515836, -0.5758081914178454),
        Complex32::new(-0.8211025149911046, -0.5707807458869673),
        Complex32::new(-0.8245893027850251, -0.5657318107836135),
        Complex32::new(-0.8280450452577557, -0.5606615761973361),
        Complex32::new(-0.8314696123025453, -0.5555702330196022),
        Complex32::new(-0.83486287498638, -0.5504579729366049),
        Complex32::new(-0.8382247055548381, -0.5453249884220464),
        Complex32::new(-0.8415549774368983, -0.540171472729893),
        Complex32::new(-0.8448535652497071, -0.5349976198870972),
        Complex32::new(-0.8481203448032971, -0.5298036246862948),
        Complex32::new(-0.8513551931052652, -0.524589682678469),
        Complex32::new(-0.8545579883654004, -0.5193559901655898),
        Complex32::new(-0.857728610000272, -0.5141027441932218),
        Complex32::new(-0.8608669386377671, -0.5088301425431073),
        Complex32::new(-0.8639728561215867, -0.5035383837257177),
        Complex32::new(-0.8670462455156928, -0.49822766697278176),
        Complex32::new(-0.8700869911087113, -0.49289819222978415),
        Complex32::new(-0.8730949784182901, -0.4875501601484359),
        Complex32::new(-0.8760700941954065, -0.4821837720791229),
        Complex32::new(-0.8790122264286335, -0.4767992300633221),
        Complex32::new(-0.8819212643483549, -0.47139673682599786),
        Complex32::new(-0.8847970984309378, -0.4659764957679662),
        Complex32::new(-0.8876396204028538, -0.4605387109582402),
        Complex32::new(-0.8904487232447579, -0.4550835871263439),
        Complex32::new(-0.8932243011955152, -0.4496113296546069),
        Complex32::new(-0.8959662497561851, -0.4441221445704293),
        Complex32::new(-0.8986744656939539, -0.43861623853852755),
        Complex32::new(-0.9013488470460219, -0.43309381885315207),
        Complex32::new(-0.9039892931234433, -0.42755509343028203),
        Complex32::new(-0.9065957045149153, -0.42200027079979985),
        Complex32::new(-0.9091679830905224, -0.41642956009763715),
        Complex32::new(-0.9117060320054298, -0.41084317105790413),
        Complex32::new(-0.9142097557035307, -0.4052413140049899),
        Complex32::new(-0.9166790599210426, -0.39962419984564707),
        Complex32::new(-0.9191138516900578, -0.39399204006104815),
        Complex32::new(-0.9215140393420418, -0.3883450466988266),
        Complex32::new(-0.9238795325112867, -0.3826834323650899),
        Complex32::new(-0.9262102421383114, -0.37700741021641815),
        Complex32::new(-0.9285060804732155, -0.3713171939518377),
        Complex32::new(-0.9307669610789837, -0.3656129978047738),
        Complex32::new(-0.9329927988347388, -0.35989503653498833),
        Complex32::new(-0.9351835099389476, -0.3541635254204904),
        Complex32::new(-0.9373390119125748, -0.3484186802494348),
        Complex32::new(-0.9394592236021899, -0.34266071731199443),
        Complex32::new(-0.9415440651830207, -0.33688985339222033),
        Complex32::new(-0.9435934581619604, -0.3311063057598765),
        Complex32::new(-0.9456073253805212, -0.32531029216226326),
        Complex32::new(-0.9475855910177411, -0.3195020308160158),
        Complex32::new(-0.9495281805930367, -0.3136817403988914),
        Complex32::new(-0.9514350209690083, -0.30784964004153503),
        Complex32::new(-0.9533060403541939, -0.30200594931922803),
        Complex32::new(-0.9551411683057707, -0.296150888243624),
        Complex32::new(-0.9569403357322088, -0.2902846772544624),
        Complex32::new(-0.9587034748958715, -0.2844075372112721),
        Complex32::new(-0.9604305194155658, -0.27851968938505317),
        Complex32::new(-0.9621214042690415, -0.27262135544994925),
        Complex32::new(-0.9637760657954398, -0.2667127574748985),
        Complex32::new(-0.9653944416976893, -0.26079411791527585),
        Complex32::new(-0.9669764710448521, -0.2548656596045147),
        Complex32::new(-0.9685220942744174, -0.2489276057457201),
        Complex32::new(-0.970031253194544, -0.24298017990326407),
        Complex32::new(-0.9715038909862518, -0.23702360599436717),
        Complex32::new(-0.9729399522055601, -0.23105810828067133),
        Complex32::new(-0.9743393827855759, -0.22508391135979283),
        Complex32::new(-0.9757021300385285, -0.21910124015687005),
        Complex32::new(-0.9770281426577544, -0.21311031991609142),
        Complex32::new(-0.9783173707196275, -0.20711137619221884),
        Complex32::new(-0.9795697656854405, -0.201104634842092),
        Complex32::new(-0.9807852804032304, -0.1950903220161286),
        Complex32::new(-0.9819638691095552, -0.18906866414980636),
        Complex32::new(-0.9831054874312163, -0.1830398879551409),
        Complex32::new(-0.984210092386929, -0.17700422041214894),
        Complex32::new(-0.9852776423889412, -0.17096188876030122),
        Complex32::new(-0.9863080972445986, -0.16491312048997014),
        Complex32::new(-0.9873014181578584, -0.15885814333386147),
        Complex32::new(-0.9882575677307495, -0.15279718525844369),
        Complex32::new(-0.989176509964781, -0.1467304744553618),
        Complex32::new(-0.990058210262297, -0.14065823933284954),
        Complex32::new(-0.99090263542778, -0.13458070850712628),
        Complex32::new(-0.9917097536690995, -0.12849811079379309),
        Complex32::new(-0.99247953459871, -0.12241067519921635),
        Complex32::new(-0.9932119492347945, -0.11631863091190471),
        Complex32::new(-0.9939069700023561, -0.11022220729388324),
        Complex32::new(-0.9945645707342554, -0.10412163387205457),
        Complex32::new(-0.9951847266721968, -0.09801714032956083),
        Complex32::new(-0.9957674144676598, -0.09190895649713275),
        Complex32::new(-0.996312612182778, -0.08579731234444016),
        Complex32::new(-0.9968202992911657, -0.0796824379714302),
        Complex32::new(-0.9972904566786902, -0.07356456359966773),
        Complex32::new(-0.9977230666441916, -0.06744391956366418),
        Complex32::new(-0.9981181129001492, -0.06132073630220849),
        Complex32::new(-0.9984755805732948, -0.055195244349690094),
        Complex32::new(-0.9987954562051724, -0.049067674327417966),
        Complex32::new(-0.9990777277526454, -0.04293825693494102),
        Complex32::new(-0.9993223845883495, -0.03680722294135883),
        Complex32::new(-0.9995294175010931, -0.030674803176636865),
        Complex32::new(-0.9996988186962042, -0.024541228522912326),
        Complex32::new(-0.9998305817958234, -0.0184067299058051),
        Complex32::new(-0.9999247018391445, -0.012271538285720007),
        Complex32::new(-0.9999811752826011, -0.006135884649154799),
    ],
];

pub(crate) const BITREV: &[&[u16]] = &[
    &[0],
    &[0, 1],
    &[0, 2, 2, 3],
    &[0, 4, 2, 6, 4, 5, 6, 7],
    &[0, 8, 4, 12, 4, 10, 6, 14, 8, 9, 10, 13, 12, 13, 14, 15],
    &[
        0, 16, 8, 24, 4, 20, 12, 28, 8, 18, 10, 26, 12, 22, 14, 30, 16, 17, 18, 25, 20, 21, 22, 29,
        24, 25, 26, 27, 28, 29, 30, 31,
    ],
    &[
        0, 32, 16, 48, 8, 40, 24, 56, 8, 36, 20, 52, 12, 44, 28, 60, 16, 34, 18, 50, 20, 42, 26,
        58, 24, 38, 26, 54, 28, 46, 30, 62, 32, 33, 34, 49, 36, 41, 38, 57, 40, 41, 42, 53, 44, 45,
        46, 61, 48, 49, 50, 51, 52, 53, 54, 59, 56, 57, 58, 59, 60, 61, 62, 63,
    ],
    &[
        0, 64, 32, 96, 16, 80, 48, 112, 8, 72, 40, 104, 24, 88, 56, 120, 16, 68, 36, 100, 20, 84,
        52, 116, 24, 76, 44, 108, 28, 92, 60, 124, 32, 66, 34, 98, 36, 82, 50, 114, 40, 74, 42,
        106, 44, 90, 58, 122, 48, 70, 50, 102, 52, 86, 54, 118, 56, 78, 58, 110, 60, 94, 62, 126,
        64, 65, 66, 97, 68, 81, 70, 113, 72, 73, 74, 105, 76, 89, 78, 121, 80, 81, 82, 101, 84, 85,
        86, 117, 88, 89, 90, 109, 92, 93, 94, 125, 96, 97, 98, 99, 100, 101, 102, 115, 104, 105,
        106, 107, 108, 109, 110, 123, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
        124, 125, 126, 127,
    ],
    &[
        0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 16, 136, 72, 200,
        40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 32, 132, 68, 196, 36, 164, 100,
        228, 40, 148, 84, 212, 52, 180, 116, 244, 48, 140, 76, 204, 52, 172, 108, 236, 56, 156, 92,
        220, 60, 188, 124, 252, 64, 130, 66, 194, 68, 162, 98, 226, 72, 146, 82, 210, 76, 178, 114,
        242, 80, 138, 82, 202, 84, 170, 106, 234, 88, 154, 90, 218, 92, 186, 122, 250, 96, 134, 98,
        198, 100, 166, 102, 230, 104, 150, 106, 214, 108, 182, 118, 246, 112, 142, 114, 206, 116,
        174, 118, 238, 120, 158, 122, 222, 124, 190, 126, 254, 128, 129, 130, 193, 132, 161, 134,
        225, 136, 145, 138, 209, 140, 177, 142, 241, 144, 145, 146, 201, 148, 169, 150, 233, 152,
        153, 154, 217, 156, 185, 158, 249, 160, 161, 162, 197, 164, 165, 166, 229, 168, 169, 170,
        213, 172, 181, 174, 245, 176, 177, 178, 205, 180, 181, 182, 237, 184, 185, 186, 221, 188,
        189, 190, 253, 192, 193, 194, 195, 196, 197, 198, 227, 200, 201, 202, 211, 204, 205, 206,
        243, 208, 209, 210, 211, 212, 213, 214, 235, 216, 217, 218, 219, 220, 221, 222, 251, 224,
        225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 247, 240, 241, 242,
        243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
    ],
    &[
        0, 256, 128, 384, 64, 320, 192, 448, 32, 288, 160, 416, 96, 352, 224, 480, 16, 272, 144,
        400, 80, 336, 208, 464, 48, 304, 176, 432, 112, 368, 240, 496, 32, 264, 136, 392, 72, 328,
        200, 456, 40, 296, 168, 424, 104, 360, 232, 488, 48, 280, 152, 408, 88, 344, 216, 472, 56,
        312, 184, 440, 120, 376, 248, 504, 64, 260, 132, 388, 68, 324, 196, 452, 72, 292, 164, 420,
        100, 356, 228, 484, 80, 276, 148, 404, 84, 340, 212, 468, 88, 308, 180, 436, 116, 372, 244,
        500, 96, 268, 140, 396, 100, 332, 204, 460, 104, 300, 172, 428, 108, 364, 236, 492, 112,
        284, 156, 412, 116, 348, 220, 476, 120, 316, 188, 444, 124, 380, 252, 508, 128, 258, 130,
        386, 132, 322, 194, 450, 136, 290, 162, 418, 140, 354, 226, 482, 144, 274, 146, 402, 148,
        338, 210, 466, 152, 306, 178, 434, 156, 370, 242, 498, 160, 266, 162, 394, 164, 330, 202,
        458, 168, 298, 170, 426, 172, 362, 234, 490, 176, 282, 178, 410, 180, 346, 218, 474, 184,
        314, 186, 442, 188, 378, 250, 506, 192, 262, 194, 390, 196, 326, 198, 454, 200, 294, 202,
        422, 204, 358, 230, 486, 208, 278, 210, 406, 212, 342, 214, 470, 216, 310, 218, 438, 220,
        374, 246, 502, 224, 270, 226, 398, 228, 334, 230, 462, 232, 302, 234, 430, 236, 366, 238,
        494, 240, 286, 242, 414, 244, 350, 246, 478, 248, 318, 250, 446, 252, 382, 254, 510, 256,
        257, 258, 385, 260, 321, 262, 449, 264, 289, 266, 417, 268, 353, 270, 481, 272, 273, 274,
        401, 276, 337, 278, 465, 280, 305, 282, 433, 284, 369, 286, 497, 288, 289, 290, 393, 292,
        329, 294, 457, 296, 297, 298, 425, 300, 361, 302, 489, 304, 305, 306, 409, 308, 345, 310,
        473, 312, 313, 314, 441, 316, 377, 318, 505, 320, 321, 322, 389, 324, 325, 326, 453, 328,
        329, 330, 421, 332, 357, 334, 485, 336, 337, 338, 405, 340, 341, 342, 469, 344, 345, 346,
        437, 348, 373, 350, 501, 352, 353, 354, 397, 356, 357, 358, 461, 360, 361, 362, 429, 364,
        365, 366, 493, 368, 369, 370, 413, 372, 373, 374, 477, 376, 377, 378, 445, 380, 381, 382,
        509, 384, 385, 386, 387, 388, 389, 390, 451, 392, 393, 394, 419, 396, 397, 398, 483, 400,
        401, 402, 403, 404, 405, 406, 467, 408, 409, 410, 435, 412, 413, 414, 499, 416, 417, 418,
        419, 420, 421, 422, 459, 424, 425, 426, 427, 428, 429, 430, 491, 432, 433, 434, 435, 436,
        437, 438, 475, 440, 441, 442, 443, 444, 445, 446, 507, 448, 449, 450, 451, 452, 453, 454,
        455, 456, 457, 458, 459, 460, 461, 462, 487, 464, 465, 466, 467, 468, 469, 470, 471, 472,
        473, 474, 475, 476, 477, 478, 503, 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,
    ],
    &[
        0, 512, 256, 768, 128, 640, 384, 896, 64, 576, 320, 832, 192, 704, 448, 960, 32, 544, 288,
        800, 160, 672, 416, 928, 96, 608, 352, 864, 224, 736, 480, 992, 32, 528, 272, 784, 144,
        656, 400, 912, 80, 592, 336, 848, 208, 720, 464, 976, 48, 560, 304, 816, 176, 688, 432,
        944, 112, 624, 368, 880, 240, 752, 496, 1008, 64, 520, 264, 776, 136, 648, 392, 904, 72,
        584, 328, 840, 200, 712, 456, 968, 80, 552, 296, 808, 168, 680, 424, 936, 104, 616, 360,
        872, 232, 744, 488, 1000, 96, 536, 280, 792, 152, 664, 408, 920, 104, 600, 344, 856, 216,
        728, 472, 984, 112, 568, 312, 824, 184, 696, 440, 952, 120, 632, 376, 888, 248, 760, 504,
        1016, 128, 516, 260, 772, 132, 644, 388, 900, 136, 580, 324, 836, 196, 708, 452, 964, 144,
        548, 292, 804, 164, 676, 420, 932, 152, 612, 356, 868, 228, 740, 484, 996, 160, 532, 276,
        788, 164, 660, 404, 916, 168, 596, 340, 852, 212, 724, 468, 980, 176, 564, 308, 820, 180,
        692, 436, 948, 184, 628, 372, 884, 244, 756, 500, 1012, 192, 524, 268, 780, 196, 652, 396,
        908, 200, 588, 332, 844, 204, 716, 460, 972, 208, 556, 300, 812, 212, 684, 428, 940, 216,
        620, 364, 876, 236, 748, 492, 1004, 224, 540, 284, 796, 228, 668, 412, 924, 232, 604, 348,
        860, 236, 732, 476, 988, 240, 572, 316, 828, 244, 700, 444, 956, 248, 636, 380, 892, 252,
        764, 508, 1020, 256, 514, 258, 770, 260, 642, 386, 898, 264, 578, 322, 834, 268, 706, 450,
        962, 272, 546, 290, 802, 276, 674, 418, 930, 280, 610, 354, 866, 284, 738, 482, 994, 288,
        530, 290, 786, 292, 658, 402, 914, 296, 594, 338, 850, 300, 722, 466, 978, 304, 562, 306,
        818, 308, 690, 434, 946, 312, 626, 370, 882, 316, 754, 498, 1010, 320, 522, 322, 778, 324,
        650, 394, 906, 328, 586, 330, 842, 332, 714, 458, 970, 336, 554, 338, 810, 340, 682, 426,
        938, 344, 618, 362, 874, 348, 746, 490, 1002, 352, 538, 354, 794, 356, 666, 410, 922, 360,
        602, 362, 858, 364, 730, 474, 986, 368, 570, 370, 826, 372, 698, 442, 954, 376, 634, 378,
        890, 380, 762, 506, 1018, 384, 518, 386, 774, 388, 646, 390, 902, 392, 582, 394, 838, 396,
        710, 454, 966, 400, 550, 402, 806, 404, 678, 422, 934, 408, 614, 410, 870, 412, 742, 486,
        998, 416, 534, 418, 790, 420, 662, 422, 918, 424, 598, 426, 854, 428, 726, 470, 982, 432,
        566, 434, 822, 436, 694, 438, 950, 440, 630, 442, 886, 444, 758, 502, 1014, 448, 526, 450,
        782, 452, 654, 454, 910, 456, 590, 458, 846, 460, 718, 462, 974, 464, 558, 466, 814, 468,
        686, 470, 942, 472, 622, 474, 878, 476, 750, 494, 1006, 480, 542, 482, 798, 484, 670, 486,
        926, 488, 606, 490, 862, 492, 734, 494, 990, 496, 574, 498, 830, 500, 702, 502, 958, 504,
        638, 506, 894, 508, 766, 510, 1022, 512, 513, 514, 769, 516, 641, 518, 897, 520, 577, 522,
        833, 524, 705, 526, 961, 528, 545, 530, 801, 532, 673, 534, 929, 536, 609, 538, 865, 540,
        737, 542, 993, 544, 545, 546, 785, 548, 657, 550, 913, 552, 593, 554, 849, 556, 721, 558,
        977, 560, 561, 562, 817, 564, 689, 566, 945, 568, 625, 570, 881, 572, 753, 574, 1009, 576,
        577, 578, 777, 580, 649, 582, 905, 584, 585, 586, 841, 588, 713, 590, 969, 592, 593, 594,
        809, 596, 681, 598, 937, 600, 617, 602, 873, 604, 745, 606, 1001, 608, 609, 610, 793, 612,
        665, 614, 921, 616, 617, 618, 857, 620, 729, 622, 985, 624, 625, 626, 825, 628, 697, 630,
        953, 632, 633, 634, 889, 636, 761, 638, 1017, 640, 641, 642, 773, 644, 645, 646, 901, 648,
        649, 650, 837, 652, 709, 654, 965, 656, 657, 658, 805, 660, 677, 662, 933, 664, 665, 666,
        869, 668, 741, 670, 997, 672, 673, 674, 789, 676, 677, 678, 917, 680, 681, 682, 853, 684,
        725, 686, 981, 688, 689, 690, 821, 692, 693, 694, 949, 696, 697, 698, 885, 700, 757, 702,
        1013, 704, 705, 706, 781, 708, 709, 710, 909, 712, 713, 714, 845, 716, 717, 718, 973, 720,
        721, 722, 813, 724, 725, 726, 941, 728, 729, 730, 877, 732, 749, 734, 1005, 736, 737, 738,
        797, 740, 741, 742, 925, 744, 745, 746, 861, 748, 749, 750, 989, 752, 753, 754, 829, 756,
        757, 758, 957, 760, 761, 762, 893, 764, 765, 766, 1021, 768, 769, 770, 771, 772, 773, 774,
        899, 776, 777, 778, 835, 780, 781, 782, 963, 784, 785, 786, 803, 788, 789, 790, 931, 792,
        793, 794, 867, 796, 797, 798, 995, 800, 801, 802, 803, 804, 805, 806, 915, 808, 809, 810,
        851, 812, 813, 814, 979, 816, 817, 818, 819, 820, 821, 822, 947, 824, 825, 826, 883, 828,
        829, 830, 1011, 832, 833, 834, 835, 836, 837, 838, 907, 840, 841, 842, 843, 844, 845, 846,
        971, 848, 849, 850, 851, 852, 853, 854, 939, 856, 857, 858, 875, 860, 861, 862, 1003, 864,
        865, 866, 867, 868, 869, 870, 923, 872, 873, 874, 875, 876, 877, 878, 987, 880, 881, 882,
        883, 884, 885, 886, 955, 888, 889, 890, 891, 892, 893, 894, 1019, 896, 897, 898, 899, 900,
        901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 967, 912, 913, 914, 915, 916, 917, 918,
        935, 920, 921, 922, 923, 924, 925, 926, 999, 928, 929, 930, 931, 932, 933, 934, 935, 936,
        937, 938, 939, 940, 941, 942, 983, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954,
        955, 956, 957, 958, 1015, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972,
        973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990,
        1007, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006,
        1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
        1022, 1023,
    ],
];