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:47 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -twiddleinv 6 */
29 * This function contains 46 FP additions, 28 FP multiplications,
30 * (or, 32 additions, 14 multiplications, 14 fused multiply/add),
31 * 22 stack variables, and 24 memory accesses
33 static const fftw_real K500000000
= FFTW_KONST(+0.500000000000000000000000000000000000000000000);
34 static const fftw_real K866025403
= FFTW_KONST(+0.866025403784438646763723170752936183471402627);
43 void fftwi_twiddle_6(fftw_complex
*A
, const fftw_complex
*W
, int iostride
, int m
, int dist
)
48 for (i
= m
; i
> 0; i
= i
- 1, inout
= inout
+ dist
, W
= W
+ 5) {
61 ASSERT_ALIGNED_DOUBLE();
67 ASSERT_ALIGNED_DOUBLE();
68 tmp1
= c_re(inout
[0]);
69 tmp49
= c_im(inout
[0]);
75 ASSERT_ALIGNED_DOUBLE();
76 tmp3
= c_re(inout
[3 * iostride
]);
77 tmp5
= c_im(inout
[3 * iostride
]);
80 tmp6
= (tmp2
* tmp3
) + (tmp4
* tmp5
);
81 tmp48
= (tmp2
* tmp5
) - (tmp4
* tmp3
);
85 tmp50
= tmp48
+ tmp49
;
86 tmp54
= tmp49
- tmp48
;
93 ASSERT_ALIGNED_DOUBLE();
99 ASSERT_ALIGNED_DOUBLE();
100 tmp20
= c_re(inout
[4 * iostride
]);
101 tmp22
= c_im(inout
[4 * iostride
]);
104 tmp23
= (tmp19
* tmp20
) + (tmp21
* tmp22
);
105 tmp36
= (tmp19
* tmp22
) - (tmp21
* tmp20
);
112 ASSERT_ALIGNED_DOUBLE();
113 tmp25
= c_re(inout
[iostride
]);
114 tmp27
= c_im(inout
[iostride
]);
117 tmp28
= (tmp24
* tmp25
) + (tmp26
* tmp27
);
118 tmp37
= (tmp24
* tmp27
) - (tmp26
* tmp25
);
120 tmp29
= tmp23
- tmp28
;
121 tmp33
= tmp23
+ tmp28
;
122 tmp38
= tmp36
- tmp37
;
123 tmp44
= tmp36
+ tmp37
;
130 ASSERT_ALIGNED_DOUBLE();
136 ASSERT_ALIGNED_DOUBLE();
137 tmp9
= c_re(inout
[2 * iostride
]);
138 tmp11
= c_im(inout
[2 * iostride
]);
141 tmp12
= (tmp8
* tmp9
) + (tmp10
* tmp11
);
142 tmp39
= (tmp8
* tmp11
) - (tmp10
* tmp9
);
149 ASSERT_ALIGNED_DOUBLE();
150 tmp14
= c_re(inout
[5 * iostride
]);
151 tmp16
= c_im(inout
[5 * iostride
]);
154 tmp17
= (tmp13
* tmp14
) + (tmp15
* tmp16
);
155 tmp40
= (tmp13
* tmp16
) - (tmp15
* tmp14
);
157 tmp18
= tmp12
- tmp17
;
158 tmp32
= tmp12
+ tmp17
;
159 tmp41
= tmp39
- tmp40
;
160 tmp45
= tmp39
+ tmp40
;
169 ASSERT_ALIGNED_DOUBLE();
170 tmp42
= K866025403
* (tmp38
- tmp41
);
171 tmp30
= tmp18
+ tmp29
;
172 tmp35
= tmp7
- (K500000000
* tmp30
);
173 c_re(inout
[3 * iostride
]) = tmp7
+ tmp30
;
174 c_re(inout
[iostride
]) = tmp35
+ tmp42
;
175 c_re(inout
[5 * iostride
]) = tmp35
- tmp42
;
176 tmp53
= K866025403
* (tmp18
- tmp29
);
177 tmp55
= tmp41
+ tmp38
;
178 tmp56
= tmp54
- (K500000000
* tmp55
);
179 c_im(inout
[iostride
]) = tmp53
+ tmp56
;
180 c_im(inout
[5 * iostride
]) = tmp56
- tmp53
;
181 c_im(inout
[3 * iostride
]) = tmp55
+ tmp54
;
190 ASSERT_ALIGNED_DOUBLE();
191 tmp46
= K866025403
* (tmp44
- tmp45
);
192 tmp34
= tmp32
+ tmp33
;
193 tmp43
= tmp31
- (K500000000
* tmp34
);
194 c_re(inout
[0]) = tmp31
+ tmp34
;
195 c_re(inout
[4 * iostride
]) = tmp43
+ tmp46
;
196 c_re(inout
[2 * iostride
]) = tmp43
- tmp46
;
197 tmp52
= K866025403
* (tmp32
- tmp33
);
198 tmp47
= tmp45
+ tmp44
;
199 tmp51
= tmp50
- (K500000000
* tmp47
);
200 c_im(inout
[0]) = tmp47
+ tmp50
;
201 c_im(inout
[4 * iostride
]) = tmp52
+ tmp51
;
202 c_im(inout
[2 * iostride
]) = tmp51
- tmp52
;
207 static const int twiddle_order
[] =
209 fftw_codelet_desc fftwi_twiddle_6_desc
=
212 (void (*)()) fftwi_twiddle_6
,