20
20
/* This file was automatically generated --- DO NOT EDIT */
21
/* Generated on Sun Nov 7 20:44:28 EST 1999 */
26
/* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -hc2real 64 */
21
/* Generated on Mon Mar 24 02:07:23 EST 2003 */
26
/* Generated by: /homee/stevenj/cvs/fftw/gensrc/genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -hc2real 64 */
29
29
* This function contains 394 FP additions, 146 FP multiplications,
30
30
* (or, 342 additions, 94 multiplications, 52 fused multiply/add),
31
31
* 86 stack variables, and 128 memory accesses
33
static const fftw_real K555570233 = FFTW_KONST(+0.555570233019602224742830813948532874374937191);
34
static const fftw_real K831469612 = FFTW_KONST(+0.831469612302545237078788377617905756738560812);
35
static const fftw_real K195090322 = FFTW_KONST(+0.195090322016128267848284868477022240927691618);
36
static const fftw_real K980785280 = FFTW_KONST(+0.980785280403230449126182236134239036973933731);
37
static const fftw_real K765366864 = FFTW_KONST(+0.765366864730179543456919968060797733522689125);
38
static const fftw_real K1_847759065 = FFTW_KONST(+1.847759065022573512256366378793576573644833252);
39
static const fftw_real K995184726 = FFTW_KONST(+0.995184726672196886244836953109479921575474869);
40
static const fftw_real K098017140 = FFTW_KONST(+0.098017140329560601994195563888641845861136673);
41
static const fftw_real K471396736 = FFTW_KONST(+0.471396736825997648556387625905254377657460319);
42
static const fftw_real K881921264 = FFTW_KONST(+0.881921264348355029712756863660388349508442621);
43
static const fftw_real K773010453 = FFTW_KONST(+0.773010453362736960810906609758469800971041293);
44
static const fftw_real K634393284 = FFTW_KONST(+0.634393284163645498215171613225493370675687095);
45
static const fftw_real K290284677 = FFTW_KONST(+0.290284677254462367636192375817395274691476278);
46
static const fftw_real K956940335 = FFTW_KONST(+0.956940335732208864935797886980269969482849206);
47
static const fftw_real K1_414213562 = FFTW_KONST(+1.414213562373095048801688724209698078569671875);
48
static const fftw_real K2_000000000 = FFTW_KONST(+2.000000000000000000000000000000000000000000000);
33
static const fftw_real K980785280 =
34
FFTW_KONST(+0.980785280403230449126182236134239036973933731);
35
static const fftw_real K195090322 =
36
FFTW_KONST(+0.195090322016128267848284868477022240927691618);
37
static const fftw_real K555570233 =
38
FFTW_KONST(+0.555570233019602224742830813948532874374937191);
39
static const fftw_real K831469612 =
40
FFTW_KONST(+0.831469612302545237078788377617905756738560812);
41
static const fftw_real K765366864 =
42
FFTW_KONST(+0.765366864730179543456919968060797733522689125);
43
static const fftw_real K1_847759065 =
44
FFTW_KONST(+1.847759065022573512256366378793576573644833252);
45
static const fftw_real K773010453 =
46
FFTW_KONST(+0.773010453362736960810906609758469800971041293);
47
static const fftw_real K634393284 =
48
FFTW_KONST(+0.634393284163645498215171613225493370675687095);
49
static const fftw_real K290284677 =
50
FFTW_KONST(+0.290284677254462367636192375817395274691476278);
51
static const fftw_real K956940335 =
52
FFTW_KONST(+0.956940335732208864935797886980269969482849206);
53
static const fftw_real K995184726 =
54
FFTW_KONST(+0.995184726672196886244836953109479921575474869);
55
static const fftw_real K098017140 =
56
FFTW_KONST(+0.098017140329560601994195563888641845861136673);
57
static const fftw_real K471396736 =
58
FFTW_KONST(+0.471396736825997648556387625905254377657460319);
59
static const fftw_real K881921264 =
60
FFTW_KONST(+0.881921264348355029712756863660388349508442621);
61
static const fftw_real K1_414213562 =
62
FFTW_KONST(+1.414213562373095048801688724209698078569671875);
63
static const fftw_real K2_000000000 =
64
FFTW_KONST(+2.000000000000000000000000000000000000000000000);
52
* $Id: exprdag.ml,v 1.41 1999/05/26 15:44:14 fftw Exp $
53
* $Id: fft.ml,v 1.43 1999/05/17 19:44:18 fftw Exp $
54
* $Id: to_c.ml,v 1.25 1999/10/26 21:41:32 stevenj Exp $
68
* $Id: exprdag.ml,v 1.43 2003/03/16 23:43:46 stevenj Exp $
69
* $Id: fft.ml,v 1.44 2003/03/16 23:43:46 stevenj Exp $
70
* $Id: to_c.ml,v 1.26 2003/03/16 23:43:46 stevenj Exp $
57
void fftw_hc2real_64(const fftw_real *real_input, const fftw_real *imag_input, fftw_real *output, int real_istride, int imag_istride, int ostride)
73
void fftw_hc2real_64(const fftw_real *real_input,
74
const fftw_real *imag_input, fftw_real *output,
75
int real_istride, int imag_istride, int ostride)
172
190
tmp70 = tmp66 - tmp69;
173
191
tmp152 = tmp66 + tmp69;
179
197
ASSERT_ALIGNED_DOUBLE;
180
tmp223 = tmp220 - tmp222;
181
tmp226 = K1_414213562 * (tmp224 - tmp225);
182
tmp227 = tmp223 + tmp226;
183
tmp301 = tmp223 - tmp226;
184
tmp325 = tmp220 + tmp222;
185
tmp326 = K1_414213562 * (tmp224 + tmp225);
186
tmp327 = tmp325 - tmp326;
187
tmp373 = tmp325 + tmp326;
198
tmp244 = K1_414213562 * (tmp242 - tmp243);
199
tmp248 = tmp245 - tmp247;
200
tmp249 = tmp244 + tmp248;
201
tmp304 = tmp248 - tmp244;
202
tmp335 = tmp245 + tmp247;
203
tmp336 = K1_414213562 * (tmp242 + tmp243);
204
tmp337 = tmp335 - tmp336;
205
tmp376 = tmp336 + tmp335;
193
211
fftw_real tmp135;
197
215
fftw_real tmp132;
201
219
fftw_real tmp126;
205
223
fftw_real tmp123;
207
225
ASSERT_ALIGNED_DOUBLE;
375
393
tmp153 = K1_414213562 * (tmp71 + tmp78);
376
394
tmp197 = K2_000000000 * (tmp77 - tmp74);
382
400
ASSERT_ALIGNED_DOUBLE;
383
tmp230 = tmp228 - tmp229;
384
tmp233 = tmp231 + tmp232;
385
tmp234 = (K1_847759065 * tmp230) - (K765366864 * tmp233);
386
tmp302 = (K765366864 * tmp230) + (K1_847759065 * tmp233);
387
tmp328 = tmp228 + tmp229;
388
tmp329 = tmp232 - tmp231;
389
tmp330 = (K765366864 * tmp328) - (K1_847759065 * tmp329);
390
tmp374 = (K1_847759065 * tmp328) + (K765366864 * tmp329);
401
tmp237 = tmp235 - tmp236;
402
tmp240 = tmp238 + tmp239;
403
tmp241 = (K1_847759065 * tmp237) - (K765366864 * tmp240);
404
tmp305 = (K765366864 * tmp237) + (K1_847759065 * tmp240);
405
tmp332 = tmp235 + tmp236;
406
tmp333 = tmp239 - tmp238;
407
tmp334 = (K765366864 * tmp332) - (K1_847759065 * tmp333);
408
tmp377 = (K1_847759065 * tmp332) + (K765366864 * tmp333);
410
428
ASSERT_ALIGNED_DOUBLE;
483
501
tmp155 = tmp81 + tmp88;
484
502
tmp187 = tmp96 - tmp93;
485
503
tmp188 = tmp87 - tmp84;
486
tmp200 = tmp187 + tmp188;
504
tmp200 = tmp188 + tmp187;
487
505
tmp90 = tmp31 - tmp28;
488
506
tmp97 = tmp93 + tmp96;
489
507
tmp98 = tmp90 + tmp97;
490
508
tmp156 = tmp97 - tmp90;
497
515
ASSERT_ALIGNED_DOUBLE;
498
tmp238 = tmp236 - tmp237;
499
tmp241 = tmp239 + tmp240;
500
tmp242 = (K980785280 * tmp238) - (K195090322 * tmp241);
501
tmp292 = (K195090322 * tmp238) + (K980785280 * tmp241);
502
tmp332 = tmp236 + tmp237;
503
tmp333 = tmp240 - tmp239;
504
tmp334 = (K831469612 * tmp332) - (K555570233 * tmp333);
505
tmp364 = (K555570233 * tmp332) + (K831469612 * tmp333);
516
tmp222 = tmp220 - tmp221;
517
tmp225 = tmp223 + tmp224;
518
tmp226 = (K831469612 * tmp222) - (K555570233 * tmp225);
519
tmp293 = (K555570233 * tmp222) + (K831469612 * tmp225);
520
tmp328 = tmp220 + tmp221;
521
tmp329 = tmp224 - tmp223;
522
tmp330 = (K195090322 * tmp328) + (K980785280 * tmp329);
523
tmp365 = (K980785280 * tmp328) - (K195090322 * tmp329);
512
530
ASSERT_ALIGNED_DOUBLE;
513
tmp245 = tmp243 - tmp244;
514
tmp248 = tmp246 + tmp247;
515
tmp249 = (K831469612 * tmp245) - (K555570233 * tmp248);
516
tmp293 = (K555570233 * tmp245) + (K831469612 * tmp248);
517
tmp335 = tmp243 + tmp244;
518
tmp336 = tmp247 - tmp246;
519
tmp337 = (K195090322 * tmp335) + (K980785280 * tmp336);
520
tmp365 = (K980785280 * tmp335) - (K195090322 * tmp336);
531
tmp229 = tmp227 - tmp228;
532
tmp232 = tmp230 + tmp231;
533
tmp233 = (K980785280 * tmp229) - (K195090322 * tmp232);
534
tmp292 = (K195090322 * tmp229) + (K980785280 * tmp232);
535
tmp325 = tmp227 + tmp228;
536
tmp326 = tmp231 - tmp230;
537
tmp327 = (K831469612 * tmp325) - (K555570233 * tmp326);
538
tmp364 = (K555570233 * tmp325) + (K831469612 * tmp326);
526
544
fftw_real tmp116;
530
548
fftw_real tmp113;
534
552
fftw_real tmp107;
538
556
fftw_real tmp104;
540
558
ASSERT_ALIGNED_DOUBLE;
632
650
fftw_real tmp254;
633
651
fftw_real tmp257;
636
654
ASSERT_ALIGNED_DOUBLE;
637
655
tmp254 = tmp252 - tmp253;
638
656
tmp257 = tmp255 + tmp256;
639
tmp258 = (K995184726 * tmp254) - (K098017140 * tmp257);
640
tmp284 = (K098017140 * tmp254) + (K995184726 * tmp257);
641
tmp340 = tmp252 + tmp253;
642
tmp341 = tmp256 - tmp255;
643
tmp342 = (K956940335 * tmp340) - (K290284677 * tmp341);
644
tmp356 = (K290284677 * tmp340) + (K956940335 * tmp341);
657
tmp258 = (K773010453 * tmp254) - (K634393284 * tmp257);
658
tmp285 = (K634393284 * tmp254) + (K773010453 * tmp257);
659
tmp343 = tmp252 + tmp253;
660
tmp344 = tmp256 - tmp255;
661
tmp345 = (K471396736 * tmp343) + (K881921264 * tmp344);
662
tmp357 = (K881921264 * tmp343) - (K471396736 * tmp344);
647
665
fftw_real tmp261;
648
666
fftw_real tmp264;
651
669
ASSERT_ALIGNED_DOUBLE;
652
670
tmp261 = tmp259 - tmp260;
653
671
tmp264 = tmp262 + tmp263;
654
tmp265 = (K773010453 * tmp261) - (K634393284 * tmp264);
655
tmp285 = (K634393284 * tmp261) + (K773010453 * tmp264);
656
tmp343 = tmp259 + tmp260;
657
tmp344 = tmp263 - tmp262;
658
tmp345 = (K471396736 * tmp343) + (K881921264 * tmp344);
659
tmp357 = (K881921264 * tmp343) - (K471396736 * tmp344);
672
tmp265 = (K995184726 * tmp261) - (K098017140 * tmp264);
673
tmp284 = (K098017140 * tmp261) + (K995184726 * tmp264);
674
tmp340 = tmp259 + tmp260;
675
tmp341 = tmp263 - tmp262;
676
tmp342 = (K956940335 * tmp340) - (K290284677 * tmp341);
677
tmp356 = (K290284677 * tmp340) + (K956940335 * tmp341);
800
818
tmp369 = tmp358 + tmp361;
802
820
output[35 * ostride] = tmp339 - tmp354;
803
output[3 * ostride] = tmp339 + tmp354;
821
output[3 * ostride] = tmp354 + tmp339;
804
822
output[19 * ostride] = tmp355 - tmp362;
805
output[51 * ostride] = tmp355 + tmp362;
823
output[51 * ostride] = tmp362 + tmp355;
806
824
tmp372 = K1_414213562 * (tmp368 + tmp369);
807
825
output[27 * ostride] = tmp371 - tmp372;
808
output[59 * ostride] = tmp371 + tmp372;
826
output[59 * ostride] = tmp372 + tmp371;
809
827
tmp370 = K1_414213562 * (tmp368 - tmp369);
810
828
output[43 * ostride] = tmp367 - tmp370;
811
output[11 * ostride] = tmp367 + tmp370;
829
output[11 * ostride] = tmp370 + tmp367;
814
834
fftw_real tmp375;
817
835
fftw_real tmp390;
818
836
fftw_real tmp382;
819
837
fftw_real tmp392;
820
838
fftw_real tmp385;
821
839
fftw_real tmp393;
824
842
ASSERT_ALIGNED_DOUBLE;
825
tmp375 = tmp373 - tmp374;
826
tmp389 = tmp373 + tmp374;
827
tmp376 = tmp334 + tmp337;
828
tmp377 = tmp364 + tmp365;
829
tmp378 = K1_414213562 * (tmp376 - tmp377);
830
tmp390 = K1_414213562 * (tmp377 + tmp376);
843
tmp378 = tmp376 - tmp377;
844
tmp389 = tmp377 + tmp376;
845
tmp373 = tmp330 + tmp327;
846
tmp374 = tmp365 + tmp364;
847
tmp375 = K1_414213562 * (tmp373 - tmp374);
848
tmp390 = K1_414213562 * (tmp373 + tmp374);
832
850
fftw_real tmp380;
833
851
fftw_real tmp381;
834
852
fftw_real tmp383;
835
853
fftw_real tmp384;
836
854
ASSERT_ALIGNED_DOUBLE;
837
tmp380 = tmp342 + tmp345;
838
tmp381 = tmp359 + tmp360;
855
tmp380 = tmp345 + tmp342;
856
tmp381 = tmp360 + tmp359;
839
857
tmp382 = tmp380 - tmp381;
840
858
tmp392 = tmp380 + tmp381;
841
tmp383 = tmp356 + tmp357;
842
tmp384 = tmp352 - tmp349;
859
tmp383 = tmp357 + tmp356;
860
tmp384 = tmp349 - tmp352;
843
861
tmp385 = tmp383 + tmp384;
844
862
tmp393 = tmp383 - tmp384;
959
977
fftw_real tmp167;
960
978
fftw_real tmp168;
961
979
ASSERT_ALIGNED_DOUBLE;
962
tmp161 = (K831469612 * tmp159) - (K555570233 * tmp160);
963
tmp164 = (K980785280 * tmp162) + (K195090322 * tmp163);
980
tmp161 = (K555570233 * tmp159) + (K831469612 * tmp160);
981
tmp164 = (K980785280 * tmp162) - (K195090322 * tmp163);
964
982
tmp165 = K2_000000000 * (tmp161 - tmp164);
965
tmp173 = tmp161 + tmp164;
966
tmp167 = (K831469612 * tmp160) + (K555570233 * tmp159);
967
tmp168 = (K980785280 * tmp163) - (K195090322 * tmp162);
983
tmp174 = tmp161 + tmp164;
984
tmp167 = (K831469612 * tmp159) - (K555570233 * tmp160);
985
tmp168 = (K195090322 * tmp162) + (K980785280 * tmp163);
968
986
tmp169 = K2_000000000 * (tmp167 - tmp168);
969
tmp174 = tmp167 + tmp168;
987
tmp173 = tmp167 + tmp168;
971
output[38 * ostride] = tmp158 - tmp165;
972
output[6 * ostride] = tmp158 + tmp165;
973
output[22 * ostride] = tmp166 - tmp169;
974
output[54 * ostride] = tmp166 + tmp169;
975
tmp177 = K1_414213562 * (tmp173 + tmp174);
989
output[22 * ostride] = tmp158 - tmp165;
990
output[54 * ostride] = tmp158 + tmp165;
991
output[38 * ostride] = tmp166 - tmp169;
992
output[6 * ostride] = tmp166 + tmp169;
993
tmp177 = K1_414213562 * (tmp174 + tmp173);
976
994
output[30 * ostride] = tmp176 - tmp177;
977
995
output[62 * ostride] = tmp176 + tmp177;
978
996
tmp175 = K1_414213562 * (tmp173 - tmp174);
992
1010
fftw_real tmp298;
993
1011
ASSERT_ALIGNED_DOUBLE;
996
1014
fftw_real tmp250;
997
1015
fftw_real tmp291;
998
1016
fftw_real tmp294;
999
1017
ASSERT_ALIGNED_DOUBLE;
1000
tmp235 = tmp227 + tmp234;
1001
tmp250 = K2_000000000 * (tmp242 + tmp249);
1002
tmp251 = tmp235 + tmp250;
1003
tmp283 = tmp235 - tmp250;
1004
tmp291 = tmp227 - tmp234;
1018
tmp234 = K2_000000000 * (tmp226 + tmp233);
1019
tmp250 = tmp241 + tmp249;
1020
tmp251 = tmp234 + tmp250;
1021
tmp283 = tmp250 - tmp234;
1022
tmp291 = tmp249 - tmp241;
1005
1023
tmp294 = K2_000000000 * (tmp292 - tmp293);
1006
1024
tmp295 = tmp291 - tmp294;
1007
tmp299 = tmp291 + tmp294;
1025
tmp299 = tmp294 + tmp291;
1010
1028
fftw_real tmp266;
1022
1040
tmp297 = tmp286 + tmp289;
1024
1042
output[33 * ostride] = tmp251 - tmp282;
1025
output[ostride] = tmp251 + tmp282;
1043
output[ostride] = tmp282 + tmp251;
1026
1044
output[17 * ostride] = tmp283 - tmp290;
1027
output[49 * ostride] = tmp283 + tmp290;
1045
output[49 * ostride] = tmp290 + tmp283;
1028
1046
tmp300 = K1_414213562 * (tmp296 + tmp297);
1029
1047
output[25 * ostride] = tmp299 - tmp300;
1030
output[57 * ostride] = tmp299 + tmp300;
1048
output[57 * ostride] = tmp300 + tmp299;
1031
1049
tmp298 = K1_414213562 * (tmp296 - tmp297);
1032
1050
output[41 * ostride] = tmp295 - tmp298;
1033
output[9 * ostride] = tmp295 + tmp298;
1051
output[9 * ostride] = tmp298 + tmp295;
1036
1056
fftw_real tmp303;
1039
1057
fftw_real tmp318;
1040
1058
fftw_real tmp310;
1041
1059
fftw_real tmp320;
1042
1060
fftw_real tmp313;
1043
1061
fftw_real tmp321;
1046
1064
ASSERT_ALIGNED_DOUBLE;
1047
tmp303 = tmp301 - tmp302;
1048
tmp317 = tmp301 + tmp302;
1049
tmp304 = tmp242 - tmp249;
1050
tmp305 = tmp292 + tmp293;
1051
tmp306 = K1_414213562 * (tmp304 - tmp305);
1052
tmp318 = K1_414213562 * (tmp304 + tmp305);
1065
tmp306 = tmp304 - tmp305;
1066
tmp317 = tmp305 + tmp304;
1067
tmp301 = tmp233 - tmp226;
1068
tmp302 = tmp293 + tmp292;
1069
tmp303 = K1_414213562 * (tmp301 - tmp302);
1070
tmp318 = K1_414213562 * (tmp301 + tmp302);
1054
1072
fftw_real tmp308;
1055
1073
fftw_real tmp309;
1056
1074
fftw_real tmp311;
1057
1075
fftw_real tmp312;
1058
1076
ASSERT_ALIGNED_DOUBLE;
1059
tmp308 = tmp258 - tmp265;
1060
tmp309 = tmp287 + tmp288;
1077
tmp308 = tmp265 - tmp258;
1078
tmp309 = tmp288 + tmp287;
1061
1079
tmp310 = tmp308 - tmp309;
1062
1080
tmp320 = tmp308 + tmp309;
1063
tmp311 = tmp284 + tmp285;
1064
tmp312 = tmp280 - tmp273;
1081
tmp311 = tmp285 + tmp284;
1082
tmp312 = tmp273 - tmp280;
1065
1083
tmp313 = tmp311 + tmp312;
1066
1084
tmp321 = tmp311 - tmp312;
1089
1107
tmp319 = tmp317 - tmp318;
1090
1108
tmp322 = (K765366864 * tmp320) - (K1_847759065 * tmp321);
1091
1109
output[45 * ostride] = tmp319 - tmp322;
1092
output[13 * ostride] = tmp319 + tmp322;
1093
tmp323 = tmp317 + tmp318;
1110
output[13 * ostride] = tmp322 + tmp319;
1111
tmp323 = tmp318 + tmp317;
1094
1112
tmp324 = (K765366864 * tmp321) + (K1_847759065 * tmp320);
1095
1113
output[29 * ostride] = tmp323 - tmp324;
1096
output[61 * ostride] = tmp323 + tmp324;
1114
output[61 * ostride] = tmp324 + tmp323;
1101
fftw_codelet_desc fftw_hc2real_64_desc =
1119
fftw_codelet_desc fftw_hc2real_64_desc = {
1103
1120
"fftw_hc2real_64",
1104
1121
(void (*)()) fftw_hc2real_64,