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:54:39 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -real2hc 16 */
29 * This function contains 58 FP additions, 12 FP multiplications,
30 * (or, 54 additions, 8 multiplications, 4 fused multiply/add),
31 * 30 stack variables, and 32 memory accesses
33 static const fftw_real K707106781
= FFTW_KONST(+0.707106781186547524400844362104849039284835938);
34 static const fftw_real K923879532
= FFTW_KONST(+0.923879532511286756128183189396788286822416626);
35 static const fftw_real K382683432
= FFTW_KONST(+0.382683432365089771728459984030398866761344562);
44 void fftw_real2hc_16(const fftw_real
*input
, fftw_real
*real_output
, fftw_real
*imag_output
, int istride
, int real_ostride
, int imag_ostride
)
68 ASSERT_ALIGNED_DOUBLE();
74 ASSERT_ALIGNED_DOUBLE();
76 tmp2
= input
[8 * istride
];
78 tmp4
= input
[4 * istride
];
79 tmp5
= input
[12 * istride
];
90 ASSERT_ALIGNED_DOUBLE();
96 ASSERT_ALIGNED_DOUBLE();
97 tmp27
= input
[istride
];
98 tmp28
= input
[9 * istride
];
99 tmp29
= tmp27
- tmp28
;
100 tmp46
= tmp27
+ tmp28
;
101 tmp30
= input
[5 * istride
];
102 tmp31
= input
[13 * istride
];
103 tmp32
= tmp30
- tmp31
;
104 tmp47
= tmp30
+ tmp31
;
106 tmp33
= (K382683432
* tmp29
) + (K923879532
* tmp32
);
107 tmp40
= (K923879532
* tmp29
) - (K382683432
* tmp32
);
108 tmp48
= tmp46
- tmp47
;
109 tmp56
= tmp46
+ tmp47
;
116 ASSERT_ALIGNED_DOUBLE();
117 tmp8
= input
[2 * istride
];
118 tmp9
= input
[10 * istride
];
121 tmp11
= input
[14 * istride
];
122 tmp12
= input
[6 * istride
];
123 tmp13
= tmp11
+ tmp12
;
124 tmp15
= tmp11
- tmp12
;
126 tmp14
= tmp10
+ tmp13
;
127 tmp36
= K707106781
* (tmp16
+ tmp15
);
128 tmp17
= K707106781
* (tmp15
- tmp16
);
134 ASSERT_ALIGNED_DOUBLE();
140 ASSERT_ALIGNED_DOUBLE();
141 tmp20
= input
[15 * istride
];
142 tmp21
= input
[7 * istride
];
143 tmp22
= tmp20
- tmp21
;
144 tmp49
= tmp20
+ tmp21
;
145 tmp23
= input
[3 * istride
];
146 tmp24
= input
[11 * istride
];
147 tmp25
= tmp23
- tmp24
;
148 tmp50
= tmp23
+ tmp24
;
150 tmp26
= (K382683432
* tmp22
) - (K923879532
* tmp25
);
151 tmp41
= (K923879532
* tmp22
) + (K382683432
* tmp25
);
152 tmp51
= tmp49
- tmp50
;
153 tmp57
= tmp49
+ tmp50
;
160 ASSERT_ALIGNED_DOUBLE();
161 real_output
[4 * real_ostride
] = tmp7
- tmp14
;
162 tmp55
= tmp7
+ tmp14
;
163 tmp58
= tmp56
+ tmp57
;
164 real_output
[8 * real_ostride
] = tmp55
- tmp58
;
165 real_output
[0] = tmp55
+ tmp58
;
166 imag_output
[4 * imag_ostride
] = tmp57
- tmp56
;
167 tmp53
= tmp13
- tmp10
;
168 tmp54
= K707106781
* (tmp51
- tmp48
);
169 imag_output
[2 * imag_ostride
] = tmp53
+ tmp54
;
170 imag_output
[6 * imag_ostride
] = tmp54
- tmp53
;
177 ASSERT_ALIGNED_DOUBLE();
179 tmp52
= K707106781
* (tmp48
+ tmp51
);
180 real_output
[6 * real_ostride
] = tmp45
- tmp52
;
181 real_output
[2 * real_ostride
] = tmp45
+ tmp52
;
182 tmp39
= tmp35
+ tmp36
;
183 tmp42
= tmp40
+ tmp41
;
184 real_output
[7 * real_ostride
] = tmp39
- tmp42
;
185 real_output
[real_ostride
] = tmp39
+ tmp42
;
187 tmp43
= tmp18
+ tmp17
;
188 tmp44
= tmp41
- tmp40
;
189 imag_output
[3 * imag_ostride
] = tmp43
+ tmp44
;
190 imag_output
[5 * imag_ostride
] = tmp44
- tmp43
;
196 ASSERT_ALIGNED_DOUBLE();
197 tmp19
= tmp17
- tmp18
;
198 tmp34
= tmp26
- tmp33
;
199 imag_output
[imag_ostride
] = tmp19
+ tmp34
;
200 imag_output
[7 * imag_ostride
] = tmp34
- tmp19
;
201 tmp37
= tmp35
- tmp36
;
202 tmp38
= tmp33
+ tmp26
;
203 real_output
[5 * real_ostride
] = tmp37
- tmp38
;
204 real_output
[3 * real_ostride
] = tmp37
+ tmp38
;
208 fftw_codelet_desc fftw_real2hc_16_desc
=
211 (void (*)()) fftw_real2hc_16
,