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:08 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -hc2real 13 */
29 * This function contains 76 FP additions, 35 FP multiplications,
30 * (or, 56 additions, 15 multiplications, 20 fused multiply/add),
31 * 36 stack variables, and 26 memory accesses
33 static const fftw_real K531932498
= FFTW_KONST(+0.531932498429674575175042127684371897596660533);
34 static const fftw_real K774781170
= FFTW_KONST(+0.774781170935234584261351932853525703557550433);
35 static const fftw_real K1_007074065
= FFTW_KONST(+1.007074065727533254493747707736933954186697125);
36 static const fftw_real K227708958
= FFTW_KONST(+0.227708958111581597949308691735310621069285120);
37 static const fftw_real K265966249
= FFTW_KONST(+0.265966249214837287587521063842185948798330267);
38 static const fftw_real K516520780
= FFTW_KONST(+0.516520780623489722840901288569017135705033622);
39 static const fftw_real K151805972
= FFTW_KONST(+0.151805972074387731966205794490207080712856746);
40 static const fftw_real K503537032
= FFTW_KONST(+0.503537032863766627246873853868466977093348562);
41 static const fftw_real K166666666
= FFTW_KONST(+0.166666666666666666666666666666666666666666667);
42 static const fftw_real K600925212
= FFTW_KONST(+0.600925212577331548853203544578415991041882762);
43 static const fftw_real K500000000
= FFTW_KONST(+0.500000000000000000000000000000000000000000000);
44 static const fftw_real K348277202
= FFTW_KONST(+0.348277202304271810011321589858529485233929352);
45 static const fftw_real K1_150281458
= FFTW_KONST(+1.150281458948006242736771094910906776922003215);
46 static const fftw_real K256247671
= FFTW_KONST(+0.256247671582936600958684654061725059144125175);
47 static const fftw_real K156891391
= FFTW_KONST(+0.156891391051584611046832726756003269660212636);
48 static const fftw_real K300238635
= FFTW_KONST(+0.300238635966332641462884626667381504676006424);
49 static const fftw_real K011599105
= FFTW_KONST(+0.011599105605768290721655456654083252189827041);
50 static const fftw_real K1_732050807
= FFTW_KONST(+1.732050807568877293527446341505872366942805254);
51 static const fftw_real K2_000000000
= FFTW_KONST(+2.000000000000000000000000000000000000000000000);
60 void fftw_hc2real_13(const fftw_real
*real_input
, const fftw_real
*imag_input
, fftw_real
*output
, int real_istride
, int imag_istride
, int ostride
)
78 ASSERT_ALIGNED_DOUBLE();
90 ASSERT_ALIGNED_DOUBLE();
96 ASSERT_ALIGNED_DOUBLE();
97 tmp28
= imag_input
[imag_istride
];
98 tmp29
= imag_input
[3 * imag_istride
];
99 tmp30
= imag_input
[4 * imag_istride
];
100 tmp31
= tmp29
- tmp30
;
101 tmp32
= (K2_000000000
* tmp28
) - tmp31
;
102 tmp37
= K1_732050807
* (tmp29
+ tmp30
);
103 tmp39
= imag_input
[5 * imag_istride
];
104 tmp33
= imag_input
[6 * imag_istride
];
105 tmp34
= imag_input
[2 * imag_istride
];
106 tmp38
= tmp33
+ tmp34
;
107 tmp35
= K1_732050807
* (tmp33
- tmp34
);
108 tmp40
= tmp38
- (K2_000000000
* tmp39
);
110 tmp36
= tmp32
+ tmp35
;
111 tmp41
= tmp37
- tmp40
;
112 tmp42
= (K011599105
* tmp36
) - (K300238635
* tmp41
);
113 tmp52
= (K300238635
* tmp36
) + (K011599105
* tmp41
);
119 ASSERT_ALIGNED_DOUBLE();
120 tmp43
= tmp32
- tmp35
;
121 tmp44
= tmp37
+ tmp40
;
122 tmp45
= (K156891391
* tmp43
) + (K256247671
* tmp44
);
123 tmp51
= (K256247671
* tmp43
) - (K156891391
* tmp44
);
124 tmp54
= tmp28
+ tmp31
;
125 tmp55
= tmp38
+ tmp39
;
126 tmp56
= (K1_150281458
* tmp54
) - (K348277202
* tmp55
);
127 tmp67
= (K348277202
* tmp54
) + (K1_150281458
* tmp55
);
137 ASSERT_ALIGNED_DOUBLE();
138 tmp1
= real_input
[0];
144 ASSERT_ALIGNED_DOUBLE();
145 tmp7
= real_input
[5 * real_istride
];
146 tmp8
= real_input
[6 * real_istride
];
147 tmp9
= real_input
[2 * real_istride
];
149 tmp11
= tmp7
+ tmp10
;
150 tmp18
= tmp7
- (K500000000
* tmp10
);
158 ASSERT_ALIGNED_DOUBLE();
159 tmp2
= real_input
[real_istride
];
160 tmp3
= real_input
[3 * real_istride
];
161 tmp4
= real_input
[4 * real_istride
];
164 tmp17
= tmp2
- (K500000000
* tmp5
);
167 tmp22
= K600925212
* (tmp6
- tmp11
);
168 tmp12
= tmp6
+ tmp11
;
169 tmp13
= tmp1
- (K166666666
* tmp12
);
170 tmp16
= tmp14
- tmp15
;
171 tmp19
= tmp17
+ tmp18
;
172 tmp20
= (K503537032
* tmp16
) + (K151805972
* tmp19
);
173 tmp23
= tmp17
- tmp18
;
174 tmp24
= tmp14
+ tmp15
;
175 tmp25
= (K516520780
* tmp23
) - (K265966249
* tmp24
);
177 output
[0] = tmp1
+ (K2_000000000
* tmp12
);
191 ASSERT_ALIGNED_DOUBLE();
197 ASSERT_ALIGNED_DOUBLE();
198 tmp46
= K1_732050807
* (tmp42
+ tmp45
);
199 tmp66
= tmp42
- tmp45
;
200 tmp68
= (K2_000000000
* tmp66
) - tmp67
;
201 tmp70
= tmp66
+ tmp67
;
202 tmp21
= tmp13
- tmp20
;
203 tmp26
= tmp22
- tmp25
;
204 tmp27
= tmp21
- tmp26
;
205 tmp69
= tmp26
+ tmp21
;
206 tmp73
= K1_732050807
* (tmp52
+ tmp51
);
207 tmp53
= tmp51
- tmp52
;
208 tmp57
= tmp53
+ tmp56
;
209 tmp64
= tmp56
- (K2_000000000
* tmp53
);
215 ASSERT_ALIGNED_DOUBLE();
216 tmp61
= (K2_000000000
* tmp20
) + tmp13
;
217 tmp62
= (K2_000000000
* tmp25
) + tmp22
;
218 tmp63
= tmp61
- tmp62
;
219 tmp65
= tmp62
+ tmp61
;
220 tmp48
= (K227708958
* tmp16
) - (K1_007074065
* tmp19
);
221 tmp49
= (K774781170
* tmp24
) + (K531932498
* tmp23
);
222 tmp50
= tmp48
- tmp49
;
223 tmp72
= tmp49
+ tmp48
;
226 output
[5 * ostride
] = tmp63
- tmp64
;
227 output
[8 * ostride
] = tmp63
+ tmp64
;
233 ASSERT_ALIGNED_DOUBLE();
234 tmp47
= tmp27
- tmp46
;
235 tmp58
= tmp50
+ tmp57
;
236 output
[2 * ostride
] = tmp47
- tmp58
;
237 output
[7 * ostride
] = tmp47
+ tmp58
;
238 tmp59
= tmp27
+ tmp46
;
239 tmp60
= tmp57
- tmp50
;
240 output
[6 * ostride
] = tmp59
- tmp60
;
241 output
[11 * ostride
] = tmp59
+ tmp60
;
243 output
[12 * ostride
] = tmp65
- tmp68
;
244 output
[ostride
] = tmp65
+ tmp68
;
250 ASSERT_ALIGNED_DOUBLE();
251 tmp71
= tmp69
- tmp70
;
252 tmp74
= tmp72
+ tmp73
;
253 output
[3 * ostride
] = tmp71
- tmp74
;
254 output
[9 * ostride
] = tmp74
+ tmp71
;
255 tmp75
= tmp69
+ tmp70
;
256 tmp76
= tmp73
- tmp72
;
257 output
[4 * ostride
] = tmp75
- tmp76
;
258 output
[10 * ostride
] = tmp76
+ tmp75
;
263 fftw_codelet_desc fftw_hc2real_13_desc
=
266 (void (*)()) fftw_hc2real_13
,