2 * Copyright (c) 1997-1999 Massachusetts Institute of Technology
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.
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.
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
20 /* This file was automatically generated --- DO NOT EDIT */
21 /* Generated on Tue May 18 13:54:55 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -notwiddleinv 16 */
29 * This function contains 144 FP additions, 24 FP multiplications,
30 * (or, 136 additions, 16 multiplications, 8 fused multiply/add),
31 * 46 stack variables, and 64 memory accesses
33 static const fftw_real K382683432
= FFTW_KONST(+0.382683432365089771728459984030398866761344562);
34 static const fftw_real K923879532
= FFTW_KONST(+0.923879532511286756128183189396788286822416626);
35 static const fftw_real K707106781
= FFTW_KONST(+0.707106781186547524400844362104849039284835938);
44 void fftwi_no_twiddle_16(const fftw_complex
*input
, fftw_complex
*output
, int istride
, int ostride
)
78 ASSERT_ALIGNED_DOUBLE();
88 ASSERT_ALIGNED_DOUBLE();
94 ASSERT_ALIGNED_DOUBLE();
95 tmp1
= c_re(input
[0]);
96 tmp2
= c_re(input
[8 * istride
]);
99 tmp32
= c_im(input
[0]);
100 tmp33
= c_im(input
[8 * istride
]);
101 tmp34
= tmp32
+ tmp33
;
102 tmp48
= tmp32
- tmp33
;
109 ASSERT_ALIGNED_DOUBLE();
110 tmp4
= c_re(input
[4 * istride
]);
111 tmp5
= c_re(input
[12 * istride
]);
114 tmp35
= c_im(input
[4 * istride
]);
115 tmp36
= c_im(input
[12 * istride
]);
116 tmp37
= tmp35
+ tmp36
;
117 tmp82
= tmp35
- tmp36
;
120 tmp129
= tmp3
- tmp6
;
121 tmp38
= tmp34
+ tmp37
;
122 tmp115
= tmp34
- tmp37
;
123 tmp49
= tmp47
+ tmp48
;
124 tmp95
= tmp48
- tmp47
;
125 tmp83
= tmp81
- tmp82
;
126 tmp105
= tmp81
+ tmp82
;
137 ASSERT_ALIGNED_DOUBLE();
143 ASSERT_ALIGNED_DOUBLE();
144 tmp23
= c_re(input
[15 * istride
]);
145 tmp24
= c_re(input
[7 * istride
]);
146 tmp25
= tmp23
+ tmp24
;
147 tmp74
= tmp23
- tmp24
;
148 tmp70
= c_im(input
[15 * istride
]);
149 tmp71
= c_im(input
[7 * istride
]);
150 tmp72
= tmp70
- tmp71
;
151 tmp124
= tmp70
+ tmp71
;
158 ASSERT_ALIGNED_DOUBLE();
159 tmp26
= c_re(input
[3 * istride
]);
160 tmp27
= c_re(input
[11 * istride
]);
161 tmp28
= tmp26
+ tmp27
;
162 tmp69
= tmp26
- tmp27
;
163 tmp75
= c_im(input
[3 * istride
]);
164 tmp76
= c_im(input
[11 * istride
]);
165 tmp77
= tmp75
- tmp76
;
166 tmp125
= tmp75
+ tmp76
;
168 tmp29
= tmp25
+ tmp28
;
169 tmp123
= tmp25
- tmp28
;
170 tmp73
= tmp69
+ tmp72
;
171 tmp101
= tmp72
- tmp69
;
172 tmp78
= tmp74
- tmp77
;
173 tmp102
= tmp74
+ tmp77
;
174 tmp126
= tmp124
- tmp125
;
175 tmp141
= tmp124
+ tmp125
;
186 ASSERT_ALIGNED_DOUBLE();
192 ASSERT_ALIGNED_DOUBLE();
193 tmp8
= c_re(input
[2 * istride
]);
194 tmp9
= c_re(input
[10 * istride
]);
197 tmp39
= c_im(input
[2 * istride
]);
198 tmp40
= c_im(input
[10 * istride
]);
199 tmp41
= tmp39
+ tmp40
;
200 tmp51
= tmp39
- tmp40
;
207 ASSERT_ALIGNED_DOUBLE();
208 tmp11
= c_re(input
[14 * istride
]);
209 tmp12
= c_re(input
[6 * istride
]);
210 tmp13
= tmp11
+ tmp12
;
211 tmp54
= tmp11
- tmp12
;
212 tmp42
= c_im(input
[14 * istride
]);
213 tmp43
= c_im(input
[6 * istride
]);
214 tmp44
= tmp42
+ tmp43
;
215 tmp53
= tmp42
- tmp43
;
217 tmp14
= tmp10
+ tmp13
;
218 tmp116
= tmp10
- tmp13
;
219 tmp45
= tmp41
+ tmp44
;
220 tmp130
= tmp44
- tmp41
;
221 tmp52
= tmp50
+ tmp51
;
222 tmp84
= tmp50
- tmp51
;
223 tmp55
= tmp53
- tmp54
;
224 tmp85
= tmp54
+ tmp53
;
235 ASSERT_ALIGNED_DOUBLE();
241 ASSERT_ALIGNED_DOUBLE();
242 tmp16
= c_re(input
[istride
]);
243 tmp17
= c_re(input
[9 * istride
]);
244 tmp18
= tmp16
+ tmp17
;
245 tmp63
= tmp16
- tmp17
;
246 tmp59
= c_im(input
[istride
]);
247 tmp60
= c_im(input
[9 * istride
]);
248 tmp61
= tmp59
- tmp60
;
249 tmp119
= tmp59
+ tmp60
;
256 ASSERT_ALIGNED_DOUBLE();
257 tmp19
= c_re(input
[5 * istride
]);
258 tmp20
= c_re(input
[13 * istride
]);
259 tmp21
= tmp19
+ tmp20
;
260 tmp58
= tmp19
- tmp20
;
261 tmp64
= c_im(input
[5 * istride
]);
262 tmp65
= c_im(input
[13 * istride
]);
263 tmp66
= tmp64
- tmp65
;
264 tmp120
= tmp64
+ tmp65
;
266 tmp22
= tmp18
+ tmp21
;
267 tmp118
= tmp18
- tmp21
;
268 tmp62
= tmp58
+ tmp61
;
269 tmp98
= tmp61
- tmp58
;
270 tmp67
= tmp63
- tmp66
;
271 tmp99
= tmp63
+ tmp66
;
272 tmp121
= tmp119
- tmp120
;
273 tmp140
= tmp119
+ tmp120
;
280 ASSERT_ALIGNED_DOUBLE();
281 tmp15
= tmp7
+ tmp14
;
282 tmp30
= tmp22
+ tmp29
;
283 c_re(output
[8 * ostride
]) = tmp15
- tmp30
;
284 c_re(output
[0]) = tmp15
+ tmp30
;
285 tmp31
= tmp22
- tmp29
;
286 tmp46
= tmp38
- tmp45
;
287 c_im(output
[4 * ostride
]) = tmp31
+ tmp46
;
288 c_im(output
[12 * ostride
]) = tmp46
- tmp31
;
295 ASSERT_ALIGNED_DOUBLE();
296 tmp139
= tmp38
+ tmp45
;
297 tmp142
= tmp140
+ tmp141
;
298 c_im(output
[8 * ostride
]) = tmp139
- tmp142
;
299 c_im(output
[0]) = tmp139
+ tmp142
;
300 tmp143
= tmp7
- tmp14
;
301 tmp144
= tmp141
- tmp140
;
302 c_re(output
[12 * ostride
]) = tmp143
- tmp144
;
303 c_re(output
[4 * ostride
]) = tmp143
+ tmp144
;
312 ASSERT_ALIGNED_DOUBLE();
313 tmp117
= tmp115
- tmp116
;
314 tmp131
= tmp129
+ tmp130
;
315 tmp122
= tmp118
- tmp121
;
316 tmp127
= tmp123
+ tmp126
;
317 tmp128
= K707106781
* (tmp122
- tmp127
);
318 tmp132
= K707106781
* (tmp122
+ tmp127
);
319 c_im(output
[14 * ostride
]) = tmp117
- tmp128
;
320 c_im(output
[6 * ostride
]) = tmp117
+ tmp128
;
321 c_re(output
[10 * ostride
]) = tmp131
- tmp132
;
322 c_re(output
[2 * ostride
]) = tmp131
+ tmp132
;
331 ASSERT_ALIGNED_DOUBLE();
332 tmp133
= tmp116
+ tmp115
;
333 tmp137
= tmp129
- tmp130
;
334 tmp134
= tmp118
+ tmp121
;
335 tmp135
= tmp126
- tmp123
;
336 tmp136
= K707106781
* (tmp134
+ tmp135
);
337 tmp138
= K707106781
* (tmp135
- tmp134
);
338 c_im(output
[10 * ostride
]) = tmp133
- tmp136
;
339 c_im(output
[2 * ostride
]) = tmp133
+ tmp136
;
340 c_re(output
[14 * ostride
]) = tmp137
- tmp138
;
341 c_re(output
[6 * ostride
]) = tmp137
+ tmp138
;
352 ASSERT_ALIGNED_DOUBLE();
360 ASSERT_ALIGNED_DOUBLE();
361 tmp56
= K707106781
* (tmp52
+ tmp55
);
362 tmp57
= tmp49
+ tmp56
;
363 tmp89
= tmp49
- tmp56
;
364 tmp90
= (K923879532
* tmp67
) - (K382683432
* tmp62
);
365 tmp91
= (K382683432
* tmp73
) + (K923879532
* tmp78
);
366 tmp92
= tmp90
- tmp91
;
367 tmp94
= tmp90
+ tmp91
;
368 tmp86
= K707106781
* (tmp84
+ tmp85
);
369 tmp87
= tmp83
- tmp86
;
370 tmp93
= tmp83
+ tmp86
;
371 tmp68
= (K923879532
* tmp62
) + (K382683432
* tmp67
);
372 tmp79
= (K923879532
* tmp73
) - (K382683432
* tmp78
);
373 tmp80
= tmp68
+ tmp79
;
374 tmp88
= tmp79
- tmp68
;
376 c_im(output
[9 * ostride
]) = tmp57
- tmp80
;
377 c_im(output
[ostride
]) = tmp57
+ tmp80
;
378 c_re(output
[13 * ostride
]) = tmp87
- tmp88
;
379 c_re(output
[5 * ostride
]) = tmp87
+ tmp88
;
380 c_im(output
[13 * ostride
]) = tmp89
- tmp92
;
381 c_im(output
[5 * ostride
]) = tmp89
+ tmp92
;
382 c_re(output
[9 * ostride
]) = tmp93
- tmp94
;
383 c_re(output
[ostride
]) = tmp93
+ tmp94
;
394 ASSERT_ALIGNED_DOUBLE();
402 ASSERT_ALIGNED_DOUBLE();
403 tmp96
= K707106781
* (tmp84
- tmp85
);
404 tmp97
= tmp95
+ tmp96
;
405 tmp109
= tmp95
- tmp96
;
406 tmp110
= (K382683432
* tmp99
) - (K923879532
* tmp98
);
407 tmp111
= (K923879532
* tmp101
) + (K382683432
* tmp102
);
408 tmp112
= tmp110
- tmp111
;
409 tmp114
= tmp110
+ tmp111
;
410 tmp106
= K707106781
* (tmp55
- tmp52
);
411 tmp107
= tmp105
- tmp106
;
412 tmp113
= tmp105
+ tmp106
;
413 tmp100
= (K382683432
* tmp98
) + (K923879532
* tmp99
);
414 tmp103
= (K382683432
* tmp101
) - (K923879532
* tmp102
);
415 tmp104
= tmp100
+ tmp103
;
416 tmp108
= tmp103
- tmp100
;
418 c_im(output
[11 * ostride
]) = tmp97
- tmp104
;
419 c_im(output
[3 * ostride
]) = tmp97
+ tmp104
;
420 c_re(output
[15 * ostride
]) = tmp107
- tmp108
;
421 c_re(output
[7 * ostride
]) = tmp107
+ tmp108
;
422 c_im(output
[15 * ostride
]) = tmp109
- tmp112
;
423 c_im(output
[7 * ostride
]) = tmp109
+ tmp112
;
424 c_re(output
[11 * ostride
]) = tmp113
- tmp114
;
425 c_re(output
[3 * ostride
]) = tmp113
+ tmp114
;
429 fftw_codelet_desc fftwi_no_twiddle_16_desc
=
431 "fftwi_no_twiddle_16",
432 (void (*)()) fftwi_no_twiddle_16
,