Rework of libfaad in several areas. Allow removal of malloc with a new define FAAD_ST...
[kugel-rb.git] / apps / codecs / libfaad / sbr_dct.c
blobe9c56c3a18351ba155fabde6c1e69c6466a6dcb2
1 /*
2 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
3 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
4 **
5 ** This program is free software; you can redistribute it and/or modify
6 ** it under the terms of the GNU General Public License as published by
7 ** the Free Software Foundation; either version 2 of the License, or
8 ** (at your option) any later version.
9 **
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ** GNU General Public License for more details.
15 ** You should have received a copy of the GNU General Public License
16 ** along with this program; if not, write to the Free Software
17 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 ** Any non-GPL usage of this software or parts of this software is strictly
20 ** forbidden.
22 ** Commercial non-GPL licensing of this software is possible.
23 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
25 ** $Id$
26 **/
28 #include "common.h"
29 #include "../lib/fft.h"
30 #include "../lib/mdct_lookup.h"
33 #ifdef SBR_DEC
35 #ifdef _MSC_VER
36 #pragma warning(disable:4305)
37 #pragma warning(disable:4244)
38 #endif
41 #include "sbr_dct.h"
43 void DCT4_32(real_t *y, real_t *x)
45 real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
46 real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
47 real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
48 real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
49 real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
50 real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
51 real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
52 real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
53 real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
54 real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
55 real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
56 real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
57 real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130;
58 real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
59 real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
60 real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
61 real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
62 real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
63 real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
64 real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
65 real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
66 real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
67 real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
68 real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
69 real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
70 real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
71 real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
72 real_t f271, f272, f273, f274, f275, f276, f277, f278, f279, f280;
73 real_t f281, f282, f283, f284, f285, f286, f287, f288, f289, f290;
74 real_t f291, f292, f293, f294, f295, f296, f297, f298, f299, f300;
75 real_t f301, f302, f303, f304, f305, f306, f307, f310, f311, f312;
76 real_t f313, f316, f317, f318, f319, f322, f323, f324, f325, f328;
77 real_t f329, f330, f331, f334, f335, f336, f337, f340, f341, f342;
78 real_t f343, f346, f347, f348, f349, f352, f353, f354, f355, f358;
79 real_t f359, f360, f361, f364, f365, f366, f367, f370, f371, f372;
80 real_t f373, f376, f377, f378, f379, f382, f383, f384, f385, f388;
81 real_t f389, f390, f391, f394, f395, f396, f397;
83 f0 = x[15] - x[16];
84 f1 = x[15] + x[16];
85 f2 = MUL_F(FRAC_CONST(0.7071067811865476), f1);
86 f3 = MUL_F(FRAC_CONST(0.7071067811865476), f0);
87 f4 = x[8] - x[23];
88 f5 = x[8] + x[23];
89 f6 = MUL_F(FRAC_CONST(0.7071067811865476), f5);
90 f7 = MUL_F(FRAC_CONST(0.7071067811865476), f4);
91 f8 = x[12] - x[19];
92 f9 = x[12] + x[19];
93 f10 = MUL_F(FRAC_CONST(0.7071067811865476), f9);
94 f11 = MUL_F(FRAC_CONST(0.7071067811865476), f8);
95 f12 = x[11] - x[20];
96 f13 = x[11] + x[20];
97 f14 = MUL_F(FRAC_CONST(0.7071067811865476), f13);
98 f15 = MUL_F(FRAC_CONST(0.7071067811865476), f12);
99 f16 = x[14] - x[17];
100 f17 = x[14] + x[17];
101 f18 = MUL_F(FRAC_CONST(0.7071067811865476), f17);
102 f19 = MUL_F(FRAC_CONST(0.7071067811865476), f16);
103 f20 = x[9] - x[22];
104 f21 = x[9] + x[22];
105 f22 = MUL_F(FRAC_CONST(0.7071067811865476), f21);
106 f23 = MUL_F(FRAC_CONST(0.7071067811865476), f20);
107 f24 = x[13] - x[18];
108 f25 = x[13] + x[18];
109 f26 = MUL_F(FRAC_CONST(0.7071067811865476), f25);
110 f27 = MUL_F(FRAC_CONST(0.7071067811865476), f24);
111 f28 = x[10] - x[21];
112 f29 = x[10] + x[21];
113 f30 = MUL_F(FRAC_CONST(0.7071067811865476), f29);
114 f31 = MUL_F(FRAC_CONST(0.7071067811865476), f28);
115 f32 = x[0] - f2;
116 f33 = x[0] + f2;
117 f34 = x[31] - f3;
118 f35 = x[31] + f3;
119 f36 = x[7] - f6;
120 f37 = x[7] + f6;
121 f38 = x[24] - f7;
122 f39 = x[24] + f7;
123 f40 = x[3] - f10;
124 f41 = x[3] + f10;
125 f42 = x[28] - f11;
126 f43 = x[28] + f11;
127 f44 = x[4] - f14;
128 f45 = x[4] + f14;
129 f46 = x[27] - f15;
130 f47 = x[27] + f15;
131 f48 = x[1] - f18;
132 f49 = x[1] + f18;
133 f50 = x[30] - f19;
134 f51 = x[30] + f19;
135 f52 = x[6] - f22;
136 f53 = x[6] + f22;
137 f54 = x[25] - f23;
138 f55 = x[25] + f23;
139 f56 = x[2] - f26;
140 f57 = x[2] + f26;
141 f58 = x[29] - f27;
142 f59 = x[29] + f27;
143 f60 = x[5] - f30;
144 f61 = x[5] + f30;
145 f62 = x[26] - f31;
146 f63 = x[26] + f31;
147 f64 = f39 + f37;
148 f65 = MUL_F(FRAC_CONST(-0.5411961001461969), f39);
149 f66 = MUL_F(FRAC_CONST(0.9238795325112867), f64);
150 f67 = MUL_C(COEF_CONST(1.3065629648763766), f37);
151 f68 = f65 + f66;
152 f69 = f67 - f66;
153 f70 = f38 + f36;
154 f71 = MUL_C(COEF_CONST(1.3065629648763770), f38);
155 f72 = MUL_F(FRAC_CONST(-0.3826834323650904), f70);
156 f73 = MUL_F(FRAC_CONST(0.5411961001461961), f36);
157 f74 = f71 + f72;
158 f75 = f73 - f72;
159 f76 = f47 + f45;
160 f77 = MUL_F(FRAC_CONST(-0.5411961001461969), f47);
161 f78 = MUL_F(FRAC_CONST(0.9238795325112867), f76);
162 f79 = MUL_C(COEF_CONST(1.3065629648763766), f45);
163 f80 = f77 + f78;
164 f81 = f79 - f78;
165 f82 = f46 + f44;
166 f83 = MUL_C(COEF_CONST(1.3065629648763770), f46);
167 f84 = MUL_F(FRAC_CONST(-0.3826834323650904), f82);
168 f85 = MUL_F(FRAC_CONST(0.5411961001461961), f44);
169 f86 = f83 + f84;
170 f87 = f85 - f84;
171 f88 = f55 + f53;
172 f89 = MUL_F(FRAC_CONST(-0.5411961001461969), f55);
173 f90 = MUL_F(FRAC_CONST(0.9238795325112867), f88);
174 f91 = MUL_C(COEF_CONST(1.3065629648763766), f53);
175 f92 = f89 + f90;
176 f93 = f91 - f90;
177 f94 = f54 + f52;
178 f95 = MUL_C(COEF_CONST(1.3065629648763770), f54);
179 f96 = MUL_F(FRAC_CONST(-0.3826834323650904), f94);
180 f97 = MUL_F(FRAC_CONST(0.5411961001461961), f52);
181 f98 = f95 + f96;
182 f99 = f97 - f96;
183 f100 = f63 + f61;
184 f101 = MUL_F(FRAC_CONST(-0.5411961001461969), f63);
185 f102 = MUL_F(FRAC_CONST(0.9238795325112867), f100);
186 f103 = MUL_C(COEF_CONST(1.3065629648763766), f61);
187 f104 = f101 + f102;
188 f105 = f103 - f102;
189 f106 = f62 + f60;
190 f107 = MUL_C(COEF_CONST(1.3065629648763770), f62);
191 f108 = MUL_F(FRAC_CONST(-0.3826834323650904), f106);
192 f109 = MUL_F(FRAC_CONST(0.5411961001461961), f60);
193 f110 = f107 + f108;
194 f111 = f109 - f108;
195 f112 = f33 - f68;
196 f113 = f33 + f68;
197 f114 = f35 - f69;
198 f115 = f35 + f69;
199 f116 = f32 - f74;
200 f117 = f32 + f74;
201 f118 = f34 - f75;
202 f119 = f34 + f75;
203 f120 = f41 - f80;
204 f121 = f41 + f80;
205 f122 = f43 - f81;
206 f123 = f43 + f81;
207 f124 = f40 - f86;
208 f125 = f40 + f86;
209 f126 = f42 - f87;
210 f127 = f42 + f87;
211 f128 = f49 - f92;
212 f129 = f49 + f92;
213 f130 = f51 - f93;
214 f131 = f51 + f93;
215 f132 = f48 - f98;
216 f133 = f48 + f98;
217 f134 = f50 - f99;
218 f135 = f50 + f99;
219 f136 = f57 - f104;
220 f137 = f57 + f104;
221 f138 = f59 - f105;
222 f139 = f59 + f105;
223 f140 = f56 - f110;
224 f141 = f56 + f110;
225 f142 = f58 - f111;
226 f143 = f58 + f111;
227 f144 = f123 + f121;
228 f145 = MUL_F(FRAC_CONST(-0.7856949583871021), f123);
229 f146 = MUL_F(FRAC_CONST(0.9807852804032304), f144);
230 f147 = MUL_C(COEF_CONST(1.1758756024193588), f121);
231 f148 = f145 + f146;
232 f149 = f147 - f146;
233 f150 = f127 + f125;
234 f151 = MUL_F(FRAC_CONST(0.2758993792829431), f127);
235 f152 = MUL_F(FRAC_CONST(0.5555702330196022), f150);
236 f153 = MUL_C(COEF_CONST(1.3870398453221475), f125);
237 f154 = f151 + f152;
238 f155 = f153 - f152;
239 f156 = f122 + f120;
240 f157 = MUL_C(COEF_CONST(1.1758756024193591), f122);
241 f158 = MUL_F(FRAC_CONST(-0.1950903220161287), f156);
242 f159 = MUL_F(FRAC_CONST(0.7856949583871016), f120);
243 f160 = f157 + f158;
244 f161 = f159 - f158;
245 f162 = f126 + f124;
246 f163 = MUL_C(COEF_CONST(1.3870398453221473), f126);
247 f164 = MUL_F(FRAC_CONST(-0.8314696123025455), f162);
248 f165 = MUL_F(FRAC_CONST(-0.2758993792829436), f124);
249 f166 = f163 + f164;
250 f167 = f165 - f164;
251 f168 = f139 + f137;
252 f169 = MUL_F(FRAC_CONST(-0.7856949583871021), f139);
253 f170 = MUL_F(FRAC_CONST(0.9807852804032304), f168);
254 f171 = MUL_C(COEF_CONST(1.1758756024193588), f137);
255 f172 = f169 + f170;
256 f173 = f171 - f170;
257 f174 = f143 + f141;
258 f175 = MUL_F(FRAC_CONST(0.2758993792829431), f143);
259 f176 = MUL_F(FRAC_CONST(0.5555702330196022), f174);
260 f177 = MUL_C(COEF_CONST(1.3870398453221475), f141);
261 f178 = f175 + f176;
262 f179 = f177 - f176;
263 f180 = f138 + f136;
264 f181 = MUL_C(COEF_CONST(1.1758756024193591), f138);
265 f182 = MUL_F(FRAC_CONST(-0.1950903220161287), f180);
266 f183 = MUL_F(FRAC_CONST(0.7856949583871016), f136);
267 f184 = f181 + f182;
268 f185 = f183 - f182;
269 f186 = f142 + f140;
270 f187 = MUL_C(COEF_CONST(1.3870398453221473), f142);
271 f188 = MUL_F(FRAC_CONST(-0.8314696123025455), f186);
272 f189 = MUL_F(FRAC_CONST(-0.2758993792829436), f140);
273 f190 = f187 + f188;
274 f191 = f189 - f188;
275 f192 = f113 - f148;
276 f193 = f113 + f148;
277 f194 = f115 - f149;
278 f195 = f115 + f149;
279 f196 = f117 - f154;
280 f197 = f117 + f154;
281 f198 = f119 - f155;
282 f199 = f119 + f155;
283 f200 = f112 - f160;
284 f201 = f112 + f160;
285 f202 = f114 - f161;
286 f203 = f114 + f161;
287 f204 = f116 - f166;
288 f205 = f116 + f166;
289 f206 = f118 - f167;
290 f207 = f118 + f167;
291 f208 = f129 - f172;
292 f209 = f129 + f172;
293 f210 = f131 - f173;
294 f211 = f131 + f173;
295 f212 = f133 - f178;
296 f213 = f133 + f178;
297 f214 = f135 - f179;
298 f215 = f135 + f179;
299 f216 = f128 - f184;
300 f217 = f128 + f184;
301 f218 = f130 - f185;
302 f219 = f130 + f185;
303 f220 = f132 - f190;
304 f221 = f132 + f190;
305 f222 = f134 - f191;
306 f223 = f134 + f191;
307 f224 = f211 + f209;
308 f225 = MUL_F(FRAC_CONST(-0.8971675863426361), f211);
309 f226 = MUL_F(FRAC_CONST(0.9951847266721968), f224);
310 f227 = MUL_C(COEF_CONST(1.0932018670017576), f209);
311 f228 = f225 + f226;
312 f229 = f227 - f226;
313 f230 = f215 + f213;
314 f231 = MUL_F(FRAC_CONST(-0.4105245275223571), f215);
315 f232 = MUL_F(FRAC_CONST(0.8819212643483549), f230);
316 f233 = MUL_C(COEF_CONST(1.3533180011743529), f213);
317 f234 = f231 + f232;
318 f235 = f233 - f232;
319 f236 = f219 + f217;
320 f237 = MUL_F(FRAC_CONST(0.1386171691990915), f219);
321 f238 = MUL_F(FRAC_CONST(0.6343932841636455), f236);
322 f239 = MUL_C(COEF_CONST(1.4074037375263826), f217);
323 f240 = f237 + f238;
324 f241 = f239 - f238;
325 f242 = f223 + f221;
326 f243 = MUL_F(FRAC_CONST(0.6666556584777466), f223);
327 f244 = MUL_F(FRAC_CONST(0.2902846772544623), f242);
328 f245 = MUL_C(COEF_CONST(1.2472250129866711), f221);
329 f246 = f243 + f244;
330 f247 = f245 - f244;
331 f248 = f210 + f208;
332 f249 = MUL_C(COEF_CONST(1.0932018670017574), f210);
333 f250 = MUL_F(FRAC_CONST(-0.0980171403295605), f248);
334 f251 = MUL_F(FRAC_CONST(0.8971675863426364), f208);
335 f252 = f249 + f250;
336 f253 = f251 - f250;
337 f254 = f214 + f212;
338 f255 = MUL_C(COEF_CONST(1.3533180011743529), f214);
339 f256 = MUL_F(FRAC_CONST(-0.4713967368259979), f254);
340 f257 = MUL_F(FRAC_CONST(0.4105245275223569), f212);
341 f258 = f255 + f256;
342 f259 = f257 - f256;
343 f260 = f218 + f216;
344 f261 = MUL_C(COEF_CONST(1.4074037375263826), f218);
345 f262 = MUL_F(FRAC_CONST(-0.7730104533627369), f260);
346 f263 = MUL_F(FRAC_CONST(-0.1386171691990913), f216);
347 f264 = f261 + f262;
348 f265 = f263 - f262;
349 f266 = f222 + f220;
350 f267 = MUL_C(COEF_CONST(1.2472250129866711), f222);
351 f268 = MUL_F(FRAC_CONST(-0.9569403357322089), f266);
352 f269 = MUL_F(FRAC_CONST(-0.6666556584777469), f220);
353 f270 = f267 + f268;
354 f271 = f269 - f268;
355 f272 = f193 - f228;
356 f273 = f193 + f228;
357 f274 = f195 - f229;
358 f275 = f195 + f229;
359 f276 = f197 - f234;
360 f277 = f197 + f234;
361 f278 = f199 - f235;
362 f279 = f199 + f235;
363 f280 = f201 - f240;
364 f281 = f201 + f240;
365 f282 = f203 - f241;
366 f283 = f203 + f241;
367 f284 = f205 - f246;
368 f285 = f205 + f246;
369 f286 = f207 - f247;
370 f287 = f207 + f247;
371 f288 = f192 - f252;
372 f289 = f192 + f252;
373 f290 = f194 - f253;
374 f291 = f194 + f253;
375 f292 = f196 - f258;
376 f293 = f196 + f258;
377 f294 = f198 - f259;
378 f295 = f198 + f259;
379 f296 = f200 - f264;
380 f297 = f200 + f264;
381 f298 = f202 - f265;
382 f299 = f202 + f265;
383 f300 = f204 - f270;
384 f301 = f204 + f270;
385 f302 = f206 - f271;
386 f303 = f206 + f271;
387 f304 = f275 + f273;
388 f305 = MUL_F(FRAC_CONST(-0.9751575901732920), f275);
389 f306 = MUL_F(FRAC_CONST(0.9996988186962043), f304);
390 f307 = MUL_C(COEF_CONST(1.0242400472191164), f273);
391 y[0] = f305 + f306;
392 y[31] = f307 - f306;
393 f310 = f279 + f277;
394 f311 = MUL_F(FRAC_CONST(-0.8700688593994936), f279);
395 f312 = MUL_F(FRAC_CONST(0.9924795345987100), f310);
396 f313 = MUL_C(COEF_CONST(1.1148902097979263), f277);
397 y[2] = f311 + f312;
398 y[29] = f313 - f312;
399 f316 = f283 + f281;
400 f317 = MUL_F(FRAC_CONST(-0.7566008898816587), f283);
401 f318 = MUL_F(FRAC_CONST(0.9757021300385286), f316);
402 f319 = MUL_C(COEF_CONST(1.1948033701953984), f281);
403 y[4] = f317 + f318;
404 y[27] = f319 - f318;
405 f322 = f287 + f285;
406 f323 = MUL_F(FRAC_CONST(-0.6358464401941451), f287);
407 f324 = MUL_F(FRAC_CONST(0.9495281805930367), f322);
408 f325 = MUL_C(COEF_CONST(1.2632099209919283), f285);
409 y[6] = f323 + f324;
410 y[25] = f325 - f324;
411 f328 = f291 + f289;
412 f329 = MUL_F(FRAC_CONST(-0.5089684416985408), f291);
413 f330 = MUL_F(FRAC_CONST(0.9142097557035307), f328);
414 f331 = MUL_C(COEF_CONST(1.3194510697085207), f289);
415 y[8] = f329 + f330;
416 y[23] = f331 - f330;
417 f334 = f295 + f293;
418 f335 = MUL_F(FRAC_CONST(-0.3771887988789273), f295);
419 f336 = MUL_F(FRAC_CONST(0.8700869911087114), f334);
420 f337 = MUL_C(COEF_CONST(1.3629851833384954), f293);
421 y[10] = f335 + f336;
422 y[21] = f337 - f336;
423 f340 = f299 + f297;
424 f341 = MUL_F(FRAC_CONST(-0.2417766217337384), f299);
425 f342 = MUL_F(FRAC_CONST(0.8175848131515837), f340);
426 f343 = MUL_C(COEF_CONST(1.3933930045694289), f297);
427 y[12] = f341 + f342;
428 y[19] = f343 - f342;
429 f346 = f303 + f301;
430 f347 = MUL_F(FRAC_CONST(-0.1040360035527077), f303);
431 f348 = MUL_F(FRAC_CONST(0.7572088465064845), f346);
432 f349 = MUL_C(COEF_CONST(1.4103816894602612), f301);
433 y[14] = f347 + f348;
434 y[17] = f349 - f348;
435 f352 = f274 + f272;
436 f353 = MUL_F(FRAC_CONST(0.0347065382144002), f274);
437 f354 = MUL_F(FRAC_CONST(0.6895405447370668), f352);
438 f355 = MUL_C(COEF_CONST(1.4137876276885337), f272);
439 y[16] = f353 + f354;
440 y[15] = f355 - f354;
441 f358 = f278 + f276;
442 f359 = MUL_F(FRAC_CONST(0.1731148370459795), f278);
443 f360 = MUL_F(FRAC_CONST(0.6152315905806268), f358);
444 f361 = MUL_C(COEF_CONST(1.4035780182072330), f276);
445 y[18] = f359 + f360;
446 y[13] = f361 - f360;
447 f364 = f282 + f280;
448 f365 = MUL_F(FRAC_CONST(0.3098559453626100), f282);
449 f366 = MUL_F(FRAC_CONST(0.5349976198870972), f364);
450 f367 = MUL_C(COEF_CONST(1.3798511851368043), f280);
451 y[20] = f365 + f366;
452 y[11] = f367 - f366;
453 f370 = f286 + f284;
454 f371 = MUL_F(FRAC_CONST(0.4436129715409088), f286);
455 f372 = MUL_F(FRAC_CONST(0.4496113296546065), f370);
456 f373 = MUL_C(COEF_CONST(1.3428356308501219), f284);
457 y[22] = f371 + f372;
458 y[9] = f373 - f372;
459 f376 = f290 + f288;
460 f377 = MUL_F(FRAC_CONST(0.5730977622997509), f290);
461 f378 = MUL_F(FRAC_CONST(0.3598950365349881), f376);
462 f379 = MUL_C(COEF_CONST(1.2928878353697271), f288);
463 y[24] = f377 + f378;
464 y[7] = f379 - f378;
465 f382 = f294 + f292;
466 f383 = MUL_F(FRAC_CONST(0.6970633083205415), f294);
467 f384 = MUL_F(FRAC_CONST(0.2667127574748984), f382);
468 f385 = MUL_C(COEF_CONST(1.2304888232703382), f292);
469 y[26] = f383 + f384;
470 y[5] = f385 - f384;
471 f388 = f298 + f296;
472 f389 = MUL_F(FRAC_CONST(0.8143157536286401), f298);
473 f390 = MUL_F(FRAC_CONST(0.1709618887603012), f388);
474 f391 = MUL_C(COEF_CONST(1.1562395311492424), f296);
475 y[28] = f389 + f390;
476 y[3] = f391 - f390;
477 f394 = f302 + f300;
478 f395 = MUL_F(FRAC_CONST(0.9237258930790228), f302);
479 f396 = MUL_F(FRAC_CONST(0.0735645635996674), f394);
480 f397 = MUL_C(COEF_CONST(1.0708550202783576), f300);
481 y[30] = f395 + f396;
482 y[1] = f397 - f396;
485 #ifdef SBR_LOW_POWER
487 void DCT2_16_unscaled(real_t *y, real_t *x)
489 real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
490 real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
491 real_t f21, f22, f23, f24, f25, f26, f27, f28, f31, f32;
492 real_t f33, f34, f37, f38, f39, f40, f41, f42, f43, f44;
493 real_t f45, f46, f47, f48, f49, f51, f53, f54, f57, f58;
494 real_t f59, f60, f61, f62, f63, f64, f65, f66, f67, f68;
495 real_t f69, f70, f71, f72, f73, f74, f75, f76, f77, f78;
496 real_t f79, f80, f81, f82, f83, f84, f85, f86, f87, f88;
497 real_t f89, f90, f91, f92, f95, f96, f97, f98, f101, f102;
498 real_t f103, f104, f107, f108, f109, f110;
500 f0 = x[0] - x[15];
501 f1 = x[0] + x[15];
502 f2 = x[1] - x[14];
503 f3 = x[1] + x[14];
504 f4 = x[2] - x[13];
505 f5 = x[2] + x[13];
506 f6 = x[3] - x[12];
507 f7 = x[3] + x[12];
508 f8 = x[4] - x[11];
509 f9 = x[4] + x[11];
510 f10 = x[5] - x[10];
511 f11 = x[5] + x[10];
512 f12 = x[6] - x[9];
513 f13 = x[6] + x[9];
514 f14 = x[7] - x[8];
515 f15 = x[7] + x[8];
516 f16 = f1 - f15;
517 f17 = f1 + f15;
518 f18 = f3 - f13;
519 f19 = f3 + f13;
520 f20 = f5 - f11;
521 f21 = f5 + f11;
522 f22 = f7 - f9;
523 f23 = f7 + f9;
524 f24 = f17 - f23;
525 f25 = f17 + f23;
526 f26 = f19 - f21;
527 f27 = f19 + f21;
528 f28 = f25 - f27;
529 y[0] = f25 + f27;
530 y[8] = MUL_F(f28, FRAC_CONST(0.7071067811865476));
531 f31 = f24 + f26;
532 f32 = MUL_C(f24, COEF_CONST(1.3065629648763766));
533 f33 = MUL_F(f31, FRAC_CONST(-0.9238795325112866));
534 f34 = MUL_F(f26, FRAC_CONST(-0.5411961001461967));
535 y[12] = f32 + f33;
536 y[4] = f34 - f33;
537 f37 = f16 + f22;
538 f38 = MUL_C(f16, COEF_CONST(1.1758756024193588));
539 f39 = MUL_F(f37, FRAC_CONST(-0.9807852804032304));
540 f40 = MUL_F(f22, FRAC_CONST(-0.7856949583871021));
541 f41 = f38 + f39;
542 f42 = f40 - f39;
543 f43 = f18 + f20;
544 f44 = MUL_C(f18, COEF_CONST(1.3870398453221473));
545 f45 = MUL_F(f43, FRAC_CONST(-0.8314696123025455));
546 f46 = MUL_F(f20, FRAC_CONST(-0.2758993792829436));
547 f47 = f44 + f45;
548 f48 = f46 - f45;
549 f49 = f42 - f48;
550 y[2] = f42 + f48;
551 f51 = MUL_F(f49, FRAC_CONST(0.7071067811865476));
552 y[14] = f41 - f47;
553 f53 = f41 + f47;
554 f54 = MUL_F(f53, FRAC_CONST(0.7071067811865476));
555 y[10] = f51 - f54;
556 y[6] = f51 + f54;
557 f57 = f2 - f4;
558 f58 = f2 + f4;
559 f59 = f6 - f8;
560 f60 = f6 + f8;
561 f61 = f10 - f12;
562 f62 = f10 + f12;
563 f63 = MUL_F(f60, FRAC_CONST(0.7071067811865476));
564 f64 = f0 - f63;
565 f65 = f0 + f63;
566 f66 = f58 + f62;
567 f67 = MUL_C(f58, COEF_CONST(1.3065629648763766));
568 f68 = MUL_F(f66, FRAC_CONST(-0.9238795325112866));
569 f69 = MUL_F(f62, FRAC_CONST(-0.5411961001461967));
570 f70 = f67 + f68;
571 f71 = f69 - f68;
572 f72 = f65 - f71;
573 f73 = f65 + f71;
574 f74 = f64 - f70;
575 f75 = f64 + f70;
576 f76 = MUL_F(f59, FRAC_CONST(0.7071067811865476));
577 f77 = f14 - f76;
578 f78 = f14 + f76;
579 f79 = f61 + f57;
580 f80 = MUL_C(f61, COEF_CONST(1.3065629648763766));
581 f81 = MUL_F(f79, FRAC_CONST(-0.9238795325112866));
582 f82 = MUL_F(f57, FRAC_CONST(-0.5411961001461967));
583 f83 = f80 + f81;
584 f84 = f82 - f81;
585 f85 = f78 - f84;
586 f86 = f78 + f84;
587 f87 = f77 - f83;
588 f88 = f77 + f83;
589 f89 = f86 + f73;
590 f90 = MUL_F(f86, FRAC_CONST(-0.8971675863426361));
591 f91 = MUL_F(f89, FRAC_CONST(0.9951847266721968));
592 f92 = MUL_C(f73, COEF_CONST(1.0932018670017576));
593 y[1] = f90 + f91;
594 y[15] = f92 - f91;
595 f95 = f75 - f88;
596 f96 = MUL_F(f88, FRAC_CONST(-0.6666556584777466));
597 f97 = MUL_F(f95, FRAC_CONST(0.9569403357322089));
598 f98 = MUL_C(f75, COEF_CONST(1.2472250129866713));
599 y[3] = f97 - f96;
600 y[13] = f98 - f97;
601 f101 = f87 + f74;
602 f102 = MUL_F(f87, FRAC_CONST(-0.4105245275223571));
603 f103 = MUL_F(f101, FRAC_CONST(0.8819212643483549));
604 f104 = MUL_C(f74, COEF_CONST(1.3533180011743529));
605 y[5] = f102 + f103;
606 y[11] = f104 - f103;
607 f107 = f72 - f85;
608 f108 = MUL_F(f85, FRAC_CONST(-0.1386171691990915));
609 f109 = MUL_F(f107, FRAC_CONST(0.7730104533627370));
610 f110 = MUL_C(f72, COEF_CONST(1.4074037375263826));
611 y[7] = f109 - f108;
612 y[9] = f110 - f109;
615 void DCT4_16(real_t *y, real_t *x)
617 real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
618 real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
619 real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
620 real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
621 real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
622 real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
623 real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
624 real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
625 real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
626 real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
627 real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
628 real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
629 real_t f121, f122, f123, f124, f125, f126, f127, f128, f130, f132;
630 real_t f134, f136, f138, f140, f142, f144, f145, f148, f149, f152;
631 real_t f153, f156, f157;
633 f0 = x[0] + x[15];
634 f1 = MUL_C(COEF_CONST(1.0478631305325901), x[0]);
635 f2 = MUL_F(FRAC_CONST(-0.9987954562051724), f0);
636 f3 = MUL_F(FRAC_CONST(-0.9497277818777548), x[15]);
637 f4 = f1 + f2;
638 f5 = f3 - f2;
639 f6 = x[2] + x[13];
640 f7 = MUL_C(COEF_CONST(1.2130114330978077), x[2]);
641 f8 = MUL_F(FRAC_CONST(-0.9700312531945440), f6);
642 f9 = MUL_F(FRAC_CONST(-0.7270510732912803), x[13]);
643 f10 = f7 + f8;
644 f11 = f9 - f8;
645 f12 = x[4] + x[11];
646 f13 = MUL_C(COEF_CONST(1.3315443865537255), x[4]);
647 f14 = MUL_F(FRAC_CONST(-0.9039892931234433), f12);
648 f15 = MUL_F(FRAC_CONST(-0.4764341996931612), x[11]);
649 f16 = f13 + f14;
650 f17 = f15 - f14;
651 f18 = x[6] + x[9];
652 f19 = MUL_C(COEF_CONST(1.3989068359730781), x[6]);
653 f20 = MUL_F(FRAC_CONST(-0.8032075314806453), f18);
654 f21 = MUL_F(FRAC_CONST(-0.2075082269882124), x[9]);
655 f22 = f19 + f20;
656 f23 = f21 - f20;
657 f24 = x[8] + x[7];
658 f25 = MUL_C(COEF_CONST(1.4125100802019777), x[8]);
659 f26 = MUL_F(FRAC_CONST(-0.6715589548470187), f24);
660 f27 = MUL_F(FRAC_CONST(0.0693921705079402), x[7]);
661 f28 = f25 + f26;
662 f29 = f27 - f26;
663 f30 = x[10] + x[5];
664 f31 = MUL_C(COEF_CONST(1.3718313541934939), x[10]);
665 f32 = MUL_F(FRAC_CONST(-0.5141027441932219), f30);
666 f33 = MUL_F(FRAC_CONST(0.3436258658070501), x[5]);
667 f34 = f31 + f32;
668 f35 = f33 - f32;
669 f36 = x[12] + x[3];
670 f37 = MUL_C(COEF_CONST(1.2784339185752409), x[12]);
671 f38 = MUL_F(FRAC_CONST(-0.3368898533922200), f36);
672 f39 = MUL_F(FRAC_CONST(0.6046542117908008), x[3]);
673 f40 = f37 + f38;
674 f41 = f39 - f38;
675 f42 = x[14] + x[1];
676 f43 = MUL_C(COEF_CONST(1.1359069844201433), x[14]);
677 f44 = MUL_F(FRAC_CONST(-0.1467304744553624), f42);
678 f45 = MUL_F(FRAC_CONST(0.8424460355094185), x[1]);
679 f46 = f43 + f44;
680 f47 = f45 - f44;
681 f48 = f5 - f29;
682 f49 = f5 + f29;
683 f50 = f4 - f28;
684 f51 = f4 + f28;
685 f52 = f11 - f35;
686 f53 = f11 + f35;
687 f54 = f10 - f34;
688 f55 = f10 + f34;
689 f56 = f17 - f41;
690 f57 = f17 + f41;
691 f58 = f16 - f40;
692 f59 = f16 + f40;
693 f60 = f23 - f47;
694 f61 = f23 + f47;
695 f62 = f22 - f46;
696 f63 = f22 + f46;
697 f64 = f48 + f50;
698 f65 = MUL_C(COEF_CONST(1.1758756024193588), f48);
699 f66 = MUL_F(FRAC_CONST(-0.9807852804032304), f64);
700 f67 = MUL_F(FRAC_CONST(-0.7856949583871021), f50);
701 f68 = f65 + f66;
702 f69 = f67 - f66;
703 f70 = f52 + f54;
704 f71 = MUL_C(COEF_CONST(1.3870398453221475), f52);
705 f72 = MUL_F(FRAC_CONST(-0.5555702330196022), f70);
706 f73 = MUL_F(FRAC_CONST(0.2758993792829431), f54);
707 f74 = f71 + f72;
708 f75 = f73 - f72;
709 f76 = f56 + f58;
710 f77 = MUL_F(FRAC_CONST(0.7856949583871022), f56);
711 f78 = MUL_F(FRAC_CONST(0.1950903220161283), f76);
712 f79 = MUL_C(COEF_CONST(1.1758756024193586), f58);
713 f80 = f77 + f78;
714 f81 = f79 - f78;
715 f82 = f60 + f62;
716 f83 = MUL_F(FRAC_CONST(-0.2758993792829430), f60);
717 f84 = MUL_F(FRAC_CONST(0.8314696123025452), f82);
718 f85 = MUL_C(COEF_CONST(1.3870398453221475), f62);
719 f86 = f83 + f84;
720 f87 = f85 - f84;
721 f88 = f49 - f57;
722 f89 = f49 + f57;
723 f90 = f51 - f59;
724 f91 = f51 + f59;
725 f92 = f53 - f61;
726 f93 = f53 + f61;
727 f94 = f55 - f63;
728 f95 = f55 + f63;
729 f96 = f69 - f81;
730 f97 = f69 + f81;
731 f98 = f68 - f80;
732 f99 = f68 + f80;
733 f100 = f75 - f87;
734 f101 = f75 + f87;
735 f102 = f74 - f86;
736 f103 = f74 + f86;
737 f104 = f88 + f90;
738 f105 = MUL_C(COEF_CONST(1.3065629648763766), f88);
739 f106 = MUL_F(FRAC_CONST(-0.9238795325112866), f104);
740 f107 = MUL_F(FRAC_CONST(-0.5411961001461967), f90);
741 f108 = f105 + f106;
742 f109 = f107 - f106;
743 f110 = f92 + f94;
744 f111 = MUL_F(FRAC_CONST(0.5411961001461969), f92);
745 f112 = MUL_F(FRAC_CONST(0.3826834323650898), f110);
746 f113 = MUL_C(COEF_CONST(1.3065629648763766), f94);
747 f114 = f111 + f112;
748 f115 = f113 - f112;
749 f116 = f96 + f98;
750 f117 = MUL_C(COEF_CONST(1.3065629648763766), f96);
751 f118 = MUL_F(FRAC_CONST(-0.9238795325112866), f116);
752 f119 = MUL_F(FRAC_CONST(-0.5411961001461967), f98);
753 f120 = f117 + f118;
754 f121 = f119 - f118;
755 f122 = f100 + f102;
756 f123 = MUL_F(FRAC_CONST(0.5411961001461969), f100);
757 f124 = MUL_F(FRAC_CONST(0.3826834323650898), f122);
758 f125 = MUL_C(COEF_CONST(1.3065629648763766), f102);
759 f126 = f123 + f124;
760 f127 = f125 - f124;
761 f128 = f89 - f93;
762 y[0] = f89 + f93;
763 f130 = f91 - f95;
764 y[15] = f91 + f95;
765 f132 = f109 - f115;
766 y[3] = f109 + f115;
767 f134 = f108 - f114;
768 y[12] = f108 + f114;
769 f136 = f97 - f101;
770 y[1] = f97 + f101;
771 f138 = f99 - f103;
772 y[14] = f99 + f103;
773 f140 = f121 - f127;
774 y[2] = f121 + f127;
775 f142 = f120 - f126;
776 y[13] = f120 + f126;
777 f144 = f128 - f130;
778 f145 = f128 + f130;
779 y[8] = MUL_F(FRAC_CONST(0.7071067811865474), f144);
780 y[7] = MUL_F(FRAC_CONST(0.7071067811865474), f145);
781 f148 = f132 - f134;
782 f149 = f132 + f134;
783 y[11] = MUL_F(FRAC_CONST(0.7071067811865474), f148);
784 y[4] = MUL_F(FRAC_CONST(0.7071067811865474), f149);
785 f152 = f136 - f138;
786 f153 = f136 + f138;
787 y[9] = MUL_F(FRAC_CONST(0.7071067811865474), f152);
788 y[6] = MUL_F(FRAC_CONST(0.7071067811865474), f153);
789 f156 = f140 - f142;
790 f157 = f140 + f142;
791 y[10] = MUL_F(FRAC_CONST(0.7071067811865474), f156);
792 y[5] = MUL_F(FRAC_CONST(0.7071067811865474), f157);
795 void DCT3_32_unscaled(real_t *y, real_t *x)
797 real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
798 real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
799 real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
800 real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
801 real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
802 real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
803 real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
804 real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
805 real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
806 real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
807 real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
808 real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
809 real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130;
810 real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
811 real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
812 real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
813 real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
814 real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
815 real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
816 real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
817 real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
818 real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
819 real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
820 real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
821 real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
822 real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
823 real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
824 real_t f271, f272;
826 f0 = MUL_F(x[16], FRAC_CONST(0.7071067811865476));
827 f1 = x[0] - f0;
828 f2 = x[0] + f0;
829 f3 = x[8] + x[24];
830 f4 = MUL_C(x[8], COEF_CONST(1.3065629648763766));
831 f5 = MUL_F(f3, FRAC_CONST((-0.9238795325112866)));
832 f6 = MUL_F(x[24], FRAC_CONST((-0.5411961001461967)));
833 f7 = f4 + f5;
834 f8 = f6 - f5;
835 f9 = f2 - f8;
836 f10 = f2 + f8;
837 f11 = f1 - f7;
838 f12 = f1 + f7;
839 f13 = x[4] + x[28];
840 f14 = MUL_C(x[4], COEF_CONST(1.1758756024193588));
841 f15 = MUL_F(f13, FRAC_CONST((-0.9807852804032304)));
842 f16 = MUL_F(x[28], FRAC_CONST((-0.7856949583871021)));
843 f17 = f14 + f15;
844 f18 = f16 - f15;
845 f19 = x[12] + x[20];
846 f20 = MUL_C(x[12], COEF_CONST(1.3870398453221473));
847 f21 = MUL_F(f19, FRAC_CONST((-0.8314696123025455)));
848 f22 = MUL_F(x[20], FRAC_CONST((-0.2758993792829436)));
849 f23 = f20 + f21;
850 f24 = f22 - f21;
851 f25 = f18 - f24;
852 f26 = f18 + f24;
853 f27 = MUL_F(f25, FRAC_CONST(0.7071067811865476));
854 f28 = f17 - f23;
855 f29 = f17 + f23;
856 f30 = MUL_F(f29, FRAC_CONST(0.7071067811865476));
857 f31 = f27 - f30;
858 f32 = f27 + f30;
859 f33 = f10 - f26;
860 f34 = f10 + f26;
861 f35 = f12 - f32;
862 f36 = f12 + f32;
863 f37 = f11 - f31;
864 f38 = f11 + f31;
865 f39 = f9 - f28;
866 f40 = f9 + f28;
867 f41 = x[2] + x[30];
868 f42 = MUL_C(x[2], COEF_CONST(1.0932018670017569));
869 f43 = MUL_F(f41, FRAC_CONST((-0.9951847266721969)));
870 f44 = MUL_F(x[30], FRAC_CONST((-0.8971675863426368)));
871 f45 = f42 + f43;
872 f46 = f44 - f43;
873 f47 = x[6] + x[26];
874 f48 = MUL_C(x[6], COEF_CONST(1.2472250129866711));
875 f49 = MUL_F(f47, FRAC_CONST((-0.9569403357322089)));
876 f50 = MUL_F(x[26], FRAC_CONST((-0.6666556584777469)));
877 f51 = f48 + f49;
878 f52 = f50 - f49;
879 f53 = x[10] + x[22];
880 f54 = MUL_C(x[10], COEF_CONST(1.3533180011743526));
881 f55 = MUL_F(f53, FRAC_CONST((-0.8819212643483551)));
882 f56 = MUL_F(x[22], FRAC_CONST((-0.4105245275223575)));
883 f57 = f54 + f55;
884 f58 = f56 - f55;
885 f59 = x[14] + x[18];
886 f60 = MUL_C(x[14], COEF_CONST(1.4074037375263826));
887 f61 = MUL_F(f59, FRAC_CONST((-0.7730104533627369)));
888 f62 = MUL_F(x[18], FRAC_CONST((-0.1386171691990913)));
889 f63 = f60 + f61;
890 f64 = f62 - f61;
891 f65 = f46 - f64;
892 f66 = f46 + f64;
893 f67 = f52 - f58;
894 f68 = f52 + f58;
895 f69 = f66 - f68;
896 f70 = f66 + f68;
897 f71 = MUL_F(f69, FRAC_CONST(0.7071067811865476));
898 f72 = f65 + f67;
899 f73 = MUL_C(f65, COEF_CONST(1.3065629648763766));
900 f74 = MUL_F(f72, FRAC_CONST((-0.9238795325112866)));
901 f75 = MUL_F(f67, FRAC_CONST((-0.5411961001461967)));
902 f76 = f73 + f74;
903 f77 = f75 - f74;
904 f78 = f45 - f63;
905 f79 = f45 + f63;
906 f80 = f51 - f57;
907 f81 = f51 + f57;
908 f82 = f79 + f81;
909 f83 = MUL_C(f79, COEF_CONST(1.3065629648763770));
910 f84 = MUL_F(f82, FRAC_CONST((-0.3826834323650904)));
911 f85 = MUL_F(f81, FRAC_CONST(0.5411961001461961));
912 f86 = f83 + f84;
913 f87 = f85 - f84;
914 f88 = f78 - f80;
915 f89 = f78 + f80;
916 f90 = MUL_F(f89, FRAC_CONST(0.7071067811865476));
917 f91 = f77 - f87;
918 f92 = f77 + f87;
919 f93 = f71 - f90;
920 f94 = f71 + f90;
921 f95 = f76 - f86;
922 f96 = f76 + f86;
923 f97 = f34 - f70;
924 f98 = f34 + f70;
925 f99 = f36 - f92;
926 f100 = f36 + f92;
927 f101 = f38 - f91;
928 f102 = f38 + f91;
929 f103 = f40 - f94;
930 f104 = f40 + f94;
931 f105 = f39 - f93;
932 f106 = f39 + f93;
933 f107 = f37 - f96;
934 f108 = f37 + f96;
935 f109 = f35 - f95;
936 f110 = f35 + f95;
937 f111 = f33 - f88;
938 f112 = f33 + f88;
939 f113 = x[1] + x[31];
940 f114 = MUL_C(x[1], COEF_CONST(1.0478631305325901));
941 f115 = MUL_F(f113, FRAC_CONST((-0.9987954562051724)));
942 f116 = MUL_F(x[31], FRAC_CONST((-0.9497277818777548)));
943 f117 = f114 + f115;
944 f118 = f116 - f115;
945 f119 = x[5] + x[27];
946 f120 = MUL_C(x[5], COEF_CONST(1.2130114330978077));
947 f121 = MUL_F(f119, FRAC_CONST((-0.9700312531945440)));
948 f122 = MUL_F(x[27], FRAC_CONST((-0.7270510732912803)));
949 f123 = f120 + f121;
950 f124 = f122 - f121;
951 f125 = x[9] + x[23];
952 f126 = MUL_C(x[9], COEF_CONST(1.3315443865537255));
953 f127 = MUL_F(f125, FRAC_CONST((-0.9039892931234433)));
954 f128 = MUL_F(x[23], FRAC_CONST((-0.4764341996931612)));
955 f129 = f126 + f127;
956 f130 = f128 - f127;
957 f131 = x[13] + x[19];
958 f132 = MUL_C(x[13], COEF_CONST(1.3989068359730781));
959 f133 = MUL_F(f131, FRAC_CONST((-0.8032075314806453)));
960 f134 = MUL_F(x[19], FRAC_CONST((-0.2075082269882124)));
961 f135 = f132 + f133;
962 f136 = f134 - f133;
963 f137 = x[17] + x[15];
964 f138 = MUL_C(x[17], COEF_CONST(1.4125100802019777));
965 f139 = MUL_F(f137, FRAC_CONST((-0.6715589548470187)));
966 f140 = MUL_F(x[15], FRAC_CONST(0.0693921705079402));
967 f141 = f138 + f139;
968 f142 = f140 - f139;
969 f143 = x[21] + x[11];
970 f144 = MUL_C(x[21], COEF_CONST(1.3718313541934939));
971 f145 = MUL_F(f143, FRAC_CONST((-0.5141027441932219)));
972 f146 = MUL_F(x[11], FRAC_CONST(0.3436258658070501));
973 f147 = f144 + f145;
974 f148 = f146 - f145;
975 f149 = x[25] + x[7];
976 f150 = MUL_C(x[25], COEF_CONST(1.2784339185752409));
977 f151 = MUL_F(f149, FRAC_CONST((-0.3368898533922200)));
978 f152 = MUL_F(x[7], FRAC_CONST(0.6046542117908008));
979 f153 = f150 + f151;
980 f154 = f152 - f151;
981 f155 = x[29] + x[3];
982 f156 = MUL_C(x[29], COEF_CONST(1.1359069844201433));
983 f157 = MUL_F(f155, FRAC_CONST((-0.1467304744553624)));
984 f158 = MUL_F(x[3], FRAC_CONST(0.8424460355094185));
985 f159 = f156 + f157;
986 f160 = f158 - f157;
987 f161 = f118 - f142;
988 f162 = f118 + f142;
989 f163 = f117 - f141;
990 f164 = f117 + f141;
991 f165 = f124 - f148;
992 f166 = f124 + f148;
993 f167 = f123 - f147;
994 f168 = f123 + f147;
995 f169 = f130 - f154;
996 f170 = f130 + f154;
997 f171 = f129 - f153;
998 f172 = f129 + f153;
999 f173 = f136 - f160;
1000 f174 = f136 + f160;
1001 f175 = f135 - f159;
1002 f176 = f135 + f159;
1003 f177 = f161 + f163;
1004 f178 = MUL_C(f161, COEF_CONST(1.1758756024193588));
1005 f179 = MUL_F(f177, FRAC_CONST((-0.9807852804032304)));
1006 f180 = MUL_F(f163, FRAC_CONST((-0.7856949583871021)));
1007 f181 = f178 + f179;
1008 f182 = f180 - f179;
1009 f183 = f165 + f167;
1010 f184 = MUL_C(f165, COEF_CONST(1.3870398453221475));
1011 f185 = MUL_F(f183, FRAC_CONST((-0.5555702330196022)));
1012 f186 = MUL_F(f167, FRAC_CONST(0.2758993792829431));
1013 f187 = f184 + f185;
1014 f188 = f186 - f185;
1015 f189 = f169 + f171;
1016 f190 = MUL_F(f169, FRAC_CONST(0.7856949583871022));
1017 f191 = MUL_F(f189, FRAC_CONST(0.1950903220161283));
1018 f192 = MUL_C(f171, COEF_CONST(1.1758756024193586));
1019 f193 = f190 + f191;
1020 f194 = f192 - f191;
1021 f195 = f173 + f175;
1022 f196 = MUL_F(f173, FRAC_CONST((-0.2758993792829430)));
1023 f197 = MUL_F(f195, FRAC_CONST(0.8314696123025452));
1024 f198 = MUL_C(f175, COEF_CONST(1.3870398453221475));
1025 f199 = f196 + f197;
1026 f200 = f198 - f197;
1027 f201 = f162 - f170;
1028 f202 = f162 + f170;
1029 f203 = f164 - f172;
1030 f204 = f164 + f172;
1031 f205 = f166 - f174;
1032 f206 = f166 + f174;
1033 f207 = f168 - f176;
1034 f208 = f168 + f176;
1035 f209 = f182 - f194;
1036 f210 = f182 + f194;
1037 f211 = f181 - f193;
1038 f212 = f181 + f193;
1039 f213 = f188 - f200;
1040 f214 = f188 + f200;
1041 f215 = f187 - f199;
1042 f216 = f187 + f199;
1043 f217 = f201 + f203;
1044 f218 = MUL_C(f201, COEF_CONST(1.3065629648763766));
1045 f219 = MUL_F(f217, FRAC_CONST((-0.9238795325112866)));
1046 f220 = MUL_F(f203, FRAC_CONST((-0.5411961001461967)));
1047 f221 = f218 + f219;
1048 f222 = f220 - f219;
1049 f223 = f205 + f207;
1050 f224 = MUL_F(f205, FRAC_CONST(0.5411961001461969));
1051 f225 = MUL_F(f223, FRAC_CONST(0.3826834323650898));
1052 f226 = MUL_C(f207, COEF_CONST(1.3065629648763766));
1053 f227 = f224 + f225;
1054 f228 = f226 - f225;
1055 f229 = f209 + f211;
1056 f230 = MUL_C(f209, COEF_CONST(1.3065629648763766));
1057 f231 = MUL_F(f229, FRAC_CONST((-0.9238795325112866)));
1058 f232 = MUL_F(f211, FRAC_CONST((-0.5411961001461967)));
1059 f233 = f230 + f231;
1060 f234 = f232 - f231;
1061 f235 = f213 + f215;
1062 f236 = MUL_F(f213, FRAC_CONST(0.5411961001461969));
1063 f237 = MUL_F(f235, FRAC_CONST(0.3826834323650898));
1064 f238 = MUL_C(f215, COEF_CONST(1.3065629648763766));
1065 f239 = f236 + f237;
1066 f240 = f238 - f237;
1067 f241 = f202 - f206;
1068 f242 = f202 + f206;
1069 f243 = f204 - f208;
1070 f244 = f204 + f208;
1071 f245 = f222 - f228;
1072 f246 = f222 + f228;
1073 f247 = f221 - f227;
1074 f248 = f221 + f227;
1075 f249 = f210 - f214;
1076 f250 = f210 + f214;
1077 f251 = f212 - f216;
1078 f252 = f212 + f216;
1079 f253 = f234 - f240;
1080 f254 = f234 + f240;
1081 f255 = f233 - f239;
1082 f256 = f233 + f239;
1083 f257 = f241 - f243;
1084 f258 = f241 + f243;
1085 f259 = MUL_F(f257, FRAC_CONST(0.7071067811865474));
1086 f260 = MUL_F(f258, FRAC_CONST(0.7071067811865474));
1087 f261 = f245 - f247;
1088 f262 = f245 + f247;
1089 f263 = MUL_F(f261, FRAC_CONST(0.7071067811865474));
1090 f264 = MUL_F(f262, FRAC_CONST(0.7071067811865474));
1091 f265 = f249 - f251;
1092 f266 = f249 + f251;
1093 f267 = MUL_F(f265, FRAC_CONST(0.7071067811865474));
1094 f268 = MUL_F(f266, FRAC_CONST(0.7071067811865474));
1095 f269 = f253 - f255;
1096 f270 = f253 + f255;
1097 f271 = MUL_F(f269, FRAC_CONST(0.7071067811865474));
1098 f272 = MUL_F(f270, FRAC_CONST(0.7071067811865474));
1099 y[31] = f98 - f242;
1100 y[0] = f98 + f242;
1101 y[30] = f100 - f250;
1102 y[1] = f100 + f250;
1103 y[29] = f102 - f254;
1104 y[2] = f102 + f254;
1105 y[28] = f104 - f246;
1106 y[3] = f104 + f246;
1107 y[27] = f106 - f264;
1108 y[4] = f106 + f264;
1109 y[26] = f108 - f272;
1110 y[5] = f108 + f272;
1111 y[25] = f110 - f268;
1112 y[6] = f110 + f268;
1113 y[24] = f112 - f260;
1114 y[7] = f112 + f260;
1115 y[23] = f111 - f259;
1116 y[8] = f111 + f259;
1117 y[22] = f109 - f267;
1118 y[9] = f109 + f267;
1119 y[21] = f107 - f271;
1120 y[10] = f107 + f271;
1121 y[20] = f105 - f263;
1122 y[11] = f105 + f263;
1123 y[19] = f103 - f248;
1124 y[12] = f103 + f248;
1125 y[18] = f101 - f256;
1126 y[13] = f101 + f256;
1127 y[17] = f99 - f252;
1128 y[14] = f99 + f252;
1129 y[16] = f97 - f244;
1130 y[15] = f97 + f244;
1133 void DCT2_32_unscaled(real_t *y, real_t *x)
1135 real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
1136 real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
1137 real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
1138 real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
1139 real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
1140 real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
1141 real_t f63, f64, f65, f66, f69, f70, f71, f72, f73, f74;
1142 real_t f75, f76, f77, f78, f79, f80, f81, f83, f85, f86;
1143 real_t f89, f90, f91, f92, f93, f94, f95, f96, f97, f98;
1144 real_t f99, f100, f101, f102, f103, f104, f105, f106, f107, f108;
1145 real_t f109, f110, f111, f112, f113, f114, f115, f116, f117, f118;
1146 real_t f119, f120, f121, f122, f123, f124, f127, f128, f129, f130;
1147 real_t f133, f134, f135, f136, f139, f140, f141, f142, f145, f146;
1148 real_t f147, f148, f149, f150, f151, f152, f153, f154, f155, f156;
1149 real_t f157, f158, f159, f160, f161, f162, f163, f164, f165, f166;
1150 real_t f167, f168, f169, f170, f171, f172, f173, f174, f175, f176;
1151 real_t f177, f178, f179, f180, f181, f182, f183, f184, f185, f186;
1152 real_t f187, f188, f189, f190, f191, f192, f193, f194, f195, f196;
1153 real_t f197, f198, f199, f200, f201, f202, f203, f204, f205, f206;
1154 real_t f207, f208, f209, f210, f211, f212, f213, f214, f215, f216;
1155 real_t f217, f218, f219, f220, f221, f222, f223, f224, f225, f226;
1156 real_t f227, f228, f229, f230, f231, f232, f233, f234, f235, f236;
1157 real_t f237, f238, f239, f240, f241, f242, f243, f244, f247, f248;
1158 real_t f249, f250, f253, f254, f255, f256, f259, f260, f261, f262;
1159 real_t f265, f266, f267, f268, f271, f272, f273, f274, f277, f278;
1160 real_t f279, f280, f283, f284, f285, f286;
1162 f0 = x[0] - x[31];
1163 f1 = x[0] + x[31];
1164 f2 = x[1] - x[30];
1165 f3 = x[1] + x[30];
1166 f4 = x[2] - x[29];
1167 f5 = x[2] + x[29];
1168 f6 = x[3] - x[28];
1169 f7 = x[3] + x[28];
1170 f8 = x[4] - x[27];
1171 f9 = x[4] + x[27];
1172 f10 = x[5] - x[26];
1173 f11 = x[5] + x[26];
1174 f12 = x[6] - x[25];
1175 f13 = x[6] + x[25];
1176 f14 = x[7] - x[24];
1177 f15 = x[7] + x[24];
1178 f16 = x[8] - x[23];
1179 f17 = x[8] + x[23];
1180 f18 = x[9] - x[22];
1181 f19 = x[9] + x[22];
1182 f20 = x[10] - x[21];
1183 f21 = x[10] + x[21];
1184 f22 = x[11] - x[20];
1185 f23 = x[11] + x[20];
1186 f24 = x[12] - x[19];
1187 f25 = x[12] + x[19];
1188 f26 = x[13] - x[18];
1189 f27 = x[13] + x[18];
1190 f28 = x[14] - x[17];
1191 f29 = x[14] + x[17];
1192 f30 = x[15] - x[16];
1193 f31 = x[15] + x[16];
1194 f32 = f1 - f31;
1195 f33 = f1 + f31;
1196 f34 = f3 - f29;
1197 f35 = f3 + f29;
1198 f36 = f5 - f27;
1199 f37 = f5 + f27;
1200 f38 = f7 - f25;
1201 f39 = f7 + f25;
1202 f40 = f9 - f23;
1203 f41 = f9 + f23;
1204 f42 = f11 - f21;
1205 f43 = f11 + f21;
1206 f44 = f13 - f19;
1207 f45 = f13 + f19;
1208 f46 = f15 - f17;
1209 f47 = f15 + f17;
1210 f48 = f33 - f47;
1211 f49 = f33 + f47;
1212 f50 = f35 - f45;
1213 f51 = f35 + f45;
1214 f52 = f37 - f43;
1215 f53 = f37 + f43;
1216 f54 = f39 - f41;
1217 f55 = f39 + f41;
1218 f56 = f49 - f55;
1219 f57 = f49 + f55;
1220 f58 = f51 - f53;
1221 f59 = f51 + f53;
1222 f60 = f57 - f59;
1223 y[0] = f57 + f59;
1224 y[16] = MUL_F(FRAC_CONST(0.7071067811865476), f60);
1225 f63 = f56 + f58;
1226 f64 = MUL_C(COEF_CONST(1.3065629648763766), f56);
1227 f65 = MUL_F(FRAC_CONST(-0.9238795325112866), f63);
1228 f66 = MUL_F(FRAC_CONST(-0.5411961001461967), f58);
1229 y[24] = f64 + f65;
1230 y[8] = f66 - f65;
1231 f69 = f48 + f54;
1232 f70 = MUL_C(COEF_CONST(1.1758756024193588), f48);
1233 f71 = MUL_F(FRAC_CONST(-0.9807852804032304), f69);
1234 f72 = MUL_F(FRAC_CONST(-0.7856949583871021), f54);
1235 f73 = f70 + f71;
1236 f74 = f72 - f71;
1237 f75 = f50 + f52;
1238 f76 = MUL_C(COEF_CONST(1.3870398453221473), f50);
1239 f77 = MUL_F(FRAC_CONST(-0.8314696123025455), f75);
1240 f78 = MUL_F(FRAC_CONST(-0.2758993792829436), f52);
1241 f79 = f76 + f77;
1242 f80 = f78 - f77;
1243 f81 = f74 - f80;
1244 y[4] = f74 + f80;
1245 f83 = MUL_F(FRAC_CONST(0.7071067811865476), f81);
1246 y[28] = f73 - f79;
1247 f85 = f73 + f79;
1248 f86 = MUL_F(FRAC_CONST(0.7071067811865476), f85);
1249 y[20] = f83 - f86;
1250 y[12] = f83 + f86;
1251 f89 = f34 - f36;
1252 f90 = f34 + f36;
1253 f91 = f38 - f40;
1254 f92 = f38 + f40;
1255 f93 = f42 - f44;
1256 f94 = f42 + f44;
1257 f95 = MUL_F(FRAC_CONST(0.7071067811865476), f92);
1258 f96 = f32 - f95;
1259 f97 = f32 + f95;
1260 f98 = f90 + f94;
1261 f99 = MUL_C(COEF_CONST(1.3065629648763766), f90);
1262 f100 = MUL_F(FRAC_CONST(-0.9238795325112866), f98);
1263 f101 = MUL_F(FRAC_CONST(-0.5411961001461967), f94);
1264 f102 = f99 + f100;
1265 f103 = f101 - f100;
1266 f104 = f97 - f103;
1267 f105 = f97 + f103;
1268 f106 = f96 - f102;
1269 f107 = f96 + f102;
1270 f108 = MUL_F(FRAC_CONST(0.7071067811865476), f91);
1271 f109 = f46 - f108;
1272 f110 = f46 + f108;
1273 f111 = f93 + f89;
1274 f112 = MUL_C(COEF_CONST(1.3065629648763766), f93);
1275 f113 = MUL_F(FRAC_CONST(-0.9238795325112866), f111);
1276 f114 = MUL_F(FRAC_CONST(-0.5411961001461967), f89);
1277 f115 = f112 + f113;
1278 f116 = f114 - f113;
1279 f117 = f110 - f116;
1280 f118 = f110 + f116;
1281 f119 = f109 - f115;
1282 f120 = f109 + f115;
1283 f121 = f118 + f105;
1284 f122 = MUL_F(FRAC_CONST(-0.8971675863426361), f118);
1285 f123 = MUL_F(FRAC_CONST(0.9951847266721968), f121);
1286 f124 = MUL_C(COEF_CONST(1.0932018670017576), f105);
1287 y[2] = f122 + f123;
1288 y[30] = f124 - f123;
1289 f127 = f107 - f120;
1290 f128 = MUL_F(FRAC_CONST(-0.6666556584777466), f120);
1291 f129 = MUL_F(FRAC_CONST(0.9569403357322089), f127);
1292 f130 = MUL_C(COEF_CONST(1.2472250129866713), f107);
1293 y[6] = f129 - f128;
1294 y[26] = f130 - f129;
1295 f133 = f119 + f106;
1296 f134 = MUL_F(FRAC_CONST(-0.4105245275223571), f119);
1297 f135 = MUL_F(FRAC_CONST(0.8819212643483549), f133);
1298 f136 = MUL_C(COEF_CONST(1.3533180011743529), f106);
1299 y[10] = f134 + f135;
1300 y[22] = f136 - f135;
1301 f139 = f104 - f117;
1302 f140 = MUL_F(FRAC_CONST(-0.1386171691990915), f117);
1303 f141 = MUL_F(FRAC_CONST(0.7730104533627370), f139);
1304 f142 = MUL_C(COEF_CONST(1.4074037375263826), f104);
1305 y[14] = f141 - f140;
1306 y[18] = f142 - f141;
1307 f145 = f2 - f4;
1308 f146 = f2 + f4;
1309 f147 = f6 - f8;
1310 f148 = f6 + f8;
1311 f149 = f10 - f12;
1312 f150 = f10 + f12;
1313 f151 = f14 - f16;
1314 f152 = f14 + f16;
1315 f153 = f18 - f20;
1316 f154 = f18 + f20;
1317 f155 = f22 - f24;
1318 f156 = f22 + f24;
1319 f157 = f26 - f28;
1320 f158 = f26 + f28;
1321 f159 = MUL_F(FRAC_CONST(0.7071067811865476), f152);
1322 f160 = f0 - f159;
1323 f161 = f0 + f159;
1324 f162 = f148 + f156;
1325 f163 = MUL_C(COEF_CONST(1.3065629648763766), f148);
1326 f164 = MUL_F(FRAC_CONST(-0.9238795325112866), f162);
1327 f165 = MUL_F(FRAC_CONST(-0.5411961001461967), f156);
1328 f166 = f163 + f164;
1329 f167 = f165 - f164;
1330 f168 = f161 - f167;
1331 f169 = f161 + f167;
1332 f170 = f160 - f166;
1333 f171 = f160 + f166;
1334 f172 = f146 + f158;
1335 f173 = MUL_C(COEF_CONST(1.1758756024193588), f146);
1336 f174 = MUL_F(FRAC_CONST(-0.9807852804032304), f172);
1337 f175 = MUL_F(FRAC_CONST(-0.7856949583871021), f158);
1338 f176 = f173 + f174;
1339 f177 = f175 - f174;
1340 f178 = f150 + f154;
1341 f179 = MUL_C(COEF_CONST(1.3870398453221473), f150);
1342 f180 = MUL_F(FRAC_CONST(-0.8314696123025455), f178);
1343 f181 = MUL_F(FRAC_CONST(-0.2758993792829436), f154);
1344 f182 = f179 + f180;
1345 f183 = f181 - f180;
1346 f184 = f177 - f183;
1347 f185 = f177 + f183;
1348 f186 = MUL_F(FRAC_CONST(0.7071067811865476), f184);
1349 f187 = f176 - f182;
1350 f188 = f176 + f182;
1351 f189 = MUL_F(FRAC_CONST(0.7071067811865476), f188);
1352 f190 = f186 - f189;
1353 f191 = f186 + f189;
1354 f192 = f169 - f185;
1355 f193 = f169 + f185;
1356 f194 = f171 - f191;
1357 f195 = f171 + f191;
1358 f196 = f170 - f190;
1359 f197 = f170 + f190;
1360 f198 = f168 - f187;
1361 f199 = f168 + f187;
1362 f200 = MUL_F(FRAC_CONST(0.7071067811865476), f151);
1363 f201 = f30 - f200;
1364 f202 = f30 + f200;
1365 f203 = f155 + f147;
1366 f204 = MUL_C(COEF_CONST(1.3065629648763766), f155);
1367 f205 = MUL_F(FRAC_CONST(-0.9238795325112866), f203);
1368 f206 = MUL_F(FRAC_CONST(-0.5411961001461967), f147);
1369 f207 = f204 + f205;
1370 f208 = f206 - f205;
1371 f209 = f202 - f208;
1372 f210 = f202 + f208;
1373 f211 = f201 - f207;
1374 f212 = f201 + f207;
1375 f213 = f157 + f145;
1376 f214 = MUL_C(COEF_CONST(1.1758756024193588), f157);
1377 f215 = MUL_F(FRAC_CONST(-0.9807852804032304), f213);
1378 f216 = MUL_F(FRAC_CONST(-0.7856949583871021), f145);
1379 f217 = f214 + f215;
1380 f218 = f216 - f215;
1381 f219 = f153 + f149;
1382 f220 = MUL_C(COEF_CONST(1.3870398453221473), f153);
1383 f221 = MUL_F(FRAC_CONST(-0.8314696123025455), f219);
1384 f222 = MUL_F(FRAC_CONST(-0.2758993792829436), f149);
1385 f223 = f220 + f221;
1386 f224 = f222 - f221;
1387 f225 = f218 - f224;
1388 f226 = f218 + f224;
1389 f227 = MUL_F(FRAC_CONST(0.7071067811865476), f225);
1390 f228 = f217 - f223;
1391 f229 = f217 + f223;
1392 f230 = MUL_F(FRAC_CONST(0.7071067811865476), f229);
1393 f231 = f227 - f230;
1394 f232 = f227 + f230;
1395 f233 = f210 - f226;
1396 f234 = f210 + f226;
1397 f235 = f212 - f232;
1398 f236 = f212 + f232;
1399 f237 = f211 - f231;
1400 f238 = f211 + f231;
1401 f239 = f209 - f228;
1402 f240 = f209 + f228;
1403 f241 = f234 + f193;
1404 f242 = MUL_F(FRAC_CONST(-0.9497277818777543), f234);
1405 f243 = MUL_F(FRAC_CONST(0.9987954562051724), f241);
1406 f244 = MUL_C(COEF_CONST(1.0478631305325905), f193);
1407 y[1] = f242 + f243;
1408 y[31] = f244 - f243;
1409 f247 = f195 - f236;
1410 f248 = MUL_F(FRAC_CONST(-0.8424460355094192), f236);
1411 f249 = MUL_F(FRAC_CONST(0.9891765099647810), f247);
1412 f250 = MUL_C(COEF_CONST(1.1359069844201428), f195);
1413 y[3] = f249 - f248;
1414 y[29] = f250 - f249;
1415 f253 = f238 + f197;
1416 f254 = MUL_F(FRAC_CONST(-0.7270510732912801), f238);
1417 f255 = MUL_F(FRAC_CONST(0.9700312531945440), f253);
1418 f256 = MUL_C(COEF_CONST(1.2130114330978079), f197);
1419 y[5] = f254 + f255;
1420 y[27] = f256 - f255;
1421 f259 = f199 - f240;
1422 f260 = MUL_F(FRAC_CONST(-0.6046542117908007), f240);
1423 f261 = MUL_F(FRAC_CONST(0.9415440651830208), f259);
1424 f262 = MUL_C(COEF_CONST(1.2784339185752409), f199);
1425 y[7] = f261 - f260;
1426 y[25] = f262 - f261;
1427 f265 = f239 + f198;
1428 f266 = MUL_F(FRAC_CONST(-0.4764341996931611), f239);
1429 f267 = MUL_F(FRAC_CONST(0.9039892931234433), f265);
1430 f268 = MUL_C(COEF_CONST(1.3315443865537255), f198);
1431 y[9] = f266 + f267;
1432 y[23] = f268 - f267;
1433 f271 = f196 - f237;
1434 f272 = MUL_F(FRAC_CONST(-0.3436258658070505), f237);
1435 f273 = MUL_F(FRAC_CONST(0.8577286100002721), f271);
1436 f274 = MUL_C(COEF_CONST(1.3718313541934939), f196);
1437 y[11] = f273 - f272;
1438 y[21] = f274 - f273;
1439 f277 = f235 + f194;
1440 f278 = MUL_F(FRAC_CONST(-0.2075082269882114), f235);
1441 f279 = MUL_F(FRAC_CONST(0.8032075314806448), f277);
1442 f280 = MUL_C(COEF_CONST(1.3989068359730783), f194);
1443 y[13] = f278 + f279;
1444 y[19] = f280 - f279;
1445 f283 = f192 - f233;
1446 f284 = MUL_F(FRAC_CONST(-0.0693921705079408), f233);
1447 f285 = MUL_F(FRAC_CONST(0.7409511253549591), f283);
1448 f286 = MUL_C(COEF_CONST(1.4125100802019774), f192);
1449 y[15] = f285 - f284;
1450 y[17] = f286 - f285;
1453 #else /* #ifdef SBR_LOW_POWER */
1455 /* table for pre-processing within dct4_kernel() */
1456 static const real_t dct4_pre_tab[] ICONST_ATTR MEM_ALIGN_ATTR = {
1457 COEF_CONST(0.999924719333649), COEF_CONST(-1.01219630241394), COEF_CONST(-0.987653195858002),
1458 COEF_CONST(0.998118102550507), COEF_CONST(-1.05943882465363), COEF_CONST(-0.936797380447388),
1459 COEF_CONST(0.993906974792480), COEF_CONST(-1.10412919521332), COEF_CONST(-0.883684754371643),
1460 COEF_CONST(0.987301409244537), COEF_CONST(-1.14615952968597), COEF_CONST(-0.828443288803101),
1461 COEF_CONST(0.978317379951477), COEF_CONST(-1.18542873859405), COEF_CONST(-0.771206021308899),
1462 COEF_CONST(0.966976463794708), COEF_CONST(-1.22184216976166), COEF_CONST(-0.712110757827759),
1463 COEF_CONST(0.953306019306183), COEF_CONST(-1.25531196594238), COEF_CONST(-0.651300072669983),
1464 COEF_CONST(0.937339007854462), COEF_CONST(-1.28575766086578), COEF_CONST(-0.588920354843140),
1465 COEF_CONST(0.919113874435425), COEF_CONST(-1.31310594081879), COEF_CONST(-0.525121808052063),
1466 COEF_CONST(0.898674488067627), COEF_CONST(-1.33729076385498), COEF_CONST(-0.460058242082596),
1467 COEF_CONST(0.876070082187653), COEF_CONST(-1.35825383663177), COEF_CONST(-0.393886327743530),
1468 COEF_CONST(0.851355195045471), COEF_CONST(-1.37594485282898), COEF_CONST(-0.326765477657318),
1469 COEF_CONST(0.824589252471924), COEF_CONST(-1.39032101631165), COEF_CONST(-0.258857429027557),
1470 COEF_CONST(0.795836925506592), COEF_CONST(-1.40134787559509), COEF_CONST(-0.190325915813446),
1471 COEF_CONST(0.765167236328125), COEF_CONST(-1.40899872779846), COEF_CONST(-0.121335685253143),
1472 COEF_CONST(0.732654273509979), COEF_CONST(-1.41325521469116), COEF_CONST(-0.052053272724152),
1473 COEF_CONST(0.698376238346100), COEF_CONST(-1.41410708427429), COEF_CONST( 0.017354607582092),
1474 COEF_CONST(0.662415742874146), COEF_CONST(-1.41155219078064), COEF_CONST( 0.086720645427704),
1475 COEF_CONST(0.624859452247620), COEF_CONST(-1.40559673309326), COEF_CONST( 0.155877828598022),
1476 COEF_CONST(0.585797846317291), COEF_CONST(-1.39625501632690), COEF_CONST( 0.224659323692322),
1477 COEF_CONST(0.545324981212616), COEF_CONST(-1.38354969024658), COEF_CONST( 0.292899727821350),
1478 COEF_CONST(0.503538429737091), COEF_CONST(-1.36751127243042), COEF_CONST( 0.360434412956238),
1479 COEF_CONST(0.460538715124130), COEF_CONST(-1.34817838668823), COEF_CONST( 0.427100926637650),
1480 COEF_CONST(0.416429549455643), COEF_CONST(-1.32559752464294), COEF_CONST( 0.492738455533981),
1481 COEF_CONST(0.371317148208618), COEF_CONST(-1.29982328414917), COEF_CONST( 0.557188928127289),
1482 COEF_CONST(0.325310230255127), COEF_CONST(-1.27091765403748), COEF_CONST( 0.620297133922577),
1483 COEF_CONST(0.278519600629807), COEF_CONST(-1.23895013332367), COEF_CONST( 0.681910991668701),
1484 COEF_CONST(0.231058135628700), COEF_CONST(-1.20399808883667), COEF_CONST( 0.741881847381592),
1485 COEF_CONST(0.183039888739586), COEF_CONST(-1.16614532470703), COEF_CONST( 0.800065577030182),
1486 COEF_CONST(0.134580686688423), COEF_CONST(-1.12548339366913), COEF_CONST( 0.856321990489960),
1487 COEF_CONST(0.085797272622585), COEF_CONST(-1.08210992813110), COEF_CONST( 0.910515367984772),
1488 COEF_CONST(0.036807164549828), COEF_CONST(-1.03612959384918), COEF_CONST( 0.962515234947205)
1491 /* table for post-processing within dct4_kernel() */
1492 static const real_t dct4_post_tab[] ICONST_ATTR MEM_ALIGN_ATTR = {
1493 COEF_CONST(1 ), COEF_CONST(-1 ), COEF_CONST(-1 ),
1494 COEF_CONST(0.998795449733734), COEF_CONST(-1.04786312580109), COEF_CONST(-0.949727773666382),
1495 COEF_CONST(0.995184719562531), COEF_CONST(-1.09320187568665), COEF_CONST(-0.897167563438416),
1496 COEF_CONST(0.989176511764526), COEF_CONST(-1.13590693473816), COEF_CONST(-0.842446029186249),
1497 COEF_CONST(0.980785250663757), COEF_CONST(-1.17587554454803), COEF_CONST(-0.785694956779480),
1498 COEF_CONST(0.970031261444092), COEF_CONST(-1.21301150321960), COEF_CONST(-0.727051079273224),
1499 COEF_CONST(0.956940352916718), COEF_CONST(-1.24722504615784), COEF_CONST(-0.666655659675598),
1500 COEF_CONST(0.941544055938721), COEF_CONST(-1.27843391895294), COEF_CONST(-0.604654192924500),
1501 COEF_CONST(0.923879504203796), COEF_CONST(-1.30656290054321), COEF_CONST(-0.541196048259735),
1502 COEF_CONST(0.903989315032959), COEF_CONST(-1.33154439926148), COEF_CONST(-0.476434230804443),
1503 COEF_CONST(0.881921231746674), COEF_CONST(-1.35331797599793), COEF_CONST(-0.410524487495422),
1504 COEF_CONST(0.857728600502014), COEF_CONST(-1.37183141708374), COEF_CONST(-0.343625843524933),
1505 COEF_CONST(0.831469595432281), COEF_CONST(-1.38703989982605), COEF_CONST(-0.275899350643158),
1506 COEF_CONST(0.803207516670227), COEF_CONST(-1.39890682697296), COEF_CONST(-0.207508206367493),
1507 COEF_CONST(0.773010432720184), COEF_CONST(-1.40740370750427), COEF_CONST(-0.138617098331451),
1508 COEF_CONST(0.740951120853424), COEF_CONST(-1.41251015663147), COEF_CONST(-0.069392144680023),
1509 COEF_CONST(0.707106769084930), COEF_CONST( 0 ), COEF_CONST( 0 ),
1510 COEF_CONST(0.671558916568756), COEF_CONST(-1.41251015663147), COEF_CONST( 0.069392263889313),
1511 COEF_CONST(0.634393274784088), COEF_CONST(-1.40740370750427), COEF_CONST( 0.138617157936096),
1512 COEF_CONST(0.595699310302734), COEF_CONST(-1.39890682697296), COEF_CONST( 0.207508206367493),
1513 COEF_CONST(0.555570185184479), COEF_CONST(-1.38703989982605), COEF_CONST( 0.275899469852448),
1514 COEF_CONST(0.514102697372437), COEF_CONST(-1.37183141708374), COEF_CONST( 0.343625962734222),
1515 COEF_CONST(0.471396654844284), COEF_CONST(-1.35331797599793), COEF_CONST( 0.410524636507034),
1516 COEF_CONST(0.427555114030838), COEF_CONST(-1.33154439926148), COEF_CONST( 0.476434201002121),
1517 COEF_CONST(0.382683426141739), COEF_CONST(-1.30656290054321), COEF_CONST( 0.541196107864380),
1518 COEF_CONST(0.336889833211899), COEF_CONST(-1.27843391895294), COEF_CONST( 0.604654192924500),
1519 COEF_CONST(0.290284633636475), COEF_CONST(-1.24722504615784), COEF_CONST( 0.666655719280243),
1520 COEF_CONST(0.242980122566223), COEF_CONST(-1.21301138401031), COEF_CONST( 0.727051138877869),
1521 COEF_CONST(0.195090234279633), COEF_CONST(-1.17587554454803), COEF_CONST( 0.785695075988770),
1522 COEF_CONST(0.146730497479439), COEF_CONST(-1.13590705394745), COEF_CONST( 0.842446029186249),
1523 COEF_CONST(0.098017133772373), COEF_CONST(-1.09320187568665), COEF_CONST( 0.897167563438416),
1524 COEF_CONST(0.049067649990320), COEF_CONST(-1.04786312580109), COEF_CONST( 0.949727773666382)
1527 // Table adapted from codeclib to fit into IRAM
1528 static const uint32_t dct4_revtab[32] ICONST_ATTR MEM_ALIGN_ATTR = {
1529 0, 24, 12, 22, 6, 30, 11, 19, 3, 27, 15, 21, 5, 29, 9, 17,
1530 1, 25, 13, 23, 7, 31, 10, 18, 2, 26, 14, 20, 4, 28, 8, 16};
1532 // Bufferfly used in dct4_kernel()'s pre- and post-processing
1533 #define BUTTERFLY_DCT4(out1, out2, real_part, imag_part, tab, tabidx) \
1534 x_re = real_part; \
1535 x_im = imag_part; \
1536 tmp = MUL_C(x_re + x_im, tab[tabidx++]); \
1537 out1 = MUL_C(x_re , tab[tabidx++]) + tmp; \
1538 out2 = MUL_C(x_im , tab[tabidx++]) + tmp;
1540 /* size 64 only! */
1541 void dct4_kernel(real_t *real, real_t *imag)
1543 uint32_t i, idx, tabidx;
1544 real_t x_re, x_im, tmp;
1545 FFTComplex xc[32]; /* used for calling codeclib's fft implementation */
1547 /* Step 2: modulate and pre-rotate for codeclib's fft implementation */
1548 // 3*32=96 multiplications
1549 // 3*32=96 additions
1550 for (i = 0, tabidx = 0; i < 32; i++)
1552 idx = dct4_revtab[i];
1553 BUTTERFLY_DCT4(xc[idx].im, xc[idx].re, real[i], imag[i], dct4_pre_tab, tabidx);
1556 /* Step 3: FFT (codeclib's implementation) */
1557 ff_fft_calc_c(5, xc);
1559 /* Step 4: modulate + reordering */
1560 // 3*30+2=92 multiplications
1561 // 3*30+2=92 additions
1562 imag[0] = xc[0].im;
1563 real[0] = xc[0].re;
1564 for (i = 1, tabidx = 3*1; i < 16; i++)
1566 idx = 32-i;
1567 BUTTERFLY_DCT4(imag[i], real[i], xc[idx].re, xc[idx].im, dct4_post_tab, tabidx);
1569 // i = 16, idx = 16 = reorder_tab[16];
1570 x_re = xc[16].re;
1571 x_im = xc[16].im;
1572 imag[16] = MUL_C(x_im - x_re, COEF_CONST(0.707106769084930));
1573 real[16] = MUL_C(x_re + x_im, COEF_CONST(0.707106769084930));
1574 for (i = 17, tabidx = 3*17; i < 32; i++)
1576 idx = 32-i;
1577 BUTTERFLY_DCT4(imag[i], real[i], xc[idx].re, xc[idx].im, dct4_post_tab, tabidx);
1581 void DST4_32(real_t *y, real_t *x)
1583 real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9;
1584 real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19;
1585 real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29;
1586 real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39;
1587 real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49;
1588 real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59;
1589 real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69;
1590 real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79;
1591 real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
1592 real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99;
1593 real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109;
1594 real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
1595 real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129;
1596 real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139;
1597 real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149;
1598 real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159;
1599 real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169;
1600 real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179;
1601 real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189;
1602 real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199;
1603 real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209;
1604 real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219;
1605 real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229;
1606 real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239;
1607 real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249;
1608 real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259;
1609 real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269;
1610 real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279;
1611 real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289;
1612 real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299;
1613 real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309;
1614 real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319;
1615 real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329;
1616 real_t f330, f331, f332, f333, f334, f335;
1618 f0 = x[0] - x[1];
1619 f1 = x[2] - x[1];
1620 f2 = x[2] - x[3];
1621 f3 = x[4] - x[3];
1622 f4 = x[4] - x[5];
1623 f5 = x[6] - x[5];
1624 f6 = x[6] - x[7];
1625 f7 = x[8] - x[7];
1626 f8 = x[8] - x[9];
1627 f9 = x[10] - x[9];
1628 f10 = x[10] - x[11];
1629 f11 = x[12] - x[11];
1630 f12 = x[12] - x[13];
1631 f13 = x[14] - x[13];
1632 f14 = x[14] - x[15];
1633 f15 = x[16] - x[15];
1634 f16 = x[16] - x[17];
1635 f17 = x[18] - x[17];
1636 f18 = x[18] - x[19];
1637 f19 = x[20] - x[19];
1638 f20 = x[20] - x[21];
1639 f21 = x[22] - x[21];
1640 f22 = x[22] - x[23];
1641 f23 = x[24] - x[23];
1642 f24 = x[24] - x[25];
1643 f25 = x[26] - x[25];
1644 f26 = x[26] - x[27];
1645 f27 = x[28] - x[27];
1646 f28 = x[28] - x[29];
1647 f29 = x[30] - x[29];
1648 f30 = x[30] - x[31];
1649 f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15);
1650 f32 = x[0] - f31;
1651 f33 = x[0] + f31;
1652 f34 = f7 + f23;
1653 f35 = MUL_C(COEF_CONST(1.3065629648763766), f7);
1654 f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34);
1655 f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23);
1656 f38 = f35 + f36;
1657 f39 = f37 - f36;
1658 f40 = f33 - f39;
1659 f41 = f33 + f39;
1660 f42 = f32 - f38;
1661 f43 = f32 + f38;
1662 f44 = f11 - f19;
1663 f45 = f11 + f19;
1664 f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45);
1665 f47 = f3 - f46;
1666 f48 = f3 + f46;
1667 f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44);
1668 f50 = f49 - f27;
1669 f51 = f49 + f27;
1670 f52 = f51 + f48;
1671 f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51);
1672 f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52);
1673 f55 = MUL_C(COEF_CONST(1.1758756024193588), f48);
1674 f56 = f53 + f54;
1675 f57 = f55 - f54;
1676 f58 = f50 + f47;
1677 f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50);
1678 f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58);
1679 f61 = MUL_C(COEF_CONST(1.3870398453221475), f47);
1680 f62 = f59 + f60;
1681 f63 = f61 - f60;
1682 f64 = f41 - f56;
1683 f65 = f41 + f56;
1684 f66 = f43 - f62;
1685 f67 = f43 + f62;
1686 f68 = f42 - f63;
1687 f69 = f42 + f63;
1688 f70 = f40 - f57;
1689 f71 = f40 + f57;
1690 f72 = f5 - f9;
1691 f73 = f5 + f9;
1692 f74 = f13 - f17;
1693 f75 = f13 + f17;
1694 f76 = f21 - f25;
1695 f77 = f21 + f25;
1696 f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75);
1697 f79 = f1 - f78;
1698 f80 = f1 + f78;
1699 f81 = f73 + f77;
1700 f82 = MUL_C(COEF_CONST(1.3065629648763766), f73);
1701 f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81);
1702 f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77);
1703 f85 = f82 + f83;
1704 f86 = f84 - f83;
1705 f87 = f80 - f86;
1706 f88 = f80 + f86;
1707 f89 = f79 - f85;
1708 f90 = f79 + f85;
1709 f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74);
1710 f92 = f29 - f91;
1711 f93 = f29 + f91;
1712 f94 = f76 + f72;
1713 f95 = MUL_C(COEF_CONST(1.3065629648763766), f76);
1714 f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94);
1715 f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72);
1716 f98 = f95 + f96;
1717 f99 = f97 - f96;
1718 f100 = f93 - f99;
1719 f101 = f93 + f99;
1720 f102 = f92 - f98;
1721 f103 = f92 + f98;
1722 f104 = f101 + f88;
1723 f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101);
1724 f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104);
1725 f107 = MUL_C(COEF_CONST(1.0932018670017576), f88);
1726 f108 = f105 + f106;
1727 f109 = f107 - f106;
1728 f110 = f90 - f103;
1729 f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103);
1730 f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110);
1731 f113 = MUL_C(COEF_CONST(1.2472250129866713), f90);
1732 f114 = f112 - f111;
1733 f115 = f113 - f112;
1734 f116 = f102 + f89;
1735 f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102);
1736 f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116);
1737 f119 = MUL_C(COEF_CONST(1.3533180011743529), f89);
1738 f120 = f117 + f118;
1739 f121 = f119 - f118;
1740 f122 = f87 - f100;
1741 f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100);
1742 f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122);
1743 f125 = MUL_C(COEF_CONST(1.4074037375263826), f87);
1744 f126 = f124 - f123;
1745 f127 = f125 - f124;
1746 f128 = f65 - f108;
1747 f129 = f65 + f108;
1748 f130 = f67 - f114;
1749 f131 = f67 + f114;
1750 f132 = f69 - f120;
1751 f133 = f69 + f120;
1752 f134 = f71 - f126;
1753 f135 = f71 + f126;
1754 f136 = f70 - f127;
1755 f137 = f70 + f127;
1756 f138 = f68 - f121;
1757 f139 = f68 + f121;
1758 f140 = f66 - f115;
1759 f141 = f66 + f115;
1760 f142 = f64 - f109;
1761 f143 = f64 + f109;
1762 f144 = f0 + f30;
1763 f145 = MUL_C(COEF_CONST(1.0478631305325901), f0);
1764 f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144);
1765 f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30);
1766 f148 = f145 + f146;
1767 f149 = f147 - f146;
1768 f150 = f4 + f26;
1769 f151 = MUL_F(FRAC_CONST(1.2130114330978077), f4);
1770 f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150);
1771 f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26);
1772 f154 = f151 + f152;
1773 f155 = f153 - f152;
1774 f156 = f8 + f22;
1775 f157 = MUL_C(COEF_CONST(1.3315443865537255), f8);
1776 f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156);
1777 f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22);
1778 f160 = f157 + f158;
1779 f161 = f159 - f158;
1780 f162 = f12 + f18;
1781 f163 = MUL_C(COEF_CONST(1.3989068359730781), f12);
1782 f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162);
1783 f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18);
1784 f166 = f163 + f164;
1785 f167 = f165 - f164;
1786 f168 = f16 + f14;
1787 f169 = MUL_C(COEF_CONST(1.4125100802019777), f16);
1788 f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168);
1789 f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14);
1790 f172 = f169 + f170;
1791 f173 = f171 - f170;
1792 f174 = f20 + f10;
1793 f175 = MUL_C(COEF_CONST(1.3718313541934939), f20);
1794 f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174);
1795 f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10);
1796 f178 = f175 + f176;
1797 f179 = f177 - f176;
1798 f180 = f24 + f6;
1799 f181 = MUL_C(COEF_CONST(1.2784339185752409), f24);
1800 f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180);
1801 f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6);
1802 f184 = f181 + f182;
1803 f185 = f183 - f182;
1804 f186 = f28 + f2;
1805 f187 = MUL_C(COEF_CONST(1.1359069844201433), f28);
1806 f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186);
1807 f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2);
1808 f190 = f187 + f188;
1809 f191 = f189 - f188;
1810 f192 = f149 - f173;
1811 f193 = f149 + f173;
1812 f194 = f148 - f172;
1813 f195 = f148 + f172;
1814 f196 = f155 - f179;
1815 f197 = f155 + f179;
1816 f198 = f154 - f178;
1817 f199 = f154 + f178;
1818 f200 = f161 - f185;
1819 f201 = f161 + f185;
1820 f202 = f160 - f184;
1821 f203 = f160 + f184;
1822 f204 = f167 - f191;
1823 f205 = f167 + f191;
1824 f206 = f166 - f190;
1825 f207 = f166 + f190;
1826 f208 = f192 + f194;
1827 f209 = MUL_C(COEF_CONST(1.1758756024193588), f192);
1828 f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208);
1829 f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194);
1830 f212 = f209 + f210;
1831 f213 = f211 - f210;
1832 f214 = f196 + f198;
1833 f215 = MUL_C(COEF_CONST(1.3870398453221475), f196);
1834 f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214);
1835 f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198);
1836 f218 = f215 + f216;
1837 f219 = f217 - f216;
1838 f220 = f200 + f202;
1839 f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200);
1840 f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220);
1841 f223 = MUL_C(COEF_CONST(1.1758756024193586), f202);
1842 f224 = f221 + f222;
1843 f225 = f223 - f222;
1844 f226 = f204 + f206;
1845 f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204);
1846 f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226);
1847 f229 = MUL_C(COEF_CONST(1.3870398453221475), f206);
1848 f230 = f227 + f228;
1849 f231 = f229 - f228;
1850 f232 = f193 - f201;
1851 f233 = f193 + f201;
1852 f234 = f195 - f203;
1853 f235 = f195 + f203;
1854 f236 = f197 - f205;
1855 f237 = f197 + f205;
1856 f238 = f199 - f207;
1857 f239 = f199 + f207;
1858 f240 = f213 - f225;
1859 f241 = f213 + f225;
1860 f242 = f212 - f224;
1861 f243 = f212 + f224;
1862 f244 = f219 - f231;
1863 f245 = f219 + f231;
1864 f246 = f218 - f230;
1865 f247 = f218 + f230;
1866 f248 = f232 + f234;
1867 f249 = MUL_C(COEF_CONST(1.3065629648763766), f232);
1868 f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248);
1869 f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234);
1870 f252 = f249 + f250;
1871 f253 = f251 - f250;
1872 f254 = f236 + f238;
1873 f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236);
1874 f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254);
1875 f257 = MUL_C(COEF_CONST(1.3065629648763766), f238);
1876 f258 = f255 + f256;
1877 f259 = f257 - f256;
1878 f260 = f240 + f242;
1879 f261 = MUL_C(COEF_CONST(1.3065629648763766), f240);
1880 f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260);
1881 f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242);
1882 f264 = f261 + f262;
1883 f265 = f263 - f262;
1884 f266 = f244 + f246;
1885 f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244);
1886 f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266);
1887 f269 = MUL_C(COEF_CONST(1.3065629648763766), f246);
1888 f270 = f267 + f268;
1889 f271 = f269 - f268;
1890 f272 = f233 - f237;
1891 f273 = f233 + f237;
1892 f274 = f235 - f239;
1893 f275 = f235 + f239;
1894 f276 = f253 - f259;
1895 f277 = f253 + f259;
1896 f278 = f252 - f258;
1897 f279 = f252 + f258;
1898 f280 = f241 - f245;
1899 f281 = f241 + f245;
1900 f282 = f243 - f247;
1901 f283 = f243 + f247;
1902 f284 = f265 - f271;
1903 f285 = f265 + f271;
1904 f286 = f264 - f270;
1905 f287 = f264 + f270;
1906 f288 = f272 - f274;
1907 f289 = f272 + f274;
1908 f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288);
1909 f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289);
1910 f292 = f276 - f278;
1911 f293 = f276 + f278;
1912 f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292);
1913 f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293);
1914 f296 = f280 - f282;
1915 f297 = f280 + f282;
1916 f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296);
1917 f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297);
1918 f300 = f284 - f286;
1919 f301 = f284 + f286;
1920 f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300);
1921 f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301);
1922 f304 = f129 - f273;
1923 f305 = f129 + f273;
1924 f306 = f131 - f281;
1925 f307 = f131 + f281;
1926 f308 = f133 - f285;
1927 f309 = f133 + f285;
1928 f310 = f135 - f277;
1929 f311 = f135 + f277;
1930 f312 = f137 - f295;
1931 f313 = f137 + f295;
1932 f314 = f139 - f303;
1933 f315 = f139 + f303;
1934 f316 = f141 - f299;
1935 f317 = f141 + f299;
1936 f318 = f143 - f291;
1937 f319 = f143 + f291;
1938 f320 = f142 - f290;
1939 f321 = f142 + f290;
1940 f322 = f140 - f298;
1941 f323 = f140 + f298;
1942 f324 = f138 - f302;
1943 f325 = f138 + f302;
1944 f326 = f136 - f294;
1945 f327 = f136 + f294;
1946 f328 = f134 - f279;
1947 f329 = f134 + f279;
1948 f330 = f132 - f287;
1949 f331 = f132 + f287;
1950 f332 = f130 - f283;
1951 f333 = f130 + f283;
1952 f334 = f128 - f275;
1953 f335 = f128 + f275;
1954 y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305);
1955 y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307);
1956 y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309);
1957 y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311);
1958 y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313);
1959 y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315);
1960 y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317);
1961 y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319);
1962 y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321);
1963 y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323);
1964 y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325);
1965 y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327);
1966 y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329);
1967 y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331);
1968 y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333);
1969 y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335);
1970 y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334);
1971 y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332);
1972 y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330);
1973 y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328);
1974 y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326);
1975 y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324);
1976 y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322);
1977 y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320);
1978 y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318);
1979 y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316);
1980 y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314);
1981 y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312);
1982 y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310);
1983 y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308);
1984 y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306);
1985 y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304);
1988 #endif /* #ifdef SBR_LOW_POWER */
1990 #endif /* #ifdef SBR_DEC */