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:38 EDT 1999 */
26 /* Generated by: ./genfft -magic-alignment-check -magic-twiddle-load-all -magic-variables 4 -magic-loopi -real2hc 14 */
29 * This function contains 62 FP additions, 36 FP multiplications,
30 * (or, 62 additions, 36 multiplications, 0 fused multiply/add),
31 * 22 stack variables, and 28 memory accesses
33 static const fftw_real K900968867
= FFTW_KONST(+0.900968867902419126236102319507445051165919162);
34 static const fftw_real K222520933
= FFTW_KONST(+0.222520933956314404288902564496794759466355569);
35 static const fftw_real K623489801
= FFTW_KONST(+0.623489801858733530525004884004239810632274731);
36 static const fftw_real K433883739
= FFTW_KONST(+0.433883739117558120475768332848358754609990728);
37 static const fftw_real K974927912
= FFTW_KONST(+0.974927912181823607018131682993931217232785801);
38 static const fftw_real K781831482
= FFTW_KONST(+0.781831482468029808708444526674057750232334519);
47 void fftw_real2hc_14(const fftw_real
*input
, fftw_real
*real_output
, fftw_real
*imag_output
, int istride
, int real_ostride
, int imag_ostride
)
65 ASSERT_ALIGNED_DOUBLE();
67 tmp2
= input
[7 * istride
];
75 ASSERT_ALIGNED_DOUBLE();
76 tmp4
= input
[4 * istride
];
77 tmp5
= input
[11 * istride
];
80 tmp21
= input
[12 * istride
];
81 tmp22
= input
[5 * istride
];
82 tmp23
= tmp21
- tmp22
;
83 tmp28
= tmp21
+ tmp22
;
90 ASSERT_ALIGNED_DOUBLE();
91 tmp18
= input
[2 * istride
];
92 tmp19
= input
[9 * istride
];
93 tmp20
= tmp18
- tmp19
;
94 tmp29
= tmp18
+ tmp19
;
95 tmp11
= input
[6 * istride
];
96 tmp12
= input
[13 * istride
];
97 tmp13
= tmp11
- tmp12
;
98 tmp34
= tmp11
+ tmp12
;
105 ASSERT_ALIGNED_DOUBLE();
106 tmp7
= input
[10 * istride
];
107 tmp8
= input
[3 * istride
];
110 tmp14
= input
[8 * istride
];
111 tmp15
= input
[istride
];
112 tmp16
= tmp14
- tmp15
;
113 tmp35
= tmp14
+ tmp15
;
122 ASSERT_ALIGNED_DOUBLE();
123 tmp25
= tmp23
- tmp20
;
124 tmp27
= tmp16
- tmp13
;
126 imag_output
[imag_ostride
] = (K781831482
* tmp25
) + (K974927912
* tmp26
) + (K433883739
* tmp27
);
127 imag_output
[5 * imag_ostride
] = -((K974927912
* tmp25
) - (K781831482
* tmp27
) - (K433883739
* tmp26
));
128 imag_output
[3 * imag_ostride
] = (K433883739
* tmp25
) + (K974927912
* tmp27
) - (K781831482
* tmp26
);
130 tmp24
= tmp20
+ tmp23
;
131 tmp17
= tmp13
+ tmp16
;
132 real_output
[3 * real_ostride
] = tmp3
+ (K623489801
* tmp10
) - (K222520933
* tmp17
) - (K900968867
* tmp24
);
133 real_output
[7 * real_ostride
] = tmp3
+ tmp24
+ tmp10
+ tmp17
;
134 real_output
[real_ostride
] = tmp3
+ (K623489801
* tmp24
) - (K900968867
* tmp17
) - (K222520933
* tmp10
);
135 real_output
[5 * real_ostride
] = tmp3
+ (K623489801
* tmp17
) - (K900968867
* tmp10
) - (K222520933
* tmp24
);
144 ASSERT_ALIGNED_DOUBLE();
145 tmp30
= tmp28
- tmp29
;
146 tmp36
= tmp34
- tmp35
;
147 tmp33
= tmp31
- tmp32
;
148 imag_output
[2 * imag_ostride
] = (K974927912
* tmp30
) + (K433883739
* tmp33
) + (K781831482
* tmp36
);
149 imag_output
[6 * imag_ostride
] = -((K781831482
* tmp30
) - (K433883739
* tmp36
) - (K974927912
* tmp33
));
150 imag_output
[4 * imag_ostride
] = -((K433883739
* tmp30
) + (K781831482
* tmp33
) - (K974927912
* tmp36
));
151 tmp38
= tmp29
+ tmp28
;
152 tmp40
= tmp31
+ tmp32
;
153 tmp39
= tmp34
+ tmp35
;
154 real_output
[6 * real_ostride
] = tmp37
+ (K623489801
* tmp38
) - (K900968867
* tmp39
) - (K222520933
* tmp40
);
155 real_output
[2 * real_ostride
] = tmp37
+ (K623489801
* tmp39
) - (K900968867
* tmp40
) - (K222520933
* tmp38
);
156 real_output
[4 * real_ostride
] = tmp37
+ (K623489801
* tmp40
) - (K222520933
* tmp39
) - (K900968867
* tmp38
);
157 real_output
[0] = tmp37
+ tmp38
+ tmp40
+ tmp39
;
161 fftw_codelet_desc fftw_real2hc_14_desc
=
164 (void (*)()) fftw_real2hc_14
,