/
fft_butterfly.h
2139 lines (2113 loc) · 124 KB
/
fft_butterfly.h
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
#ifndef FFT_BUTTERFLY_H
#define FFT_BUTTERFLY_H
#include "fft.h"
#include <system.h>
#define BF(x, y, a, b) { \
x = ALT_CI_BUTTERFLY_1(a, b); \
y = ALT_CI_BUTTERFLY_2(a, b); \
}
#define CMUL(dre, dim, are, aim, bre, bim) { \
dre = ALT_CI_SUB_ASR_15(are * bre, aim * bim); \
dim = ALT_CI_ADD_ASR_15(are * bim, aim * bre); \
}
#define BUTTERFLIES(a0,a1,a2,a3) {\
BF(t3, t5, t5, t1);\
BF(a2.re, a0.re, a0.re, t5);\
BF(a3.im, a1.im, a1.im, t3);\
BF(t4, t6, t2, t6);\
BF(a3.re, a1.re, a1.re, t4);\
BF(a2.im, a0.im, a0.im, t6);\
}
#define TRANSFORM(a0,a1,a2,a3,wre,wim) {\
CMUL(t1, t2, a2.re, a2.im, wre, -wim);\
CMUL(t5, t6, a3.re, a3.im, wre, wim);\
BUTTERFLIES(a0,a1,a2,a3)\
}
#define TRANSFORM_ZERO(a0,a1,a2,a3) {\
t1 = a2.re;\
t2 = a2.im;\
t5 = a3.re;\
t6 = a3.im;\
BUTTERFLIES(a0,a1,a2,a3)\
}
static inline void bf_pass_16(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[4], z[8], z[12])
TRANSFORM(z[1], z[5], z[9], z[13], 30273, 12539)
TRANSFORM(z[2], z[6], z[10], z[14], 23170, 23170)
TRANSFORM(z[3], z[7], z[11], z[15], 12539, 30273)
}
static inline void bf_pass_32(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[8], z[16], z[24])
TRANSFORM(z[1], z[9], z[17], z[25], 32138, 6392)
TRANSFORM(z[2], z[10], z[18], z[26], 30273, 12539)
TRANSFORM(z[3], z[11], z[19], z[27], 27245, 18204)
TRANSFORM(z[4], z[12], z[20], z[28], 23170, 23170)
TRANSFORM(z[5], z[13], z[21], z[29], 18204, 27245)
TRANSFORM(z[6], z[14], z[22], z[30], 12539, 30273)
TRANSFORM(z[7], z[15], z[23], z[31], 6392, 32138)
}
static inline void bf_pass_64(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[16], z[32], z[48])
TRANSFORM(z[1], z[17], z[33], z[49], 32610, 3211)
TRANSFORM(z[2], z[18], z[34], z[50], 32138, 6392)
TRANSFORM(z[3], z[19], z[35], z[51], 31357, 9512)
TRANSFORM(z[4], z[20], z[36], z[52], 30273, 12539)
TRANSFORM(z[5], z[21], z[37], z[53], 28898, 15446)
TRANSFORM(z[6], z[22], z[38], z[54], 27245, 18204)
TRANSFORM(z[7], z[23], z[39], z[55], 25330, 20787)
TRANSFORM(z[8], z[24], z[40], z[56], 23170, 23170)
TRANSFORM(z[9], z[25], z[41], z[57], 20787, 25330)
TRANSFORM(z[10], z[26], z[42], z[58], 18204, 27245)
TRANSFORM(z[11], z[27], z[43], z[59], 15446, 28898)
TRANSFORM(z[12], z[28], z[44], z[60], 12539, 30273)
TRANSFORM(z[13], z[29], z[45], z[61], 9512, 31357)
TRANSFORM(z[14], z[30], z[46], z[62], 6392, 32138)
TRANSFORM(z[15], z[31], z[47], z[63], 3211, 32610)
}
static inline void bf_pass_128(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[32], z[64], z[96])
TRANSFORM(z[1], z[33], z[65], z[97], 32728, 1607)
TRANSFORM(z[2], z[34], z[66], z[98], 32610, 3211)
TRANSFORM(z[3], z[35], z[67], z[99], 32413, 4808)
TRANSFORM(z[4], z[36], z[68], z[100], 32138, 6392)
TRANSFORM(z[5], z[37], z[69], z[101], 31785, 7961)
TRANSFORM(z[6], z[38], z[70], z[102], 31357, 9512)
TRANSFORM(z[7], z[39], z[71], z[103], 30852, 11039)
TRANSFORM(z[8], z[40], z[72], z[104], 30273, 12539)
TRANSFORM(z[9], z[41], z[73], z[105], 29621, 14010)
TRANSFORM(z[10], z[42], z[74], z[106], 28898, 15446)
TRANSFORM(z[11], z[43], z[75], z[107], 28106, 16846)
TRANSFORM(z[12], z[44], z[76], z[108], 27245, 18204)
TRANSFORM(z[13], z[45], z[77], z[109], 26319, 19519)
TRANSFORM(z[14], z[46], z[78], z[110], 25330, 20787)
TRANSFORM(z[15], z[47], z[79], z[111], 24279, 22005)
TRANSFORM(z[16], z[48], z[80], z[112], 23170, 23170)
TRANSFORM(z[17], z[49], z[81], z[113], 22005, 24279)
TRANSFORM(z[18], z[50], z[82], z[114], 20787, 25330)
TRANSFORM(z[19], z[51], z[83], z[115], 19519, 26319)
TRANSFORM(z[20], z[52], z[84], z[116], 18204, 27245)
TRANSFORM(z[21], z[53], z[85], z[117], 16846, 28106)
TRANSFORM(z[22], z[54], z[86], z[118], 15446, 28898)
TRANSFORM(z[23], z[55], z[87], z[119], 14010, 29621)
TRANSFORM(z[24], z[56], z[88], z[120], 12539, 30273)
TRANSFORM(z[25], z[57], z[89], z[121], 11039, 30852)
TRANSFORM(z[26], z[58], z[90], z[122], 9512, 31357)
TRANSFORM(z[27], z[59], z[91], z[123], 7961, 31785)
TRANSFORM(z[28], z[60], z[92], z[124], 6392, 32138)
TRANSFORM(z[29], z[61], z[93], z[125], 4808, 32413)
TRANSFORM(z[30], z[62], z[94], z[126], 3211, 32610)
TRANSFORM(z[31], z[63], z[95], z[127], 1607, 32728)
}
static inline void bf_pass_256(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[64], z[128], z[192])
TRANSFORM(z[1], z[65], z[129], z[193], 32758, 804)
TRANSFORM(z[2], z[66], z[130], z[194], 32728, 1607)
TRANSFORM(z[3], z[67], z[131], z[195], 32679, 2410)
TRANSFORM(z[4], z[68], z[132], z[196], 32610, 3211)
TRANSFORM(z[5], z[69], z[133], z[197], 32521, 4011)
TRANSFORM(z[6], z[70], z[134], z[198], 32413, 4808)
TRANSFORM(z[7], z[71], z[135], z[199], 32285, 5602)
TRANSFORM(z[8], z[72], z[136], z[200], 32138, 6392)
TRANSFORM(z[9], z[73], z[137], z[201], 31971, 7179)
TRANSFORM(z[10], z[74], z[138], z[202], 31785, 7961)
TRANSFORM(z[11], z[75], z[139], z[203], 31581, 8739)
TRANSFORM(z[12], z[76], z[140], z[204], 31357, 9512)
TRANSFORM(z[13], z[77], z[141], z[205], 31114, 10278)
TRANSFORM(z[14], z[78], z[142], z[206], 30852, 11039)
TRANSFORM(z[15], z[79], z[143], z[207], 30572, 11793)
TRANSFORM(z[16], z[80], z[144], z[208], 30273, 12539)
TRANSFORM(z[17], z[81], z[145], z[209], 29956, 13278)
TRANSFORM(z[18], z[82], z[146], z[210], 29621, 14010)
TRANSFORM(z[19], z[83], z[147], z[211], 29269, 14732)
TRANSFORM(z[20], z[84], z[148], z[212], 28898, 15446)
TRANSFORM(z[21], z[85], z[149], z[213], 28511, 16151)
TRANSFORM(z[22], z[86], z[150], z[214], 28106, 16846)
TRANSFORM(z[23], z[87], z[151], z[215], 27684, 17530)
TRANSFORM(z[24], z[88], z[152], z[216], 27245, 18204)
TRANSFORM(z[25], z[89], z[153], z[217], 26790, 18868)
TRANSFORM(z[26], z[90], z[154], z[218], 26319, 19519)
TRANSFORM(z[27], z[91], z[155], z[219], 25832, 20159)
TRANSFORM(z[28], z[92], z[156], z[220], 25330, 20787)
TRANSFORM(z[29], z[93], z[157], z[221], 24812, 21403)
TRANSFORM(z[30], z[94], z[158], z[222], 24279, 22005)
TRANSFORM(z[31], z[95], z[159], z[223], 23732, 22594)
TRANSFORM(z[32], z[96], z[160], z[224], 23170, 23170)
TRANSFORM(z[33], z[97], z[161], z[225], 22594, 23732)
TRANSFORM(z[34], z[98], z[162], z[226], 22005, 24279)
TRANSFORM(z[35], z[99], z[163], z[227], 21403, 24812)
TRANSFORM(z[36], z[100], z[164], z[228], 20787, 25330)
TRANSFORM(z[37], z[101], z[165], z[229], 20159, 25832)
TRANSFORM(z[38], z[102], z[166], z[230], 19519, 26319)
TRANSFORM(z[39], z[103], z[167], z[231], 18868, 26790)
TRANSFORM(z[40], z[104], z[168], z[232], 18204, 27245)
TRANSFORM(z[41], z[105], z[169], z[233], 17530, 27684)
TRANSFORM(z[42], z[106], z[170], z[234], 16846, 28106)
TRANSFORM(z[43], z[107], z[171], z[235], 16151, 28511)
TRANSFORM(z[44], z[108], z[172], z[236], 15446, 28898)
TRANSFORM(z[45], z[109], z[173], z[237], 14732, 29269)
TRANSFORM(z[46], z[110], z[174], z[238], 14010, 29621)
TRANSFORM(z[47], z[111], z[175], z[239], 13278, 29956)
TRANSFORM(z[48], z[112], z[176], z[240], 12539, 30273)
TRANSFORM(z[49], z[113], z[177], z[241], 11793, 30572)
TRANSFORM(z[50], z[114], z[178], z[242], 11039, 30852)
TRANSFORM(z[51], z[115], z[179], z[243], 10278, 31114)
TRANSFORM(z[52], z[116], z[180], z[244], 9512, 31357)
TRANSFORM(z[53], z[117], z[181], z[245], 8739, 31581)
TRANSFORM(z[54], z[118], z[182], z[246], 7961, 31785)
TRANSFORM(z[55], z[119], z[183], z[247], 7179, 31971)
TRANSFORM(z[56], z[120], z[184], z[248], 6392, 32138)
TRANSFORM(z[57], z[121], z[185], z[249], 5602, 32285)
TRANSFORM(z[58], z[122], z[186], z[250], 4808, 32413)
TRANSFORM(z[59], z[123], z[187], z[251], 4011, 32521)
TRANSFORM(z[60], z[124], z[188], z[252], 3211, 32610)
TRANSFORM(z[61], z[125], z[189], z[253], 2410, 32679)
TRANSFORM(z[62], z[126], z[190], z[254], 1607, 32728)
TRANSFORM(z[63], z[127], z[191], z[255], 804, 32758)
}
static inline void bf_pass_512(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[128], z[256], z[384])
TRANSFORM(z[1], z[129], z[257], z[385], 32765, 402)
TRANSFORM(z[2], z[130], z[258], z[386], 32758, 804)
TRANSFORM(z[3], z[131], z[259], z[387], 32745, 1206)
TRANSFORM(z[4], z[132], z[260], z[388], 32728, 1607)
TRANSFORM(z[5], z[133], z[261], z[389], 32706, 2009)
TRANSFORM(z[6], z[134], z[262], z[390], 32679, 2410)
TRANSFORM(z[7], z[135], z[263], z[391], 32647, 2811)
TRANSFORM(z[8], z[136], z[264], z[392], 32610, 3211)
TRANSFORM(z[9], z[137], z[265], z[393], 32568, 3611)
TRANSFORM(z[10], z[138], z[266], z[394], 32521, 4011)
TRANSFORM(z[11], z[139], z[267], z[395], 32469, 4409)
TRANSFORM(z[12], z[140], z[268], z[396], 32413, 4808)
TRANSFORM(z[13], z[141], z[269], z[397], 32351, 5205)
TRANSFORM(z[14], z[142], z[270], z[398], 32285, 5602)
TRANSFORM(z[15], z[143], z[271], z[399], 32214, 5997)
TRANSFORM(z[16], z[144], z[272], z[400], 32138, 6392)
TRANSFORM(z[17], z[145], z[273], z[401], 32057, 6786)
TRANSFORM(z[18], z[146], z[274], z[402], 31971, 7179)
TRANSFORM(z[19], z[147], z[275], z[403], 31881, 7571)
TRANSFORM(z[20], z[148], z[276], z[404], 31785, 7961)
TRANSFORM(z[21], z[149], z[277], z[405], 31685, 8351)
TRANSFORM(z[22], z[150], z[278], z[406], 31581, 8739)
TRANSFORM(z[23], z[151], z[279], z[407], 31471, 9126)
TRANSFORM(z[24], z[152], z[280], z[408], 31357, 9512)
TRANSFORM(z[25], z[153], z[281], z[409], 31237, 9896)
TRANSFORM(z[26], z[154], z[282], z[410], 31114, 10278)
TRANSFORM(z[27], z[155], z[283], z[411], 30985, 10659)
TRANSFORM(z[28], z[156], z[284], z[412], 30852, 11039)
TRANSFORM(z[29], z[157], z[285], z[413], 30714, 11416)
TRANSFORM(z[30], z[158], z[286], z[414], 30572, 11793)
TRANSFORM(z[31], z[159], z[287], z[415], 30425, 12167)
TRANSFORM(z[32], z[160], z[288], z[416], 30273, 12539)
TRANSFORM(z[33], z[161], z[289], z[417], 30117, 12910)
TRANSFORM(z[34], z[162], z[290], z[418], 29956, 13278)
TRANSFORM(z[35], z[163], z[291], z[419], 29791, 13645)
TRANSFORM(z[36], z[164], z[292], z[420], 29621, 14010)
TRANSFORM(z[37], z[165], z[293], z[421], 29447, 14372)
TRANSFORM(z[38], z[166], z[294], z[422], 29269, 14732)
TRANSFORM(z[39], z[167], z[295], z[423], 29086, 15090)
TRANSFORM(z[40], z[168], z[296], z[424], 28898, 15446)
TRANSFORM(z[41], z[169], z[297], z[425], 28707, 15800)
TRANSFORM(z[42], z[170], z[298], z[426], 28511, 16151)
TRANSFORM(z[43], z[171], z[299], z[427], 28310, 16499)
TRANSFORM(z[44], z[172], z[300], z[428], 28106, 16846)
TRANSFORM(z[45], z[173], z[301], z[429], 27897, 17189)
TRANSFORM(z[46], z[174], z[302], z[430], 27684, 17530)
TRANSFORM(z[47], z[175], z[303], z[431], 27466, 17869)
TRANSFORM(z[48], z[176], z[304], z[432], 27245, 18204)
TRANSFORM(z[49], z[177], z[305], z[433], 27020, 18537)
TRANSFORM(z[50], z[178], z[306], z[434], 26790, 18868)
TRANSFORM(z[51], z[179], z[307], z[435], 26557, 19195)
TRANSFORM(z[52], z[180], z[308], z[436], 26319, 19519)
TRANSFORM(z[53], z[181], z[309], z[437], 26077, 19841)
TRANSFORM(z[54], z[182], z[310], z[438], 25832, 20159)
TRANSFORM(z[55], z[183], z[311], z[439], 25583, 20475)
TRANSFORM(z[56], z[184], z[312], z[440], 25330, 20787)
TRANSFORM(z[57], z[185], z[313], z[441], 25073, 21097)
TRANSFORM(z[58], z[186], z[314], z[442], 24812, 21403)
TRANSFORM(z[59], z[187], z[315], z[443], 24547, 21706)
TRANSFORM(z[60], z[188], z[316], z[444], 24279, 22005)
TRANSFORM(z[61], z[189], z[317], z[445], 24007, 22301)
TRANSFORM(z[62], z[190], z[318], z[446], 23732, 22594)
TRANSFORM(z[63], z[191], z[319], z[447], 23453, 22884)
TRANSFORM(z[64], z[192], z[320], z[448], 23170, 23170)
TRANSFORM(z[65], z[193], z[321], z[449], 22884, 23453)
TRANSFORM(z[66], z[194], z[322], z[450], 22594, 23732)
TRANSFORM(z[67], z[195], z[323], z[451], 22301, 24007)
TRANSFORM(z[68], z[196], z[324], z[452], 22005, 24279)
TRANSFORM(z[69], z[197], z[325], z[453], 21706, 24547)
TRANSFORM(z[70], z[198], z[326], z[454], 21403, 24812)
TRANSFORM(z[71], z[199], z[327], z[455], 21097, 25073)
TRANSFORM(z[72], z[200], z[328], z[456], 20787, 25330)
TRANSFORM(z[73], z[201], z[329], z[457], 20475, 25583)
TRANSFORM(z[74], z[202], z[330], z[458], 20159, 25832)
TRANSFORM(z[75], z[203], z[331], z[459], 19841, 26077)
TRANSFORM(z[76], z[204], z[332], z[460], 19519, 26319)
TRANSFORM(z[77], z[205], z[333], z[461], 19195, 26557)
TRANSFORM(z[78], z[206], z[334], z[462], 18868, 26790)
TRANSFORM(z[79], z[207], z[335], z[463], 18537, 27020)
TRANSFORM(z[80], z[208], z[336], z[464], 18204, 27245)
TRANSFORM(z[81], z[209], z[337], z[465], 17869, 27466)
TRANSFORM(z[82], z[210], z[338], z[466], 17530, 27684)
TRANSFORM(z[83], z[211], z[339], z[467], 17189, 27897)
TRANSFORM(z[84], z[212], z[340], z[468], 16846, 28106)
TRANSFORM(z[85], z[213], z[341], z[469], 16499, 28310)
TRANSFORM(z[86], z[214], z[342], z[470], 16151, 28511)
TRANSFORM(z[87], z[215], z[343], z[471], 15800, 28707)
TRANSFORM(z[88], z[216], z[344], z[472], 15446, 28898)
TRANSFORM(z[89], z[217], z[345], z[473], 15090, 29086)
TRANSFORM(z[90], z[218], z[346], z[474], 14732, 29269)
TRANSFORM(z[91], z[219], z[347], z[475], 14372, 29447)
TRANSFORM(z[92], z[220], z[348], z[476], 14010, 29621)
TRANSFORM(z[93], z[221], z[349], z[477], 13645, 29791)
TRANSFORM(z[94], z[222], z[350], z[478], 13278, 29956)
TRANSFORM(z[95], z[223], z[351], z[479], 12910, 30117)
TRANSFORM(z[96], z[224], z[352], z[480], 12539, 30273)
TRANSFORM(z[97], z[225], z[353], z[481], 12167, 30425)
TRANSFORM(z[98], z[226], z[354], z[482], 11793, 30572)
TRANSFORM(z[99], z[227], z[355], z[483], 11416, 30714)
TRANSFORM(z[100], z[228], z[356], z[484], 11039, 30852)
TRANSFORM(z[101], z[229], z[357], z[485], 10659, 30985)
TRANSFORM(z[102], z[230], z[358], z[486], 10278, 31114)
TRANSFORM(z[103], z[231], z[359], z[487], 9896, 31237)
TRANSFORM(z[104], z[232], z[360], z[488], 9512, 31357)
TRANSFORM(z[105], z[233], z[361], z[489], 9126, 31471)
TRANSFORM(z[106], z[234], z[362], z[490], 8739, 31581)
TRANSFORM(z[107], z[235], z[363], z[491], 8351, 31685)
TRANSFORM(z[108], z[236], z[364], z[492], 7961, 31785)
TRANSFORM(z[109], z[237], z[365], z[493], 7571, 31881)
TRANSFORM(z[110], z[238], z[366], z[494], 7179, 31971)
TRANSFORM(z[111], z[239], z[367], z[495], 6786, 32057)
TRANSFORM(z[112], z[240], z[368], z[496], 6392, 32138)
TRANSFORM(z[113], z[241], z[369], z[497], 5997, 32214)
TRANSFORM(z[114], z[242], z[370], z[498], 5602, 32285)
TRANSFORM(z[115], z[243], z[371], z[499], 5205, 32351)
TRANSFORM(z[116], z[244], z[372], z[500], 4808, 32413)
TRANSFORM(z[117], z[245], z[373], z[501], 4409, 32469)
TRANSFORM(z[118], z[246], z[374], z[502], 4011, 32521)
TRANSFORM(z[119], z[247], z[375], z[503], 3611, 32568)
TRANSFORM(z[120], z[248], z[376], z[504], 3211, 32610)
TRANSFORM(z[121], z[249], z[377], z[505], 2811, 32647)
TRANSFORM(z[122], z[250], z[378], z[506], 2410, 32679)
TRANSFORM(z[123], z[251], z[379], z[507], 2009, 32706)
TRANSFORM(z[124], z[252], z[380], z[508], 1607, 32728)
TRANSFORM(z[125], z[253], z[381], z[509], 1206, 32745)
TRANSFORM(z[126], z[254], z[382], z[510], 804, 32758)
TRANSFORM(z[127], z[255], z[383], z[511], 402, 32765)
}
static inline void bf_pass_1024(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[256], z[512], z[768])
TRANSFORM(z[1], z[257], z[513], z[769], 32767, 201)
TRANSFORM(z[2], z[258], z[514], z[770], 32765, 402)
TRANSFORM(z[3], z[259], z[515], z[771], 32762, 603)
TRANSFORM(z[4], z[260], z[516], z[772], 32758, 804)
TRANSFORM(z[5], z[261], z[517], z[773], 32752, 1005)
TRANSFORM(z[6], z[262], z[518], z[774], 32745, 1206)
TRANSFORM(z[7], z[263], z[519], z[775], 32737, 1407)
TRANSFORM(z[8], z[264], z[520], z[776], 32728, 1607)
TRANSFORM(z[9], z[265], z[521], z[777], 32718, 1808)
TRANSFORM(z[10], z[266], z[522], z[778], 32706, 2009)
TRANSFORM(z[11], z[267], z[523], z[779], 32693, 2210)
TRANSFORM(z[12], z[268], z[524], z[780], 32679, 2410)
TRANSFORM(z[13], z[269], z[525], z[781], 32663, 2611)
TRANSFORM(z[14], z[270], z[526], z[782], 32647, 2811)
TRANSFORM(z[15], z[271], z[527], z[783], 32629, 3011)
TRANSFORM(z[16], z[272], z[528], z[784], 32610, 3211)
TRANSFORM(z[17], z[273], z[529], z[785], 32589, 3411)
TRANSFORM(z[18], z[274], z[530], z[786], 32568, 3611)
TRANSFORM(z[19], z[275], z[531], z[787], 32545, 3811)
TRANSFORM(z[20], z[276], z[532], z[788], 32521, 4011)
TRANSFORM(z[21], z[277], z[533], z[789], 32496, 4210)
TRANSFORM(z[22], z[278], z[534], z[790], 32469, 4409)
TRANSFORM(z[23], z[279], z[535], z[791], 32442, 4609)
TRANSFORM(z[24], z[280], z[536], z[792], 32413, 4808)
TRANSFORM(z[25], z[281], z[537], z[793], 32383, 5006)
TRANSFORM(z[26], z[282], z[538], z[794], 32351, 5205)
TRANSFORM(z[27], z[283], z[539], z[795], 32319, 5403)
TRANSFORM(z[28], z[284], z[540], z[796], 32285, 5602)
TRANSFORM(z[29], z[285], z[541], z[797], 32250, 5800)
TRANSFORM(z[30], z[286], z[542], z[798], 32214, 5997)
TRANSFORM(z[31], z[287], z[543], z[799], 32176, 6195)
TRANSFORM(z[32], z[288], z[544], z[800], 32138, 6392)
TRANSFORM(z[33], z[289], z[545], z[801], 32098, 6589)
TRANSFORM(z[34], z[290], z[546], z[802], 32057, 6786)
TRANSFORM(z[35], z[291], z[547], z[803], 32015, 6983)
TRANSFORM(z[36], z[292], z[548], z[804], 31971, 7179)
TRANSFORM(z[37], z[293], z[549], z[805], 31927, 7375)
TRANSFORM(z[38], z[294], z[550], z[806], 31881, 7571)
TRANSFORM(z[39], z[295], z[551], z[807], 31834, 7766)
TRANSFORM(z[40], z[296], z[552], z[808], 31785, 7961)
TRANSFORM(z[41], z[297], z[553], z[809], 31736, 8156)
TRANSFORM(z[42], z[298], z[554], z[810], 31685, 8351)
TRANSFORM(z[43], z[299], z[555], z[811], 31634, 8545)
TRANSFORM(z[44], z[300], z[556], z[812], 31581, 8739)
TRANSFORM(z[45], z[301], z[557], z[813], 31526, 8933)
TRANSFORM(z[46], z[302], z[558], z[814], 31471, 9126)
TRANSFORM(z[47], z[303], z[559], z[815], 31414, 9319)
TRANSFORM(z[48], z[304], z[560], z[816], 31357, 9512)
TRANSFORM(z[49], z[305], z[561], z[817], 31298, 9704)
TRANSFORM(z[50], z[306], z[562], z[818], 31237, 9896)
TRANSFORM(z[51], z[307], z[563], z[819], 31176, 10087)
TRANSFORM(z[52], z[308], z[564], z[820], 31114, 10278)
TRANSFORM(z[53], z[309], z[565], z[821], 31050, 10469)
TRANSFORM(z[54], z[310], z[566], z[822], 30985, 10659)
TRANSFORM(z[55], z[311], z[567], z[823], 30919, 10849)
TRANSFORM(z[56], z[312], z[568], z[824], 30852, 11039)
TRANSFORM(z[57], z[313], z[569], z[825], 30784, 11228)
TRANSFORM(z[58], z[314], z[570], z[826], 30714, 11416)
TRANSFORM(z[59], z[315], z[571], z[827], 30644, 11605)
TRANSFORM(z[60], z[316], z[572], z[828], 30572, 11793)
TRANSFORM(z[61], z[317], z[573], z[829], 30499, 11980)
TRANSFORM(z[62], z[318], z[574], z[830], 30425, 12167)
TRANSFORM(z[63], z[319], z[575], z[831], 30350, 12353)
TRANSFORM(z[64], z[320], z[576], z[832], 30273, 12539)
TRANSFORM(z[65], z[321], z[577], z[833], 30196, 12725)
TRANSFORM(z[66], z[322], z[578], z[834], 30117, 12910)
TRANSFORM(z[67], z[323], z[579], z[835], 30037, 13094)
TRANSFORM(z[68], z[324], z[580], z[836], 29956, 13278)
TRANSFORM(z[69], z[325], z[581], z[837], 29874, 13462)
TRANSFORM(z[70], z[326], z[582], z[838], 29791, 13645)
TRANSFORM(z[71], z[327], z[583], z[839], 29707, 13828)
TRANSFORM(z[72], z[328], z[584], z[840], 29621, 14010)
TRANSFORM(z[73], z[329], z[585], z[841], 29535, 14191)
TRANSFORM(z[74], z[330], z[586], z[842], 29447, 14372)
TRANSFORM(z[75], z[331], z[587], z[843], 29359, 14552)
TRANSFORM(z[76], z[332], z[588], z[844], 29269, 14732)
TRANSFORM(z[77], z[333], z[589], z[845], 29178, 14912)
TRANSFORM(z[78], z[334], z[590], z[846], 29086, 15090)
TRANSFORM(z[79], z[335], z[591], z[847], 28993, 15269)
TRANSFORM(z[80], z[336], z[592], z[848], 28898, 15446)
TRANSFORM(z[81], z[337], z[593], z[849], 28803, 15623)
TRANSFORM(z[82], z[338], z[594], z[850], 28707, 15800)
TRANSFORM(z[83], z[339], z[595], z[851], 28609, 15976)
TRANSFORM(z[84], z[340], z[596], z[852], 28511, 16151)
TRANSFORM(z[85], z[341], z[597], z[853], 28411, 16325)
TRANSFORM(z[86], z[342], z[598], z[854], 28310, 16499)
TRANSFORM(z[87], z[343], z[599], z[855], 28208, 16673)
TRANSFORM(z[88], z[344], z[600], z[856], 28106, 16846)
TRANSFORM(z[89], z[345], z[601], z[857], 28002, 17018)
TRANSFORM(z[90], z[346], z[602], z[858], 27897, 17189)
TRANSFORM(z[91], z[347], z[603], z[859], 27791, 17360)
TRANSFORM(z[92], z[348], z[604], z[860], 27684, 17530)
TRANSFORM(z[93], z[349], z[605], z[861], 27576, 17700)
TRANSFORM(z[94], z[350], z[606], z[862], 27466, 17869)
TRANSFORM(z[95], z[351], z[607], z[863], 27356, 18037)
TRANSFORM(z[96], z[352], z[608], z[864], 27245, 18204)
TRANSFORM(z[97], z[353], z[609], z[865], 27133, 18371)
TRANSFORM(z[98], z[354], z[610], z[866], 27020, 18537)
TRANSFORM(z[99], z[355], z[611], z[867], 26905, 18703)
TRANSFORM(z[100], z[356], z[612], z[868], 26790, 18868)
TRANSFORM(z[101], z[357], z[613], z[869], 26674, 19032)
TRANSFORM(z[102], z[358], z[614], z[870], 26557, 19195)
TRANSFORM(z[103], z[359], z[615], z[871], 26438, 19358)
TRANSFORM(z[104], z[360], z[616], z[872], 26319, 19519)
TRANSFORM(z[105], z[361], z[617], z[873], 26199, 19681)
TRANSFORM(z[106], z[362], z[618], z[874], 26077, 19841)
TRANSFORM(z[107], z[363], z[619], z[875], 25955, 20001)
TRANSFORM(z[108], z[364], z[620], z[876], 25832, 20159)
TRANSFORM(z[109], z[365], z[621], z[877], 25708, 20318)
TRANSFORM(z[110], z[366], z[622], z[878], 25583, 20475)
TRANSFORM(z[111], z[367], z[623], z[879], 25457, 20631)
TRANSFORM(z[112], z[368], z[624], z[880], 25330, 20787)
TRANSFORM(z[113], z[369], z[625], z[881], 25201, 20942)
TRANSFORM(z[114], z[370], z[626], z[882], 25073, 21097)
TRANSFORM(z[115], z[371], z[627], z[883], 24943, 21250)
TRANSFORM(z[116], z[372], z[628], z[884], 24812, 21403)
TRANSFORM(z[117], z[373], z[629], z[885], 24680, 21555)
TRANSFORM(z[118], z[374], z[630], z[886], 24547, 21706)
TRANSFORM(z[119], z[375], z[631], z[887], 24414, 21856)
TRANSFORM(z[120], z[376], z[632], z[888], 24279, 22005)
TRANSFORM(z[121], z[377], z[633], z[889], 24144, 22154)
TRANSFORM(z[122], z[378], z[634], z[890], 24007, 22301)
TRANSFORM(z[123], z[379], z[635], z[891], 23870, 22448)
TRANSFORM(z[124], z[380], z[636], z[892], 23732, 22594)
TRANSFORM(z[125], z[381], z[637], z[893], 23593, 22740)
TRANSFORM(z[126], z[382], z[638], z[894], 23453, 22884)
TRANSFORM(z[127], z[383], z[639], z[895], 23312, 23027)
TRANSFORM(z[128], z[384], z[640], z[896], 23170, 23170)
TRANSFORM(z[129], z[385], z[641], z[897], 23027, 23312)
TRANSFORM(z[130], z[386], z[642], z[898], 22884, 23453)
TRANSFORM(z[131], z[387], z[643], z[899], 22740, 23593)
TRANSFORM(z[132], z[388], z[644], z[900], 22594, 23732)
TRANSFORM(z[133], z[389], z[645], z[901], 22448, 23870)
TRANSFORM(z[134], z[390], z[646], z[902], 22301, 24007)
TRANSFORM(z[135], z[391], z[647], z[903], 22154, 24144)
TRANSFORM(z[136], z[392], z[648], z[904], 22005, 24279)
TRANSFORM(z[137], z[393], z[649], z[905], 21856, 24414)
TRANSFORM(z[138], z[394], z[650], z[906], 21706, 24547)
TRANSFORM(z[139], z[395], z[651], z[907], 21555, 24680)
TRANSFORM(z[140], z[396], z[652], z[908], 21403, 24812)
TRANSFORM(z[141], z[397], z[653], z[909], 21250, 24943)
TRANSFORM(z[142], z[398], z[654], z[910], 21097, 25073)
TRANSFORM(z[143], z[399], z[655], z[911], 20942, 25201)
TRANSFORM(z[144], z[400], z[656], z[912], 20787, 25330)
TRANSFORM(z[145], z[401], z[657], z[913], 20631, 25457)
TRANSFORM(z[146], z[402], z[658], z[914], 20475, 25583)
TRANSFORM(z[147], z[403], z[659], z[915], 20318, 25708)
TRANSFORM(z[148], z[404], z[660], z[916], 20159, 25832)
TRANSFORM(z[149], z[405], z[661], z[917], 20001, 25955)
TRANSFORM(z[150], z[406], z[662], z[918], 19841, 26077)
TRANSFORM(z[151], z[407], z[663], z[919], 19681, 26199)
TRANSFORM(z[152], z[408], z[664], z[920], 19519, 26319)
TRANSFORM(z[153], z[409], z[665], z[921], 19358, 26438)
TRANSFORM(z[154], z[410], z[666], z[922], 19195, 26557)
TRANSFORM(z[155], z[411], z[667], z[923], 19032, 26674)
TRANSFORM(z[156], z[412], z[668], z[924], 18868, 26790)
TRANSFORM(z[157], z[413], z[669], z[925], 18703, 26905)
TRANSFORM(z[158], z[414], z[670], z[926], 18537, 27020)
TRANSFORM(z[159], z[415], z[671], z[927], 18371, 27133)
TRANSFORM(z[160], z[416], z[672], z[928], 18204, 27245)
TRANSFORM(z[161], z[417], z[673], z[929], 18037, 27356)
TRANSFORM(z[162], z[418], z[674], z[930], 17869, 27466)
TRANSFORM(z[163], z[419], z[675], z[931], 17700, 27576)
TRANSFORM(z[164], z[420], z[676], z[932], 17530, 27684)
TRANSFORM(z[165], z[421], z[677], z[933], 17360, 27791)
TRANSFORM(z[166], z[422], z[678], z[934], 17189, 27897)
TRANSFORM(z[167], z[423], z[679], z[935], 17018, 28002)
TRANSFORM(z[168], z[424], z[680], z[936], 16846, 28106)
TRANSFORM(z[169], z[425], z[681], z[937], 16673, 28208)
TRANSFORM(z[170], z[426], z[682], z[938], 16499, 28310)
TRANSFORM(z[171], z[427], z[683], z[939], 16325, 28411)
TRANSFORM(z[172], z[428], z[684], z[940], 16151, 28511)
TRANSFORM(z[173], z[429], z[685], z[941], 15976, 28609)
TRANSFORM(z[174], z[430], z[686], z[942], 15800, 28707)
TRANSFORM(z[175], z[431], z[687], z[943], 15623, 28803)
TRANSFORM(z[176], z[432], z[688], z[944], 15446, 28898)
TRANSFORM(z[177], z[433], z[689], z[945], 15269, 28993)
TRANSFORM(z[178], z[434], z[690], z[946], 15090, 29086)
TRANSFORM(z[179], z[435], z[691], z[947], 14912, 29178)
TRANSFORM(z[180], z[436], z[692], z[948], 14732, 29269)
TRANSFORM(z[181], z[437], z[693], z[949], 14552, 29359)
TRANSFORM(z[182], z[438], z[694], z[950], 14372, 29447)
TRANSFORM(z[183], z[439], z[695], z[951], 14191, 29535)
TRANSFORM(z[184], z[440], z[696], z[952], 14010, 29621)
TRANSFORM(z[185], z[441], z[697], z[953], 13828, 29707)
TRANSFORM(z[186], z[442], z[698], z[954], 13645, 29791)
TRANSFORM(z[187], z[443], z[699], z[955], 13462, 29874)
TRANSFORM(z[188], z[444], z[700], z[956], 13278, 29956)
TRANSFORM(z[189], z[445], z[701], z[957], 13094, 30037)
TRANSFORM(z[190], z[446], z[702], z[958], 12910, 30117)
TRANSFORM(z[191], z[447], z[703], z[959], 12725, 30196)
TRANSFORM(z[192], z[448], z[704], z[960], 12539, 30273)
TRANSFORM(z[193], z[449], z[705], z[961], 12353, 30350)
TRANSFORM(z[194], z[450], z[706], z[962], 12167, 30425)
TRANSFORM(z[195], z[451], z[707], z[963], 11980, 30499)
TRANSFORM(z[196], z[452], z[708], z[964], 11793, 30572)
TRANSFORM(z[197], z[453], z[709], z[965], 11605, 30644)
TRANSFORM(z[198], z[454], z[710], z[966], 11416, 30714)
TRANSFORM(z[199], z[455], z[711], z[967], 11228, 30784)
TRANSFORM(z[200], z[456], z[712], z[968], 11039, 30852)
TRANSFORM(z[201], z[457], z[713], z[969], 10849, 30919)
TRANSFORM(z[202], z[458], z[714], z[970], 10659, 30985)
TRANSFORM(z[203], z[459], z[715], z[971], 10469, 31050)
TRANSFORM(z[204], z[460], z[716], z[972], 10278, 31114)
TRANSFORM(z[205], z[461], z[717], z[973], 10087, 31176)
TRANSFORM(z[206], z[462], z[718], z[974], 9896, 31237)
TRANSFORM(z[207], z[463], z[719], z[975], 9704, 31298)
TRANSFORM(z[208], z[464], z[720], z[976], 9512, 31357)
TRANSFORM(z[209], z[465], z[721], z[977], 9319, 31414)
TRANSFORM(z[210], z[466], z[722], z[978], 9126, 31471)
TRANSFORM(z[211], z[467], z[723], z[979], 8933, 31526)
TRANSFORM(z[212], z[468], z[724], z[980], 8739, 31581)
TRANSFORM(z[213], z[469], z[725], z[981], 8545, 31634)
TRANSFORM(z[214], z[470], z[726], z[982], 8351, 31685)
TRANSFORM(z[215], z[471], z[727], z[983], 8156, 31736)
TRANSFORM(z[216], z[472], z[728], z[984], 7961, 31785)
TRANSFORM(z[217], z[473], z[729], z[985], 7766, 31834)
TRANSFORM(z[218], z[474], z[730], z[986], 7571, 31881)
TRANSFORM(z[219], z[475], z[731], z[987], 7375, 31927)
TRANSFORM(z[220], z[476], z[732], z[988], 7179, 31971)
TRANSFORM(z[221], z[477], z[733], z[989], 6983, 32015)
TRANSFORM(z[222], z[478], z[734], z[990], 6786, 32057)
TRANSFORM(z[223], z[479], z[735], z[991], 6589, 32098)
TRANSFORM(z[224], z[480], z[736], z[992], 6392, 32138)
TRANSFORM(z[225], z[481], z[737], z[993], 6195, 32176)
TRANSFORM(z[226], z[482], z[738], z[994], 5997, 32214)
TRANSFORM(z[227], z[483], z[739], z[995], 5800, 32250)
TRANSFORM(z[228], z[484], z[740], z[996], 5602, 32285)
TRANSFORM(z[229], z[485], z[741], z[997], 5403, 32319)
TRANSFORM(z[230], z[486], z[742], z[998], 5205, 32351)
TRANSFORM(z[231], z[487], z[743], z[999], 5006, 32383)
TRANSFORM(z[232], z[488], z[744], z[1000], 4808, 32413)
TRANSFORM(z[233], z[489], z[745], z[1001], 4609, 32442)
TRANSFORM(z[234], z[490], z[746], z[1002], 4409, 32469)
TRANSFORM(z[235], z[491], z[747], z[1003], 4210, 32496)
TRANSFORM(z[236], z[492], z[748], z[1004], 4011, 32521)
TRANSFORM(z[237], z[493], z[749], z[1005], 3811, 32545)
TRANSFORM(z[238], z[494], z[750], z[1006], 3611, 32568)
TRANSFORM(z[239], z[495], z[751], z[1007], 3411, 32589)
TRANSFORM(z[240], z[496], z[752], z[1008], 3211, 32610)
TRANSFORM(z[241], z[497], z[753], z[1009], 3011, 32629)
TRANSFORM(z[242], z[498], z[754], z[1010], 2811, 32647)
TRANSFORM(z[243], z[499], z[755], z[1011], 2611, 32663)
TRANSFORM(z[244], z[500], z[756], z[1012], 2410, 32679)
TRANSFORM(z[245], z[501], z[757], z[1013], 2210, 32693)
TRANSFORM(z[246], z[502], z[758], z[1014], 2009, 32706)
TRANSFORM(z[247], z[503], z[759], z[1015], 1808, 32718)
TRANSFORM(z[248], z[504], z[760], z[1016], 1607, 32728)
TRANSFORM(z[249], z[505], z[761], z[1017], 1407, 32737)
TRANSFORM(z[250], z[506], z[762], z[1018], 1206, 32745)
TRANSFORM(z[251], z[507], z[763], z[1019], 1005, 32752)
TRANSFORM(z[252], z[508], z[764], z[1020], 804, 32758)
TRANSFORM(z[253], z[509], z[765], z[1021], 603, 32762)
TRANSFORM(z[254], z[510], z[766], z[1022], 402, 32765)
TRANSFORM(z[255], z[511], z[767], z[1023], 201, 32767)
}
static inline void bf_pass_2048(fft_complex *z)
{
int32_t t1, t2, t3, t4, t5, t6;
TRANSFORM_ZERO(z[0], z[512], z[1024], z[1536])
TRANSFORM(z[1], z[513], z[1025], z[1537], 32767, 100)
TRANSFORM(z[2], z[514], z[1026], z[1538], 32767, 201)
TRANSFORM(z[3], z[515], z[1027], z[1539], 32766, 301)
TRANSFORM(z[4], z[516], z[1028], z[1540], 32765, 402)
TRANSFORM(z[5], z[517], z[1029], z[1541], 32764, 502)
TRANSFORM(z[6], z[518], z[1030], z[1542], 32762, 603)
TRANSFORM(z[7], z[519], z[1031], z[1543], 32760, 703)
TRANSFORM(z[8], z[520], z[1032], z[1544], 32758, 804)
TRANSFORM(z[9], z[521], z[1033], z[1545], 32755, 904)
TRANSFORM(z[10], z[522], z[1034], z[1546], 32752, 1005)
TRANSFORM(z[11], z[523], z[1035], z[1547], 32749, 1105)
TRANSFORM(z[12], z[524], z[1036], z[1548], 32745, 1206)
TRANSFORM(z[13], z[525], z[1037], z[1549], 32741, 1306)
TRANSFORM(z[14], z[526], z[1038], z[1550], 32737, 1407)
TRANSFORM(z[15], z[527], z[1039], z[1551], 32733, 1507)
TRANSFORM(z[16], z[528], z[1040], z[1552], 32728, 1607)
TRANSFORM(z[17], z[529], z[1041], z[1553], 32723, 1708)
TRANSFORM(z[18], z[530], z[1042], z[1554], 32718, 1808)
TRANSFORM(z[19], z[531], z[1043], z[1555], 32712, 1909)
TRANSFORM(z[20], z[532], z[1044], z[1556], 32706, 2009)
TRANSFORM(z[21], z[533], z[1045], z[1557], 32700, 2109)
TRANSFORM(z[22], z[534], z[1046], z[1558], 32693, 2210)
TRANSFORM(z[23], z[535], z[1047], z[1559], 32686, 2310)
TRANSFORM(z[24], z[536], z[1048], z[1560], 32679, 2410)
TRANSFORM(z[25], z[537], z[1049], z[1561], 32671, 2510)
TRANSFORM(z[26], z[538], z[1050], z[1562], 32663, 2611)
TRANSFORM(z[27], z[539], z[1051], z[1563], 32655, 2711)
TRANSFORM(z[28], z[540], z[1052], z[1564], 32647, 2811)
TRANSFORM(z[29], z[541], z[1053], z[1565], 32638, 2911)
TRANSFORM(z[30], z[542], z[1054], z[1566], 32629, 3011)
TRANSFORM(z[31], z[543], z[1055], z[1567], 32619, 3111)
TRANSFORM(z[32], z[544], z[1056], z[1568], 32610, 3211)
TRANSFORM(z[33], z[545], z[1057], z[1569], 32600, 3311)
TRANSFORM(z[34], z[546], z[1058], z[1570], 32589, 3411)
TRANSFORM(z[35], z[547], z[1059], z[1571], 32579, 3511)
TRANSFORM(z[36], z[548], z[1060], z[1572], 32568, 3611)
TRANSFORM(z[37], z[549], z[1061], z[1573], 32557, 3711)
TRANSFORM(z[38], z[550], z[1062], z[1574], 32545, 3811)
TRANSFORM(z[39], z[551], z[1063], z[1575], 32533, 3911)
TRANSFORM(z[40], z[552], z[1064], z[1576], 32521, 4011)
TRANSFORM(z[41], z[553], z[1065], z[1577], 32509, 4110)
TRANSFORM(z[42], z[554], z[1066], z[1578], 32496, 4210)
TRANSFORM(z[43], z[555], z[1067], z[1579], 32483, 4310)
TRANSFORM(z[44], z[556], z[1068], z[1580], 32469, 4409)
TRANSFORM(z[45], z[557], z[1069], z[1581], 32456, 4509)
TRANSFORM(z[46], z[558], z[1070], z[1582], 32442, 4609)
TRANSFORM(z[47], z[559], z[1071], z[1583], 32427, 4708)
TRANSFORM(z[48], z[560], z[1072], z[1584], 32413, 4808)
TRANSFORM(z[49], z[561], z[1073], z[1585], 32398, 4907)
TRANSFORM(z[50], z[562], z[1074], z[1586], 32383, 5006)
TRANSFORM(z[51], z[563], z[1075], z[1587], 32367, 5106)
TRANSFORM(z[52], z[564], z[1076], z[1588], 32351, 5205)
TRANSFORM(z[53], z[565], z[1077], z[1589], 32335, 5304)
TRANSFORM(z[54], z[566], z[1078], z[1590], 32319, 5403)
TRANSFORM(z[55], z[567], z[1079], z[1591], 32302, 5503)
TRANSFORM(z[56], z[568], z[1080], z[1592], 32285, 5602)
TRANSFORM(z[57], z[569], z[1081], z[1593], 32268, 5701)
TRANSFORM(z[58], z[570], z[1082], z[1594], 32250, 5800)
TRANSFORM(z[59], z[571], z[1083], z[1595], 32232, 5898)
TRANSFORM(z[60], z[572], z[1084], z[1596], 32214, 5997)
TRANSFORM(z[61], z[573], z[1085], z[1597], 32195, 6096)
TRANSFORM(z[62], z[574], z[1086], z[1598], 32176, 6195)
TRANSFORM(z[63], z[575], z[1087], z[1599], 32157, 6294)
TRANSFORM(z[64], z[576], z[1088], z[1600], 32138, 6392)
TRANSFORM(z[65], z[577], z[1089], z[1601], 32118, 6491)
TRANSFORM(z[66], z[578], z[1090], z[1602], 32098, 6589)
TRANSFORM(z[67], z[579], z[1091], z[1603], 32078, 6688)
TRANSFORM(z[68], z[580], z[1092], z[1604], 32057, 6786)
TRANSFORM(z[69], z[581], z[1093], z[1605], 32036, 6884)
TRANSFORM(z[70], z[582], z[1094], z[1606], 32015, 6983)
TRANSFORM(z[71], z[583], z[1095], z[1607], 31993, 7081)
TRANSFORM(z[72], z[584], z[1096], z[1608], 31971, 7179)
TRANSFORM(z[73], z[585], z[1097], z[1609], 31949, 7277)
TRANSFORM(z[74], z[586], z[1098], z[1610], 31927, 7375)
TRANSFORM(z[75], z[587], z[1099], z[1611], 31904, 7473)
TRANSFORM(z[76], z[588], z[1100], z[1612], 31881, 7571)
TRANSFORM(z[77], z[589], z[1101], z[1613], 31857, 7669)
TRANSFORM(z[78], z[590], z[1102], z[1614], 31834, 7766)
TRANSFORM(z[79], z[591], z[1103], z[1615], 31810, 7864)
TRANSFORM(z[80], z[592], z[1104], z[1616], 31785, 7961)
TRANSFORM(z[81], z[593], z[1105], z[1617], 31761, 8059)
TRANSFORM(z[82], z[594], z[1106], z[1618], 31736, 8156)
TRANSFORM(z[83], z[595], z[1107], z[1619], 31711, 8254)
TRANSFORM(z[84], z[596], z[1108], z[1620], 31685, 8351)
TRANSFORM(z[85], z[597], z[1109], z[1621], 31660, 8448)
TRANSFORM(z[86], z[598], z[1110], z[1622], 31634, 8545)
TRANSFORM(z[87], z[599], z[1111], z[1623], 31607, 8642)
TRANSFORM(z[88], z[600], z[1112], z[1624], 31581, 8739)
TRANSFORM(z[89], z[601], z[1113], z[1625], 31554, 8836)
TRANSFORM(z[90], z[602], z[1114], z[1626], 31526, 8933)
TRANSFORM(z[91], z[603], z[1115], z[1627], 31499, 9029)
TRANSFORM(z[92], z[604], z[1116], z[1628], 31471, 9126)
TRANSFORM(z[93], z[605], z[1117], z[1629], 31443, 9223)
TRANSFORM(z[94], z[606], z[1118], z[1630], 31414, 9319)
TRANSFORM(z[95], z[607], z[1119], z[1631], 31386, 9415)
TRANSFORM(z[96], z[608], z[1120], z[1632], 31357, 9512)
TRANSFORM(z[97], z[609], z[1121], z[1633], 31327, 9608)
TRANSFORM(z[98], z[610], z[1122], z[1634], 31298, 9704)
TRANSFORM(z[99], z[611], z[1123], z[1635], 31268, 9800)
TRANSFORM(z[100], z[612], z[1124], z[1636], 31237, 9896)
TRANSFORM(z[101], z[613], z[1125], z[1637], 31207, 9991)
TRANSFORM(z[102], z[614], z[1126], z[1638], 31176, 10087)
TRANSFORM(z[103], z[615], z[1127], z[1639], 31145, 10183)
TRANSFORM(z[104], z[616], z[1128], z[1640], 31114, 10278)
TRANSFORM(z[105], z[617], z[1129], z[1641], 31082, 10374)
TRANSFORM(z[106], z[618], z[1130], z[1642], 31050, 10469)
TRANSFORM(z[107], z[619], z[1131], z[1643], 31018, 10564)
TRANSFORM(z[108], z[620], z[1132], z[1644], 30985, 10659)
TRANSFORM(z[109], z[621], z[1133], z[1645], 30952, 10754)
TRANSFORM(z[110], z[622], z[1134], z[1646], 30919, 10849)
TRANSFORM(z[111], z[623], z[1135], z[1647], 30886, 10944)
TRANSFORM(z[112], z[624], z[1136], z[1648], 30852, 11039)
TRANSFORM(z[113], z[625], z[1137], z[1649], 30818, 11133)
TRANSFORM(z[114], z[626], z[1138], z[1650], 30784, 11228)
TRANSFORM(z[115], z[627], z[1139], z[1651], 30749, 11322)
TRANSFORM(z[116], z[628], z[1140], z[1652], 30714, 11416)
TRANSFORM(z[117], z[629], z[1141], z[1653], 30679, 11511)
TRANSFORM(z[118], z[630], z[1142], z[1654], 30644, 11605)
TRANSFORM(z[119], z[631], z[1143], z[1655], 30608, 11699)
TRANSFORM(z[120], z[632], z[1144], z[1656], 30572, 11793)
TRANSFORM(z[121], z[633], z[1145], z[1657], 30535, 11886)
TRANSFORM(z[122], z[634], z[1146], z[1658], 30499, 11980)
TRANSFORM(z[123], z[635], z[1147], z[1659], 30462, 12073)
TRANSFORM(z[124], z[636], z[1148], z[1660], 30425, 12167)
TRANSFORM(z[125], z[637], z[1149], z[1661], 30387, 12260)
TRANSFORM(z[126], z[638], z[1150], z[1662], 30350, 12353)
TRANSFORM(z[127], z[639], z[1151], z[1663], 30312, 12446)
TRANSFORM(z[128], z[640], z[1152], z[1664], 30273, 12539)
TRANSFORM(z[129], z[641], z[1153], z[1665], 30235, 12632)
TRANSFORM(z[130], z[642], z[1154], z[1666], 30196, 12725)
TRANSFORM(z[131], z[643], z[1155], z[1667], 30156, 12817)
TRANSFORM(z[132], z[644], z[1156], z[1668], 30117, 12910)
TRANSFORM(z[133], z[645], z[1157], z[1669], 30077, 13002)
TRANSFORM(z[134], z[646], z[1158], z[1670], 30037, 13094)
TRANSFORM(z[135], z[647], z[1159], z[1671], 29997, 13186)
TRANSFORM(z[136], z[648], z[1160], z[1672], 29956, 13278)
TRANSFORM(z[137], z[649], z[1161], z[1673], 29915, 13370)
TRANSFORM(z[138], z[650], z[1162], z[1674], 29874, 13462)
TRANSFORM(z[139], z[651], z[1163], z[1675], 29833, 13554)
TRANSFORM(z[140], z[652], z[1164], z[1676], 29791, 13645)
TRANSFORM(z[141], z[653], z[1165], z[1677], 29749, 13736)
TRANSFORM(z[142], z[654], z[1166], z[1678], 29707, 13828)
TRANSFORM(z[143], z[655], z[1167], z[1679], 29664, 13919)
TRANSFORM(z[144], z[656], z[1168], z[1680], 29621, 14010)
TRANSFORM(z[145], z[657], z[1169], z[1681], 29578, 14100)
TRANSFORM(z[146], z[658], z[1170], z[1682], 29535, 14191)
TRANSFORM(z[147], z[659], z[1171], z[1683], 29491, 14282)
TRANSFORM(z[148], z[660], z[1172], z[1684], 29447, 14372)
TRANSFORM(z[149], z[661], z[1173], z[1685], 29403, 14462)
TRANSFORM(z[150], z[662], z[1174], z[1686], 29359, 14552)
TRANSFORM(z[151], z[663], z[1175], z[1687], 29314, 14642)
TRANSFORM(z[152], z[664], z[1176], z[1688], 29269, 14732)
TRANSFORM(z[153], z[665], z[1177], z[1689], 29223, 14822)
TRANSFORM(z[154], z[666], z[1178], z[1690], 29178, 14912)
TRANSFORM(z[155], z[667], z[1179], z[1691], 29132, 15001)
TRANSFORM(z[156], z[668], z[1180], z[1692], 29086, 15090)
TRANSFORM(z[157], z[669], z[1181], z[1693], 29039, 15180)
TRANSFORM(z[158], z[670], z[1182], z[1694], 28993, 15269)
TRANSFORM(z[159], z[671], z[1183], z[1695], 28946, 15357)
TRANSFORM(z[160], z[672], z[1184], z[1696], 28898, 15446)
TRANSFORM(z[161], z[673], z[1185], z[1697], 28851, 15535)
TRANSFORM(z[162], z[674], z[1186], z[1698], 28803, 15623)
TRANSFORM(z[163], z[675], z[1187], z[1699], 28755, 15712)
TRANSFORM(z[164], z[676], z[1188], z[1700], 28707, 15800)
TRANSFORM(z[165], z[677], z[1189], z[1701], 28658, 15888)
TRANSFORM(z[166], z[678], z[1190], z[1702], 28609, 15976)
TRANSFORM(z[167], z[679], z[1191], z[1703], 28560, 16063)
TRANSFORM(z[168], z[680], z[1192], z[1704], 28511, 16151)
TRANSFORM(z[169], z[681], z[1193], z[1705], 28461, 16238)
TRANSFORM(z[170], z[682], z[1194], z[1706], 28411, 16325)
TRANSFORM(z[171], z[683], z[1195], z[1707], 28361, 16413)
TRANSFORM(z[172], z[684], z[1196], z[1708], 28310, 16499)
TRANSFORM(z[173], z[685], z[1197], z[1709], 28259, 16586)
TRANSFORM(z[174], z[686], z[1198], z[1710], 28208, 16673)
TRANSFORM(z[175], z[687], z[1199], z[1711], 28157, 16759)
TRANSFORM(z[176], z[688], z[1200], z[1712], 28106, 16846)
TRANSFORM(z[177], z[689], z[1201], z[1713], 28054, 16932)
TRANSFORM(z[178], z[690], z[1202], z[1714], 28002, 17018)
TRANSFORM(z[179], z[691], z[1203], z[1715], 27949, 17104)
TRANSFORM(z[180], z[692], z[1204], z[1716], 27897, 17189)
TRANSFORM(z[181], z[693], z[1205], z[1717], 27844, 17275)
TRANSFORM(z[182], z[694], z[1206], z[1718], 27791, 17360)
TRANSFORM(z[183], z[695], z[1207], z[1719], 27737, 17445)
TRANSFORM(z[184], z[696], z[1208], z[1720], 27684, 17530)
TRANSFORM(z[185], z[697], z[1209], z[1721], 27630, 17615)
TRANSFORM(z[186], z[698], z[1210], z[1722], 27576, 17700)
TRANSFORM(z[187], z[699], z[1211], z[1723], 27521, 17784)
TRANSFORM(z[188], z[700], z[1212], z[1724], 27466, 17869)
TRANSFORM(z[189], z[701], z[1213], z[1725], 27411, 17953)
TRANSFORM(z[190], z[702], z[1214], z[1726], 27356, 18037)
TRANSFORM(z[191], z[703], z[1215], z[1727], 27301, 18121)
TRANSFORM(z[192], z[704], z[1216], z[1728], 27245, 18204)
TRANSFORM(z[193], z[705], z[1217], z[1729], 27189, 18288)
TRANSFORM(z[194], z[706], z[1218], z[1730], 27133, 18371)
TRANSFORM(z[195], z[707], z[1219], z[1731], 27076, 18454)
TRANSFORM(z[196], z[708], z[1220], z[1732], 27020, 18537)
TRANSFORM(z[197], z[709], z[1221], z[1733], 26963, 18620)
TRANSFORM(z[198], z[710], z[1222], z[1734], 26905, 18703)
TRANSFORM(z[199], z[711], z[1223], z[1735], 26848, 18785)
TRANSFORM(z[200], z[712], z[1224], z[1736], 26790, 18868)
TRANSFORM(z[201], z[713], z[1225], z[1737], 26732, 18950)
TRANSFORM(z[202], z[714], z[1226], z[1738], 26674, 19032)
TRANSFORM(z[203], z[715], z[1227], z[1739], 26615, 19113)
TRANSFORM(z[204], z[716], z[1228], z[1740], 26557, 19195)
TRANSFORM(z[205], z[717], z[1229], z[1741], 26498, 19276)
TRANSFORM(z[206], z[718], z[1230], z[1742], 26438, 19358)
TRANSFORM(z[207], z[719], z[1231], z[1743], 26379, 19439)
TRANSFORM(z[208], z[720], z[1232], z[1744], 26319, 19519)
TRANSFORM(z[209], z[721], z[1233], z[1745], 26259, 19600)
TRANSFORM(z[210], z[722], z[1234], z[1746], 26199, 19681)
TRANSFORM(z[211], z[723], z[1235], z[1747], 26138, 19761)
TRANSFORM(z[212], z[724], z[1236], z[1748], 26077, 19841)
TRANSFORM(z[213], z[725], z[1237], z[1749], 26016, 19921)
TRANSFORM(z[214], z[726], z[1238], z[1750], 25955, 20001)
TRANSFORM(z[215], z[727], z[1239], z[1751], 25894, 20080)
TRANSFORM(z[216], z[728], z[1240], z[1752], 25832, 20159)
TRANSFORM(z[217], z[729], z[1241], z[1753], 25770, 20239)
TRANSFORM(z[218], z[730], z[1242], z[1754], 25708, 20318)
TRANSFORM(z[219], z[731], z[1243], z[1755], 25645, 20396)
TRANSFORM(z[220], z[732], z[1244], z[1756], 25583, 20475)
TRANSFORM(z[221], z[733], z[1245], z[1757], 25520, 20553)
TRANSFORM(z[222], z[734], z[1246], z[1758], 25457, 20631)
TRANSFORM(z[223], z[735], z[1247], z[1759], 25393, 20709)
TRANSFORM(z[224], z[736], z[1248], z[1760], 25330, 20787)
TRANSFORM(z[225], z[737], z[1249], z[1761], 25266, 20865)
TRANSFORM(z[226], z[738], z[1250], z[1762], 25201, 20942)
TRANSFORM(z[227], z[739], z[1251], z[1763], 25137, 21020)
TRANSFORM(z[228], z[740], z[1252], z[1764], 25073, 21097)
TRANSFORM(z[229], z[741], z[1253], z[1765], 25008, 21173)
TRANSFORM(z[230], z[742], z[1254], z[1766], 24943, 21250)
TRANSFORM(z[231], z[743], z[1255], z[1767], 24877, 21326)
TRANSFORM(z[232], z[744], z[1256], z[1768], 24812, 21403)
TRANSFORM(z[233], z[745], z[1257], z[1769], 24746, 21479)
TRANSFORM(z[234], z[746], z[1258], z[1770], 24680, 21555)
TRANSFORM(z[235], z[747], z[1259], z[1771], 24614, 21630)
TRANSFORM(z[236], z[748], z[1260], z[1772], 24547, 21706)
TRANSFORM(z[237], z[749], z[1261], z[1773], 24480, 21781)
TRANSFORM(z[238], z[750], z[1262], z[1774], 24414, 21856)
TRANSFORM(z[239], z[751], z[1263], z[1775], 24346, 21931)
TRANSFORM(z[240], z[752], z[1264], z[1776], 24279, 22005)
TRANSFORM(z[241], z[753], z[1265], z[1777], 24211, 22080)
TRANSFORM(z[242], z[754], z[1266], z[1778], 24144, 22154)
TRANSFORM(z[243], z[755], z[1267], z[1779], 24075, 22228)
TRANSFORM(z[244], z[756], z[1268], z[1780], 24007, 22301)
TRANSFORM(z[245], z[757], z[1269], z[1781], 23939, 22375)
TRANSFORM(z[246], z[758], z[1270], z[1782], 23870, 22448)
TRANSFORM(z[247], z[759], z[1271], z[1783], 23801, 22521)
TRANSFORM(z[248], z[760], z[1272], z[1784], 23732, 22594)
TRANSFORM(z[249], z[761], z[1273], z[1785], 23662, 22667)
TRANSFORM(z[250], z[762], z[1274], z[1786], 23593, 22740)
TRANSFORM(z[251], z[763], z[1275], z[1787], 23523, 22812)
TRANSFORM(z[252], z[764], z[1276], z[1788], 23453, 22884)
TRANSFORM(z[253], z[765], z[1277], z[1789], 23382, 22956)
TRANSFORM(z[254], z[766], z[1278], z[1790], 23312, 23027)
TRANSFORM(z[255], z[767], z[1279], z[1791], 23241, 23099)
TRANSFORM(z[256], z[768], z[1280], z[1792], 23170, 23170)
TRANSFORM(z[257], z[769], z[1281], z[1793], 23099, 23241)
TRANSFORM(z[258], z[770], z[1282], z[1794], 23027, 23312)
TRANSFORM(z[259], z[771], z[1283], z[1795], 22956, 23382)
TRANSFORM(z[260], z[772], z[1284], z[1796], 22884, 23453)
TRANSFORM(z[261], z[773], z[1285], z[1797], 22812, 23523)
TRANSFORM(z[262], z[774], z[1286], z[1798], 22740, 23593)
TRANSFORM(z[263], z[775], z[1287], z[1799], 22667, 23662)
TRANSFORM(z[264], z[776], z[1288], z[1800], 22594, 23732)
TRANSFORM(z[265], z[777], z[1289], z[1801], 22521, 23801)
TRANSFORM(z[266], z[778], z[1290], z[1802], 22448, 23870)
TRANSFORM(z[267], z[779], z[1291], z[1803], 22375, 23939)
TRANSFORM(z[268], z[780], z[1292], z[1804], 22301, 24007)
TRANSFORM(z[269], z[781], z[1293], z[1805], 22228, 24075)
TRANSFORM(z[270], z[782], z[1294], z[1806], 22154, 24144)
TRANSFORM(z[271], z[783], z[1295], z[1807], 22080, 24211)
TRANSFORM(z[272], z[784], z[1296], z[1808], 22005, 24279)
TRANSFORM(z[273], z[785], z[1297], z[1809], 21931, 24346)
TRANSFORM(z[274], z[786], z[1298], z[1810], 21856, 24414)
TRANSFORM(z[275], z[787], z[1299], z[1811], 21781, 24480)
TRANSFORM(z[276], z[788], z[1300], z[1812], 21706, 24547)
TRANSFORM(z[277], z[789], z[1301], z[1813], 21630, 24614)
TRANSFORM(z[278], z[790], z[1302], z[1814], 21555, 24680)
TRANSFORM(z[279], z[791], z[1303], z[1815], 21479, 24746)
TRANSFORM(z[280], z[792], z[1304], z[1816], 21403, 24812)
TRANSFORM(z[281], z[793], z[1305], z[1817], 21326, 24877)
TRANSFORM(z[282], z[794], z[1306], z[1818], 21250, 24943)
TRANSFORM(z[283], z[795], z[1307], z[1819], 21173, 25008)
TRANSFORM(z[284], z[796], z[1308], z[1820], 21097, 25073)
TRANSFORM(z[285], z[797], z[1309], z[1821], 21020, 25137)
TRANSFORM(z[286], z[798], z[1310], z[1822], 20942, 25201)
TRANSFORM(z[287], z[799], z[1311], z[1823], 20865, 25266)
TRANSFORM(z[288], z[800], z[1312], z[1824], 20787, 25330)
TRANSFORM(z[289], z[801], z[1313], z[1825], 20709, 25393)
TRANSFORM(z[290], z[802], z[1314], z[1826], 20631, 25457)
TRANSFORM(z[291], z[803], z[1315], z[1827], 20553, 25520)
TRANSFORM(z[292], z[804], z[1316], z[1828], 20475, 25583)
TRANSFORM(z[293], z[805], z[1317], z[1829], 20396, 25645)
TRANSFORM(z[294], z[806], z[1318], z[1830], 20318, 25708)
TRANSFORM(z[295], z[807], z[1319], z[1831], 20239, 25770)
TRANSFORM(z[296], z[808], z[1320], z[1832], 20159, 25832)
TRANSFORM(z[297], z[809], z[1321], z[1833], 20080, 25894)
TRANSFORM(z[298], z[810], z[1322], z[1834], 20001, 25955)
TRANSFORM(z[299], z[811], z[1323], z[1835], 19921, 26016)
TRANSFORM(z[300], z[812], z[1324], z[1836], 19841, 26077)
TRANSFORM(z[301], z[813], z[1325], z[1837], 19761, 26138)
TRANSFORM(z[302], z[814], z[1326], z[1838], 19681, 26199)
TRANSFORM(z[303], z[815], z[1327], z[1839], 19600, 26259)
TRANSFORM(z[304], z[816], z[1328], z[1840], 19519, 26319)
TRANSFORM(z[305], z[817], z[1329], z[1841], 19439, 26379)
TRANSFORM(z[306], z[818], z[1330], z[1842], 19358, 26438)
TRANSFORM(z[307], z[819], z[1331], z[1843], 19276, 26498)
TRANSFORM(z[308], z[820], z[1332], z[1844], 19195, 26557)
TRANSFORM(z[309], z[821], z[1333], z[1845], 19113, 26615)
TRANSFORM(z[310], z[822], z[1334], z[1846], 19032, 26674)
TRANSFORM(z[311], z[823], z[1335], z[1847], 18950, 26732)
TRANSFORM(z[312], z[824], z[1336], z[1848], 18868, 26790)
TRANSFORM(z[313], z[825], z[1337], z[1849], 18785, 26848)
TRANSFORM(z[314], z[826], z[1338], z[1850], 18703, 26905)
TRANSFORM(z[315], z[827], z[1339], z[1851], 18620, 26963)
TRANSFORM(z[316], z[828], z[1340], z[1852], 18537, 27020)
TRANSFORM(z[317], z[829], z[1341], z[1853], 18454, 27076)
TRANSFORM(z[318], z[830], z[1342], z[1854], 18371, 27133)
TRANSFORM(z[319], z[831], z[1343], z[1855], 18288, 27189)
TRANSFORM(z[320], z[832], z[1344], z[1856], 18204, 27245)
TRANSFORM(z[321], z[833], z[1345], z[1857], 18121, 27301)
TRANSFORM(z[322], z[834], z[1346], z[1858], 18037, 27356)
TRANSFORM(z[323], z[835], z[1347], z[1859], 17953, 27411)
TRANSFORM(z[324], z[836], z[1348], z[1860], 17869, 27466)
TRANSFORM(z[325], z[837], z[1349], z[1861], 17784, 27521)
TRANSFORM(z[326], z[838], z[1350], z[1862], 17700, 27576)
TRANSFORM(z[327], z[839], z[1351], z[1863], 17615, 27630)
TRANSFORM(z[328], z[840], z[1352], z[1864], 17530, 27684)
TRANSFORM(z[329], z[841], z[1353], z[1865], 17445, 27737)
TRANSFORM(z[330], z[842], z[1354], z[1866], 17360, 27791)
TRANSFORM(z[331], z[843], z[1355], z[1867], 17275, 27844)
TRANSFORM(z[332], z[844], z[1356], z[1868], 17189, 27897)
TRANSFORM(z[333], z[845], z[1357], z[1869], 17104, 27949)
TRANSFORM(z[334], z[846], z[1358], z[1870], 17018, 28002)
TRANSFORM(z[335], z[847], z[1359], z[1871], 16932, 28054)
TRANSFORM(z[336], z[848], z[1360], z[1872], 16846, 28106)
TRANSFORM(z[337], z[849], z[1361], z[1873], 16759, 28157)
TRANSFORM(z[338], z[850], z[1362], z[1874], 16673, 28208)
TRANSFORM(z[339], z[851], z[1363], z[1875], 16586, 28259)
TRANSFORM(z[340], z[852], z[1364], z[1876], 16499, 28310)
TRANSFORM(z[341], z[853], z[1365], z[1877], 16413, 28361)
TRANSFORM(z[342], z[854], z[1366], z[1878], 16325, 28411)
TRANSFORM(z[343], z[855], z[1367], z[1879], 16238, 28461)
TRANSFORM(z[344], z[856], z[1368], z[1880], 16151, 28511)
TRANSFORM(z[345], z[857], z[1369], z[1881], 16063, 28560)
TRANSFORM(z[346], z[858], z[1370], z[1882], 15976, 28609)
TRANSFORM(z[347], z[859], z[1371], z[1883], 15888, 28658)
TRANSFORM(z[348], z[860], z[1372], z[1884], 15800, 28707)
TRANSFORM(z[349], z[861], z[1373], z[1885], 15712, 28755)
TRANSFORM(z[350], z[862], z[1374], z[1886], 15623, 28803)
TRANSFORM(z[351], z[863], z[1375], z[1887], 15535, 28851)
TRANSFORM(z[352], z[864], z[1376], z[1888], 15446, 28898)
TRANSFORM(z[353], z[865], z[1377], z[1889], 15357, 28946)
TRANSFORM(z[354], z[866], z[1378], z[1890], 15269, 28993)
TRANSFORM(z[355], z[867], z[1379], z[1891], 15180, 29039)
TRANSFORM(z[356], z[868], z[1380], z[1892], 15090, 29086)
TRANSFORM(z[357], z[869], z[1381], z[1893], 15001, 29132)
TRANSFORM(z[358], z[870], z[1382], z[1894], 14912, 29178)
TRANSFORM(z[359], z[871], z[1383], z[1895], 14822, 29223)
TRANSFORM(z[360], z[872], z[1384], z[1896], 14732, 29269)
TRANSFORM(z[361], z[873], z[1385], z[1897], 14642, 29314)
TRANSFORM(z[362], z[874], z[1386], z[1898], 14552, 29359)
TRANSFORM(z[363], z[875], z[1387], z[1899], 14462, 29403)
TRANSFORM(z[364], z[876], z[1388], z[1900], 14372, 29447)
TRANSFORM(z[365], z[877], z[1389], z[1901], 14282, 29491)
TRANSFORM(z[366], z[878], z[1390], z[1902], 14191, 29535)
TRANSFORM(z[367], z[879], z[1391], z[1903], 14100, 29578)
TRANSFORM(z[368], z[880], z[1392], z[1904], 14010, 29621)
TRANSFORM(z[369], z[881], z[1393], z[1905], 13919, 29664)
TRANSFORM(z[370], z[882], z[1394], z[1906], 13828, 29707)
TRANSFORM(z[371], z[883], z[1395], z[1907], 13736, 29749)
TRANSFORM(z[372], z[884], z[1396], z[1908], 13645, 29791)
TRANSFORM(z[373], z[885], z[1397], z[1909], 13554, 29833)
TRANSFORM(z[374], z[886], z[1398], z[1910], 13462, 29874)
TRANSFORM(z[375], z[887], z[1399], z[1911], 13370, 29915)
TRANSFORM(z[376], z[888], z[1400], z[1912], 13278, 29956)
TRANSFORM(z[377], z[889], z[1401], z[1913], 13186, 29997)
TRANSFORM(z[378], z[890], z[1402], z[1914], 13094, 30037)
TRANSFORM(z[379], z[891], z[1403], z[1915], 13002, 30077)
TRANSFORM(z[380], z[892], z[1404], z[1916], 12910, 30117)
TRANSFORM(z[381], z[893], z[1405], z[1917], 12817, 30156)
TRANSFORM(z[382], z[894], z[1406], z[1918], 12725, 30196)
TRANSFORM(z[383], z[895], z[1407], z[1919], 12632, 30235)
TRANSFORM(z[384], z[896], z[1408], z[1920], 12539, 30273)
TRANSFORM(z[385], z[897], z[1409], z[1921], 12446, 30312)
TRANSFORM(z[386], z[898], z[1410], z[1922], 12353, 30350)
TRANSFORM(z[387], z[899], z[1411], z[1923], 12260, 30387)
TRANSFORM(z[388], z[900], z[1412], z[1924], 12167, 30425)
TRANSFORM(z[389], z[901], z[1413], z[1925], 12073, 30462)
TRANSFORM(z[390], z[902], z[1414], z[1926], 11980, 30499)
TRANSFORM(z[391], z[903], z[1415], z[1927], 11886, 30535)
TRANSFORM(z[392], z[904], z[1416], z[1928], 11793, 30572)
TRANSFORM(z[393], z[905], z[1417], z[1929], 11699, 30608)
TRANSFORM(z[394], z[906], z[1418], z[1930], 11605, 30644)
TRANSFORM(z[395], z[907], z[1419], z[1931], 11511, 30679)
TRANSFORM(z[396], z[908], z[1420], z[1932], 11416, 30714)
TRANSFORM(z[397], z[909], z[1421], z[1933], 11322, 30749)
TRANSFORM(z[398], z[910], z[1422], z[1934], 11228, 30784)
TRANSFORM(z[399], z[911], z[1423], z[1935], 11133, 30818)
TRANSFORM(z[400], z[912], z[1424], z[1936], 11039, 30852)
TRANSFORM(z[401], z[913], z[1425], z[1937], 10944, 30886)
TRANSFORM(z[402], z[914], z[1426], z[1938], 10849, 30919)
TRANSFORM(z[403], z[915], z[1427], z[1939], 10754, 30952)
TRANSFORM(z[404], z[916], z[1428], z[1940], 10659, 30985)
TRANSFORM(z[405], z[917], z[1429], z[1941], 10564, 31018)