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:55:52 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -twiddleinv 10 */
29 * This function contains 102 FP additions, 60 FP multiplications,
30 * (or, 72 additions, 30 multiplications, 30 fused multiply/add),
31 * 42 stack variables, and 40 memory accesses
33 static const fftw_real K951056516
= FFTW_KONST(+0.951056516295153572116439333379382143405698634);
34 static const fftw_real K587785252
= FFTW_KONST(+0.587785252292473129168705954639072768597652438);
35 static const fftw_real K250000000
= FFTW_KONST(+0.250000000000000000000000000000000000000000000);
36 static const fftw_real K559016994
= FFTW_KONST(+0.559016994374947424102293417182819058860154590);
45 void fftwi_twiddle_10(fftw_complex
*A
, const fftw_complex
*W
, int iostride
, int m
, int dist
)
50 for (i
= m
; i
> 0; i
= i
- 1, inout
= inout
+ dist
, W
= W
+ 9) {
79 ASSERT_ALIGNED_DOUBLE();
85 ASSERT_ALIGNED_DOUBLE();
86 tmp1
= c_re(inout
[0]);
87 tmp99
= c_im(inout
[0]);
93 ASSERT_ALIGNED_DOUBLE();
94 tmp3
= c_re(inout
[5 * iostride
]);
95 tmp5
= c_im(inout
[5 * iostride
]);
98 tmp6
= (tmp2
* tmp3
) + (tmp4
* tmp5
);
99 tmp98
= (tmp2
* tmp5
) - (tmp4
* tmp3
);
103 tmp100
= tmp98
+ tmp99
;
104 tmp115
= tmp99
- tmp98
;
115 ASSERT_ALIGNED_DOUBLE();
121 ASSERT_ALIGNED_DOUBLE();
122 tmp32
= c_re(inout
[4 * iostride
]);
123 tmp34
= c_im(inout
[4 * iostride
]);
126 tmp35
= (tmp31
* tmp32
) + (tmp33
* tmp34
);
127 tmp73
= (tmp31
* tmp34
) - (tmp33
* tmp32
);
134 ASSERT_ALIGNED_DOUBLE();
135 tmp48
= c_re(inout
[iostride
]);
136 tmp50
= c_im(inout
[iostride
]);
139 tmp51
= (tmp47
* tmp48
) + (tmp49
* tmp50
);
140 tmp77
= (tmp47
* tmp50
) - (tmp49
* tmp48
);
147 ASSERT_ALIGNED_DOUBLE();
148 tmp37
= c_re(inout
[9 * iostride
]);
149 tmp39
= c_im(inout
[9 * iostride
]);
152 tmp40
= (tmp36
* tmp37
) + (tmp38
* tmp39
);
153 tmp74
= (tmp36
* tmp39
) - (tmp38
* tmp37
);
160 ASSERT_ALIGNED_DOUBLE();
161 tmp43
= c_re(inout
[6 * iostride
]);
162 tmp45
= c_im(inout
[6 * iostride
]);
165 tmp46
= (tmp42
* tmp43
) + (tmp44
* tmp45
);
166 tmp76
= (tmp42
* tmp45
) - (tmp44
* tmp43
);
168 tmp41
= tmp35
- tmp40
;
169 tmp52
= tmp46
- tmp51
;
170 tmp53
= tmp41
+ tmp52
;
171 tmp59
= tmp35
+ tmp40
;
172 tmp60
= tmp46
+ tmp51
;
173 tmp61
= tmp59
+ tmp60
;
174 tmp75
= tmp73
- tmp74
;
175 tmp78
= tmp76
- tmp77
;
176 tmp113
= tmp75
+ tmp78
;
177 tmp89
= tmp73
+ tmp74
;
178 tmp90
= tmp76
+ tmp77
;
179 tmp96
= tmp89
+ tmp90
;
190 ASSERT_ALIGNED_DOUBLE();
196 ASSERT_ALIGNED_DOUBLE();
197 tmp9
= c_re(inout
[2 * iostride
]);
198 tmp11
= c_im(inout
[2 * iostride
]);
201 tmp12
= (tmp8
* tmp9
) + (tmp10
* tmp11
);
202 tmp66
= (tmp8
* tmp11
) - (tmp10
* tmp9
);
209 ASSERT_ALIGNED_DOUBLE();
210 tmp25
= c_re(inout
[3 * iostride
]);
211 tmp27
= c_im(inout
[3 * iostride
]);
214 tmp28
= (tmp24
* tmp25
) + (tmp26
* tmp27
);
215 tmp70
= (tmp24
* tmp27
) - (tmp26
* tmp25
);
222 ASSERT_ALIGNED_DOUBLE();
223 tmp14
= c_re(inout
[7 * iostride
]);
224 tmp16
= c_im(inout
[7 * iostride
]);
227 tmp17
= (tmp13
* tmp14
) + (tmp15
* tmp16
);
228 tmp67
= (tmp13
* tmp16
) - (tmp15
* tmp14
);
235 ASSERT_ALIGNED_DOUBLE();
236 tmp20
= c_re(inout
[8 * iostride
]);
237 tmp22
= c_im(inout
[8 * iostride
]);
240 tmp23
= (tmp19
* tmp20
) + (tmp21
* tmp22
);
241 tmp69
= (tmp19
* tmp22
) - (tmp21
* tmp20
);
243 tmp18
= tmp12
- tmp17
;
244 tmp29
= tmp23
- tmp28
;
245 tmp30
= tmp18
+ tmp29
;
246 tmp56
= tmp12
+ tmp17
;
247 tmp57
= tmp23
+ tmp28
;
248 tmp58
= tmp56
+ tmp57
;
249 tmp68
= tmp66
- tmp67
;
250 tmp71
= tmp69
- tmp70
;
251 tmp112
= tmp68
+ tmp71
;
252 tmp86
= tmp66
+ tmp67
;
253 tmp87
= tmp69
+ tmp70
;
254 tmp95
= tmp86
+ tmp87
;
266 ASSERT_ALIGNED_DOUBLE();
267 tmp64
= K559016994
* (tmp30
- tmp53
);
268 tmp54
= tmp30
+ tmp53
;
269 tmp63
= tmp7
- (K250000000
* tmp54
);
270 tmp72
= tmp68
- tmp71
;
271 tmp79
= tmp75
- tmp78
;
272 tmp80
= (K587785252
* tmp72
) - (K951056516
* tmp79
);
273 tmp82
= (K951056516
* tmp72
) + (K587785252
* tmp79
);
274 c_re(inout
[5 * iostride
]) = tmp7
+ tmp54
;
275 tmp81
= tmp64
+ tmp63
;
276 c_re(inout
[iostride
]) = tmp81
- tmp82
;
277 c_re(inout
[9 * iostride
]) = tmp81
+ tmp82
;
278 tmp65
= tmp63
- tmp64
;
279 c_re(inout
[7 * iostride
]) = tmp65
- tmp80
;
280 c_re(inout
[3 * iostride
]) = tmp65
+ tmp80
;
292 ASSERT_ALIGNED_DOUBLE();
293 tmp114
= K559016994
* (tmp112
- tmp113
);
294 tmp116
= tmp112
+ tmp113
;
295 tmp117
= tmp115
- (K250000000
* tmp116
);
296 tmp109
= tmp18
- tmp29
;
297 tmp110
= tmp41
- tmp52
;
298 tmp111
= (K951056516
* tmp109
) + (K587785252
* tmp110
);
299 tmp120
= (K587785252
* tmp109
) - (K951056516
* tmp110
);
300 c_im(inout
[5 * iostride
]) = tmp116
+ tmp115
;
301 tmp119
= tmp117
- tmp114
;
302 c_im(inout
[3 * iostride
]) = tmp119
- tmp120
;
303 c_im(inout
[7 * iostride
]) = tmp120
+ tmp119
;
304 tmp118
= tmp114
+ tmp117
;
305 c_im(inout
[iostride
]) = tmp111
+ tmp118
;
306 c_im(inout
[9 * iostride
]) = tmp118
- tmp111
;
318 ASSERT_ALIGNED_DOUBLE();
319 tmp84
= K559016994
* (tmp58
- tmp61
);
320 tmp62
= tmp58
+ tmp61
;
321 tmp83
= tmp55
- (K250000000
* tmp62
);
322 tmp88
= tmp86
- tmp87
;
323 tmp91
= tmp89
- tmp90
;
324 tmp92
= (K587785252
* tmp88
) - (K951056516
* tmp91
);
325 tmp94
= (K951056516
* tmp88
) + (K587785252
* tmp91
);
326 c_re(inout
[0]) = tmp55
+ tmp62
;
327 tmp93
= tmp84
+ tmp83
;
328 c_re(inout
[6 * iostride
]) = tmp93
- tmp94
;
329 c_re(inout
[4 * iostride
]) = tmp93
+ tmp94
;
330 tmp85
= tmp83
- tmp84
;
331 c_re(inout
[2 * iostride
]) = tmp85
- tmp92
;
332 c_re(inout
[8 * iostride
]) = tmp85
+ tmp92
;
344 ASSERT_ALIGNED_DOUBLE();
345 tmp105
= K559016994
* (tmp95
- tmp96
);
346 tmp97
= tmp95
+ tmp96
;
347 tmp104
= tmp100
- (K250000000
* tmp97
);
348 tmp101
= tmp56
- tmp57
;
349 tmp102
= tmp59
- tmp60
;
350 tmp103
= (K587785252
* tmp101
) - (K951056516
* tmp102
);
351 tmp108
= (K951056516
* tmp101
) + (K587785252
* tmp102
);
352 c_im(inout
[0]) = tmp97
+ tmp100
;
353 tmp107
= tmp105
+ tmp104
;
354 c_im(inout
[4 * iostride
]) = tmp107
- tmp108
;
355 c_im(inout
[6 * iostride
]) = tmp108
+ tmp107
;
356 tmp106
= tmp104
- tmp105
;
357 c_im(inout
[2 * iostride
]) = tmp103
+ tmp106
;
358 c_im(inout
[8 * iostride
]) = tmp106
- tmp103
;
363 static const int twiddle_order
[] =
364 {1, 2, 3, 4, 5, 6, 7, 8, 9};
365 fftw_codelet_desc fftwi_twiddle_10_desc
=
368 (void (*)()) fftwi_twiddle_10
,