| Bsoft 1.9 Bernard's software package

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

ftwi_7.c
Go to the documentation of this file.
1 /*
2 * Copyright (c) 1997-1999, 2003 Massachusetts Institute of Technology
3 *
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.
8 *
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.
13 *
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
17 *
18 */
19
20 /* This file was automatically generated --- DO NOT EDIT */
21 /* Generated on Mon Mar 24 02:08:26 EST 2003 */
22
23 #include "fftw-int.h"
24 #include "fftw.h"
25
26 /* Generated by: /homee/stevenj/cvs/fftw/gensrc/genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -twiddleinv 7 */
27
28 /*
29 * This function contains 72 FP additions, 60 FP multiplications,
30 * (or, 60 additions, 48 multiplications, 12 fused multiply/add),
31 * 24 stack variables, and 28 memory accesses
32 */
33 static const fftw_real K222520933 =
34 FFTW_KONST(+0.222520933956314404288902564496794759466355569);
35 static const fftw_real K900968867 =
36 FFTW_KONST(+0.900968867902419126236102319507445051165919162);
37 static const fftw_real K623489801 =
38 FFTW_KONST(+0.623489801858733530525004884004239810632274731);
39 static const fftw_real K433883739 =
40 FFTW_KONST(+0.433883739117558120475768332848358754609990728);
41 static const fftw_real K974927912 =
42 FFTW_KONST(+0.974927912181823607018131682993931217232785801);
43 static const fftw_real K781831482 =
44 FFTW_KONST(+0.781831482468029808708444526674057750232334519);
45
46 /*
47 * Generator Id's :
48 * $Id: exprdag.ml,v 1.43 2003/03/16 23:43:46 stevenj Exp $
49 * $Id: fft.ml,v 1.44 2003/03/16 23:43:46 stevenj Exp $
50 * $Id: to_c.ml,v 1.26 2003/03/16 23:43:46 stevenj Exp $
51 */
52
53 void fftwi_twiddle_7(fftw_complex *A, const fftw_complex *W, int iostride,
54 int m, int dist)
55 {
56 int i;
57 fftw_complex *inout;
58 inout = A;
59 for (i = m; i > 0; i = i - 1, inout = inout + dist, W = W + 6) {
60 fftw_real tmp1;
61 fftw_real tmp53;
62 fftw_real tmp12;
63 fftw_real tmp54;
64 fftw_real tmp38;
65 fftw_real tmp50;
66 fftw_real tmp23;
67 fftw_real tmp55;
68 fftw_real tmp44;
69 fftw_real tmp51;
70 fftw_real tmp34;
71 fftw_real tmp56;
72 fftw_real tmp41;
73 fftw_real tmp52;
74 ASSERT_ALIGNED_DOUBLE;
75 tmp1 = c_re(inout[0]);
76 tmp53 = c_im(inout[0]);
77 {
78 fftw_real tmp6;
79 fftw_real tmp37;
80 fftw_real tmp11;
81 fftw_real tmp36;
82 ASSERT_ALIGNED_DOUBLE;
83 {
84 fftw_real tmp3;
85 fftw_real tmp5;
86 fftw_real tmp2;
87 fftw_real tmp4;
88 ASSERT_ALIGNED_DOUBLE;
89 tmp3 = c_re(inout[iostride]);
90 tmp5 = c_im(inout[iostride]);
91 tmp2 = c_re(W[0]);
92 tmp4 = c_im(W[0]);
93 tmp6 = (tmp2 * tmp3) + (tmp4 * tmp5);
94 tmp37 = (tmp2 * tmp5) - (tmp4 * tmp3);
95 }
96 {
97 fftw_real tmp8;
98 fftw_real tmp10;
99 fftw_real tmp7;
100 fftw_real tmp9;
101 ASSERT_ALIGNED_DOUBLE;
102 tmp8 = c_re(inout[6 * iostride]);
103 tmp10 = c_im(inout[6 * iostride]);
104 tmp7 = c_re(W[5]);
105 tmp9 = c_im(W[5]);
106 tmp11 = (tmp7 * tmp8) + (tmp9 * tmp10);
107 tmp36 = (tmp7 * tmp10) - (tmp9 * tmp8);
108 }
109 tmp12 = tmp6 + tmp11;
110 tmp54 = tmp6 - tmp11;
111 tmp38 = tmp36 - tmp37;
112 tmp50 = tmp37 + tmp36;
113 }
114 {
115 fftw_real tmp17;
116 fftw_real tmp43;
117 fftw_real tmp22;
118 fftw_real tmp42;
119 ASSERT_ALIGNED_DOUBLE;
120 {
121 fftw_real tmp14;
122 fftw_real tmp16;
123 fftw_real tmp13;
124 fftw_real tmp15;
125 ASSERT_ALIGNED_DOUBLE;
126 tmp14 = c_re(inout[2 * iostride]);
127 tmp16 = c_im(inout[2 * iostride]);
128 tmp13 = c_re(W[1]);
129 tmp15 = c_im(W[1]);
130 tmp17 = (tmp13 * tmp14) + (tmp15 * tmp16);
131 tmp43 = (tmp13 * tmp16) - (tmp15 * tmp14);
132 }
133 {
134 fftw_real tmp19;
135 fftw_real tmp21;
136 fftw_real tmp18;
137 fftw_real tmp20;
138 ASSERT_ALIGNED_DOUBLE;
139 tmp19 = c_re(inout[5 * iostride]);
140 tmp21 = c_im(inout[5 * iostride]);
141 tmp18 = c_re(W[4]);
142 tmp20 = c_im(W[4]);
143 tmp22 = (tmp18 * tmp19) + (tmp20 * tmp21);
144 tmp42 = (tmp18 * tmp21) - (tmp20 * tmp19);
145 }
146 tmp23 = tmp17 + tmp22;
147 tmp55 = tmp17 - tmp22;
148 tmp44 = tmp42 - tmp43;
149 tmp51 = tmp43 + tmp42;
150 }
151 {
152 fftw_real tmp28;
153 fftw_real tmp40;
154 fftw_real tmp33;
155 fftw_real tmp39;
156 ASSERT_ALIGNED_DOUBLE;
157 {
158 fftw_real tmp25;
159 fftw_real tmp27;
160 fftw_real tmp24;
161 fftw_real tmp26;
162 ASSERT_ALIGNED_DOUBLE;
163 tmp25 = c_re(inout[3 * iostride]);
164 tmp27 = c_im(inout[3 * iostride]);
165 tmp24 = c_re(W[2]);
166 tmp26 = c_im(W[2]);
167 tmp28 = (tmp24 * tmp25) + (tmp26 * tmp27);
168 tmp40 = (tmp24 * tmp27) - (tmp26 * tmp25);
169 }
170 {
171 fftw_real tmp30;
172 fftw_real tmp32;
173 fftw_real tmp29;
174 fftw_real tmp31;
175 ASSERT_ALIGNED_DOUBLE;
176 tmp30 = c_re(inout[4 * iostride]);
177 tmp32 = c_im(inout[4 * iostride]);
178 tmp29 = c_re(W[3]);
179 tmp31 = c_im(W[3]);
180 tmp33 = (tmp29 * tmp30) + (tmp31 * tmp32);
181 tmp39 = (tmp29 * tmp32) - (tmp31 * tmp30);
182 }
183 tmp34 = tmp28 + tmp33;
184 tmp56 = tmp28 - tmp33;
185 tmp41 = tmp39 - tmp40;
186 tmp52 = tmp40 + tmp39;
187 }
188 {
189 fftw_real tmp47;
190 fftw_real tmp46;
191 fftw_real tmp59;
192 fftw_real tmp60;
193 ASSERT_ALIGNED_DOUBLE;
194 c_re(inout[0]) = tmp1 + tmp12 + tmp23 + tmp34;
195 tmp47 =
196 (K781831482 * tmp38) + (K974927912 * tmp44) +
197 (K433883739 * tmp41);
198 tmp46 =
199 tmp1 + (K623489801 * tmp12) - (K900968867 * tmp34) -
200 (K222520933 * tmp23);
201 c_re(inout[6 * iostride]) = tmp46 - tmp47;
202 c_re(inout[iostride]) = tmp46 + tmp47;
203 {
204 fftw_real tmp49;
205 fftw_real tmp48;
206 fftw_real tmp45;
207 fftw_real tmp35;
208 ASSERT_ALIGNED_DOUBLE;
209 tmp49 =
210 (K433883739 * tmp38) + (K974927912 * tmp41) -
211 (K781831482 * tmp44);
212 tmp48 =
213 tmp1 + (K623489801 * tmp23) -
214 (K222520933 * tmp34) - (K900968867 * tmp12);
215 c_re(inout[4 * iostride]) = tmp48 - tmp49;
216 c_re(inout[3 * iostride]) = tmp48 + tmp49;
217 tmp45 =
218 (K974927912 * tmp38) - (K781831482 * tmp41) -
219 (K433883739 * tmp44);
220 tmp35 =
221 tmp1 + (K623489801 * tmp34) -
222 (K900968867 * tmp23) - (K222520933 * tmp12);
223 c_re(inout[5 * iostride]) = tmp35 - tmp45;
224 c_re(inout[2 * iostride]) = tmp35 + tmp45;
225 }
226 c_im(inout[0]) = tmp50 + tmp51 + tmp52 + tmp53;
227 tmp59 =
228 (K974927912 * tmp54) - (K781831482 * tmp56) -
229 (K433883739 * tmp55);
230 tmp60 =
231 (K623489801 * tmp52) + tmp53 - (K900968867 * tmp51) -
232 (K222520933 * tmp50);
233 c_im(inout[2 * iostride]) = tmp59 + tmp60;
234 c_im(inout[5 * iostride]) = tmp60 - tmp59;
235 {
236 fftw_real tmp61;
237 fftw_real tmp62;
238 fftw_real tmp57;
239 fftw_real tmp58;
240 ASSERT_ALIGNED_DOUBLE;
241 tmp61 =
242 (K433883739 * tmp54) + (K974927912 * tmp56) -
243 (K781831482 * tmp55);
244 tmp62 =
245 (K623489801 * tmp51) + tmp53 -
246 (K222520933 * tmp52) - (K900968867 * tmp50);
247 c_im(inout[3 * iostride]) = tmp61 + tmp62;
248 c_im(inout[4 * iostride]) = tmp62 - tmp61;
249 tmp57 =
250 (K781831482 * tmp54) + (K974927912 * tmp55) +
251 (K433883739 * tmp56);
252 tmp58 =
253 (K623489801 * tmp50) + tmp53 -
254 (K900968867 * tmp52) - (K222520933 * tmp51);
255 c_im(inout[iostride]) = tmp57 + tmp58;
256 c_im(inout[6 * iostride]) = tmp58 - tmp57;
257 }
258 }
259 }
260 }
261
262 static const int twiddle_order[] = { 1, 2, 3, 4, 5, 6 };
263 fftw_codelet_desc fftwi_twiddle_7_desc = {
264 "fftwi_twiddle_7",
265 (void (*)()) fftwi_twiddle_7,
266 7,
267 FFTW_BACKWARD,
268 FFTW_TWIDDLE,
269 165,
270 6,
271 twiddle_order,
272 };
fftw_codelet_desc
Definition: fftw.h:126
fftw-int.h
fftw_complex
Definition: fftw.h:57
FFTW_KONST
#define FFTW_KONST(x)
Definition: fftw-int.h:178
fftw.h
FFTW_TWIDDLE
Definition: fftw.h:121
fftwi_twiddle_7
void fftwi_twiddle_7(fftw_complex *A, const fftw_complex *W, int iostride, int m, int dist)
Definition: ftwi_7.c:53
c_re
#define c_re(c)
Definition: fftw.h:60
FFTW_BACKWARD
Definition: fftw.h:64
ASSERT_ALIGNED_DOUBLE
#define ASSERT_ALIGNED_DOUBLE
Definition: fftw-int.h:236
c_im
#define c_im(c)
Definition: fftw.h:61
fftwi_twiddle_7_desc
fftw_codelet_desc fftwi_twiddle_7_desc
Definition: ftwi_7.c:263
fftw_real
float fftw_real
Definition: fftw.h:49