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:50 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -twiddleinv 9 */
29 * This function contains 96 FP additions, 72 FP multiplications,
30 * (or, 60 additions, 36 multiplications, 36 fused multiply/add),
31 * 34 stack variables, and 36 memory accesses
33 static const fftw_real K642787609
= FFTW_KONST(+0.642787609686539326322643409907263432907559884);
34 static const fftw_real K766044443
= FFTW_KONST(+0.766044443118978035202392650555416673935832457);
35 static const fftw_real K939692620
= FFTW_KONST(+0.939692620785908384054109277324731469936208134);
36 static const fftw_real K342020143
= FFTW_KONST(+0.342020143325668733044099614682259580763083368);
37 static const fftw_real K984807753
= FFTW_KONST(+0.984807753012208059366743024589523013670643252);
38 static const fftw_real K173648177
= FFTW_KONST(+0.173648177666930348851716626769314796000375677);
39 static const fftw_real K500000000
= FFTW_KONST(+0.500000000000000000000000000000000000000000000);
40 static const fftw_real K866025403
= FFTW_KONST(+0.866025403784438646763723170752936183471402627);
49 void fftwi_twiddle_9(fftw_complex
*A
, const fftw_complex
*W
, int iostride
, int m
, int dist
)
54 for (i
= m
; i
> 0; i
= i
- 1, inout
= inout
+ dist
, W
= W
+ 8) {
75 ASSERT_ALIGNED_DOUBLE();
81 ASSERT_ALIGNED_DOUBLE();
82 tmp1
= c_re(inout
[0]);
83 tmp99
= c_im(inout
[0]);
89 ASSERT_ALIGNED_DOUBLE();
90 tmp3
= c_re(inout
[3 * iostride
]);
91 tmp5
= c_im(inout
[3 * iostride
]);
94 tmp6
= (tmp2
* tmp3
) + (tmp4
* tmp5
);
95 tmp63
= (tmp2
* tmp5
) - (tmp4
* tmp3
);
102 ASSERT_ALIGNED_DOUBLE();
103 tmp8
= c_re(inout
[6 * iostride
]);
104 tmp10
= c_im(inout
[6 * iostride
]);
107 tmp11
= (tmp7
* tmp8
) + (tmp9
* tmp10
);
108 tmp62
= (tmp7
* tmp10
) - (tmp9
* tmp8
);
110 tmp64
= K866025403
* (tmp62
- tmp63
);
111 tmp98
= tmp63
+ tmp62
;
112 tmp105
= tmp99
- (K500000000
* tmp98
);
113 tmp104
= K866025403
* (tmp6
- tmp11
);
114 tmp12
= tmp6
+ tmp11
;
115 tmp61
= tmp1
- (K500000000
* tmp12
);
126 ASSERT_ALIGNED_DOUBLE();
132 ASSERT_ALIGNED_DOUBLE();
133 tmp32
= c_re(inout
[2 * iostride
]);
134 tmp34
= c_im(inout
[2 * iostride
]);
137 tmp35
= (tmp31
* tmp32
) + (tmp33
* tmp34
);
138 tmp50
= (tmp31
* tmp34
) - (tmp33
* tmp32
);
145 ASSERT_ALIGNED_DOUBLE();
146 tmp37
= c_re(inout
[5 * iostride
]);
147 tmp39
= c_im(inout
[5 * iostride
]);
150 tmp40
= (tmp36
* tmp37
) + (tmp38
* tmp39
);
151 tmp51
= (tmp36
* tmp39
) - (tmp38
* tmp37
);
158 ASSERT_ALIGNED_DOUBLE();
159 tmp42
= c_re(inout
[8 * iostride
]);
160 tmp44
= c_im(inout
[8 * iostride
]);
163 tmp45
= (tmp41
* tmp42
) + (tmp43
* tmp44
);
164 tmp52
= (tmp41
* tmp44
) - (tmp43
* tmp42
);
166 tmp46
= tmp40
+ tmp45
;
167 tmp53
= tmp51
+ tmp52
;
173 ASSERT_ALIGNED_DOUBLE();
174 tmp47
= tmp35
+ tmp46
;
175 tmp76
= tmp35
- (K500000000
* tmp46
);
176 tmp77
= K866025403
* (tmp52
- tmp51
);
177 tmp78
= tmp76
- tmp77
;
178 tmp89
= tmp76
+ tmp77
;
179 tmp54
= tmp50
+ tmp53
;
180 tmp73
= tmp50
- (K500000000
* tmp53
);
181 tmp74
= K866025403
* (tmp40
- tmp45
);
182 tmp75
= tmp73
- tmp74
;
183 tmp90
= tmp74
+ tmp73
;
195 ASSERT_ALIGNED_DOUBLE();
201 ASSERT_ALIGNED_DOUBLE();
202 tmp15
= c_re(inout
[iostride
]);
203 tmp17
= c_im(inout
[iostride
]);
206 tmp18
= (tmp14
* tmp15
) + (tmp16
* tmp17
);
207 tmp55
= (tmp14
* tmp17
) - (tmp16
* tmp15
);
214 ASSERT_ALIGNED_DOUBLE();
215 tmp20
= c_re(inout
[4 * iostride
]);
216 tmp22
= c_im(inout
[4 * iostride
]);
219 tmp23
= (tmp19
* tmp20
) + (tmp21
* tmp22
);
220 tmp56
= (tmp19
* tmp22
) - (tmp21
* tmp20
);
227 ASSERT_ALIGNED_DOUBLE();
228 tmp25
= c_re(inout
[7 * iostride
]);
229 tmp27
= c_im(inout
[7 * iostride
]);
232 tmp28
= (tmp24
* tmp25
) + (tmp26
* tmp27
);
233 tmp57
= (tmp24
* tmp27
) - (tmp26
* tmp25
);
235 tmp29
= tmp23
+ tmp28
;
236 tmp58
= tmp56
+ tmp57
;
242 ASSERT_ALIGNED_DOUBLE();
243 tmp30
= tmp18
+ tmp29
;
244 tmp66
= tmp18
- (K500000000
* tmp29
);
245 tmp67
= K866025403
* (tmp57
- tmp56
);
246 tmp68
= tmp66
- tmp67
;
247 tmp86
= tmp66
+ tmp67
;
248 tmp59
= tmp55
+ tmp58
;
249 tmp69
= tmp55
- (K500000000
* tmp58
);
250 tmp70
= K866025403
* (tmp23
- tmp28
);
251 tmp71
= tmp69
- tmp70
;
252 tmp87
= tmp70
+ tmp69
;
260 ASSERT_ALIGNED_DOUBLE();
261 tmp60
= K866025403
* (tmp54
- tmp59
);
262 tmp13
= tmp1
+ tmp12
;
263 tmp48
= tmp30
+ tmp47
;
264 tmp49
= tmp13
- (K500000000
* tmp48
);
265 c_re(inout
[0]) = tmp13
+ tmp48
;
266 c_re(inout
[3 * iostride
]) = tmp49
+ tmp60
;
267 c_re(inout
[6 * iostride
]) = tmp49
- tmp60
;
274 ASSERT_ALIGNED_DOUBLE();
275 tmp101
= K866025403
* (tmp30
- tmp47
);
276 tmp97
= tmp59
+ tmp54
;
277 tmp100
= tmp98
+ tmp99
;
278 tmp102
= tmp100
- (K500000000
* tmp97
);
279 c_im(inout
[0]) = tmp97
+ tmp100
;
280 c_im(inout
[6 * iostride
]) = tmp102
- tmp101
;
281 c_im(inout
[3 * iostride
]) = tmp101
+ tmp102
;
292 ASSERT_ALIGNED_DOUBLE();
293 tmp65
= tmp61
- tmp64
;
294 tmp110
= tmp105
- tmp104
;
300 ASSERT_ALIGNED_DOUBLE();
301 tmp72
= (K173648177
* tmp68
) - (K984807753
* tmp71
);
302 tmp79
= (K342020143
* tmp75
) + (K939692620
* tmp78
);
303 tmp80
= tmp72
- tmp79
;
304 tmp111
= K866025403
* (tmp72
+ tmp79
);
305 tmp82
= (K342020143
* tmp78
) - (K939692620
* tmp75
);
306 tmp83
= (K173648177
* tmp71
) + (K984807753
* tmp68
);
307 tmp84
= K866025403
* (tmp82
- tmp83
);
308 tmp109
= tmp83
+ tmp82
;
310 c_re(inout
[2 * iostride
]) = tmp65
+ tmp80
;
311 tmp81
= tmp65
- (K500000000
* tmp80
);
312 c_re(inout
[8 * iostride
]) = tmp81
- tmp84
;
313 c_re(inout
[5 * iostride
]) = tmp81
+ tmp84
;
314 c_im(inout
[2 * iostride
]) = tmp109
+ tmp110
;
315 tmp112
= tmp110
- (K500000000
* tmp109
);
316 c_im(inout
[5 * iostride
]) = tmp111
+ tmp112
;
317 c_im(inout
[8 * iostride
]) = tmp112
- tmp111
;
328 ASSERT_ALIGNED_DOUBLE();
329 tmp85
= tmp61
+ tmp64
;
330 tmp106
= tmp104
+ tmp105
;
336 ASSERT_ALIGNED_DOUBLE();
337 tmp88
= (K766044443
* tmp86
) - (K642787609
* tmp87
);
338 tmp91
= (K173648177
* tmp89
) - (K984807753
* tmp90
);
339 tmp92
= tmp88
+ tmp91
;
340 tmp107
= K866025403
* (tmp88
- tmp91
);
341 tmp94
= (K173648177
* tmp90
) + (K984807753
* tmp89
);
342 tmp95
= (K766044443
* tmp87
) + (K642787609
* tmp86
);
343 tmp96
= K866025403
* (tmp94
- tmp95
);
344 tmp103
= tmp95
+ tmp94
;
346 c_re(inout
[iostride
]) = tmp85
+ tmp92
;
347 tmp93
= tmp85
- (K500000000
* tmp92
);
348 c_re(inout
[7 * iostride
]) = tmp93
- tmp96
;
349 c_re(inout
[4 * iostride
]) = tmp93
+ tmp96
;
350 c_im(inout
[iostride
]) = tmp103
+ tmp106
;
351 tmp108
= tmp106
- (K500000000
* tmp103
);
352 c_im(inout
[4 * iostride
]) = tmp107
+ tmp108
;
353 c_im(inout
[7 * iostride
]) = tmp108
- tmp107
;
358 static const int twiddle_order
[] =
359 {1, 2, 3, 4, 5, 6, 7, 8};
360 fftw_codelet_desc fftwi_twiddle_9_desc
=
363 (void (*)()) fftwi_twiddle_9
,