1 /*
2 * Copyright (c) 1997-1999, 2003 Massachusetts Institute of Technology
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 *
18 */
19
20 /* This file was automatically generated --- DO NOT EDIT */
21 /* Generated on Mon Mar 24 02:08:11 EST 2003 */
22
23 #include "fftw-int.h"
24 #include "fftw.h"
25
26 /* Generated by: /homee/stevenj/cvs/fftw/gensrc/genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -hc2hc-forward 16 */
27
28 /*
29 * This function contains 298 FP additions, 130 FP multiplications,
30 * (or, 244 additions, 76 multiplications, 54 fused multiply/add),
31 * 51 stack variables, and 128 memory accesses
32 */
33 static const fftw_real K277785116 =
34 FFTW_KONST(+0.277785116509801112371415406974266437187468595);
35 static const fftw_real K415734806 =
36 FFTW_KONST(+0.415734806151272618539394188808952878369280406);
37 static const fftw_real K490392640 =
38 FFTW_KONST(+0.490392640201615224563091118067119518486966865);
39 static const fftw_real K097545161 =
40 FFTW_KONST(+0.097545161008064133924142434238511120463845809);
41 static const fftw_real K1_414213562 =
42 FFTW_KONST(+1.414213562373095048801688724209698078569671875);
43 static const fftw_real K2_000000000 =
44 FFTW_KONST(+2.000000000000000000000000000000000000000000000);
45 static const fftw_real K707106781 =
46 FFTW_KONST(+0.707106781186547524400844362104849039284835938);
47 static const fftw_real K923879532 =
48 FFTW_KONST(+0.923879532511286756128183189396788286822416626);
49 static const fftw_real K382683432 =
50 FFTW_KONST(+0.382683432365089771728459984030398866761344562);
51
52 /*
53 * Generator Id's :
54 * $Id: exprdag.ml,v 1.43 2003/03/16 23:43:46 stevenj Exp $
55 * $Id: fft.ml,v 1.44 2003/03/16 23:43:46 stevenj Exp $
56 * $Id: to_c.ml,v 1.26 2003/03/16 23:43:46 stevenj Exp $
57 */
58
fftw_hc2hc_forward_16(fftw_real * A,const fftw_complex * W,int iostride,int m,int dist)59 void fftw_hc2hc_forward_16(fftw_real *A, const fftw_complex *W,
60 int iostride, int m, int dist)
61 {
62 int i;
63 fftw_real *X;
64 fftw_real *Y;
65 X = A;
66 Y = A + (16 * iostride);
67 {
68 fftw_real tmp277;
69 fftw_real tmp280;
70 fftw_real tmp281;
71 fftw_real tmp309;
72 fftw_real tmp292;
73 fftw_real tmp307;
74 fftw_real tmp314;
75 fftw_real tmp322;
76 fftw_real tmp330;
77 fftw_real tmp284;
78 fftw_real tmp287;
79 fftw_real tmp288;
80 fftw_real tmp310;
81 fftw_real tmp291;
82 fftw_real tmp300;
83 fftw_real tmp315;
84 fftw_real tmp325;
85 fftw_real tmp331;
86 fftw_real tmp290;
87 fftw_real tmp289;
88 fftw_real tmp317;
89 fftw_real tmp318;
90 ASSERT_ALIGNED_DOUBLE;
91 {
92 fftw_real tmp275;
93 fftw_real tmp276;
94 fftw_real tmp278;
95 fftw_real tmp279;
96 ASSERT_ALIGNED_DOUBLE;
97 tmp275 = X[0];
98 tmp276 = X[8 * iostride];
99 tmp277 = tmp275 + tmp276;
100 tmp278 = X[4 * iostride];
101 tmp279 = X[12 * iostride];
102 tmp280 = tmp278 + tmp279;
103 tmp281 = tmp277 + tmp280;
104 tmp309 = tmp275 - tmp276;
105 tmp292 = tmp278 - tmp279;
106 }
107 {
108 fftw_real tmp303;
109 fftw_real tmp320;
110 fftw_real tmp306;
111 fftw_real tmp321;
112 ASSERT_ALIGNED_DOUBLE;
113 {
114 fftw_real tmp301;
115 fftw_real tmp302;
116 fftw_real tmp304;
117 fftw_real tmp305;
118 ASSERT_ALIGNED_DOUBLE;
119 tmp301 = X[iostride];
120 tmp302 = X[9 * iostride];
121 tmp303 = tmp301 - tmp302;
122 tmp320 = tmp301 + tmp302;
123 tmp304 = X[5 * iostride];
124 tmp305 = X[13 * iostride];
125 tmp306 = tmp304 - tmp305;
126 tmp321 = tmp304 + tmp305;
127 }
128 tmp307 = (K382683432 * tmp303) + (K923879532 * tmp306);
129 tmp314 = (K923879532 * tmp303) - (K382683432 * tmp306);
130 tmp322 = tmp320 - tmp321;
131 tmp330 = tmp320 + tmp321;
132 }
133 {
134 fftw_real tmp282;
135 fftw_real tmp283;
136 fftw_real tmp285;
137 fftw_real tmp286;
138 ASSERT_ALIGNED_DOUBLE;
139 tmp282 = X[2 * iostride];
140 tmp283 = X[10 * iostride];
141 tmp284 = tmp282 + tmp283;
142 tmp290 = tmp282 - tmp283;
143 tmp285 = X[14 * iostride];
144 tmp286 = X[6 * iostride];
145 tmp287 = tmp285 + tmp286;
146 tmp289 = tmp285 - tmp286;
147 }
148 tmp288 = tmp284 + tmp287;
149 tmp310 = K707106781 * (tmp290 + tmp289);
150 tmp291 = K707106781 * (tmp289 - tmp290);
151 {
152 fftw_real tmp296;
153 fftw_real tmp323;
154 fftw_real tmp299;
155 fftw_real tmp324;
156 ASSERT_ALIGNED_DOUBLE;
157 {
158 fftw_real tmp294;
159 fftw_real tmp295;
160 fftw_real tmp297;
161 fftw_real tmp298;
162 ASSERT_ALIGNED_DOUBLE;
163 tmp294 = X[15 * iostride];
164 tmp295 = X[7 * iostride];
165 tmp296 = tmp294 - tmp295;
166 tmp323 = tmp294 + tmp295;
167 tmp297 = X[3 * iostride];
168 tmp298 = X[11 * iostride];
169 tmp299 = tmp297 - tmp298;
170 tmp324 = tmp297 + tmp298;
171 }
172 tmp300 = (K382683432 * tmp296) - (K923879532 * tmp299);
173 tmp315 = (K923879532 * tmp296) + (K382683432 * tmp299);
174 tmp325 = tmp323 - tmp324;
175 tmp331 = tmp323 + tmp324;
176 }
177 {
178 fftw_real tmp329;
179 fftw_real tmp332;
180 fftw_real tmp327;
181 fftw_real tmp328;
182 ASSERT_ALIGNED_DOUBLE;
183 X[4 * iostride] = tmp281 - tmp288;
184 tmp329 = tmp281 + tmp288;
185 tmp332 = tmp330 + tmp331;
186 X[8 * iostride] = tmp329 - tmp332;
187 X[0] = tmp329 + tmp332;
188 Y[-4 * iostride] = tmp331 - tmp330;
189 tmp327 = tmp287 - tmp284;
190 tmp328 = K707106781 * (tmp325 - tmp322);
191 Y[-2 * iostride] = tmp327 + tmp328;
192 Y[-6 * iostride] = tmp328 - tmp327;
193 }
194 {
195 fftw_real tmp319;
196 fftw_real tmp326;
197 fftw_real tmp313;
198 fftw_real tmp316;
199 ASSERT_ALIGNED_DOUBLE;
200 tmp319 = tmp277 - tmp280;
201 tmp326 = K707106781 * (tmp322 + tmp325);
202 X[6 * iostride] = tmp319 - tmp326;
203 X[2 * iostride] = tmp319 + tmp326;
204 tmp313 = tmp309 + tmp310;
205 tmp316 = tmp314 + tmp315;
206 X[7 * iostride] = tmp313 - tmp316;
207 X[iostride] = tmp313 + tmp316;
208 }
209 tmp317 = tmp292 + tmp291;
210 tmp318 = tmp315 - tmp314;
211 Y[-3 * iostride] = tmp317 + tmp318;
212 Y[-5 * iostride] = tmp318 - tmp317;
213 {
214 fftw_real tmp293;
215 fftw_real tmp308;
216 fftw_real tmp311;
217 fftw_real tmp312;
218 ASSERT_ALIGNED_DOUBLE;
219 tmp293 = tmp291 - tmp292;
220 tmp308 = tmp300 - tmp307;
221 Y[-iostride] = tmp293 + tmp308;
222 Y[-7 * iostride] = tmp308 - tmp293;
223 tmp311 = tmp309 - tmp310;
224 tmp312 = tmp307 + tmp300;
225 X[5 * iostride] = tmp311 - tmp312;
226 X[3 * iostride] = tmp311 + tmp312;
227 }
228 }
229 X = X + dist;
230 Y = Y - dist;
231 for (i = 2; i < m; i = i + 2, X = X + dist, Y = Y - dist, W = W + 15) {
232 fftw_real tmp77;
233 fftw_real tmp161;
234 fftw_real tmp249;
235 fftw_real tmp262;
236 fftw_real tmp88;
237 fftw_real tmp263;
238 fftw_real tmp164;
239 fftw_real tmp246;
240 fftw_real tmp147;
241 fftw_real tmp158;
242 fftw_real tmp231;
243 fftw_real tmp198;
244 fftw_real tmp214;
245 fftw_real tmp232;
246 fftw_real tmp233;
247 fftw_real tmp234;
248 fftw_real tmp193;
249 fftw_real tmp213;
250 fftw_real tmp100;
251 fftw_real tmp222;
252 fftw_real tmp170;
253 fftw_real tmp206;
254 fftw_real tmp111;
255 fftw_real tmp223;
256 fftw_real tmp175;
257 fftw_real tmp207;
258 fftw_real tmp124;
259 fftw_real tmp135;
260 fftw_real tmp226;
261 fftw_real tmp187;
262 fftw_real tmp211;
263 fftw_real tmp227;
264 fftw_real tmp228;
265 fftw_real tmp229;
266 fftw_real tmp182;
267 fftw_real tmp210;
268 ASSERT_ALIGNED_DOUBLE;
269 {
270 fftw_real tmp71;
271 fftw_real tmp248;
272 fftw_real tmp76;
273 fftw_real tmp247;
274 ASSERT_ALIGNED_DOUBLE;
275 tmp71 = X[0];
276 tmp248 = Y[-15 * iostride];
277 {
278 fftw_real tmp73;
279 fftw_real tmp75;
280 fftw_real tmp72;
281 fftw_real tmp74;
282 ASSERT_ALIGNED_DOUBLE;
283 tmp73 = X[8 * iostride];
284 tmp75 = Y[-7 * iostride];
285 tmp72 = c_re(W[7]);
286 tmp74 = c_im(W[7]);
287 tmp76 = (tmp72 * tmp73) - (tmp74 * tmp75);
288 tmp247 = (tmp74 * tmp73) + (tmp72 * tmp75);
289 }
290 tmp77 = tmp71 + tmp76;
291 tmp161 = tmp71 - tmp76;
292 tmp249 = tmp247 + tmp248;
293 tmp262 = tmp248 - tmp247;
294 }
295 {
296 fftw_real tmp82;
297 fftw_real tmp162;
298 fftw_real tmp87;
299 fftw_real tmp163;
300 ASSERT_ALIGNED_DOUBLE;
301 {
302 fftw_real tmp79;
303 fftw_real tmp81;
304 fftw_real tmp78;
305 fftw_real tmp80;
306 ASSERT_ALIGNED_DOUBLE;
307 tmp79 = X[4 * iostride];
308 tmp81 = Y[-11 * iostride];
309 tmp78 = c_re(W[3]);
310 tmp80 = c_im(W[3]);
311 tmp82 = (tmp78 * tmp79) - (tmp80 * tmp81);
312 tmp162 = (tmp80 * tmp79) + (tmp78 * tmp81);
313 }
314 {
315 fftw_real tmp84;
316 fftw_real tmp86;
317 fftw_real tmp83;
318 fftw_real tmp85;
319 ASSERT_ALIGNED_DOUBLE;
320 tmp84 = X[12 * iostride];
321 tmp86 = Y[-3 * iostride];
322 tmp83 = c_re(W[11]);
323 tmp85 = c_im(W[11]);
324 tmp87 = (tmp83 * tmp84) - (tmp85 * tmp86);
325 tmp163 = (tmp85 * tmp84) + (tmp83 * tmp86);
326 }
327 tmp88 = tmp82 + tmp87;
328 tmp263 = tmp82 - tmp87;
329 tmp164 = tmp162 - tmp163;
330 tmp246 = tmp162 + tmp163;
331 }
332 {
333 fftw_real tmp141;
334 fftw_real tmp194;
335 fftw_real tmp157;
336 fftw_real tmp191;
337 fftw_real tmp146;
338 fftw_real tmp195;
339 fftw_real tmp152;
340 fftw_real tmp190;
341 ASSERT_ALIGNED_DOUBLE;
342 {
343 fftw_real tmp138;
344 fftw_real tmp140;
345 fftw_real tmp137;
346 fftw_real tmp139;
347 ASSERT_ALIGNED_DOUBLE;
348 tmp138 = X[15 * iostride];
349 tmp140 = Y[0];
350 tmp137 = c_re(W[14]);
351 tmp139 = c_im(W[14]);
352 tmp141 = (tmp137 * tmp138) - (tmp139 * tmp140);
353 tmp194 = (tmp139 * tmp138) + (tmp137 * tmp140);
354 }
355 {
356 fftw_real tmp154;
357 fftw_real tmp156;
358 fftw_real tmp153;
359 fftw_real tmp155;
360 ASSERT_ALIGNED_DOUBLE;
361 tmp154 = X[11 * iostride];
362 tmp156 = Y[-4 * iostride];
363 tmp153 = c_re(W[10]);
364 tmp155 = c_im(W[10]);
365 tmp157 = (tmp153 * tmp154) - (tmp155 * tmp156);
366 tmp191 = (tmp155 * tmp154) + (tmp153 * tmp156);
367 }
368 {
369 fftw_real tmp143;
370 fftw_real tmp145;
371 fftw_real tmp142;
372 fftw_real tmp144;
373 ASSERT_ALIGNED_DOUBLE;
374 tmp143 = X[7 * iostride];
375 tmp145 = Y[-8 * iostride];
376 tmp142 = c_re(W[6]);
377 tmp144 = c_im(W[6]);
378 tmp146 = (tmp142 * tmp143) - (tmp144 * tmp145);
379 tmp195 = (tmp144 * tmp143) + (tmp142 * tmp145);
380 }
381 {
382 fftw_real tmp149;
383 fftw_real tmp151;
384 fftw_real tmp148;
385 fftw_real tmp150;
386 ASSERT_ALIGNED_DOUBLE;
387 tmp149 = X[3 * iostride];
388 tmp151 = Y[-12 * iostride];
389 tmp148 = c_re(W[2]);
390 tmp150 = c_im(W[2]);
391 tmp152 = (tmp148 * tmp149) - (tmp150 * tmp151);
392 tmp190 = (tmp150 * tmp149) + (tmp148 * tmp151);
393 }
394 {
395 fftw_real tmp196;
396 fftw_real tmp197;
397 fftw_real tmp189;
398 fftw_real tmp192;
399 ASSERT_ALIGNED_DOUBLE;
400 tmp147 = tmp141 + tmp146;
401 tmp158 = tmp152 + tmp157;
402 tmp231 = tmp147 - tmp158;
403 tmp196 = tmp194 - tmp195;
404 tmp197 = tmp152 - tmp157;
405 tmp198 = tmp196 + tmp197;
406 tmp214 = tmp196 - tmp197;
407 tmp232 = tmp194 + tmp195;
408 tmp233 = tmp190 + tmp191;
409 tmp234 = tmp232 - tmp233;
410 tmp189 = tmp141 - tmp146;
411 tmp192 = tmp190 - tmp191;
412 tmp193 = tmp189 - tmp192;
413 tmp213 = tmp189 + tmp192;
414 }
415 }
416 {
417 fftw_real tmp94;
418 fftw_real tmp166;
419 fftw_real tmp99;
420 fftw_real tmp167;
421 fftw_real tmp168;
422 fftw_real tmp169;
423 ASSERT_ALIGNED_DOUBLE;
424 {
425 fftw_real tmp91;
426 fftw_real tmp93;
427 fftw_real tmp90;
428 fftw_real tmp92;
429 ASSERT_ALIGNED_DOUBLE;
430 tmp91 = X[2 * iostride];
431 tmp93 = Y[-13 * iostride];
432 tmp90 = c_re(W[1]);
433 tmp92 = c_im(W[1]);
434 tmp94 = (tmp90 * tmp91) - (tmp92 * tmp93);
435 tmp166 = (tmp92 * tmp91) + (tmp90 * tmp93);
436 }
437 {
438 fftw_real tmp96;
439 fftw_real tmp98;
440 fftw_real tmp95;
441 fftw_real tmp97;
442 ASSERT_ALIGNED_DOUBLE;
443 tmp96 = X[10 * iostride];
444 tmp98 = Y[-5 * iostride];
445 tmp95 = c_re(W[9]);
446 tmp97 = c_im(W[9]);
447 tmp99 = (tmp95 * tmp96) - (tmp97 * tmp98);
448 tmp167 = (tmp97 * tmp96) + (tmp95 * tmp98);
449 }
450 tmp100 = tmp94 + tmp99;
451 tmp222 = tmp166 + tmp167;
452 tmp168 = tmp166 - tmp167;
453 tmp169 = tmp94 - tmp99;
454 tmp170 = tmp168 - tmp169;
455 tmp206 = tmp169 + tmp168;
456 }
457 {
458 fftw_real tmp105;
459 fftw_real tmp172;
460 fftw_real tmp110;
461 fftw_real tmp173;
462 fftw_real tmp171;
463 fftw_real tmp174;
464 ASSERT_ALIGNED_DOUBLE;
465 {
466 fftw_real tmp102;
467 fftw_real tmp104;
468 fftw_real tmp101;
469 fftw_real tmp103;
470 ASSERT_ALIGNED_DOUBLE;
471 tmp102 = X[14 * iostride];
472 tmp104 = Y[-iostride];
473 tmp101 = c_re(W[13]);
474 tmp103 = c_im(W[13]);
475 tmp105 = (tmp101 * tmp102) - (tmp103 * tmp104);
476 tmp172 = (tmp103 * tmp102) + (tmp101 * tmp104);
477 }
478 {
479 fftw_real tmp107;
480 fftw_real tmp109;
481 fftw_real tmp106;
482 fftw_real tmp108;
483 ASSERT_ALIGNED_DOUBLE;
484 tmp107 = X[6 * iostride];
485 tmp109 = Y[-9 * iostride];
486 tmp106 = c_re(W[5]);
487 tmp108 = c_im(W[5]);
488 tmp110 = (tmp106 * tmp107) - (tmp108 * tmp109);
489 tmp173 = (tmp108 * tmp107) + (tmp106 * tmp109);
490 }
491 tmp111 = tmp105 + tmp110;
492 tmp223 = tmp172 + tmp173;
493 tmp171 = tmp105 - tmp110;
494 tmp174 = tmp172 - tmp173;
495 tmp175 = tmp171 + tmp174;
496 tmp207 = tmp171 - tmp174;
497 }
498 {
499 fftw_real tmp118;
500 fftw_real tmp178;
501 fftw_real tmp134;
502 fftw_real tmp185;
503 fftw_real tmp123;
504 fftw_real tmp179;
505 fftw_real tmp129;
506 fftw_real tmp184;
507 ASSERT_ALIGNED_DOUBLE;
508 {
509 fftw_real tmp115;
510 fftw_real tmp117;
511 fftw_real tmp114;
512 fftw_real tmp116;
513 ASSERT_ALIGNED_DOUBLE;
514 tmp115 = X[iostride];
515 tmp117 = Y[-14 * iostride];
516 tmp114 = c_re(W[0]);
517 tmp116 = c_im(W[0]);
518 tmp118 = (tmp114 * tmp115) - (tmp116 * tmp117);
519 tmp178 = (tmp116 * tmp115) + (tmp114 * tmp117);
520 }
521 {
522 fftw_real tmp131;
523 fftw_real tmp133;
524 fftw_real tmp130;
525 fftw_real tmp132;
526 ASSERT_ALIGNED_DOUBLE;
527 tmp131 = X[13 * iostride];
528 tmp133 = Y[-2 * iostride];
529 tmp130 = c_re(W[12]);
530 tmp132 = c_im(W[12]);
531 tmp134 = (tmp130 * tmp131) - (tmp132 * tmp133);
532 tmp185 = (tmp132 * tmp131) + (tmp130 * tmp133);
533 }
534 {
535 fftw_real tmp120;
536 fftw_real tmp122;
537 fftw_real tmp119;
538 fftw_real tmp121;
539 ASSERT_ALIGNED_DOUBLE;
540 tmp120 = X[9 * iostride];
541 tmp122 = Y[-6 * iostride];
542 tmp119 = c_re(W[8]);
543 tmp121 = c_im(W[8]);
544 tmp123 = (tmp119 * tmp120) - (tmp121 * tmp122);
545 tmp179 = (tmp121 * tmp120) + (tmp119 * tmp122);
546 }
547 {
548 fftw_real tmp126;
549 fftw_real tmp128;
550 fftw_real tmp125;
551 fftw_real tmp127;
552 ASSERT_ALIGNED_DOUBLE;
553 tmp126 = X[5 * iostride];
554 tmp128 = Y[-10 * iostride];
555 tmp125 = c_re(W[4]);
556 tmp127 = c_im(W[4]);
557 tmp129 = (tmp125 * tmp126) - (tmp127 * tmp128);
558 tmp184 = (tmp127 * tmp126) + (tmp125 * tmp128);
559 }
560 {
561 fftw_real tmp183;
562 fftw_real tmp186;
563 fftw_real tmp180;
564 fftw_real tmp181;
565 ASSERT_ALIGNED_DOUBLE;
566 tmp124 = tmp118 + tmp123;
567 tmp135 = tmp129 + tmp134;
568 tmp226 = tmp124 - tmp135;
569 tmp183 = tmp118 - tmp123;
570 tmp186 = tmp184 - tmp185;
571 tmp187 = tmp183 - tmp186;
572 tmp211 = tmp183 + tmp186;
573 tmp227 = tmp178 + tmp179;
574 tmp228 = tmp184 + tmp185;
575 tmp229 = tmp227 - tmp228;
576 tmp180 = tmp178 - tmp179;
577 tmp181 = tmp129 - tmp134;
578 tmp182 = tmp180 + tmp181;
579 tmp210 = tmp180 - tmp181;
580 }
581 }
582 {
583 fftw_real tmp177;
584 fftw_real tmp201;
585 fftw_real tmp271;
586 fftw_real tmp273;
587 fftw_real tmp200;
588 fftw_real tmp274;
589 fftw_real tmp204;
590 fftw_real tmp272;
591 ASSERT_ALIGNED_DOUBLE;
592 {
593 fftw_real tmp165;
594 fftw_real tmp176;
595 fftw_real tmp269;
596 fftw_real tmp270;
597 ASSERT_ALIGNED_DOUBLE;
598 tmp165 = tmp161 - tmp164;
599 tmp176 = K707106781 * (tmp170 - tmp175);
600 tmp177 = tmp165 + tmp176;
601 tmp201 = tmp165 - tmp176;
602 tmp269 = K707106781 * (tmp207 - tmp206);
603 tmp270 = tmp263 + tmp262;
604 tmp271 = tmp269 + tmp270;
605 tmp273 = tmp270 - tmp269;
606 }
607 {
608 fftw_real tmp188;
609 fftw_real tmp199;
610 fftw_real tmp202;
611 fftw_real tmp203;
612 ASSERT_ALIGNED_DOUBLE;
613 tmp188 = (K923879532 * tmp182) + (K382683432 * tmp187);
614 tmp199 = (K382683432 * tmp193) - (K923879532 * tmp198);
615 tmp200 = tmp188 + tmp199;
616 tmp274 = tmp199 - tmp188;
617 tmp202 = (K382683432 * tmp182) - (K923879532 * tmp187);
618 tmp203 = (K382683432 * tmp198) + (K923879532 * tmp193);
619 tmp204 = tmp202 - tmp203;
620 tmp272 = tmp202 + tmp203;
621 }
622 Y[-11 * iostride] = tmp177 - tmp200;
623 X[3 * iostride] = tmp177 + tmp200;
624 Y[-15 * iostride] = tmp201 - tmp204;
625 X[7 * iostride] = tmp201 + tmp204;
626 X[11 * iostride] = -(tmp271 - tmp272);
627 Y[-3 * iostride] = tmp272 + tmp271;
628 X[15 * iostride] = -(tmp273 - tmp274);
629 Y[-7 * iostride] = tmp274 + tmp273;
630 }
631 {
632 fftw_real tmp209;
633 fftw_real tmp217;
634 fftw_real tmp265;
635 fftw_real tmp267;
636 fftw_real tmp216;
637 fftw_real tmp268;
638 fftw_real tmp220;
639 fftw_real tmp266;
640 ASSERT_ALIGNED_DOUBLE;
641 {
642 fftw_real tmp205;
643 fftw_real tmp208;
644 fftw_real tmp261;
645 fftw_real tmp264;
646 ASSERT_ALIGNED_DOUBLE;
647 tmp205 = tmp161 + tmp164;
648 tmp208 = K707106781 * (tmp206 + tmp207);
649 tmp209 = tmp205 + tmp208;
650 tmp217 = tmp205 - tmp208;
651 tmp261 = K707106781 * (tmp170 + tmp175);
652 tmp264 = tmp262 - tmp263;
653 tmp265 = tmp261 + tmp264;
654 tmp267 = tmp264 - tmp261;
655 }
656 {
657 fftw_real tmp212;
658 fftw_real tmp215;
659 fftw_real tmp218;
660 fftw_real tmp219;
661 ASSERT_ALIGNED_DOUBLE;
662 tmp212 = (K382683432 * tmp210) + (K923879532 * tmp211);
663 tmp215 = (K923879532 * tmp213) - (K382683432 * tmp214);
664 tmp216 = tmp212 + tmp215;
665 tmp268 = tmp215 - tmp212;
666 tmp218 = (K923879532 * tmp210) - (K382683432 * tmp211);
667 tmp219 = (K923879532 * tmp214) + (K382683432 * tmp213);
668 tmp220 = tmp218 - tmp219;
669 tmp266 = tmp218 + tmp219;
670 }
671 Y[-9 * iostride] = tmp209 - tmp216;
672 X[iostride] = tmp209 + tmp216;
673 Y[-13 * iostride] = tmp217 - tmp220;
674 X[5 * iostride] = tmp217 + tmp220;
675 X[9 * iostride] = -(tmp265 - tmp266);
676 Y[-iostride] = tmp266 + tmp265;
677 X[13 * iostride] = -(tmp267 - tmp268);
678 Y[-5 * iostride] = tmp268 + tmp267;
679 }
680 {
681 fftw_real tmp225;
682 fftw_real tmp237;
683 fftw_real tmp257;
684 fftw_real tmp259;
685 fftw_real tmp236;
686 fftw_real tmp260;
687 fftw_real tmp240;
688 fftw_real tmp258;
689 ASSERT_ALIGNED_DOUBLE;
690 {
691 fftw_real tmp221;
692 fftw_real tmp224;
693 fftw_real tmp255;
694 fftw_real tmp256;
695 ASSERT_ALIGNED_DOUBLE;
696 tmp221 = tmp77 - tmp88;
697 tmp224 = tmp222 - tmp223;
698 tmp225 = tmp221 + tmp224;
699 tmp237 = tmp221 - tmp224;
700 tmp255 = tmp111 - tmp100;
701 tmp256 = tmp249 - tmp246;
702 tmp257 = tmp255 + tmp256;
703 tmp259 = tmp256 - tmp255;
704 }
705 {
706 fftw_real tmp230;
707 fftw_real tmp235;
708 fftw_real tmp238;
709 fftw_real tmp239;
710 ASSERT_ALIGNED_DOUBLE;
711 tmp230 = tmp226 + tmp229;
712 tmp235 = tmp231 - tmp234;
713 tmp236 = K707106781 * (tmp230 + tmp235);
714 tmp260 = K707106781 * (tmp235 - tmp230);
715 tmp238 = tmp229 - tmp226;
716 tmp239 = tmp231 + tmp234;
717 tmp240 = K707106781 * (tmp238 - tmp239);
718 tmp258 = K707106781 * (tmp238 + tmp239);
719 }
720 Y[-10 * iostride] = tmp225 - tmp236;
721 X[2 * iostride] = tmp225 + tmp236;
722 Y[-14 * iostride] = tmp237 - tmp240;
723 X[6 * iostride] = tmp237 + tmp240;
724 X[10 * iostride] = -(tmp257 - tmp258);
725 Y[-2 * iostride] = tmp258 + tmp257;
726 X[14 * iostride] = -(tmp259 - tmp260);
727 Y[-6 * iostride] = tmp260 + tmp259;
728 }
729 {
730 fftw_real tmp113;
731 fftw_real tmp241;
732 fftw_real tmp251;
733 fftw_real tmp253;
734 fftw_real tmp160;
735 fftw_real tmp254;
736 fftw_real tmp244;
737 fftw_real tmp252;
738 ASSERT_ALIGNED_DOUBLE;
739 {
740 fftw_real tmp89;
741 fftw_real tmp112;
742 fftw_real tmp245;
743 fftw_real tmp250;
744 ASSERT_ALIGNED_DOUBLE;
745 tmp89 = tmp77 + tmp88;
746 tmp112 = tmp100 + tmp111;
747 tmp113 = tmp89 + tmp112;
748 tmp241 = tmp89 - tmp112;
749 tmp245 = tmp222 + tmp223;
750 tmp250 = tmp246 + tmp249;
751 tmp251 = tmp245 + tmp250;
752 tmp253 = tmp250 - tmp245;
753 }
754 {
755 fftw_real tmp136;
756 fftw_real tmp159;
757 fftw_real tmp242;
758 fftw_real tmp243;
759 ASSERT_ALIGNED_DOUBLE;
760 tmp136 = tmp124 + tmp135;
761 tmp159 = tmp147 + tmp158;
762 tmp160 = tmp136 + tmp159;
763 tmp254 = tmp159 - tmp136;
764 tmp242 = tmp227 + tmp228;
765 tmp243 = tmp232 + tmp233;
766 tmp244 = tmp242 - tmp243;
767 tmp252 = tmp242 + tmp243;
768 }
769 Y[-8 * iostride] = tmp113 - tmp160;
770 X[0] = tmp113 + tmp160;
771 Y[-12 * iostride] = tmp241 - tmp244;
772 X[4 * iostride] = tmp241 + tmp244;
773 X[8 * iostride] = -(tmp251 - tmp252);
774 Y[0] = tmp252 + tmp251;
775 X[12 * iostride] = -(tmp253 - tmp254);
776 Y[-4 * iostride] = tmp254 + tmp253;
777 }
778 }
779 if (i == m) {
780 fftw_real tmp5;
781 fftw_real tmp41;
782 fftw_real tmp61;
783 fftw_real tmp67;
784 fftw_real tmp30;
785 fftw_real tmp49;
786 fftw_real tmp34;
787 fftw_real tmp50;
788 fftw_real tmp12;
789 fftw_real tmp66;
790 fftw_real tmp44;
791 fftw_real tmp58;
792 fftw_real tmp19;
793 fftw_real tmp46;
794 fftw_real tmp23;
795 fftw_real tmp47;
796 ASSERT_ALIGNED_DOUBLE;
797 {
798 fftw_real tmp1;
799 fftw_real tmp60;
800 fftw_real tmp4;
801 fftw_real tmp59;
802 fftw_real tmp2;
803 fftw_real tmp3;
804 ASSERT_ALIGNED_DOUBLE;
805 tmp1 = X[0];
806 tmp60 = X[8 * iostride];
807 tmp2 = X[4 * iostride];
808 tmp3 = X[12 * iostride];
809 tmp4 = K707106781 * (tmp2 - tmp3);
810 tmp59 = K707106781 * (tmp2 + tmp3);
811 tmp5 = tmp1 + tmp4;
812 tmp41 = tmp1 - tmp4;
813 tmp61 = tmp59 + tmp60;
814 tmp67 = tmp60 - tmp59;
815 }
816 {
817 fftw_real tmp29;
818 fftw_real tmp33;
819 fftw_real tmp27;
820 fftw_real tmp31;
821 ASSERT_ALIGNED_DOUBLE;
822 {
823 fftw_real tmp28;
824 fftw_real tmp32;
825 fftw_real tmp25;
826 fftw_real tmp26;
827 ASSERT_ALIGNED_DOUBLE;
828 tmp28 = X[15 * iostride];
829 tmp29 = K2_000000000 * tmp28;
830 tmp32 = X[7 * iostride];
831 tmp33 = K2_000000000 * tmp32;
832 tmp25 = X[3 * iostride];
833 tmp26 = X[11 * iostride];
834 tmp27 = K1_414213562 * (tmp25 - tmp26);
835 tmp31 = K1_414213562 * (tmp25 + tmp26);
836 }
837 tmp30 = tmp27 - tmp29;
838 tmp49 = tmp27 + tmp29;
839 tmp34 = tmp31 + tmp33;
840 tmp50 = tmp33 - tmp31;
841 }
842 {
843 fftw_real tmp8;
844 fftw_real tmp42;
845 fftw_real tmp11;
846 fftw_real tmp43;
847 ASSERT_ALIGNED_DOUBLE;
848 {
849 fftw_real tmp6;
850 fftw_real tmp7;
851 fftw_real tmp9;
852 fftw_real tmp10;
853 ASSERT_ALIGNED_DOUBLE;
854 tmp6 = X[2 * iostride];
855 tmp7 = X[10 * iostride];
856 tmp8 = (K923879532 * tmp6) - (K382683432 * tmp7);
857 tmp42 = (K382683432 * tmp6) + (K923879532 * tmp7);
858 tmp9 = X[6 * iostride];
859 tmp10 = X[14 * iostride];
860 tmp11 = (K382683432 * tmp9) - (K923879532 * tmp10);
861 tmp43 = (K923879532 * tmp9) + (K382683432 * tmp10);
862 }
863 tmp12 = tmp8 + tmp11;
864 tmp66 = tmp11 - tmp8;
865 tmp44 = tmp42 - tmp43;
866 tmp58 = tmp42 + tmp43;
867 }
868 {
869 fftw_real tmp15;
870 fftw_real tmp22;
871 fftw_real tmp18;
872 fftw_real tmp20;
873 ASSERT_ALIGNED_DOUBLE;
874 {
875 fftw_real tmp14;
876 fftw_real tmp21;
877 fftw_real tmp16;
878 fftw_real tmp17;
879 ASSERT_ALIGNED_DOUBLE;
880 tmp14 = X[iostride];
881 tmp15 = K2_000000000 * tmp14;
882 tmp21 = X[9 * iostride];
883 tmp22 = K2_000000000 * tmp21;
884 tmp16 = X[5 * iostride];
885 tmp17 = X[13 * iostride];
886 tmp18 = K1_414213562 * (tmp16 - tmp17);
887 tmp20 = K1_414213562 * (tmp16 + tmp17);
888 }
889 tmp19 = tmp15 + tmp18;
890 tmp46 = tmp15 - tmp18;
891 tmp23 = tmp20 + tmp22;
892 tmp47 = tmp22 - tmp20;
893 }
894 {
895 fftw_real tmp13;
896 fftw_real tmp62;
897 fftw_real tmp36;
898 fftw_real tmp57;
899 fftw_real tmp24;
900 fftw_real tmp35;
901 ASSERT_ALIGNED_DOUBLE;
902 tmp13 = tmp5 - tmp12;
903 tmp62 = tmp58 + tmp61;
904 tmp24 = (K097545161 * tmp19) + (K490392640 * tmp23);
905 tmp35 = (K097545161 * tmp30) - (K490392640 * tmp34);
906 tmp36 = tmp24 + tmp35;
907 tmp57 = tmp35 - tmp24;
908 X[4 * iostride] = tmp13 - tmp36;
909 X[3 * iostride] = tmp13 + tmp36;
910 Y[0] = tmp57 - tmp62;
911 Y[-7 * iostride] = tmp57 + tmp62;
912 }
913 {
914 fftw_real tmp37;
915 fftw_real tmp64;
916 fftw_real tmp40;
917 fftw_real tmp63;
918 fftw_real tmp38;
919 fftw_real tmp39;
920 ASSERT_ALIGNED_DOUBLE;
921 tmp37 = tmp5 + tmp12;
922 tmp64 = tmp61 - tmp58;
923 tmp38 = (K490392640 * tmp19) - (K097545161 * tmp23);
924 tmp39 = (K490392640 * tmp30) + (K097545161 * tmp34);
925 tmp40 = tmp38 + tmp39;
926 tmp63 = tmp39 - tmp38;
927 X[7 * iostride] = tmp37 - tmp40;
928 X[0] = tmp37 + tmp40;
929 Y[-4 * iostride] = tmp63 - tmp64;
930 Y[-3 * iostride] = tmp63 + tmp64;
931 }
932 {
933 fftw_real tmp45;
934 fftw_real tmp68;
935 fftw_real tmp52;
936 fftw_real tmp65;
937 fftw_real tmp48;
938 fftw_real tmp51;
939 ASSERT_ALIGNED_DOUBLE;
940 tmp45 = tmp41 + tmp44;
941 tmp68 = tmp66 - tmp67;
942 tmp48 = (K415734806 * tmp46) + (K277785116 * tmp47);
943 tmp51 = (K415734806 * tmp49) + (K277785116 * tmp50);
944 tmp52 = tmp48 - tmp51;
945 tmp65 = tmp48 + tmp51;
946 X[6 * iostride] = tmp45 - tmp52;
947 X[iostride] = tmp45 + tmp52;
948 Y[-5 * iostride] = -(tmp65 + tmp68);
949 Y[-2 * iostride] = tmp68 - tmp65;
950 }
951 {
952 fftw_real tmp53;
953 fftw_real tmp70;
954 fftw_real tmp56;
955 fftw_real tmp69;
956 fftw_real tmp54;
957 fftw_real tmp55;
958 ASSERT_ALIGNED_DOUBLE;
959 tmp53 = tmp41 - tmp44;
960 tmp70 = tmp66 + tmp67;
961 tmp54 = (K415734806 * tmp50) - (K277785116 * tmp49);
962 tmp55 = (K415734806 * tmp47) - (K277785116 * tmp46);
963 tmp56 = tmp54 - tmp55;
964 tmp69 = tmp55 + tmp54;
965 X[5 * iostride] = tmp53 - tmp56;
966 X[2 * iostride] = tmp53 + tmp56;
967 Y[-6 * iostride] = tmp69 - tmp70;
968 Y[-iostride] = tmp69 + tmp70;
969 }
970 }
971 }
972
973 static const int twiddle_order[] =
974 { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
975 fftw_codelet_desc fftw_hc2hc_forward_16_desc = {
976 "fftw_hc2hc_forward_16",
977 (void (*)()) fftw_hc2hc_forward_16,
978 16,
979 FFTW_FORWARD,
980 FFTW_HC2HC,
981 355,
982 15,
983 twiddle_order,
984 };
985