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:28 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -notwiddle 12 */
29 * This function contains 96 FP additions, 16 FP multiplications,
30 * (or, 88 additions, 8 multiplications, 8 fused multiply/add),
31 * 40 stack variables, and 48 memory accesses
33 static const fftw_real K866025403
= FFTW_KONST(+0.866025403784438646763723170752936183471402627);
34 static const fftw_real K500000000
= FFTW_KONST(+0.500000000000000000000000000000000000000000000);
43 void fftw_no_twiddle_12(const fftw_complex
*input
, fftw_complex
*output
, int istride
, int ostride
)
69 ASSERT_ALIGNED_DOUBLE();
75 ASSERT_ALIGNED_DOUBLE();
76 tmp1
= c_re(input
[0]);
77 tmp2
= c_re(input
[4 * istride
]);
78 tmp3
= c_re(input
[8 * istride
]);
81 tmp53
= tmp1
- (K500000000
* tmp4
);
82 tmp36
= K866025403
* (tmp3
- tmp2
);
89 ASSERT_ALIGNED_DOUBLE();
90 tmp24
= c_im(input
[0]);
91 tmp25
= c_im(input
[4 * istride
]);
92 tmp26
= c_im(input
[8 * istride
]);
93 tmp27
= tmp25
+ tmp26
;
94 tmp28
= tmp24
+ tmp27
;
95 tmp35
= tmp24
- (K500000000
* tmp27
);
96 tmp54
= K866025403
* (tmp25
- tmp26
);
103 ASSERT_ALIGNED_DOUBLE();
104 tmp6
= c_re(input
[6 * istride
]);
105 tmp7
= c_re(input
[10 * istride
]);
106 tmp8
= c_re(input
[2 * istride
]);
109 tmp56
= tmp6
- (K500000000
* tmp9
);
110 tmp39
= K866025403
* (tmp8
- tmp7
);
117 ASSERT_ALIGNED_DOUBLE();
118 tmp29
= c_im(input
[6 * istride
]);
119 tmp30
= c_im(input
[10 * istride
]);
120 tmp31
= c_im(input
[2 * istride
]);
121 tmp32
= tmp30
+ tmp31
;
122 tmp33
= tmp29
+ tmp32
;
123 tmp38
= tmp29
- (K500000000
* tmp32
);
124 tmp57
= K866025403
* (tmp30
- tmp31
);
131 ASSERT_ALIGNED_DOUBLE();
132 tmp12
= c_re(input
[3 * istride
]);
133 tmp13
= c_re(input
[7 * istride
]);
134 tmp14
= c_re(input
[11 * istride
]);
135 tmp15
= tmp13
+ tmp14
;
136 tmp16
= tmp12
+ tmp15
;
137 tmp42
= tmp12
- (K500000000
* tmp15
);
138 tmp72
= K866025403
* (tmp14
- tmp13
);
145 ASSERT_ALIGNED_DOUBLE();
146 tmp73
= c_im(input
[3 * istride
]);
147 tmp43
= c_im(input
[7 * istride
]);
148 tmp44
= c_im(input
[11 * istride
]);
149 tmp74
= tmp43
+ tmp44
;
150 tmp45
= K866025403
* (tmp43
- tmp44
);
151 tmp92
= tmp73
+ tmp74
;
152 tmp75
= tmp73
- (K500000000
* tmp74
);
159 ASSERT_ALIGNED_DOUBLE();
160 tmp17
= c_re(input
[9 * istride
]);
161 tmp18
= c_re(input
[istride
]);
162 tmp19
= c_re(input
[5 * istride
]);
163 tmp20
= tmp18
+ tmp19
;
164 tmp21
= tmp17
+ tmp20
;
165 tmp47
= tmp17
- (K500000000
* tmp20
);
166 tmp77
= K866025403
* (tmp19
- tmp18
);
173 ASSERT_ALIGNED_DOUBLE();
174 tmp78
= c_im(input
[9 * istride
]);
175 tmp48
= c_im(input
[istride
]);
176 tmp49
= c_im(input
[5 * istride
]);
177 tmp79
= tmp48
+ tmp49
;
178 tmp50
= K866025403
* (tmp48
- tmp49
);
179 tmp93
= tmp78
+ tmp79
;
180 tmp80
= tmp78
- (K500000000
* tmp79
);
187 ASSERT_ALIGNED_DOUBLE();
188 tmp11
= tmp5
+ tmp10
;
189 tmp22
= tmp16
+ tmp21
;
190 c_re(output
[6 * ostride
]) = tmp11
- tmp22
;
191 c_re(output
[0]) = tmp11
+ tmp22
;
197 ASSERT_ALIGNED_DOUBLE();
198 tmp91
= tmp5
- tmp10
;
199 tmp94
= tmp92
- tmp93
;
200 c_re(output
[3 * ostride
]) = tmp91
- tmp94
;
201 c_re(output
[9 * ostride
]) = tmp91
+ tmp94
;
202 tmp95
= tmp28
+ tmp33
;
203 tmp96
= tmp92
+ tmp93
;
204 c_im(output
[6 * ostride
]) = tmp95
- tmp96
;
205 c_im(output
[0]) = tmp95
+ tmp96
;
207 tmp23
= tmp16
- tmp21
;
208 tmp34
= tmp28
- tmp33
;
209 c_im(output
[3 * ostride
]) = tmp23
+ tmp34
;
210 c_im(output
[9 * ostride
]) = tmp34
- tmp23
;
220 ASSERT_ALIGNED_DOUBLE();
226 ASSERT_ALIGNED_DOUBLE();
227 tmp61
= tmp36
+ tmp35
;
228 tmp62
= tmp39
+ tmp38
;
229 tmp63
= tmp61
- tmp62
;
230 tmp83
= tmp61
+ tmp62
;
231 tmp76
= tmp72
+ tmp75
;
232 tmp81
= tmp77
+ tmp80
;
233 tmp82
= tmp76
- tmp81
;
234 tmp84
= tmp76
+ tmp81
;
241 ASSERT_ALIGNED_DOUBLE();
242 tmp64
= tmp42
+ tmp45
;
243 tmp65
= tmp47
+ tmp50
;
244 tmp66
= tmp64
- tmp65
;
245 tmp70
= tmp64
+ tmp65
;
246 tmp67
= tmp53
+ tmp54
;
247 tmp68
= tmp56
+ tmp57
;
248 tmp69
= tmp67
+ tmp68
;
249 tmp71
= tmp67
- tmp68
;
251 c_im(output
[ostride
]) = tmp63
- tmp66
;
252 c_im(output
[7 * ostride
]) = tmp63
+ tmp66
;
253 c_re(output
[10 * ostride
]) = tmp69
- tmp70
;
254 c_re(output
[4 * ostride
]) = tmp69
+ tmp70
;
255 c_re(output
[7 * ostride
]) = tmp71
- tmp82
;
256 c_re(output
[ostride
]) = tmp71
+ tmp82
;
257 c_im(output
[10 * ostride
]) = tmp83
- tmp84
;
258 c_im(output
[4 * ostride
]) = tmp83
+ tmp84
;
269 ASSERT_ALIGNED_DOUBLE();
275 ASSERT_ALIGNED_DOUBLE();
276 tmp37
= tmp35
- tmp36
;
277 tmp40
= tmp38
- tmp39
;
278 tmp41
= tmp37
- tmp40
;
279 tmp89
= tmp37
+ tmp40
;
280 tmp86
= tmp75
- tmp72
;
281 tmp87
= tmp80
- tmp77
;
282 tmp88
= tmp86
- tmp87
;
283 tmp90
= tmp86
+ tmp87
;
290 ASSERT_ALIGNED_DOUBLE();
291 tmp46
= tmp42
- tmp45
;
292 tmp51
= tmp47
- tmp50
;
293 tmp52
= tmp46
- tmp51
;
294 tmp60
= tmp46
+ tmp51
;
295 tmp55
= tmp53
- tmp54
;
296 tmp58
= tmp56
- tmp57
;
297 tmp59
= tmp55
+ tmp58
;
298 tmp85
= tmp55
- tmp58
;
300 c_im(output
[5 * ostride
]) = tmp41
- tmp52
;
301 c_im(output
[11 * ostride
]) = tmp41
+ tmp52
;
302 c_re(output
[2 * ostride
]) = tmp59
- tmp60
;
303 c_re(output
[8 * ostride
]) = tmp59
+ tmp60
;
304 c_re(output
[11 * ostride
]) = tmp85
- tmp88
;
305 c_re(output
[5 * ostride
]) = tmp85
+ tmp88
;
306 c_im(output
[2 * ostride
]) = tmp89
- tmp90
;
307 c_im(output
[8 * ostride
]) = tmp89
+ tmp90
;
312 fftw_codelet_desc fftw_no_twiddle_12_desc
=
314 "fftw_no_twiddle_12",
315 (void (*)()) fftw_no_twiddle_12
,