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:06 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -hc2real 10 */
29 * This function contains 34 FP additions, 14 FP multiplications,
30 * (or, 26 additions, 6 multiplications, 8 fused multiply/add),
31 * 20 stack variables, and 20 memory accesses
33 static const fftw_real K500000000
= FFTW_KONST(+0.500000000000000000000000000000000000000000000);
34 static const fftw_real K1_902113032
= FFTW_KONST(+1.902113032590307144232878666758764286811397268);
35 static const fftw_real K1_175570504
= FFTW_KONST(+1.175570504584946258337411909278145537195304875);
36 static const fftw_real K2_000000000
= FFTW_KONST(+2.000000000000000000000000000000000000000000000);
37 static const fftw_real K1_118033988
= FFTW_KONST(+1.118033988749894848204586834365638117720309180);
46 void fftw_hc2real_10(const fftw_real
*real_input
, const fftw_real
*imag_input
, fftw_real
*output
, int real_istride
, int imag_istride
, int ostride
)
60 ASSERT_ALIGNED_DOUBLE();
66 ASSERT_ALIGNED_DOUBLE();
68 tmp2
= real_input
[5 * real_istride
];
71 tmp21
= imag_input
[4 * imag_istride
];
72 tmp22
= imag_input
[imag_istride
];
73 tmp23
= tmp21
- tmp22
;
74 tmp31
= tmp21
+ tmp22
;
76 tmp18
= imag_input
[2 * imag_istride
];
77 tmp19
= imag_input
[3 * imag_istride
];
78 tmp20
= tmp18
- tmp19
;
79 tmp30
= tmp18
+ tmp19
;
85 ASSERT_ALIGNED_DOUBLE();
91 ASSERT_ALIGNED_DOUBLE();
92 tmp4
= real_input
[2 * real_istride
];
93 tmp5
= real_input
[3 * real_istride
];
96 tmp7
= real_input
[4 * real_istride
];
97 tmp8
= real_input
[real_istride
];
102 tmp28
= K1_118033988
* (tmp6
- tmp9
);
103 tmp14
= tmp12
+ tmp13
;
104 tmp16
= K1_118033988
* (tmp12
- tmp13
);
106 output
[5 * ostride
] = tmp3
+ (K2_000000000
* tmp10
);
113 ASSERT_ALIGNED_DOUBLE();
114 tmp32
= (K1_175570504
* tmp30
) - (K1_902113032
* tmp31
);
115 tmp34
= (K1_902113032
* tmp30
) + (K1_175570504
* tmp31
);
116 tmp27
= tmp3
- (K500000000
* tmp10
);
117 tmp29
= tmp27
- tmp28
;
118 tmp33
= tmp28
+ tmp27
;
119 output
[7 * ostride
] = tmp29
- tmp32
;
120 output
[3 * ostride
] = tmp29
+ tmp32
;
121 output
[ostride
] = tmp33
- tmp34
;
122 output
[9 * ostride
] = tmp33
+ tmp34
;
124 output
[0] = tmp11
+ (K2_000000000
* tmp14
);
131 ASSERT_ALIGNED_DOUBLE();
132 tmp24
= (K1_175570504
* tmp20
) - (K1_902113032
* tmp23
);
133 tmp26
= (K1_902113032
* tmp20
) + (K1_175570504
* tmp23
);
134 tmp15
= tmp11
- (K500000000
* tmp14
);
135 tmp17
= tmp15
- tmp16
;
136 tmp25
= tmp16
+ tmp15
;
137 output
[2 * ostride
] = tmp17
- tmp24
;
138 output
[8 * ostride
] = tmp17
+ tmp24
;
139 output
[6 * ostride
] = tmp25
- tmp26
;
140 output
[4 * ostride
] = tmp25
+ tmp26
;
144 fftw_codelet_desc fftw_hc2real_10_desc
=
147 (void (*)()) fftw_hc2real_10
,