Coverage Report

Created: 2025-07-11 06:40

/proc/self/cwd/libfaad/sbr_dct.c
Line
Count
Source
1
/*
2
** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
3
** Copyright (C) 2003-2005 M. Bakker, Nero 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.
14
**
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.
18
**
19
** Any non-GPL usage of this software or parts of this software is strictly
20
** forbidden.
21
**
22
** The "appropriate copyright message" mentioned in section 2c of the GPLv2
23
** must read: "Code from FAAD2 is copyright (c) Nero AG, www.nero.com"
24
**
25
** Commercial non-GPL licensing of this software is possible.
26
** For more info contact Nero AG through Mpeg4AAClicense@nero.com.
27
**
28
** $Id: sbr_dct.c,v 1.20 2007/11/01 12:33:34 menno Exp $
29
**/
30
31
32
/* Most of the DCT/DST codes here are generated using Spiral which is GPL
33
 * For more info see: http://www.spiral.net/
34
 */
35
36
#include "common.h"
37
38
#ifdef SBR_DEC
39
40
#ifdef _MSC_VER
41
#pragma warning(disable:4305)
42
#pragma warning(disable:4244)
43
#endif
44
45
46
#include "sbr_dct.h"
47
48
void DCT4_32(real_t *y, real_t *x)
49
5.68M
{
50
5.68M
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
51
5.68M
    real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
52
5.68M
    real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
53
5.68M
    real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
54
5.68M
    real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
55
5.68M
    real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
56
5.68M
    real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
57
5.68M
    real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
58
5.68M
    real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
59
5.68M
    real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
60
5.68M
    real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
61
5.68M
    real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
62
5.68M
    real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130;
63
5.68M
    real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
64
5.68M
    real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
65
5.68M
    real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
66
5.68M
    real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
67
5.68M
    real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
68
5.68M
    real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
69
5.68M
    real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
70
5.68M
    real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
71
5.68M
    real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
72
5.68M
    real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
73
5.68M
    real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
74
5.68M
    real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
75
5.68M
    real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
76
5.68M
    real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
77
5.68M
    real_t f271, f272, f273, f274, f275, f276, f277, f278, f279, f280;
78
5.68M
    real_t f281, f282, f283, f284, f285, f286, f287, f288, f289, f290;
79
5.68M
    real_t f291, f292, f293, f294, f295, f296, f297, f298, f299, f300;
80
5.68M
    real_t f301, f302, f303, f304, f305, f306, f307, f310, f311, f312;
81
5.68M
    real_t f313, f316, f317, f318, f319, f322, f323, f324, f325, f328;
82
5.68M
    real_t f329, f330, f331, f334, f335, f336, f337, f340, f341, f342;
83
5.68M
    real_t f343, f346, f347, f348, f349, f352, f353, f354, f355, f358;
84
5.68M
    real_t f359, f360, f361, f364, f365, f366, f367, f370, f371, f372;
85
5.68M
    real_t f373, f376, f377, f378, f379, f382, f383, f384, f385, f388;
86
5.68M
    real_t f389, f390, f391, f394, f395, f396, f397;
87
88
5.68M
    f0 = x[15] - x[16];
89
5.68M
    f1 = x[15] + x[16];
90
5.68M
    f2 = MUL_F(FRAC_CONST(0.7071067811865476), f1);
91
5.68M
    f3 = MUL_F(FRAC_CONST(0.7071067811865476), f0);
92
5.68M
    f4 = x[8] - x[23];
93
5.68M
    f5 = x[8] + x[23];
94
5.68M
    f6 = MUL_F(FRAC_CONST(0.7071067811865476), f5);
95
5.68M
    f7 = MUL_F(FRAC_CONST(0.7071067811865476), f4);
96
5.68M
    f8 = x[12] - x[19];
97
5.68M
    f9 = x[12] + x[19];
98
5.68M
    f10 = MUL_F(FRAC_CONST(0.7071067811865476), f9);
99
5.68M
    f11 = MUL_F(FRAC_CONST(0.7071067811865476), f8);
100
5.68M
    f12 = x[11] - x[20];
101
5.68M
    f13 = x[11] + x[20];
102
5.68M
    f14 = MUL_F(FRAC_CONST(0.7071067811865476), f13);
103
5.68M
    f15 = MUL_F(FRAC_CONST(0.7071067811865476), f12);
104
5.68M
    f16 = x[14] - x[17];
105
5.68M
    f17 = x[14] + x[17];
106
5.68M
    f18 = MUL_F(FRAC_CONST(0.7071067811865476), f17);
107
5.68M
    f19 = MUL_F(FRAC_CONST(0.7071067811865476), f16);
108
5.68M
    f20 = x[9] - x[22];
109
5.68M
    f21 = x[9] + x[22];
110
5.68M
    f22 = MUL_F(FRAC_CONST(0.7071067811865476), f21);
111
5.68M
    f23 = MUL_F(FRAC_CONST(0.7071067811865476), f20);
112
5.68M
    f24 = x[13] - x[18];
113
5.68M
    f25 = x[13] + x[18];
114
5.68M
    f26 = MUL_F(FRAC_CONST(0.7071067811865476), f25);
115
5.68M
    f27 = MUL_F(FRAC_CONST(0.7071067811865476), f24);
116
5.68M
    f28 = x[10] - x[21];
117
5.68M
    f29 = x[10] + x[21];
118
5.68M
    f30 = MUL_F(FRAC_CONST(0.7071067811865476), f29);
119
5.68M
    f31 = MUL_F(FRAC_CONST(0.7071067811865476), f28);
120
5.68M
    f32 = x[0] - f2;
121
5.68M
    f33 = x[0] + f2;
122
5.68M
    f34 = x[31] - f3;
123
5.68M
    f35 = x[31] + f3;
124
5.68M
    f36 = x[7] - f6;
125
5.68M
    f37 = x[7] + f6;
126
5.68M
    f38 = x[24] - f7;
127
5.68M
    f39 = x[24] + f7;
128
5.68M
    f40 = x[3] - f10;
129
5.68M
    f41 = x[3] + f10;
130
5.68M
    f42 = x[28] - f11;
131
5.68M
    f43 = x[28] + f11;
132
5.68M
    f44 = x[4] - f14;
133
5.68M
    f45 = x[4] + f14;
134
5.68M
    f46 = x[27] - f15;
135
5.68M
    f47 = x[27] + f15;
136
5.68M
    f48 = x[1] - f18;
137
5.68M
    f49 = x[1] + f18;
138
5.68M
    f50 = x[30] - f19;
139
5.68M
    f51 = x[30] + f19;
140
5.68M
    f52 = x[6] - f22;
141
5.68M
    f53 = x[6] + f22;
142
5.68M
    f54 = x[25] - f23;
143
5.68M
    f55 = x[25] + f23;
144
5.68M
    f56 = x[2] - f26;
145
5.68M
    f57 = x[2] + f26;
146
5.68M
    f58 = x[29] - f27;
147
5.68M
    f59 = x[29] + f27;
148
5.68M
    f60 = x[5] - f30;
149
5.68M
    f61 = x[5] + f30;
150
5.68M
    f62 = x[26] - f31;
151
5.68M
    f63 = x[26] + f31;
152
5.68M
    f64 = f39 + f37;
153
5.68M
    f65 = MUL_F(FRAC_CONST(-0.5411961001461969), f39);
154
5.68M
    f66 = MUL_F(FRAC_CONST(0.9238795325112867), f64);
155
5.68M
    f67 = MUL_C(COEF_CONST(1.3065629648763766), f37);
156
5.68M
    f68 = f65 + f66;
157
5.68M
    f69 = f67 - f66;
158
5.68M
    f70 = f38 + f36;
159
5.68M
    f71 = MUL_C(COEF_CONST(1.3065629648763770), f38);
160
5.68M
    f72 = MUL_F(FRAC_CONST(-0.3826834323650904), f70);
161
5.68M
    f73 = MUL_F(FRAC_CONST(0.5411961001461961), f36);
162
5.68M
    f74 = f71 + f72;
163
5.68M
    f75 = f73 - f72;
164
5.68M
    f76 = f47 + f45;
165
5.68M
    f77 = MUL_F(FRAC_CONST(-0.5411961001461969), f47);
166
5.68M
    f78 = MUL_F(FRAC_CONST(0.9238795325112867), f76);
167
5.68M
    f79 = MUL_C(COEF_CONST(1.3065629648763766), f45);
168
5.68M
    f80 = f77 + f78;
169
5.68M
    f81 = f79 - f78;
170
5.68M
    f82 = f46 + f44;
171
5.68M
    f83 = MUL_C(COEF_CONST(1.3065629648763770), f46);
172
5.68M
    f84 = MUL_F(FRAC_CONST(-0.3826834323650904), f82);
173
5.68M
    f85 = MUL_F(FRAC_CONST(0.5411961001461961), f44);
174
5.68M
    f86 = f83 + f84;
175
5.68M
    f87 = f85 - f84;
176
5.68M
    f88 = f55 + f53;
177
5.68M
    f89 = MUL_F(FRAC_CONST(-0.5411961001461969), f55);
178
5.68M
    f90 = MUL_F(FRAC_CONST(0.9238795325112867), f88);
179
5.68M
    f91 = MUL_C(COEF_CONST(1.3065629648763766), f53);
180
5.68M
    f92 = f89 + f90;
181
5.68M
    f93 = f91 - f90;
182
5.68M
    f94 = f54 + f52;
183
5.68M
    f95 = MUL_C(COEF_CONST(1.3065629648763770), f54);
184
5.68M
    f96 = MUL_F(FRAC_CONST(-0.3826834323650904), f94);
185
5.68M
    f97 = MUL_F(FRAC_CONST(0.5411961001461961), f52);
186
5.68M
    f98 = f95 + f96;
187
5.68M
    f99 = f97 - f96;
188
5.68M
    f100 = f63 + f61;
189
5.68M
    f101 = MUL_F(FRAC_CONST(-0.5411961001461969), f63);
190
5.68M
    f102 = MUL_F(FRAC_CONST(0.9238795325112867), f100);
191
5.68M
    f103 = MUL_C(COEF_CONST(1.3065629648763766), f61);
192
5.68M
    f104 = f101 + f102;
193
5.68M
    f105 = f103 - f102;
194
5.68M
    f106 = f62 + f60;
195
5.68M
    f107 = MUL_C(COEF_CONST(1.3065629648763770), f62);
196
5.68M
    f108 = MUL_F(FRAC_CONST(-0.3826834323650904), f106);
197
5.68M
    f109 = MUL_F(FRAC_CONST(0.5411961001461961), f60);
198
5.68M
    f110 = f107 + f108;
199
5.68M
    f111 = f109 - f108;
200
5.68M
    f112 = f33 - f68;
201
5.68M
    f113 = f33 + f68;
202
5.68M
    f114 = f35 - f69;
203
5.68M
    f115 = f35 + f69;
204
5.68M
    f116 = f32 - f74;
205
5.68M
    f117 = f32 + f74;
206
5.68M
    f118 = f34 - f75;
207
5.68M
    f119 = f34 + f75;
208
5.68M
    f120 = f41 - f80;
209
5.68M
    f121 = f41 + f80;
210
5.68M
    f122 = f43 - f81;
211
5.68M
    f123 = f43 + f81;
212
5.68M
    f124 = f40 - f86;
213
5.68M
    f125 = f40 + f86;
214
5.68M
    f126 = f42 - f87;
215
5.68M
    f127 = f42 + f87;
216
5.68M
    f128 = f49 - f92;
217
5.68M
    f129 = f49 + f92;
218
5.68M
    f130 = f51 - f93;
219
5.68M
    f131 = f51 + f93;
220
5.68M
    f132 = f48 - f98;
221
5.68M
    f133 = f48 + f98;
222
5.68M
    f134 = f50 - f99;
223
5.68M
    f135 = f50 + f99;
224
5.68M
    f136 = f57 - f104;
225
5.68M
    f137 = f57 + f104;
226
5.68M
    f138 = f59 - f105;
227
5.68M
    f139 = f59 + f105;
228
5.68M
    f140 = f56 - f110;
229
5.68M
    f141 = f56 + f110;
230
5.68M
    f142 = f58 - f111;
231
5.68M
    f143 = f58 + f111;
232
5.68M
    f144 = f123 + f121;
233
5.68M
    f145 = MUL_F(FRAC_CONST(-0.7856949583871021), f123);
234
5.68M
    f146 = MUL_F(FRAC_CONST(0.9807852804032304), f144);
235
5.68M
    f147 = MUL_C(COEF_CONST(1.1758756024193588), f121);
236
5.68M
    f148 = f145 + f146;
237
5.68M
    f149 = f147 - f146;
238
5.68M
    f150 = f127 + f125;
239
5.68M
    f151 = MUL_F(FRAC_CONST(0.2758993792829431), f127);
240
5.68M
    f152 = MUL_F(FRAC_CONST(0.5555702330196022), f150);
241
5.68M
    f153 = MUL_C(COEF_CONST(1.3870398453221475), f125);
242
5.68M
    f154 = f151 + f152;
243
5.68M
    f155 = f153 - f152;
244
5.68M
    f156 = f122 + f120;
245
5.68M
    f157 = MUL_C(COEF_CONST(1.1758756024193591), f122);
246
5.68M
    f158 = MUL_F(FRAC_CONST(-0.1950903220161287), f156);
247
5.68M
    f159 = MUL_F(FRAC_CONST(0.7856949583871016), f120);
248
5.68M
    f160 = f157 + f158;
249
5.68M
    f161 = f159 - f158;
250
5.68M
    f162 = f126 + f124;
251
5.68M
    f163 = MUL_C(COEF_CONST(1.3870398453221473), f126);
252
5.68M
    f164 = MUL_F(FRAC_CONST(-0.8314696123025455), f162);
253
5.68M
    f165 = MUL_F(FRAC_CONST(-0.2758993792829436), f124);
254
5.68M
    f166 = f163 + f164;
255
5.68M
    f167 = f165 - f164;
256
5.68M
    f168 = f139 + f137;
257
5.68M
    f169 = MUL_F(FRAC_CONST(-0.7856949583871021), f139);
258
5.68M
    f170 = MUL_F(FRAC_CONST(0.9807852804032304), f168);
259
5.68M
    f171 = MUL_C(COEF_CONST(1.1758756024193588), f137);
260
5.68M
    f172 = f169 + f170;
261
5.68M
    f173 = f171 - f170;
262
5.68M
    f174 = f143 + f141;
263
5.68M
    f175 = MUL_F(FRAC_CONST(0.2758993792829431), f143);
264
5.68M
    f176 = MUL_F(FRAC_CONST(0.5555702330196022), f174);
265
5.68M
    f177 = MUL_C(COEF_CONST(1.3870398453221475), f141);
266
5.68M
    f178 = f175 + f176;
267
5.68M
    f179 = f177 - f176;
268
5.68M
    f180 = f138 + f136;
269
5.68M
    f181 = MUL_C(COEF_CONST(1.1758756024193591), f138);
270
5.68M
    f182 = MUL_F(FRAC_CONST(-0.1950903220161287), f180);
271
5.68M
    f183 = MUL_F(FRAC_CONST(0.7856949583871016), f136);
272
5.68M
    f184 = f181 + f182;
273
5.68M
    f185 = f183 - f182;
274
5.68M
    f186 = f142 + f140;
275
5.68M
    f187 = MUL_C(COEF_CONST(1.3870398453221473), f142);
276
5.68M
    f188 = MUL_F(FRAC_CONST(-0.8314696123025455), f186);
277
5.68M
    f189 = MUL_F(FRAC_CONST(-0.2758993792829436), f140);
278
5.68M
    f190 = f187 + f188;
279
5.68M
    f191 = f189 - f188;
280
5.68M
    f192 = f113 - f148;
281
5.68M
    f193 = f113 + f148;
282
5.68M
    f194 = f115 - f149;
283
5.68M
    f195 = f115 + f149;
284
5.68M
    f196 = f117 - f154;
285
5.68M
    f197 = f117 + f154;
286
5.68M
    f198 = f119 - f155;
287
5.68M
    f199 = f119 + f155;
288
5.68M
    f200 = f112 - f160;
289
5.68M
    f201 = f112 + f160;
290
5.68M
    f202 = f114 - f161;
291
5.68M
    f203 = f114 + f161;
292
5.68M
    f204 = f116 - f166;
293
5.68M
    f205 = f116 + f166;
294
5.68M
    f206 = f118 - f167;
295
5.68M
    f207 = f118 + f167;
296
5.68M
    f208 = f129 - f172;
297
5.68M
    f209 = f129 + f172;
298
5.68M
    f210 = f131 - f173;
299
5.68M
    f211 = f131 + f173;
300
5.68M
    f212 = f133 - f178;
301
5.68M
    f213 = f133 + f178;
302
5.68M
    f214 = f135 - f179;
303
5.68M
    f215 = f135 + f179;
304
5.68M
    f216 = f128 - f184;
305
5.68M
    f217 = f128 + f184;
306
5.68M
    f218 = f130 - f185;
307
5.68M
    f219 = f130 + f185;
308
5.68M
    f220 = f132 - f190;
309
5.68M
    f221 = f132 + f190;
310
5.68M
    f222 = f134 - f191;
311
5.68M
    f223 = f134 + f191;
312
5.68M
    f224 = f211 + f209;
313
5.68M
    f225 = MUL_F(FRAC_CONST(-0.8971675863426361), f211);
314
5.68M
    f226 = MUL_F(FRAC_CONST(0.9951847266721968), f224);
315
5.68M
    f227 = MUL_C(COEF_CONST(1.0932018670017576), f209);
316
5.68M
    f228 = f225 + f226;
317
5.68M
    f229 = f227 - f226;
318
5.68M
    f230 = f215 + f213;
319
5.68M
    f231 = MUL_F(FRAC_CONST(-0.4105245275223571), f215);
320
5.68M
    f232 = MUL_F(FRAC_CONST(0.8819212643483549), f230);
321
5.68M
    f233 = MUL_C(COEF_CONST(1.3533180011743529), f213);
322
5.68M
    f234 = f231 + f232;
323
5.68M
    f235 = f233 - f232;
324
5.68M
    f236 = f219 + f217;
325
5.68M
    f237 = MUL_F(FRAC_CONST(0.1386171691990915), f219);
326
5.68M
    f238 = MUL_F(FRAC_CONST(0.6343932841636455), f236);
327
5.68M
    f239 = MUL_C(COEF_CONST(1.4074037375263826), f217);
328
5.68M
    f240 = f237 + f238;
329
5.68M
    f241 = f239 - f238;
330
5.68M
    f242 = f223 + f221;
331
5.68M
    f243 = MUL_F(FRAC_CONST(0.6666556584777466), f223);
332
5.68M
    f244 = MUL_F(FRAC_CONST(0.2902846772544623), f242);
333
5.68M
    f245 = MUL_C(COEF_CONST(1.2472250129866711), f221);
334
5.68M
    f246 = f243 + f244;
335
5.68M
    f247 = f245 - f244;
336
5.68M
    f248 = f210 + f208;
337
5.68M
    f249 = MUL_C(COEF_CONST(1.0932018670017574), f210);
338
5.68M
    f250 = MUL_F(FRAC_CONST(-0.0980171403295605), f248);
339
5.68M
    f251 = MUL_F(FRAC_CONST(0.8971675863426364), f208);
340
5.68M
    f252 = f249 + f250;
341
5.68M
    f253 = f251 - f250;
342
5.68M
    f254 = f214 + f212;
343
5.68M
    f255 = MUL_C(COEF_CONST(1.3533180011743529), f214);
344
5.68M
    f256 = MUL_F(FRAC_CONST(-0.4713967368259979), f254);
345
5.68M
    f257 = MUL_F(FRAC_CONST(0.4105245275223569), f212);
346
5.68M
    f258 = f255 + f256;
347
5.68M
    f259 = f257 - f256;
348
5.68M
    f260 = f218 + f216;
349
5.68M
    f261 = MUL_C(COEF_CONST(1.4074037375263826), f218);
350
5.68M
    f262 = MUL_F(FRAC_CONST(-0.7730104533627369), f260);
351
5.68M
    f263 = MUL_F(FRAC_CONST(-0.1386171691990913), f216);
352
5.68M
    f264 = f261 + f262;
353
5.68M
    f265 = f263 - f262;
354
5.68M
    f266 = f222 + f220;
355
5.68M
    f267 = MUL_C(COEF_CONST(1.2472250129866711), f222);
356
5.68M
    f268 = MUL_F(FRAC_CONST(-0.9569403357322089), f266);
357
5.68M
    f269 = MUL_F(FRAC_CONST(-0.6666556584777469), f220);
358
5.68M
    f270 = f267 + f268;
359
5.68M
    f271 = f269 - f268;
360
5.68M
    f272 = f193 - f228;
361
5.68M
    f273 = f193 + f228;
362
5.68M
    f274 = f195 - f229;
363
5.68M
    f275 = f195 + f229;
364
5.68M
    f276 = f197 - f234;
365
5.68M
    f277 = f197 + f234;
366
5.68M
    f278 = f199 - f235;
367
5.68M
    f279 = f199 + f235;
368
5.68M
    f280 = f201 - f240;
369
5.68M
    f281 = f201 + f240;
370
5.68M
    f282 = f203 - f241;
371
5.68M
    f283 = f203 + f241;
372
5.68M
    f284 = f205 - f246;
373
5.68M
    f285 = f205 + f246;
374
5.68M
    f286 = f207 - f247;
375
5.68M
    f287 = f207 + f247;
376
5.68M
    f288 = f192 - f252;
377
5.68M
    f289 = f192 + f252;
378
5.68M
    f290 = f194 - f253;
379
5.68M
    f291 = f194 + f253;
380
5.68M
    f292 = f196 - f258;
381
5.68M
    f293 = f196 + f258;
382
5.68M
    f294 = f198 - f259;
383
5.68M
    f295 = f198 + f259;
384
5.68M
    f296 = f200 - f264;
385
5.68M
    f297 = f200 + f264;
386
5.68M
    f298 = f202 - f265;
387
5.68M
    f299 = f202 + f265;
388
5.68M
    f300 = f204 - f270;
389
5.68M
    f301 = f204 + f270;
390
5.68M
    f302 = f206 - f271;
391
5.68M
    f303 = f206 + f271;
392
5.68M
    f304 = f275 + f273;
393
5.68M
    f305 = MUL_F(FRAC_CONST(-0.9751575901732920), f275);
394
5.68M
    f306 = MUL_F(FRAC_CONST(0.9996988186962043), f304);
395
5.68M
    f307 = MUL_C(COEF_CONST(1.0242400472191164), f273);
396
5.68M
    y[0] = f305 + f306;
397
5.68M
    y[31] = f307 - f306;
398
5.68M
    f310 = f279 + f277;
399
5.68M
    f311 = MUL_F(FRAC_CONST(-0.8700688593994936), f279);
400
5.68M
    f312 = MUL_F(FRAC_CONST(0.9924795345987100), f310);
401
5.68M
    f313 = MUL_C(COEF_CONST(1.1148902097979263), f277);
402
5.68M
    y[2] = f311 + f312;
403
5.68M
    y[29] = f313 - f312;
404
5.68M
    f316 = f283 + f281;
405
5.68M
    f317 = MUL_F(FRAC_CONST(-0.7566008898816587), f283);
406
5.68M
    f318 = MUL_F(FRAC_CONST(0.9757021300385286), f316);
407
5.68M
    f319 = MUL_C(COEF_CONST(1.1948033701953984), f281);
408
5.68M
    y[4] = f317 + f318;
409
5.68M
    y[27] = f319 - f318;
410
5.68M
    f322 = f287 + f285;
411
5.68M
    f323 = MUL_F(FRAC_CONST(-0.6358464401941451), f287);
412
5.68M
    f324 = MUL_F(FRAC_CONST(0.9495281805930367), f322);
413
5.68M
    f325 = MUL_C(COEF_CONST(1.2632099209919283), f285);
414
5.68M
    y[6] = f323 + f324;
415
5.68M
    y[25] = f325 - f324;
416
5.68M
    f328 = f291 + f289;
417
5.68M
    f329 = MUL_F(FRAC_CONST(-0.5089684416985408), f291);
418
5.68M
    f330 = MUL_F(FRAC_CONST(0.9142097557035307), f328);
419
5.68M
    f331 = MUL_C(COEF_CONST(1.3194510697085207), f289);
420
5.68M
    y[8] = f329 + f330;
421
5.68M
    y[23] = f331 - f330;
422
5.68M
    f334 = f295 + f293;
423
5.68M
    f335 = MUL_F(FRAC_CONST(-0.3771887988789273), f295);
424
5.68M
    f336 = MUL_F(FRAC_CONST(0.8700869911087114), f334);
425
5.68M
    f337 = MUL_C(COEF_CONST(1.3629851833384954), f293);
426
5.68M
    y[10] = f335 + f336;
427
5.68M
    y[21] = f337 - f336;
428
5.68M
    f340 = f299 + f297;
429
5.68M
    f341 = MUL_F(FRAC_CONST(-0.2417766217337384), f299);
430
5.68M
    f342 = MUL_F(FRAC_CONST(0.8175848131515837), f340);
431
5.68M
    f343 = MUL_C(COEF_CONST(1.3933930045694289), f297);
432
5.68M
    y[12] = f341 + f342;
433
5.68M
    y[19] = f343 - f342;
434
5.68M
    f346 = f303 + f301;
435
5.68M
    f347 = MUL_F(FRAC_CONST(-0.1040360035527077), f303);
436
5.68M
    f348 = MUL_F(FRAC_CONST(0.7572088465064845), f346);
437
5.68M
    f349 = MUL_C(COEF_CONST(1.4103816894602612), f301);
438
5.68M
    y[14] = f347 + f348;
439
5.68M
    y[17] = f349 - f348;
440
5.68M
    f352 = f274 + f272;
441
5.68M
    f353 = MUL_F(FRAC_CONST(0.0347065382144002), f274);
442
5.68M
    f354 = MUL_F(FRAC_CONST(0.6895405447370668), f352);
443
5.68M
    f355 = MUL_C(COEF_CONST(1.4137876276885337), f272);
444
5.68M
    y[16] = f353 + f354;
445
5.68M
    y[15] = f355 - f354;
446
5.68M
    f358 = f278 + f276;
447
5.68M
    f359 = MUL_F(FRAC_CONST(0.1731148370459795), f278);
448
5.68M
    f360 = MUL_F(FRAC_CONST(0.6152315905806268), f358);
449
5.68M
    f361 = MUL_C(COEF_CONST(1.4035780182072330), f276);
450
5.68M
    y[18] = f359 + f360;
451
5.68M
    y[13] = f361 - f360;
452
5.68M
    f364 = f282 + f280;
453
5.68M
    f365 = MUL_F(FRAC_CONST(0.3098559453626100), f282);
454
5.68M
    f366 = MUL_F(FRAC_CONST(0.5349976198870972), f364);
455
5.68M
    f367 = MUL_C(COEF_CONST(1.3798511851368043), f280);
456
5.68M
    y[20] = f365 + f366;
457
5.68M
    y[11] = f367 - f366;
458
5.68M
    f370 = f286 + f284;
459
5.68M
    f371 = MUL_F(FRAC_CONST(0.4436129715409088), f286);
460
5.68M
    f372 = MUL_F(FRAC_CONST(0.4496113296546065), f370);
461
5.68M
    f373 = MUL_C(COEF_CONST(1.3428356308501219), f284);
462
5.68M
    y[22] = f371 + f372;
463
5.68M
    y[9] = f373 - f372;
464
5.68M
    f376 = f290 + f288;
465
5.68M
    f377 = MUL_F(FRAC_CONST(0.5730977622997509), f290);
466
5.68M
    f378 = MUL_F(FRAC_CONST(0.3598950365349881), f376);
467
5.68M
    f379 = MUL_C(COEF_CONST(1.2928878353697271), f288);
468
5.68M
    y[24] = f377 + f378;
469
5.68M
    y[7] = f379 - f378;
470
5.68M
    f382 = f294 + f292;
471
5.68M
    f383 = MUL_F(FRAC_CONST(0.6970633083205415), f294);
472
5.68M
    f384 = MUL_F(FRAC_CONST(0.2667127574748984), f382);
473
5.68M
    f385 = MUL_C(COEF_CONST(1.2304888232703382), f292);
474
5.68M
    y[26] = f383 + f384;
475
5.68M
    y[5] = f385 - f384;
476
5.68M
    f388 = f298 + f296;
477
5.68M
    f389 = MUL_F(FRAC_CONST(0.8143157536286401), f298);
478
5.68M
    f390 = MUL_F(FRAC_CONST(0.1709618887603012), f388);
479
5.68M
    f391 = MUL_C(COEF_CONST(1.1562395311492424), f296);
480
5.68M
    y[28] = f389 + f390;
481
5.68M
    y[3] = f391 - f390;
482
5.68M
    f394 = f302 + f300;
483
5.68M
    f395 = MUL_F(FRAC_CONST(0.9237258930790228), f302);
484
5.68M
    f396 = MUL_F(FRAC_CONST(0.0735645635996674), f394);
485
5.68M
    f397 = MUL_C(COEF_CONST(1.0708550202783576), f300);
486
5.68M
    y[30] = f395 + f396;
487
5.68M
    y[1] = f397 - f396;
488
5.68M
}
DCT4_32
Line
Count
Source
49
1.86M
{
50
1.86M
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
51
1.86M
    real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
52
1.86M
    real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
53
1.86M
    real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
54
1.86M
    real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
55
1.86M
    real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
56
1.86M
    real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
57
1.86M
    real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
58
1.86M
    real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
59
1.86M
    real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
60
1.86M
    real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
61
1.86M
    real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
62
1.86M
    real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130;
63
1.86M
    real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
64
1.86M
    real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
65
1.86M
    real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
66
1.86M
    real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
67
1.86M
    real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
68
1.86M
    real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
69
1.86M
    real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
70
1.86M
    real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
71
1.86M
    real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
72
1.86M
    real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
73
1.86M
    real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
74
1.86M
    real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
75
1.86M
    real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
76
1.86M
    real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
77
1.86M
    real_t f271, f272, f273, f274, f275, f276, f277, f278, f279, f280;
78
1.86M
    real_t f281, f282, f283, f284, f285, f286, f287, f288, f289, f290;
79
1.86M
    real_t f291, f292, f293, f294, f295, f296, f297, f298, f299, f300;
80
1.86M
    real_t f301, f302, f303, f304, f305, f306, f307, f310, f311, f312;
81
1.86M
    real_t f313, f316, f317, f318, f319, f322, f323, f324, f325, f328;
82
1.86M
    real_t f329, f330, f331, f334, f335, f336, f337, f340, f341, f342;
83
1.86M
    real_t f343, f346, f347, f348, f349, f352, f353, f354, f355, f358;
84
1.86M
    real_t f359, f360, f361, f364, f365, f366, f367, f370, f371, f372;
85
1.86M
    real_t f373, f376, f377, f378, f379, f382, f383, f384, f385, f388;
86
1.86M
    real_t f389, f390, f391, f394, f395, f396, f397;
87
88
1.86M
    f0 = x[15] - x[16];
89
1.86M
    f1 = x[15] + x[16];
90
1.86M
    f2 = MUL_F(FRAC_CONST(0.7071067811865476), f1);
91
1.86M
    f3 = MUL_F(FRAC_CONST(0.7071067811865476), f0);
92
1.86M
    f4 = x[8] - x[23];
93
1.86M
    f5 = x[8] + x[23];
94
1.86M
    f6 = MUL_F(FRAC_CONST(0.7071067811865476), f5);
95
1.86M
    f7 = MUL_F(FRAC_CONST(0.7071067811865476), f4);
96
1.86M
    f8 = x[12] - x[19];
97
1.86M
    f9 = x[12] + x[19];
98
1.86M
    f10 = MUL_F(FRAC_CONST(0.7071067811865476), f9);
99
1.86M
    f11 = MUL_F(FRAC_CONST(0.7071067811865476), f8);
100
1.86M
    f12 = x[11] - x[20];
101
1.86M
    f13 = x[11] + x[20];
102
1.86M
    f14 = MUL_F(FRAC_CONST(0.7071067811865476), f13);
103
1.86M
    f15 = MUL_F(FRAC_CONST(0.7071067811865476), f12);
104
1.86M
    f16 = x[14] - x[17];
105
1.86M
    f17 = x[14] + x[17];
106
1.86M
    f18 = MUL_F(FRAC_CONST(0.7071067811865476), f17);
107
1.86M
    f19 = MUL_F(FRAC_CONST(0.7071067811865476), f16);
108
1.86M
    f20 = x[9] - x[22];
109
1.86M
    f21 = x[9] + x[22];
110
1.86M
    f22 = MUL_F(FRAC_CONST(0.7071067811865476), f21);
111
1.86M
    f23 = MUL_F(FRAC_CONST(0.7071067811865476), f20);
112
1.86M
    f24 = x[13] - x[18];
113
1.86M
    f25 = x[13] + x[18];
114
1.86M
    f26 = MUL_F(FRAC_CONST(0.7071067811865476), f25);
115
1.86M
    f27 = MUL_F(FRAC_CONST(0.7071067811865476), f24);
116
1.86M
    f28 = x[10] - x[21];
117
1.86M
    f29 = x[10] + x[21];
118
1.86M
    f30 = MUL_F(FRAC_CONST(0.7071067811865476), f29);
119
1.86M
    f31 = MUL_F(FRAC_CONST(0.7071067811865476), f28);
120
1.86M
    f32 = x[0] - f2;
121
1.86M
    f33 = x[0] + f2;
122
1.86M
    f34 = x[31] - f3;
123
1.86M
    f35 = x[31] + f3;
124
1.86M
    f36 = x[7] - f6;
125
1.86M
    f37 = x[7] + f6;
126
1.86M
    f38 = x[24] - f7;
127
1.86M
    f39 = x[24] + f7;
128
1.86M
    f40 = x[3] - f10;
129
1.86M
    f41 = x[3] + f10;
130
1.86M
    f42 = x[28] - f11;
131
1.86M
    f43 = x[28] + f11;
132
1.86M
    f44 = x[4] - f14;
133
1.86M
    f45 = x[4] + f14;
134
1.86M
    f46 = x[27] - f15;
135
1.86M
    f47 = x[27] + f15;
136
1.86M
    f48 = x[1] - f18;
137
1.86M
    f49 = x[1] + f18;
138
1.86M
    f50 = x[30] - f19;
139
1.86M
    f51 = x[30] + f19;
140
1.86M
    f52 = x[6] - f22;
141
1.86M
    f53 = x[6] + f22;
142
1.86M
    f54 = x[25] - f23;
143
1.86M
    f55 = x[25] + f23;
144
1.86M
    f56 = x[2] - f26;
145
1.86M
    f57 = x[2] + f26;
146
1.86M
    f58 = x[29] - f27;
147
1.86M
    f59 = x[29] + f27;
148
1.86M
    f60 = x[5] - f30;
149
1.86M
    f61 = x[5] + f30;
150
1.86M
    f62 = x[26] - f31;
151
1.86M
    f63 = x[26] + f31;
152
1.86M
    f64 = f39 + f37;
153
1.86M
    f65 = MUL_F(FRAC_CONST(-0.5411961001461969), f39);
154
1.86M
    f66 = MUL_F(FRAC_CONST(0.9238795325112867), f64);
155
1.86M
    f67 = MUL_C(COEF_CONST(1.3065629648763766), f37);
156
1.86M
    f68 = f65 + f66;
157
1.86M
    f69 = f67 - f66;
158
1.86M
    f70 = f38 + f36;
159
1.86M
    f71 = MUL_C(COEF_CONST(1.3065629648763770), f38);
160
1.86M
    f72 = MUL_F(FRAC_CONST(-0.3826834323650904), f70);
161
1.86M
    f73 = MUL_F(FRAC_CONST(0.5411961001461961), f36);
162
1.86M
    f74 = f71 + f72;
163
1.86M
    f75 = f73 - f72;
164
1.86M
    f76 = f47 + f45;
165
1.86M
    f77 = MUL_F(FRAC_CONST(-0.5411961001461969), f47);
166
1.86M
    f78 = MUL_F(FRAC_CONST(0.9238795325112867), f76);
167
1.86M
    f79 = MUL_C(COEF_CONST(1.3065629648763766), f45);
168
1.86M
    f80 = f77 + f78;
169
1.86M
    f81 = f79 - f78;
170
1.86M
    f82 = f46 + f44;
171
1.86M
    f83 = MUL_C(COEF_CONST(1.3065629648763770), f46);
172
1.86M
    f84 = MUL_F(FRAC_CONST(-0.3826834323650904), f82);
173
1.86M
    f85 = MUL_F(FRAC_CONST(0.5411961001461961), f44);
174
1.86M
    f86 = f83 + f84;
175
1.86M
    f87 = f85 - f84;
176
1.86M
    f88 = f55 + f53;
177
1.86M
    f89 = MUL_F(FRAC_CONST(-0.5411961001461969), f55);
178
1.86M
    f90 = MUL_F(FRAC_CONST(0.9238795325112867), f88);
179
1.86M
    f91 = MUL_C(COEF_CONST(1.3065629648763766), f53);
180
1.86M
    f92 = f89 + f90;
181
1.86M
    f93 = f91 - f90;
182
1.86M
    f94 = f54 + f52;
183
1.86M
    f95 = MUL_C(COEF_CONST(1.3065629648763770), f54);
184
1.86M
    f96 = MUL_F(FRAC_CONST(-0.3826834323650904), f94);
185
1.86M
    f97 = MUL_F(FRAC_CONST(0.5411961001461961), f52);
186
1.86M
    f98 = f95 + f96;
187
1.86M
    f99 = f97 - f96;
188
1.86M
    f100 = f63 + f61;
189
1.86M
    f101 = MUL_F(FRAC_CONST(-0.5411961001461969), f63);
190
1.86M
    f102 = MUL_F(FRAC_CONST(0.9238795325112867), f100);
191
1.86M
    f103 = MUL_C(COEF_CONST(1.3065629648763766), f61);
192
1.86M
    f104 = f101 + f102;
193
1.86M
    f105 = f103 - f102;
194
1.86M
    f106 = f62 + f60;
195
1.86M
    f107 = MUL_C(COEF_CONST(1.3065629648763770), f62);
196
1.86M
    f108 = MUL_F(FRAC_CONST(-0.3826834323650904), f106);
197
1.86M
    f109 = MUL_F(FRAC_CONST(0.5411961001461961), f60);
198
1.86M
    f110 = f107 + f108;
199
1.86M
    f111 = f109 - f108;
200
1.86M
    f112 = f33 - f68;
201
1.86M
    f113 = f33 + f68;
202
1.86M
    f114 = f35 - f69;
203
1.86M
    f115 = f35 + f69;
204
1.86M
    f116 = f32 - f74;
205
1.86M
    f117 = f32 + f74;
206
1.86M
    f118 = f34 - f75;
207
1.86M
    f119 = f34 + f75;
208
1.86M
    f120 = f41 - f80;
209
1.86M
    f121 = f41 + f80;
210
1.86M
    f122 = f43 - f81;
211
1.86M
    f123 = f43 + f81;
212
1.86M
    f124 = f40 - f86;
213
1.86M
    f125 = f40 + f86;
214
1.86M
    f126 = f42 - f87;
215
1.86M
    f127 = f42 + f87;
216
1.86M
    f128 = f49 - f92;
217
1.86M
    f129 = f49 + f92;
218
1.86M
    f130 = f51 - f93;
219
1.86M
    f131 = f51 + f93;
220
1.86M
    f132 = f48 - f98;
221
1.86M
    f133 = f48 + f98;
222
1.86M
    f134 = f50 - f99;
223
1.86M
    f135 = f50 + f99;
224
1.86M
    f136 = f57 - f104;
225
1.86M
    f137 = f57 + f104;
226
1.86M
    f138 = f59 - f105;
227
1.86M
    f139 = f59 + f105;
228
1.86M
    f140 = f56 - f110;
229
1.86M
    f141 = f56 + f110;
230
1.86M
    f142 = f58 - f111;
231
1.86M
    f143 = f58 + f111;
232
1.86M
    f144 = f123 + f121;
233
1.86M
    f145 = MUL_F(FRAC_CONST(-0.7856949583871021), f123);
234
1.86M
    f146 = MUL_F(FRAC_CONST(0.9807852804032304), f144);
235
1.86M
    f147 = MUL_C(COEF_CONST(1.1758756024193588), f121);
236
1.86M
    f148 = f145 + f146;
237
1.86M
    f149 = f147 - f146;
238
1.86M
    f150 = f127 + f125;
239
1.86M
    f151 = MUL_F(FRAC_CONST(0.2758993792829431), f127);
240
1.86M
    f152 = MUL_F(FRAC_CONST(0.5555702330196022), f150);
241
1.86M
    f153 = MUL_C(COEF_CONST(1.3870398453221475), f125);
242
1.86M
    f154 = f151 + f152;
243
1.86M
    f155 = f153 - f152;
244
1.86M
    f156 = f122 + f120;
245
1.86M
    f157 = MUL_C(COEF_CONST(1.1758756024193591), f122);
246
1.86M
    f158 = MUL_F(FRAC_CONST(-0.1950903220161287), f156);
247
1.86M
    f159 = MUL_F(FRAC_CONST(0.7856949583871016), f120);
248
1.86M
    f160 = f157 + f158;
249
1.86M
    f161 = f159 - f158;
250
1.86M
    f162 = f126 + f124;
251
1.86M
    f163 = MUL_C(COEF_CONST(1.3870398453221473), f126);
252
1.86M
    f164 = MUL_F(FRAC_CONST(-0.8314696123025455), f162);
253
1.86M
    f165 = MUL_F(FRAC_CONST(-0.2758993792829436), f124);
254
1.86M
    f166 = f163 + f164;
255
1.86M
    f167 = f165 - f164;
256
1.86M
    f168 = f139 + f137;
257
1.86M
    f169 = MUL_F(FRAC_CONST(-0.7856949583871021), f139);
258
1.86M
    f170 = MUL_F(FRAC_CONST(0.9807852804032304), f168);
259
1.86M
    f171 = MUL_C(COEF_CONST(1.1758756024193588), f137);
260
1.86M
    f172 = f169 + f170;
261
1.86M
    f173 = f171 - f170;
262
1.86M
    f174 = f143 + f141;
263
1.86M
    f175 = MUL_F(FRAC_CONST(0.2758993792829431), f143);
264
1.86M
    f176 = MUL_F(FRAC_CONST(0.5555702330196022), f174);
265
1.86M
    f177 = MUL_C(COEF_CONST(1.3870398453221475), f141);
266
1.86M
    f178 = f175 + f176;
267
1.86M
    f179 = f177 - f176;
268
1.86M
    f180 = f138 + f136;
269
1.86M
    f181 = MUL_C(COEF_CONST(1.1758756024193591), f138);
270
1.86M
    f182 = MUL_F(FRAC_CONST(-0.1950903220161287), f180);
271
1.86M
    f183 = MUL_F(FRAC_CONST(0.7856949583871016), f136);
272
1.86M
    f184 = f181 + f182;
273
1.86M
    f185 = f183 - f182;
274
1.86M
    f186 = f142 + f140;
275
1.86M
    f187 = MUL_C(COEF_CONST(1.3870398453221473), f142);
276
1.86M
    f188 = MUL_F(FRAC_CONST(-0.8314696123025455), f186);
277
1.86M
    f189 = MUL_F(FRAC_CONST(-0.2758993792829436), f140);
278
1.86M
    f190 = f187 + f188;
279
1.86M
    f191 = f189 - f188;
280
1.86M
    f192 = f113 - f148;
281
1.86M
    f193 = f113 + f148;
282
1.86M
    f194 = f115 - f149;
283
1.86M
    f195 = f115 + f149;
284
1.86M
    f196 = f117 - f154;
285
1.86M
    f197 = f117 + f154;
286
1.86M
    f198 = f119 - f155;
287
1.86M
    f199 = f119 + f155;
288
1.86M
    f200 = f112 - f160;
289
1.86M
    f201 = f112 + f160;
290
1.86M
    f202 = f114 - f161;
291
1.86M
    f203 = f114 + f161;
292
1.86M
    f204 = f116 - f166;
293
1.86M
    f205 = f116 + f166;
294
1.86M
    f206 = f118 - f167;
295
1.86M
    f207 = f118 + f167;
296
1.86M
    f208 = f129 - f172;
297
1.86M
    f209 = f129 + f172;
298
1.86M
    f210 = f131 - f173;
299
1.86M
    f211 = f131 + f173;
300
1.86M
    f212 = f133 - f178;
301
1.86M
    f213 = f133 + f178;
302
1.86M
    f214 = f135 - f179;
303
1.86M
    f215 = f135 + f179;
304
1.86M
    f216 = f128 - f184;
305
1.86M
    f217 = f128 + f184;
306
1.86M
    f218 = f130 - f185;
307
1.86M
    f219 = f130 + f185;
308
1.86M
    f220 = f132 - f190;
309
1.86M
    f221 = f132 + f190;
310
1.86M
    f222 = f134 - f191;
311
1.86M
    f223 = f134 + f191;
312
1.86M
    f224 = f211 + f209;
313
1.86M
    f225 = MUL_F(FRAC_CONST(-0.8971675863426361), f211);
314
1.86M
    f226 = MUL_F(FRAC_CONST(0.9951847266721968), f224);
315
1.86M
    f227 = MUL_C(COEF_CONST(1.0932018670017576), f209);
316
1.86M
    f228 = f225 + f226;
317
1.86M
    f229 = f227 - f226;
318
1.86M
    f230 = f215 + f213;
319
1.86M
    f231 = MUL_F(FRAC_CONST(-0.4105245275223571), f215);
320
1.86M
    f232 = MUL_F(FRAC_CONST(0.8819212643483549), f230);
321
1.86M
    f233 = MUL_C(COEF_CONST(1.3533180011743529), f213);
322
1.86M
    f234 = f231 + f232;
323
1.86M
    f235 = f233 - f232;
324
1.86M
    f236 = f219 + f217;
325
1.86M
    f237 = MUL_F(FRAC_CONST(0.1386171691990915), f219);
326
1.86M
    f238 = MUL_F(FRAC_CONST(0.6343932841636455), f236);
327
1.86M
    f239 = MUL_C(COEF_CONST(1.4074037375263826), f217);
328
1.86M
    f240 = f237 + f238;
329
1.86M
    f241 = f239 - f238;
330
1.86M
    f242 = f223 + f221;
331
1.86M
    f243 = MUL_F(FRAC_CONST(0.6666556584777466), f223);
332
1.86M
    f244 = MUL_F(FRAC_CONST(0.2902846772544623), f242);
333
1.86M
    f245 = MUL_C(COEF_CONST(1.2472250129866711), f221);
334
1.86M
    f246 = f243 + f244;
335
1.86M
    f247 = f245 - f244;
336
1.86M
    f248 = f210 + f208;
337
1.86M
    f249 = MUL_C(COEF_CONST(1.0932018670017574), f210);
338
1.86M
    f250 = MUL_F(FRAC_CONST(-0.0980171403295605), f248);
339
1.86M
    f251 = MUL_F(FRAC_CONST(0.8971675863426364), f208);
340
1.86M
    f252 = f249 + f250;
341
1.86M
    f253 = f251 - f250;
342
1.86M
    f254 = f214 + f212;
343
1.86M
    f255 = MUL_C(COEF_CONST(1.3533180011743529), f214);
344
1.86M
    f256 = MUL_F(FRAC_CONST(-0.4713967368259979), f254);
345
1.86M
    f257 = MUL_F(FRAC_CONST(0.4105245275223569), f212);
346
1.86M
    f258 = f255 + f256;
347
1.86M
    f259 = f257 - f256;
348
1.86M
    f260 = f218 + f216;
349
1.86M
    f261 = MUL_C(COEF_CONST(1.4074037375263826), f218);
350
1.86M
    f262 = MUL_F(FRAC_CONST(-0.7730104533627369), f260);
351
1.86M
    f263 = MUL_F(FRAC_CONST(-0.1386171691990913), f216);
352
1.86M
    f264 = f261 + f262;
353
1.86M
    f265 = f263 - f262;
354
1.86M
    f266 = f222 + f220;
355
1.86M
    f267 = MUL_C(COEF_CONST(1.2472250129866711), f222);
356
1.86M
    f268 = MUL_F(FRAC_CONST(-0.9569403357322089), f266);
357
1.86M
    f269 = MUL_F(FRAC_CONST(-0.6666556584777469), f220);
358
1.86M
    f270 = f267 + f268;
359
1.86M
    f271 = f269 - f268;
360
1.86M
    f272 = f193 - f228;
361
1.86M
    f273 = f193 + f228;
362
1.86M
    f274 = f195 - f229;
363
1.86M
    f275 = f195 + f229;
364
1.86M
    f276 = f197 - f234;
365
1.86M
    f277 = f197 + f234;
366
1.86M
    f278 = f199 - f235;
367
1.86M
    f279 = f199 + f235;
368
1.86M
    f280 = f201 - f240;
369
1.86M
    f281 = f201 + f240;
370
1.86M
    f282 = f203 - f241;
371
1.86M
    f283 = f203 + f241;
372
1.86M
    f284 = f205 - f246;
373
1.86M
    f285 = f205 + f246;
374
1.86M
    f286 = f207 - f247;
375
1.86M
    f287 = f207 + f247;
376
1.86M
    f288 = f192 - f252;
377
1.86M
    f289 = f192 + f252;
378
1.86M
    f290 = f194 - f253;
379
1.86M
    f291 = f194 + f253;
380
1.86M
    f292 = f196 - f258;
381
1.86M
    f293 = f196 + f258;
382
1.86M
    f294 = f198 - f259;
383
1.86M
    f295 = f198 + f259;
384
1.86M
    f296 = f200 - f264;
385
1.86M
    f297 = f200 + f264;
386
1.86M
    f298 = f202 - f265;
387
1.86M
    f299 = f202 + f265;
388
1.86M
    f300 = f204 - f270;
389
1.86M
    f301 = f204 + f270;
390
1.86M
    f302 = f206 - f271;
391
1.86M
    f303 = f206 + f271;
392
1.86M
    f304 = f275 + f273;
393
1.86M
    f305 = MUL_F(FRAC_CONST(-0.9751575901732920), f275);
394
1.86M
    f306 = MUL_F(FRAC_CONST(0.9996988186962043), f304);
395
1.86M
    f307 = MUL_C(COEF_CONST(1.0242400472191164), f273);
396
1.86M
    y[0] = f305 + f306;
397
1.86M
    y[31] = f307 - f306;
398
1.86M
    f310 = f279 + f277;
399
1.86M
    f311 = MUL_F(FRAC_CONST(-0.8700688593994936), f279);
400
1.86M
    f312 = MUL_F(FRAC_CONST(0.9924795345987100), f310);
401
1.86M
    f313 = MUL_C(COEF_CONST(1.1148902097979263), f277);
402
1.86M
    y[2] = f311 + f312;
403
1.86M
    y[29] = f313 - f312;
404
1.86M
    f316 = f283 + f281;
405
1.86M
    f317 = MUL_F(FRAC_CONST(-0.7566008898816587), f283);
406
1.86M
    f318 = MUL_F(FRAC_CONST(0.9757021300385286), f316);
407
1.86M
    f319 = MUL_C(COEF_CONST(1.1948033701953984), f281);
408
1.86M
    y[4] = f317 + f318;
409
1.86M
    y[27] = f319 - f318;
410
1.86M
    f322 = f287 + f285;
411
1.86M
    f323 = MUL_F(FRAC_CONST(-0.6358464401941451), f287);
412
1.86M
    f324 = MUL_F(FRAC_CONST(0.9495281805930367), f322);
413
1.86M
    f325 = MUL_C(COEF_CONST(1.2632099209919283), f285);
414
1.86M
    y[6] = f323 + f324;
415
1.86M
    y[25] = f325 - f324;
416
1.86M
    f328 = f291 + f289;
417
1.86M
    f329 = MUL_F(FRAC_CONST(-0.5089684416985408), f291);
418
1.86M
    f330 = MUL_F(FRAC_CONST(0.9142097557035307), f328);
419
1.86M
    f331 = MUL_C(COEF_CONST(1.3194510697085207), f289);
420
1.86M
    y[8] = f329 + f330;
421
1.86M
    y[23] = f331 - f330;
422
1.86M
    f334 = f295 + f293;
423
1.86M
    f335 = MUL_F(FRAC_CONST(-0.3771887988789273), f295);
424
1.86M
    f336 = MUL_F(FRAC_CONST(0.8700869911087114), f334);
425
1.86M
    f337 = MUL_C(COEF_CONST(1.3629851833384954), f293);
426
1.86M
    y[10] = f335 + f336;
427
1.86M
    y[21] = f337 - f336;
428
1.86M
    f340 = f299 + f297;
429
1.86M
    f341 = MUL_F(FRAC_CONST(-0.2417766217337384), f299);
430
1.86M
    f342 = MUL_F(FRAC_CONST(0.8175848131515837), f340);
431
1.86M
    f343 = MUL_C(COEF_CONST(1.3933930045694289), f297);
432
1.86M
    y[12] = f341 + f342;
433
1.86M
    y[19] = f343 - f342;
434
1.86M
    f346 = f303 + f301;
435
1.86M
    f347 = MUL_F(FRAC_CONST(-0.1040360035527077), f303);
436
1.86M
    f348 = MUL_F(FRAC_CONST(0.7572088465064845), f346);
437
1.86M
    f349 = MUL_C(COEF_CONST(1.4103816894602612), f301);
438
1.86M
    y[14] = f347 + f348;
439
1.86M
    y[17] = f349 - f348;
440
1.86M
    f352 = f274 + f272;
441
1.86M
    f353 = MUL_F(FRAC_CONST(0.0347065382144002), f274);
442
1.86M
    f354 = MUL_F(FRAC_CONST(0.6895405447370668), f352);
443
1.86M
    f355 = MUL_C(COEF_CONST(1.4137876276885337), f272);
444
1.86M
    y[16] = f353 + f354;
445
1.86M
    y[15] = f355 - f354;
446
1.86M
    f358 = f278 + f276;
447
1.86M
    f359 = MUL_F(FRAC_CONST(0.1731148370459795), f278);
448
1.86M
    f360 = MUL_F(FRAC_CONST(0.6152315905806268), f358);
449
1.86M
    f361 = MUL_C(COEF_CONST(1.4035780182072330), f276);
450
1.86M
    y[18] = f359 + f360;
451
1.86M
    y[13] = f361 - f360;
452
1.86M
    f364 = f282 + f280;
453
1.86M
    f365 = MUL_F(FRAC_CONST(0.3098559453626100), f282);
454
1.86M
    f366 = MUL_F(FRAC_CONST(0.5349976198870972), f364);
455
1.86M
    f367 = MUL_C(COEF_CONST(1.3798511851368043), f280);
456
1.86M
    y[20] = f365 + f366;
457
1.86M
    y[11] = f367 - f366;
458
1.86M
    f370 = f286 + f284;
459
1.86M
    f371 = MUL_F(FRAC_CONST(0.4436129715409088), f286);
460
1.86M
    f372 = MUL_F(FRAC_CONST(0.4496113296546065), f370);
461
1.86M
    f373 = MUL_C(COEF_CONST(1.3428356308501219), f284);
462
1.86M
    y[22] = f371 + f372;
463
1.86M
    y[9] = f373 - f372;
464
1.86M
    f376 = f290 + f288;
465
1.86M
    f377 = MUL_F(FRAC_CONST(0.5730977622997509), f290);
466
1.86M
    f378 = MUL_F(FRAC_CONST(0.3598950365349881), f376);
467
1.86M
    f379 = MUL_C(COEF_CONST(1.2928878353697271), f288);
468
1.86M
    y[24] = f377 + f378;
469
1.86M
    y[7] = f379 - f378;
470
1.86M
    f382 = f294 + f292;
471
1.86M
    f383 = MUL_F(FRAC_CONST(0.6970633083205415), f294);
472
1.86M
    f384 = MUL_F(FRAC_CONST(0.2667127574748984), f382);
473
1.86M
    f385 = MUL_C(COEF_CONST(1.2304888232703382), f292);
474
1.86M
    y[26] = f383 + f384;
475
1.86M
    y[5] = f385 - f384;
476
1.86M
    f388 = f298 + f296;
477
1.86M
    f389 = MUL_F(FRAC_CONST(0.8143157536286401), f298);
478
1.86M
    f390 = MUL_F(FRAC_CONST(0.1709618887603012), f388);
479
1.86M
    f391 = MUL_C(COEF_CONST(1.1562395311492424), f296);
480
1.86M
    y[28] = f389 + f390;
481
1.86M
    y[3] = f391 - f390;
482
1.86M
    f394 = f302 + f300;
483
1.86M
    f395 = MUL_F(FRAC_CONST(0.9237258930790228), f302);
484
1.86M
    f396 = MUL_F(FRAC_CONST(0.0735645635996674), f394);
485
1.86M
    f397 = MUL_C(COEF_CONST(1.0708550202783576), f300);
486
1.86M
    y[30] = f395 + f396;
487
1.86M
    y[1] = f397 - f396;
488
1.86M
}
DCT4_32
Line
Count
Source
49
3.81M
{
50
3.81M
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
51
3.81M
    real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
52
3.81M
    real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
53
3.81M
    real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
54
3.81M
    real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
55
3.81M
    real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
56
3.81M
    real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
57
3.81M
    real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
58
3.81M
    real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
59
3.81M
    real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
60
3.81M
    real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
61
3.81M
    real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
62
3.81M
    real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130;
63
3.81M
    real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
64
3.81M
    real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
65
3.81M
    real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
66
3.81M
    real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
67
3.81M
    real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
68
3.81M
    real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
69
3.81M
    real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
70
3.81M
    real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
71
3.81M
    real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
72
3.81M
    real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
73
3.81M
    real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
74
3.81M
    real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
75
3.81M
    real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
76
3.81M
    real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
77
3.81M
    real_t f271, f272, f273, f274, f275, f276, f277, f278, f279, f280;
78
3.81M
    real_t f281, f282, f283, f284, f285, f286, f287, f288, f289, f290;
79
3.81M
    real_t f291, f292, f293, f294, f295, f296, f297, f298, f299, f300;
80
3.81M
    real_t f301, f302, f303, f304, f305, f306, f307, f310, f311, f312;
81
3.81M
    real_t f313, f316, f317, f318, f319, f322, f323, f324, f325, f328;
82
3.81M
    real_t f329, f330, f331, f334, f335, f336, f337, f340, f341, f342;
83
3.81M
    real_t f343, f346, f347, f348, f349, f352, f353, f354, f355, f358;
84
3.81M
    real_t f359, f360, f361, f364, f365, f366, f367, f370, f371, f372;
85
3.81M
    real_t f373, f376, f377, f378, f379, f382, f383, f384, f385, f388;
86
3.81M
    real_t f389, f390, f391, f394, f395, f396, f397;
87
88
3.81M
    f0 = x[15] - x[16];
89
3.81M
    f1 = x[15] + x[16];
90
3.81M
    f2 = MUL_F(FRAC_CONST(0.7071067811865476), f1);
91
3.81M
    f3 = MUL_F(FRAC_CONST(0.7071067811865476), f0);
92
3.81M
    f4 = x[8] - x[23];
93
3.81M
    f5 = x[8] + x[23];
94
3.81M
    f6 = MUL_F(FRAC_CONST(0.7071067811865476), f5);
95
3.81M
    f7 = MUL_F(FRAC_CONST(0.7071067811865476), f4);
96
3.81M
    f8 = x[12] - x[19];
97
3.81M
    f9 = x[12] + x[19];
98
3.81M
    f10 = MUL_F(FRAC_CONST(0.7071067811865476), f9);
99
3.81M
    f11 = MUL_F(FRAC_CONST(0.7071067811865476), f8);
100
3.81M
    f12 = x[11] - x[20];
101
3.81M
    f13 = x[11] + x[20];
102
3.81M
    f14 = MUL_F(FRAC_CONST(0.7071067811865476), f13);
103
3.81M
    f15 = MUL_F(FRAC_CONST(0.7071067811865476), f12);
104
3.81M
    f16 = x[14] - x[17];
105
3.81M
    f17 = x[14] + x[17];
106
3.81M
    f18 = MUL_F(FRAC_CONST(0.7071067811865476), f17);
107
3.81M
    f19 = MUL_F(FRAC_CONST(0.7071067811865476), f16);
108
3.81M
    f20 = x[9] - x[22];
109
3.81M
    f21 = x[9] + x[22];
110
3.81M
    f22 = MUL_F(FRAC_CONST(0.7071067811865476), f21);
111
3.81M
    f23 = MUL_F(FRAC_CONST(0.7071067811865476), f20);
112
3.81M
    f24 = x[13] - x[18];
113
3.81M
    f25 = x[13] + x[18];
114
3.81M
    f26 = MUL_F(FRAC_CONST(0.7071067811865476), f25);
115
3.81M
    f27 = MUL_F(FRAC_CONST(0.7071067811865476), f24);
116
3.81M
    f28 = x[10] - x[21];
117
3.81M
    f29 = x[10] + x[21];
118
3.81M
    f30 = MUL_F(FRAC_CONST(0.7071067811865476), f29);
119
3.81M
    f31 = MUL_F(FRAC_CONST(0.7071067811865476), f28);
120
3.81M
    f32 = x[0] - f2;
121
3.81M
    f33 = x[0] + f2;
122
3.81M
    f34 = x[31] - f3;
123
3.81M
    f35 = x[31] + f3;
124
3.81M
    f36 = x[7] - f6;
125
3.81M
    f37 = x[7] + f6;
126
3.81M
    f38 = x[24] - f7;
127
3.81M
    f39 = x[24] + f7;
128
3.81M
    f40 = x[3] - f10;
129
3.81M
    f41 = x[3] + f10;
130
3.81M
    f42 = x[28] - f11;
131
3.81M
    f43 = x[28] + f11;
132
3.81M
    f44 = x[4] - f14;
133
3.81M
    f45 = x[4] + f14;
134
3.81M
    f46 = x[27] - f15;
135
3.81M
    f47 = x[27] + f15;
136
3.81M
    f48 = x[1] - f18;
137
3.81M
    f49 = x[1] + f18;
138
3.81M
    f50 = x[30] - f19;
139
3.81M
    f51 = x[30] + f19;
140
3.81M
    f52 = x[6] - f22;
141
3.81M
    f53 = x[6] + f22;
142
3.81M
    f54 = x[25] - f23;
143
3.81M
    f55 = x[25] + f23;
144
3.81M
    f56 = x[2] - f26;
145
3.81M
    f57 = x[2] + f26;
146
3.81M
    f58 = x[29] - f27;
147
3.81M
    f59 = x[29] + f27;
148
3.81M
    f60 = x[5] - f30;
149
3.81M
    f61 = x[5] + f30;
150
3.81M
    f62 = x[26] - f31;
151
3.81M
    f63 = x[26] + f31;
152
3.81M
    f64 = f39 + f37;
153
3.81M
    f65 = MUL_F(FRAC_CONST(-0.5411961001461969), f39);
154
3.81M
    f66 = MUL_F(FRAC_CONST(0.9238795325112867), f64);
155
3.81M
    f67 = MUL_C(COEF_CONST(1.3065629648763766), f37);
156
3.81M
    f68 = f65 + f66;
157
3.81M
    f69 = f67 - f66;
158
3.81M
    f70 = f38 + f36;
159
3.81M
    f71 = MUL_C(COEF_CONST(1.3065629648763770), f38);
160
3.81M
    f72 = MUL_F(FRAC_CONST(-0.3826834323650904), f70);
161
3.81M
    f73 = MUL_F(FRAC_CONST(0.5411961001461961), f36);
162
3.81M
    f74 = f71 + f72;
163
3.81M
    f75 = f73 - f72;
164
3.81M
    f76 = f47 + f45;
165
3.81M
    f77 = MUL_F(FRAC_CONST(-0.5411961001461969), f47);
166
3.81M
    f78 = MUL_F(FRAC_CONST(0.9238795325112867), f76);
167
3.81M
    f79 = MUL_C(COEF_CONST(1.3065629648763766), f45);
168
3.81M
    f80 = f77 + f78;
169
3.81M
    f81 = f79 - f78;
170
3.81M
    f82 = f46 + f44;
171
3.81M
    f83 = MUL_C(COEF_CONST(1.3065629648763770), f46);
172
3.81M
    f84 = MUL_F(FRAC_CONST(-0.3826834323650904), f82);
173
3.81M
    f85 = MUL_F(FRAC_CONST(0.5411961001461961), f44);
174
3.81M
    f86 = f83 + f84;
175
3.81M
    f87 = f85 - f84;
176
3.81M
    f88 = f55 + f53;
177
3.81M
    f89 = MUL_F(FRAC_CONST(-0.5411961001461969), f55);
178
3.81M
    f90 = MUL_F(FRAC_CONST(0.9238795325112867), f88);
179
3.81M
    f91 = MUL_C(COEF_CONST(1.3065629648763766), f53);
180
3.81M
    f92 = f89 + f90;
181
3.81M
    f93 = f91 - f90;
182
3.81M
    f94 = f54 + f52;
183
3.81M
    f95 = MUL_C(COEF_CONST(1.3065629648763770), f54);
184
3.81M
    f96 = MUL_F(FRAC_CONST(-0.3826834323650904), f94);
185
3.81M
    f97 = MUL_F(FRAC_CONST(0.5411961001461961), f52);
186
3.81M
    f98 = f95 + f96;
187
3.81M
    f99 = f97 - f96;
188
3.81M
    f100 = f63 + f61;
189
3.81M
    f101 = MUL_F(FRAC_CONST(-0.5411961001461969), f63);
190
3.81M
    f102 = MUL_F(FRAC_CONST(0.9238795325112867), f100);
191
3.81M
    f103 = MUL_C(COEF_CONST(1.3065629648763766), f61);
192
3.81M
    f104 = f101 + f102;
193
3.81M
    f105 = f103 - f102;
194
3.81M
    f106 = f62 + f60;
195
3.81M
    f107 = MUL_C(COEF_CONST(1.3065629648763770), f62);
196
3.81M
    f108 = MUL_F(FRAC_CONST(-0.3826834323650904), f106);
197
3.81M
    f109 = MUL_F(FRAC_CONST(0.5411961001461961), f60);
198
3.81M
    f110 = f107 + f108;
199
3.81M
    f111 = f109 - f108;
200
3.81M
    f112 = f33 - f68;
201
3.81M
    f113 = f33 + f68;
202
3.81M
    f114 = f35 - f69;
203
3.81M
    f115 = f35 + f69;
204
3.81M
    f116 = f32 - f74;
205
3.81M
    f117 = f32 + f74;
206
3.81M
    f118 = f34 - f75;
207
3.81M
    f119 = f34 + f75;
208
3.81M
    f120 = f41 - f80;
209
3.81M
    f121 = f41 + f80;
210
3.81M
    f122 = f43 - f81;
211
3.81M
    f123 = f43 + f81;
212
3.81M
    f124 = f40 - f86;
213
3.81M
    f125 = f40 + f86;
214
3.81M
    f126 = f42 - f87;
215
3.81M
    f127 = f42 + f87;
216
3.81M
    f128 = f49 - f92;
217
3.81M
    f129 = f49 + f92;
218
3.81M
    f130 = f51 - f93;
219
3.81M
    f131 = f51 + f93;
220
3.81M
    f132 = f48 - f98;
221
3.81M
    f133 = f48 + f98;
222
3.81M
    f134 = f50 - f99;
223
3.81M
    f135 = f50 + f99;
224
3.81M
    f136 = f57 - f104;
225
3.81M
    f137 = f57 + f104;
226
3.81M
    f138 = f59 - f105;
227
3.81M
    f139 = f59 + f105;
228
3.81M
    f140 = f56 - f110;
229
3.81M
    f141 = f56 + f110;
230
3.81M
    f142 = f58 - f111;
231
3.81M
    f143 = f58 + f111;
232
3.81M
    f144 = f123 + f121;
233
3.81M
    f145 = MUL_F(FRAC_CONST(-0.7856949583871021), f123);
234
3.81M
    f146 = MUL_F(FRAC_CONST(0.9807852804032304), f144);
235
3.81M
    f147 = MUL_C(COEF_CONST(1.1758756024193588), f121);
236
3.81M
    f148 = f145 + f146;
237
3.81M
    f149 = f147 - f146;
238
3.81M
    f150 = f127 + f125;
239
3.81M
    f151 = MUL_F(FRAC_CONST(0.2758993792829431), f127);
240
3.81M
    f152 = MUL_F(FRAC_CONST(0.5555702330196022), f150);
241
3.81M
    f153 = MUL_C(COEF_CONST(1.3870398453221475), f125);
242
3.81M
    f154 = f151 + f152;
243
3.81M
    f155 = f153 - f152;
244
3.81M
    f156 = f122 + f120;
245
3.81M
    f157 = MUL_C(COEF_CONST(1.1758756024193591), f122);
246
3.81M
    f158 = MUL_F(FRAC_CONST(-0.1950903220161287), f156);
247
3.81M
    f159 = MUL_F(FRAC_CONST(0.7856949583871016), f120);
248
3.81M
    f160 = f157 + f158;
249
3.81M
    f161 = f159 - f158;
250
3.81M
    f162 = f126 + f124;
251
3.81M
    f163 = MUL_C(COEF_CONST(1.3870398453221473), f126);
252
3.81M
    f164 = MUL_F(FRAC_CONST(-0.8314696123025455), f162);
253
3.81M
    f165 = MUL_F(FRAC_CONST(-0.2758993792829436), f124);
254
3.81M
    f166 = f163 + f164;
255
3.81M
    f167 = f165 - f164;
256
3.81M
    f168 = f139 + f137;
257
3.81M
    f169 = MUL_F(FRAC_CONST(-0.7856949583871021), f139);
258
3.81M
    f170 = MUL_F(FRAC_CONST(0.9807852804032304), f168);
259
3.81M
    f171 = MUL_C(COEF_CONST(1.1758756024193588), f137);
260
3.81M
    f172 = f169 + f170;
261
3.81M
    f173 = f171 - f170;
262
3.81M
    f174 = f143 + f141;
263
3.81M
    f175 = MUL_F(FRAC_CONST(0.2758993792829431), f143);
264
3.81M
    f176 = MUL_F(FRAC_CONST(0.5555702330196022), f174);
265
3.81M
    f177 = MUL_C(COEF_CONST(1.3870398453221475), f141);
266
3.81M
    f178 = f175 + f176;
267
3.81M
    f179 = f177 - f176;
268
3.81M
    f180 = f138 + f136;
269
3.81M
    f181 = MUL_C(COEF_CONST(1.1758756024193591), f138);
270
3.81M
    f182 = MUL_F(FRAC_CONST(-0.1950903220161287), f180);
271
3.81M
    f183 = MUL_F(FRAC_CONST(0.7856949583871016), f136);
272
3.81M
    f184 = f181 + f182;
273
3.81M
    f185 = f183 - f182;
274
3.81M
    f186 = f142 + f140;
275
3.81M
    f187 = MUL_C(COEF_CONST(1.3870398453221473), f142);
276
3.81M
    f188 = MUL_F(FRAC_CONST(-0.8314696123025455), f186);
277
3.81M
    f189 = MUL_F(FRAC_CONST(-0.2758993792829436), f140);
278
3.81M
    f190 = f187 + f188;
279
3.81M
    f191 = f189 - f188;
280
3.81M
    f192 = f113 - f148;
281
3.81M
    f193 = f113 + f148;
282
3.81M
    f194 = f115 - f149;
283
3.81M
    f195 = f115 + f149;
284
3.81M
    f196 = f117 - f154;
285
3.81M
    f197 = f117 + f154;
286
3.81M
    f198 = f119 - f155;
287
3.81M
    f199 = f119 + f155;
288
3.81M
    f200 = f112 - f160;
289
3.81M
    f201 = f112 + f160;
290
3.81M
    f202 = f114 - f161;
291
3.81M
    f203 = f114 + f161;
292
3.81M
    f204 = f116 - f166;
293
3.81M
    f205 = f116 + f166;
294
3.81M
    f206 = f118 - f167;
295
3.81M
    f207 = f118 + f167;
296
3.81M
    f208 = f129 - f172;
297
3.81M
    f209 = f129 + f172;
298
3.81M
    f210 = f131 - f173;
299
3.81M
    f211 = f131 + f173;
300
3.81M
    f212 = f133 - f178;
301
3.81M
    f213 = f133 + f178;
302
3.81M
    f214 = f135 - f179;
303
3.81M
    f215 = f135 + f179;
304
3.81M
    f216 = f128 - f184;
305
3.81M
    f217 = f128 + f184;
306
3.81M
    f218 = f130 - f185;
307
3.81M
    f219 = f130 + f185;
308
3.81M
    f220 = f132 - f190;
309
3.81M
    f221 = f132 + f190;
310
3.81M
    f222 = f134 - f191;
311
3.81M
    f223 = f134 + f191;
312
3.81M
    f224 = f211 + f209;
313
3.81M
    f225 = MUL_F(FRAC_CONST(-0.8971675863426361), f211);
314
3.81M
    f226 = MUL_F(FRAC_CONST(0.9951847266721968), f224);
315
3.81M
    f227 = MUL_C(COEF_CONST(1.0932018670017576), f209);
316
3.81M
    f228 = f225 + f226;
317
3.81M
    f229 = f227 - f226;
318
3.81M
    f230 = f215 + f213;
319
3.81M
    f231 = MUL_F(FRAC_CONST(-0.4105245275223571), f215);
320
3.81M
    f232 = MUL_F(FRAC_CONST(0.8819212643483549), f230);
321
3.81M
    f233 = MUL_C(COEF_CONST(1.3533180011743529), f213);
322
3.81M
    f234 = f231 + f232;
323
3.81M
    f235 = f233 - f232;
324
3.81M
    f236 = f219 + f217;
325
3.81M
    f237 = MUL_F(FRAC_CONST(0.1386171691990915), f219);
326
3.81M
    f238 = MUL_F(FRAC_CONST(0.6343932841636455), f236);
327
3.81M
    f239 = MUL_C(COEF_CONST(1.4074037375263826), f217);
328
3.81M
    f240 = f237 + f238;
329
3.81M
    f241 = f239 - f238;
330
3.81M
    f242 = f223 + f221;
331
3.81M
    f243 = MUL_F(FRAC_CONST(0.6666556584777466), f223);
332
3.81M
    f244 = MUL_F(FRAC_CONST(0.2902846772544623), f242);
333
3.81M
    f245 = MUL_C(COEF_CONST(1.2472250129866711), f221);
334
3.81M
    f246 = f243 + f244;
335
3.81M
    f247 = f245 - f244;
336
3.81M
    f248 = f210 + f208;
337
3.81M
    f249 = MUL_C(COEF_CONST(1.0932018670017574), f210);
338
3.81M
    f250 = MUL_F(FRAC_CONST(-0.0980171403295605), f248);
339
3.81M
    f251 = MUL_F(FRAC_CONST(0.8971675863426364), f208);
340
3.81M
    f252 = f249 + f250;
341
3.81M
    f253 = f251 - f250;
342
3.81M
    f254 = f214 + f212;
343
3.81M
    f255 = MUL_C(COEF_CONST(1.3533180011743529), f214);
344
3.81M
    f256 = MUL_F(FRAC_CONST(-0.4713967368259979), f254);
345
3.81M
    f257 = MUL_F(FRAC_CONST(0.4105245275223569), f212);
346
3.81M
    f258 = f255 + f256;
347
3.81M
    f259 = f257 - f256;
348
3.81M
    f260 = f218 + f216;
349
3.81M
    f261 = MUL_C(COEF_CONST(1.4074037375263826), f218);
350
3.81M
    f262 = MUL_F(FRAC_CONST(-0.7730104533627369), f260);
351
3.81M
    f263 = MUL_F(FRAC_CONST(-0.1386171691990913), f216);
352
3.81M
    f264 = f261 + f262;
353
3.81M
    f265 = f263 - f262;
354
3.81M
    f266 = f222 + f220;
355
3.81M
    f267 = MUL_C(COEF_CONST(1.2472250129866711), f222);
356
3.81M
    f268 = MUL_F(FRAC_CONST(-0.9569403357322089), f266);
357
3.81M
    f269 = MUL_F(FRAC_CONST(-0.6666556584777469), f220);
358
3.81M
    f270 = f267 + f268;
359
3.81M
    f271 = f269 - f268;
360
3.81M
    f272 = f193 - f228;
361
3.81M
    f273 = f193 + f228;
362
3.81M
    f274 = f195 - f229;
363
3.81M
    f275 = f195 + f229;
364
3.81M
    f276 = f197 - f234;
365
3.81M
    f277 = f197 + f234;
366
3.81M
    f278 = f199 - f235;
367
3.81M
    f279 = f199 + f235;
368
3.81M
    f280 = f201 - f240;
369
3.81M
    f281 = f201 + f240;
370
3.81M
    f282 = f203 - f241;
371
3.81M
    f283 = f203 + f241;
372
3.81M
    f284 = f205 - f246;
373
3.81M
    f285 = f205 + f246;
374
3.81M
    f286 = f207 - f247;
375
3.81M
    f287 = f207 + f247;
376
3.81M
    f288 = f192 - f252;
377
3.81M
    f289 = f192 + f252;
378
3.81M
    f290 = f194 - f253;
379
3.81M
    f291 = f194 + f253;
380
3.81M
    f292 = f196 - f258;
381
3.81M
    f293 = f196 + f258;
382
3.81M
    f294 = f198 - f259;
383
3.81M
    f295 = f198 + f259;
384
3.81M
    f296 = f200 - f264;
385
3.81M
    f297 = f200 + f264;
386
3.81M
    f298 = f202 - f265;
387
3.81M
    f299 = f202 + f265;
388
3.81M
    f300 = f204 - f270;
389
3.81M
    f301 = f204 + f270;
390
3.81M
    f302 = f206 - f271;
391
3.81M
    f303 = f206 + f271;
392
3.81M
    f304 = f275 + f273;
393
3.81M
    f305 = MUL_F(FRAC_CONST(-0.9751575901732920), f275);
394
3.81M
    f306 = MUL_F(FRAC_CONST(0.9996988186962043), f304);
395
3.81M
    f307 = MUL_C(COEF_CONST(1.0242400472191164), f273);
396
3.81M
    y[0] = f305 + f306;
397
3.81M
    y[31] = f307 - f306;
398
3.81M
    f310 = f279 + f277;
399
3.81M
    f311 = MUL_F(FRAC_CONST(-0.8700688593994936), f279);
400
3.81M
    f312 = MUL_F(FRAC_CONST(0.9924795345987100), f310);
401
3.81M
    f313 = MUL_C(COEF_CONST(1.1148902097979263), f277);
402
3.81M
    y[2] = f311 + f312;
403
3.81M
    y[29] = f313 - f312;
404
3.81M
    f316 = f283 + f281;
405
3.81M
    f317 = MUL_F(FRAC_CONST(-0.7566008898816587), f283);
406
3.81M
    f318 = MUL_F(FRAC_CONST(0.9757021300385286), f316);
407
3.81M
    f319 = MUL_C(COEF_CONST(1.1948033701953984), f281);
408
3.81M
    y[4] = f317 + f318;
409
3.81M
    y[27] = f319 - f318;
410
3.81M
    f322 = f287 + f285;
411
3.81M
    f323 = MUL_F(FRAC_CONST(-0.6358464401941451), f287);
412
3.81M
    f324 = MUL_F(FRAC_CONST(0.9495281805930367), f322);
413
3.81M
    f325 = MUL_C(COEF_CONST(1.2632099209919283), f285);
414
3.81M
    y[6] = f323 + f324;
415
3.81M
    y[25] = f325 - f324;
416
3.81M
    f328 = f291 + f289;
417
3.81M
    f329 = MUL_F(FRAC_CONST(-0.5089684416985408), f291);
418
3.81M
    f330 = MUL_F(FRAC_CONST(0.9142097557035307), f328);
419
3.81M
    f331 = MUL_C(COEF_CONST(1.3194510697085207), f289);
420
3.81M
    y[8] = f329 + f330;
421
3.81M
    y[23] = f331 - f330;
422
3.81M
    f334 = f295 + f293;
423
3.81M
    f335 = MUL_F(FRAC_CONST(-0.3771887988789273), f295);
424
3.81M
    f336 = MUL_F(FRAC_CONST(0.8700869911087114), f334);
425
3.81M
    f337 = MUL_C(COEF_CONST(1.3629851833384954), f293);
426
3.81M
    y[10] = f335 + f336;
427
3.81M
    y[21] = f337 - f336;
428
3.81M
    f340 = f299 + f297;
429
3.81M
    f341 = MUL_F(FRAC_CONST(-0.2417766217337384), f299);
430
3.81M
    f342 = MUL_F(FRAC_CONST(0.8175848131515837), f340);
431
3.81M
    f343 = MUL_C(COEF_CONST(1.3933930045694289), f297);
432
3.81M
    y[12] = f341 + f342;
433
3.81M
    y[19] = f343 - f342;
434
3.81M
    f346 = f303 + f301;
435
3.81M
    f347 = MUL_F(FRAC_CONST(-0.1040360035527077), f303);
436
3.81M
    f348 = MUL_F(FRAC_CONST(0.7572088465064845), f346);
437
3.81M
    f349 = MUL_C(COEF_CONST(1.4103816894602612), f301);
438
3.81M
    y[14] = f347 + f348;
439
3.81M
    y[17] = f349 - f348;
440
3.81M
    f352 = f274 + f272;
441
3.81M
    f353 = MUL_F(FRAC_CONST(0.0347065382144002), f274);
442
3.81M
    f354 = MUL_F(FRAC_CONST(0.6895405447370668), f352);
443
3.81M
    f355 = MUL_C(COEF_CONST(1.4137876276885337), f272);
444
3.81M
    y[16] = f353 + f354;
445
3.81M
    y[15] = f355 - f354;
446
3.81M
    f358 = f278 + f276;
447
3.81M
    f359 = MUL_F(FRAC_CONST(0.1731148370459795), f278);
448
3.81M
    f360 = MUL_F(FRAC_CONST(0.6152315905806268), f358);
449
3.81M
    f361 = MUL_C(COEF_CONST(1.4035780182072330), f276);
450
3.81M
    y[18] = f359 + f360;
451
3.81M
    y[13] = f361 - f360;
452
3.81M
    f364 = f282 + f280;
453
3.81M
    f365 = MUL_F(FRAC_CONST(0.3098559453626100), f282);
454
3.81M
    f366 = MUL_F(FRAC_CONST(0.5349976198870972), f364);
455
3.81M
    f367 = MUL_C(COEF_CONST(1.3798511851368043), f280);
456
3.81M
    y[20] = f365 + f366;
457
3.81M
    y[11] = f367 - f366;
458
3.81M
    f370 = f286 + f284;
459
3.81M
    f371 = MUL_F(FRAC_CONST(0.4436129715409088), f286);
460
3.81M
    f372 = MUL_F(FRAC_CONST(0.4496113296546065), f370);
461
3.81M
    f373 = MUL_C(COEF_CONST(1.3428356308501219), f284);
462
3.81M
    y[22] = f371 + f372;
463
3.81M
    y[9] = f373 - f372;
464
3.81M
    f376 = f290 + f288;
465
3.81M
    f377 = MUL_F(FRAC_CONST(0.5730977622997509), f290);
466
3.81M
    f378 = MUL_F(FRAC_CONST(0.3598950365349881), f376);
467
3.81M
    f379 = MUL_C(COEF_CONST(1.2928878353697271), f288);
468
3.81M
    y[24] = f377 + f378;
469
3.81M
    y[7] = f379 - f378;
470
3.81M
    f382 = f294 + f292;
471
3.81M
    f383 = MUL_F(FRAC_CONST(0.6970633083205415), f294);
472
3.81M
    f384 = MUL_F(FRAC_CONST(0.2667127574748984), f382);
473
3.81M
    f385 = MUL_C(COEF_CONST(1.2304888232703382), f292);
474
3.81M
    y[26] = f383 + f384;
475
3.81M
    y[5] = f385 - f384;
476
3.81M
    f388 = f298 + f296;
477
3.81M
    f389 = MUL_F(FRAC_CONST(0.8143157536286401), f298);
478
3.81M
    f390 = MUL_F(FRAC_CONST(0.1709618887603012), f388);
479
3.81M
    f391 = MUL_C(COEF_CONST(1.1562395311492424), f296);
480
3.81M
    y[28] = f389 + f390;
481
3.81M
    y[3] = f391 - f390;
482
3.81M
    f394 = f302 + f300;
483
3.81M
    f395 = MUL_F(FRAC_CONST(0.9237258930790228), f302);
484
3.81M
    f396 = MUL_F(FRAC_CONST(0.0735645635996674), f394);
485
3.81M
    f397 = MUL_C(COEF_CONST(1.0708550202783576), f300);
486
3.81M
    y[30] = f395 + f396;
487
3.81M
    y[1] = f397 - f396;
488
3.81M
}
489
490
void DST4_32(real_t *y, real_t *x)
491
5.68M
{
492
5.68M
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9;
493
5.68M
    real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19;
494
5.68M
    real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29;
495
5.68M
    real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39;
496
5.68M
    real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49;
497
5.68M
    real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59;
498
5.68M
    real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69;
499
5.68M
    real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79;
500
5.68M
    real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
501
5.68M
    real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99;
502
5.68M
    real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109;
503
5.68M
    real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
504
5.68M
    real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129;
505
5.68M
    real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139;
506
5.68M
    real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149;
507
5.68M
    real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159;
508
5.68M
    real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169;
509
5.68M
    real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179;
510
5.68M
    real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189;
511
5.68M
    real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199;
512
5.68M
    real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209;
513
5.68M
    real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219;
514
5.68M
    real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229;
515
5.68M
    real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239;
516
5.68M
    real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249;
517
5.68M
    real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259;
518
5.68M
    real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269;
519
5.68M
    real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279;
520
5.68M
    real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289;
521
5.68M
    real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299;
522
5.68M
    real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309;
523
5.68M
    real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319;
524
5.68M
    real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329;
525
5.68M
    real_t f330, f331, f332, f333, f334, f335;
526
527
5.68M
    f0 = x[0] - x[1];
528
5.68M
    f1 = x[2] - x[1];
529
5.68M
    f2 = x[2] - x[3];
530
5.68M
    f3 = x[4] - x[3];
531
5.68M
    f4 = x[4] - x[5];
532
5.68M
    f5 = x[6] - x[5];
533
5.68M
    f6 = x[6] - x[7];
534
5.68M
    f7 = x[8] - x[7];
535
5.68M
    f8 = x[8] - x[9];
536
5.68M
    f9 = x[10] - x[9];
537
5.68M
    f10 = x[10] - x[11];
538
5.68M
    f11 = x[12] - x[11];
539
5.68M
    f12 = x[12] - x[13];
540
5.68M
    f13 = x[14] - x[13];
541
5.68M
    f14 = x[14] - x[15];
542
5.68M
    f15 = x[16] - x[15];
543
5.68M
    f16 = x[16] - x[17];
544
5.68M
    f17 = x[18] - x[17];
545
5.68M
    f18 = x[18] - x[19];
546
5.68M
    f19 = x[20] - x[19];
547
5.68M
    f20 = x[20] - x[21];
548
5.68M
    f21 = x[22] - x[21];
549
5.68M
    f22 = x[22] - x[23];
550
5.68M
    f23 = x[24] - x[23];
551
5.68M
    f24 = x[24] - x[25];
552
5.68M
    f25 = x[26] - x[25];
553
5.68M
    f26 = x[26] - x[27];
554
5.68M
    f27 = x[28] - x[27];
555
5.68M
    f28 = x[28] - x[29];
556
5.68M
    f29 = x[30] - x[29];
557
5.68M
    f30 = x[30] - x[31];
558
5.68M
    f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15);
559
5.68M
    f32 = x[0] - f31;
560
5.68M
    f33 = x[0] + f31;
561
5.68M
    f34 = f7 + f23;
562
5.68M
    f35 = MUL_C(COEF_CONST(1.3065629648763766), f7);
563
5.68M
    f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34);
564
5.68M
    f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23);
565
5.68M
    f38 = f35 + f36;
566
5.68M
    f39 = f37 - f36;
567
5.68M
    f40 = f33 - f39;
568
5.68M
    f41 = f33 + f39;
569
5.68M
    f42 = f32 - f38;
570
5.68M
    f43 = f32 + f38;
571
5.68M
    f44 = f11 - f19;
572
5.68M
    f45 = f11 + f19;
573
5.68M
    f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45);
574
5.68M
    f47 = f3 - f46;
575
5.68M
    f48 = f3 + f46;
576
5.68M
    f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44);
577
5.68M
    f50 = f49 - f27;
578
5.68M
    f51 = f49 + f27;
579
5.68M
    f52 = f51 + f48;
580
5.68M
    f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51);
581
5.68M
    f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52);
582
5.68M
    f55 = MUL_C(COEF_CONST(1.1758756024193588), f48);
583
5.68M
    f56 = f53 + f54;
584
5.68M
    f57 = f55 - f54;
585
5.68M
    f58 = f50 + f47;
586
5.68M
    f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50);
587
5.68M
    f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58);
588
5.68M
    f61 = MUL_C(COEF_CONST(1.3870398453221475), f47);
589
5.68M
    f62 = f59 + f60;
590
5.68M
    f63 = f61 - f60;
591
5.68M
    f64 = f41 - f56;
592
5.68M
    f65 = f41 + f56;
593
5.68M
    f66 = f43 - f62;
594
5.68M
    f67 = f43 + f62;
595
5.68M
    f68 = f42 - f63;
596
5.68M
    f69 = f42 + f63;
597
5.68M
    f70 = f40 - f57;
598
5.68M
    f71 = f40 + f57;
599
5.68M
    f72 = f5 - f9;
600
5.68M
    f73 = f5 + f9;
601
5.68M
    f74 = f13 - f17;
602
5.68M
    f75 = f13 + f17;
603
5.68M
    f76 = f21 - f25;
604
5.68M
    f77 = f21 + f25;
605
5.68M
    f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75);
606
5.68M
    f79 = f1 - f78;
607
5.68M
    f80 = f1 + f78;
608
5.68M
    f81 = f73 + f77;
609
5.68M
    f82 = MUL_C(COEF_CONST(1.3065629648763766), f73);
610
5.68M
    f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81);
611
5.68M
    f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77);
612
5.68M
    f85 = f82 + f83;
613
5.68M
    f86 = f84 - f83;
614
5.68M
    f87 = f80 - f86;
615
5.68M
    f88 = f80 + f86;
616
5.68M
    f89 = f79 - f85;
617
5.68M
    f90 = f79 + f85;
618
5.68M
    f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74);
619
5.68M
    f92 = f29 - f91;
620
5.68M
    f93 = f29 + f91;
621
5.68M
    f94 = f76 + f72;
622
5.68M
    f95 = MUL_C(COEF_CONST(1.3065629648763766), f76);
623
5.68M
    f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94);
624
5.68M
    f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72);
625
5.68M
    f98 = f95 + f96;
626
5.68M
    f99 = f97 - f96;
627
5.68M
    f100 = f93 - f99;
628
5.68M
    f101 = f93 + f99;
629
5.68M
    f102 = f92 - f98;
630
5.68M
    f103 = f92 + f98;
631
5.68M
    f104 = f101 + f88;
632
5.68M
    f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101);
633
5.68M
    f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104);
634
5.68M
    f107 = MUL_C(COEF_CONST(1.0932018670017576), f88);
635
5.68M
    f108 = f105 + f106;
636
5.68M
    f109 = f107 - f106;
637
5.68M
    f110 = f90 - f103;
638
5.68M
    f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103);
639
5.68M
    f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110);
640
5.68M
    f113 = MUL_C(COEF_CONST(1.2472250129866713), f90);
641
5.68M
    f114 = f112 - f111;
642
5.68M
    f115 = f113 - f112;
643
5.68M
    f116 = f102 + f89;
644
5.68M
    f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102);
645
5.68M
    f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116);
646
5.68M
    f119 = MUL_C(COEF_CONST(1.3533180011743529), f89);
647
5.68M
    f120 = f117 + f118;
648
5.68M
    f121 = f119 - f118;
649
5.68M
    f122 = f87 - f100;
650
5.68M
    f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100);
651
5.68M
    f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122);
652
5.68M
    f125 = MUL_C(COEF_CONST(1.4074037375263826), f87);
653
5.68M
    f126 = f124 - f123;
654
5.68M
    f127 = f125 - f124;
655
5.68M
    f128 = f65 - f108;
656
5.68M
    f129 = f65 + f108;
657
5.68M
    f130 = f67 - f114;
658
5.68M
    f131 = f67 + f114;
659
5.68M
    f132 = f69 - f120;
660
5.68M
    f133 = f69 + f120;
661
5.68M
    f134 = f71 - f126;
662
5.68M
    f135 = f71 + f126;
663
5.68M
    f136 = f70 - f127;
664
5.68M
    f137 = f70 + f127;
665
5.68M
    f138 = f68 - f121;
666
5.68M
    f139 = f68 + f121;
667
5.68M
    f140 = f66 - f115;
668
5.68M
    f141 = f66 + f115;
669
5.68M
    f142 = f64 - f109;
670
5.68M
    f143 = f64 + f109;
671
5.68M
    f144 = f0 + f30;
672
5.68M
    f145 = MUL_C(COEF_CONST(1.0478631305325901), f0);
673
5.68M
    f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144);
674
5.68M
    f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30);
675
5.68M
    f148 = f145 + f146;
676
5.68M
    f149 = f147 - f146;
677
5.68M
    f150 = f4 + f26;
678
5.68M
    f151 = MUL_C(COEF_CONST(1.2130114330978077), f4);
679
5.68M
    f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150);
680
5.68M
    f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26);
681
5.68M
    f154 = f151 + f152;
682
5.68M
    f155 = f153 - f152;
683
5.68M
    f156 = f8 + f22;
684
5.68M
    f157 = MUL_C(COEF_CONST(1.3315443865537255), f8);
685
5.68M
    f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156);
686
5.68M
    f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22);
687
5.68M
    f160 = f157 + f158;
688
5.68M
    f161 = f159 - f158;
689
5.68M
    f162 = f12 + f18;
690
5.68M
    f163 = MUL_C(COEF_CONST(1.3989068359730781), f12);
691
5.68M
    f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162);
692
5.68M
    f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18);
693
5.68M
    f166 = f163 + f164;
694
5.68M
    f167 = f165 - f164;
695
5.68M
    f168 = f16 + f14;
696
5.68M
    f169 = MUL_C(COEF_CONST(1.4125100802019777), f16);
697
5.68M
    f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168);
698
5.68M
    f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14);
699
5.68M
    f172 = f169 + f170;
700
5.68M
    f173 = f171 - f170;
701
5.68M
    f174 = f20 + f10;
702
5.68M
    f175 = MUL_C(COEF_CONST(1.3718313541934939), f20);
703
5.68M
    f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174);
704
5.68M
    f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10);
705
5.68M
    f178 = f175 + f176;
706
5.68M
    f179 = f177 - f176;
707
5.68M
    f180 = f24 + f6;
708
5.68M
    f181 = MUL_C(COEF_CONST(1.2784339185752409), f24);
709
5.68M
    f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180);
710
5.68M
    f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6);
711
5.68M
    f184 = f181 + f182;
712
5.68M
    f185 = f183 - f182;
713
5.68M
    f186 = f28 + f2;
714
5.68M
    f187 = MUL_C(COEF_CONST(1.1359069844201433), f28);
715
5.68M
    f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186);
716
5.68M
    f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2);
717
5.68M
    f190 = f187 + f188;
718
5.68M
    f191 = f189 - f188;
719
5.68M
    f192 = f149 - f173;
720
5.68M
    f193 = f149 + f173;
721
5.68M
    f194 = f148 - f172;
722
5.68M
    f195 = f148 + f172;
723
5.68M
    f196 = f155 - f179;
724
5.68M
    f197 = f155 + f179;
725
5.68M
    f198 = f154 - f178;
726
5.68M
    f199 = f154 + f178;
727
5.68M
    f200 = f161 - f185;
728
5.68M
    f201 = f161 + f185;
729
5.68M
    f202 = f160 - f184;
730
5.68M
    f203 = f160 + f184;
731
5.68M
    f204 = f167 - f191;
732
5.68M
    f205 = f167 + f191;
733
5.68M
    f206 = f166 - f190;
734
5.68M
    f207 = f166 + f190;
735
5.68M
    f208 = f192 + f194;
736
5.68M
    f209 = MUL_C(COEF_CONST(1.1758756024193588), f192);
737
5.68M
    f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208);
738
5.68M
    f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194);
739
5.68M
    f212 = f209 + f210;
740
5.68M
    f213 = f211 - f210;
741
5.68M
    f214 = f196 + f198;
742
5.68M
    f215 = MUL_C(COEF_CONST(1.3870398453221475), f196);
743
5.68M
    f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214);
744
5.68M
    f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198);
745
5.68M
    f218 = f215 + f216;
746
5.68M
    f219 = f217 - f216;
747
5.68M
    f220 = f200 + f202;
748
5.68M
    f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200);
749
5.68M
    f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220);
750
5.68M
    f223 = MUL_C(COEF_CONST(1.1758756024193586), f202);
751
5.68M
    f224 = f221 + f222;
752
5.68M
    f225 = f223 - f222;
753
5.68M
    f226 = f204 + f206;
754
5.68M
    f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204);
755
5.68M
    f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226);
756
5.68M
    f229 = MUL_C(COEF_CONST(1.3870398453221475), f206);
757
5.68M
    f230 = f227 + f228;
758
5.68M
    f231 = f229 - f228;
759
5.68M
    f232 = f193 - f201;
760
5.68M
    f233 = f193 + f201;
761
5.68M
    f234 = f195 - f203;
762
5.68M
    f235 = f195 + f203;
763
5.68M
    f236 = f197 - f205;
764
5.68M
    f237 = f197 + f205;
765
5.68M
    f238 = f199 - f207;
766
5.68M
    f239 = f199 + f207;
767
5.68M
    f240 = f213 - f225;
768
5.68M
    f241 = f213 + f225;
769
5.68M
    f242 = f212 - f224;
770
5.68M
    f243 = f212 + f224;
771
5.68M
    f244 = f219 - f231;
772
5.68M
    f245 = f219 + f231;
773
5.68M
    f246 = f218 - f230;
774
5.68M
    f247 = f218 + f230;
775
5.68M
    f248 = f232 + f234;
776
5.68M
    f249 = MUL_C(COEF_CONST(1.3065629648763766), f232);
777
5.68M
    f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248);
778
5.68M
    f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234);
779
5.68M
    f252 = f249 + f250;
780
5.68M
    f253 = f251 - f250;
781
5.68M
    f254 = f236 + f238;
782
5.68M
    f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236);
783
5.68M
    f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254);
784
5.68M
    f257 = MUL_C(COEF_CONST(1.3065629648763766), f238);
785
5.68M
    f258 = f255 + f256;
786
5.68M
    f259 = f257 - f256;
787
5.68M
    f260 = f240 + f242;
788
5.68M
    f261 = MUL_C(COEF_CONST(1.3065629648763766), f240);
789
5.68M
    f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260);
790
5.68M
    f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242);
791
5.68M
    f264 = f261 + f262;
792
5.68M
    f265 = f263 - f262;
793
5.68M
    f266 = f244 + f246;
794
5.68M
    f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244);
795
5.68M
    f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266);
796
5.68M
    f269 = MUL_C(COEF_CONST(1.3065629648763766), f246);
797
5.68M
    f270 = f267 + f268;
798
5.68M
    f271 = f269 - f268;
799
5.68M
    f272 = f233 - f237;
800
5.68M
    f273 = f233 + f237;
801
5.68M
    f274 = f235 - f239;
802
5.68M
    f275 = f235 + f239;
803
5.68M
    f276 = f253 - f259;
804
5.68M
    f277 = f253 + f259;
805
5.68M
    f278 = f252 - f258;
806
5.68M
    f279 = f252 + f258;
807
5.68M
    f280 = f241 - f245;
808
5.68M
    f281 = f241 + f245;
809
5.68M
    f282 = f243 - f247;
810
5.68M
    f283 = f243 + f247;
811
5.68M
    f284 = f265 - f271;
812
5.68M
    f285 = f265 + f271;
813
5.68M
    f286 = f264 - f270;
814
5.68M
    f287 = f264 + f270;
815
5.68M
    f288 = f272 - f274;
816
5.68M
    f289 = f272 + f274;
817
5.68M
    f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288);
818
5.68M
    f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289);
819
5.68M
    f292 = f276 - f278;
820
5.68M
    f293 = f276 + f278;
821
5.68M
    f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292);
822
5.68M
    f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293);
823
5.68M
    f296 = f280 - f282;
824
5.68M
    f297 = f280 + f282;
825
5.68M
    f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296);
826
5.68M
    f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297);
827
5.68M
    f300 = f284 - f286;
828
5.68M
    f301 = f284 + f286;
829
5.68M
    f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300);
830
5.68M
    f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301);
831
5.68M
    f304 = f129 - f273;
832
5.68M
    f305 = f129 + f273;
833
5.68M
    f306 = f131 - f281;
834
5.68M
    f307 = f131 + f281;
835
5.68M
    f308 = f133 - f285;
836
5.68M
    f309 = f133 + f285;
837
5.68M
    f310 = f135 - f277;
838
5.68M
    f311 = f135 + f277;
839
5.68M
    f312 = f137 - f295;
840
5.68M
    f313 = f137 + f295;
841
5.68M
    f314 = f139 - f303;
842
5.68M
    f315 = f139 + f303;
843
5.68M
    f316 = f141 - f299;
844
5.68M
    f317 = f141 + f299;
845
5.68M
    f318 = f143 - f291;
846
5.68M
    f319 = f143 + f291;
847
5.68M
    f320 = f142 - f290;
848
5.68M
    f321 = f142 + f290;
849
5.68M
    f322 = f140 - f298;
850
5.68M
    f323 = f140 + f298;
851
5.68M
    f324 = f138 - f302;
852
5.68M
    f325 = f138 + f302;
853
5.68M
    f326 = f136 - f294;
854
5.68M
    f327 = f136 + f294;
855
5.68M
    f328 = f134 - f279;
856
5.68M
    f329 = f134 + f279;
857
5.68M
    f330 = f132 - f287;
858
5.68M
    f331 = f132 + f287;
859
5.68M
    f332 = f130 - f283;
860
5.68M
    f333 = f130 + f283;
861
5.68M
    f334 = f128 - f275;
862
5.68M
    f335 = f128 + f275;
863
5.68M
    y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305);
864
5.68M
    y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307);
865
5.68M
    y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309);
866
5.68M
    y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311);
867
5.68M
    y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313);
868
5.68M
    y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315);
869
5.68M
    y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317);
870
5.68M
    y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319);
871
5.68M
    y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321);
872
5.68M
    y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323);
873
5.68M
    y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325);
874
5.68M
    y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327);
875
5.68M
    y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329);
876
5.68M
    y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331);
877
5.68M
    y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333);
878
5.68M
    y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335);
879
5.68M
    y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334);
880
5.68M
    y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332);
881
5.68M
    y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330);
882
5.68M
    y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328);
883
5.68M
    y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326);
884
5.68M
    y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324);
885
5.68M
    y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322);
886
5.68M
    y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320);
887
5.68M
    y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318);
888
5.68M
    y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316);
889
5.68M
    y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314);
890
5.68M
    y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312);
891
5.68M
    y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310);
892
5.68M
    y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308);
893
5.68M
    y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306);
894
5.68M
    y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304);
895
5.68M
}
DST4_32
Line
Count
Source
491
1.86M
{
492
1.86M
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9;
493
1.86M
    real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19;
494
1.86M
    real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29;
495
1.86M
    real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39;
496
1.86M
    real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49;
497
1.86M
    real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59;
498
1.86M
    real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69;
499
1.86M
    real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79;
500
1.86M
    real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
501
1.86M
    real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99;
502
1.86M
    real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109;
503
1.86M
    real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
504
1.86M
    real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129;
505
1.86M
    real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139;
506
1.86M
    real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149;
507
1.86M
    real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159;
508
1.86M
    real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169;
509
1.86M
    real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179;
510
1.86M
    real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189;
511
1.86M
    real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199;
512
1.86M
    real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209;
513
1.86M
    real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219;
514
1.86M
    real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229;
515
1.86M
    real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239;
516
1.86M
    real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249;
517
1.86M
    real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259;
518
1.86M
    real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269;
519
1.86M
    real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279;
520
1.86M
    real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289;
521
1.86M
    real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299;
522
1.86M
    real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309;
523
1.86M
    real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319;
524
1.86M
    real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329;
525
1.86M
    real_t f330, f331, f332, f333, f334, f335;
526
527
1.86M
    f0 = x[0] - x[1];
528
1.86M
    f1 = x[2] - x[1];
529
1.86M
    f2 = x[2] - x[3];
530
1.86M
    f3 = x[4] - x[3];
531
1.86M
    f4 = x[4] - x[5];
532
1.86M
    f5 = x[6] - x[5];
533
1.86M
    f6 = x[6] - x[7];
534
1.86M
    f7 = x[8] - x[7];
535
1.86M
    f8 = x[8] - x[9];
536
1.86M
    f9 = x[10] - x[9];
537
1.86M
    f10 = x[10] - x[11];
538
1.86M
    f11 = x[12] - x[11];
539
1.86M
    f12 = x[12] - x[13];
540
1.86M
    f13 = x[14] - x[13];
541
1.86M
    f14 = x[14] - x[15];
542
1.86M
    f15 = x[16] - x[15];
543
1.86M
    f16 = x[16] - x[17];
544
1.86M
    f17 = x[18] - x[17];
545
1.86M
    f18 = x[18] - x[19];
546
1.86M
    f19 = x[20] - x[19];
547
1.86M
    f20 = x[20] - x[21];
548
1.86M
    f21 = x[22] - x[21];
549
1.86M
    f22 = x[22] - x[23];
550
1.86M
    f23 = x[24] - x[23];
551
1.86M
    f24 = x[24] - x[25];
552
1.86M
    f25 = x[26] - x[25];
553
1.86M
    f26 = x[26] - x[27];
554
1.86M
    f27 = x[28] - x[27];
555
1.86M
    f28 = x[28] - x[29];
556
1.86M
    f29 = x[30] - x[29];
557
1.86M
    f30 = x[30] - x[31];
558
1.86M
    f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15);
559
1.86M
    f32 = x[0] - f31;
560
1.86M
    f33 = x[0] + f31;
561
1.86M
    f34 = f7 + f23;
562
1.86M
    f35 = MUL_C(COEF_CONST(1.3065629648763766), f7);
563
1.86M
    f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34);
564
1.86M
    f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23);
565
1.86M
    f38 = f35 + f36;
566
1.86M
    f39 = f37 - f36;
567
1.86M
    f40 = f33 - f39;
568
1.86M
    f41 = f33 + f39;
569
1.86M
    f42 = f32 - f38;
570
1.86M
    f43 = f32 + f38;
571
1.86M
    f44 = f11 - f19;
572
1.86M
    f45 = f11 + f19;
573
1.86M
    f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45);
574
1.86M
    f47 = f3 - f46;
575
1.86M
    f48 = f3 + f46;
576
1.86M
    f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44);
577
1.86M
    f50 = f49 - f27;
578
1.86M
    f51 = f49 + f27;
579
1.86M
    f52 = f51 + f48;
580
1.86M
    f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51);
581
1.86M
    f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52);
582
1.86M
    f55 = MUL_C(COEF_CONST(1.1758756024193588), f48);
583
1.86M
    f56 = f53 + f54;
584
1.86M
    f57 = f55 - f54;
585
1.86M
    f58 = f50 + f47;
586
1.86M
    f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50);
587
1.86M
    f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58);
588
1.86M
    f61 = MUL_C(COEF_CONST(1.3870398453221475), f47);
589
1.86M
    f62 = f59 + f60;
590
1.86M
    f63 = f61 - f60;
591
1.86M
    f64 = f41 - f56;
592
1.86M
    f65 = f41 + f56;
593
1.86M
    f66 = f43 - f62;
594
1.86M
    f67 = f43 + f62;
595
1.86M
    f68 = f42 - f63;
596
1.86M
    f69 = f42 + f63;
597
1.86M
    f70 = f40 - f57;
598
1.86M
    f71 = f40 + f57;
599
1.86M
    f72 = f5 - f9;
600
1.86M
    f73 = f5 + f9;
601
1.86M
    f74 = f13 - f17;
602
1.86M
    f75 = f13 + f17;
603
1.86M
    f76 = f21 - f25;
604
1.86M
    f77 = f21 + f25;
605
1.86M
    f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75);
606
1.86M
    f79 = f1 - f78;
607
1.86M
    f80 = f1 + f78;
608
1.86M
    f81 = f73 + f77;
609
1.86M
    f82 = MUL_C(COEF_CONST(1.3065629648763766), f73);
610
1.86M
    f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81);
611
1.86M
    f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77);
612
1.86M
    f85 = f82 + f83;
613
1.86M
    f86 = f84 - f83;
614
1.86M
    f87 = f80 - f86;
615
1.86M
    f88 = f80 + f86;
616
1.86M
    f89 = f79 - f85;
617
1.86M
    f90 = f79 + f85;
618
1.86M
    f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74);
619
1.86M
    f92 = f29 - f91;
620
1.86M
    f93 = f29 + f91;
621
1.86M
    f94 = f76 + f72;
622
1.86M
    f95 = MUL_C(COEF_CONST(1.3065629648763766), f76);
623
1.86M
    f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94);
624
1.86M
    f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72);
625
1.86M
    f98 = f95 + f96;
626
1.86M
    f99 = f97 - f96;
627
1.86M
    f100 = f93 - f99;
628
1.86M
    f101 = f93 + f99;
629
1.86M
    f102 = f92 - f98;
630
1.86M
    f103 = f92 + f98;
631
1.86M
    f104 = f101 + f88;
632
1.86M
    f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101);
633
1.86M
    f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104);
634
1.86M
    f107 = MUL_C(COEF_CONST(1.0932018670017576), f88);
635
1.86M
    f108 = f105 + f106;
636
1.86M
    f109 = f107 - f106;
637
1.86M
    f110 = f90 - f103;
638
1.86M
    f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103);
639
1.86M
    f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110);
640
1.86M
    f113 = MUL_C(COEF_CONST(1.2472250129866713), f90);
641
1.86M
    f114 = f112 - f111;
642
1.86M
    f115 = f113 - f112;
643
1.86M
    f116 = f102 + f89;
644
1.86M
    f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102);
645
1.86M
    f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116);
646
1.86M
    f119 = MUL_C(COEF_CONST(1.3533180011743529), f89);
647
1.86M
    f120 = f117 + f118;
648
1.86M
    f121 = f119 - f118;
649
1.86M
    f122 = f87 - f100;
650
1.86M
    f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100);
651
1.86M
    f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122);
652
1.86M
    f125 = MUL_C(COEF_CONST(1.4074037375263826), f87);
653
1.86M
    f126 = f124 - f123;
654
1.86M
    f127 = f125 - f124;
655
1.86M
    f128 = f65 - f108;
656
1.86M
    f129 = f65 + f108;
657
1.86M
    f130 = f67 - f114;
658
1.86M
    f131 = f67 + f114;
659
1.86M
    f132 = f69 - f120;
660
1.86M
    f133 = f69 + f120;
661
1.86M
    f134 = f71 - f126;
662
1.86M
    f135 = f71 + f126;
663
1.86M
    f136 = f70 - f127;
664
1.86M
    f137 = f70 + f127;
665
1.86M
    f138 = f68 - f121;
666
1.86M
    f139 = f68 + f121;
667
1.86M
    f140 = f66 - f115;
668
1.86M
    f141 = f66 + f115;
669
1.86M
    f142 = f64 - f109;
670
1.86M
    f143 = f64 + f109;
671
1.86M
    f144 = f0 + f30;
672
1.86M
    f145 = MUL_C(COEF_CONST(1.0478631305325901), f0);
673
1.86M
    f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144);
674
1.86M
    f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30);
675
1.86M
    f148 = f145 + f146;
676
1.86M
    f149 = f147 - f146;
677
1.86M
    f150 = f4 + f26;
678
1.86M
    f151 = MUL_C(COEF_CONST(1.2130114330978077), f4);
679
1.86M
    f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150);
680
1.86M
    f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26);
681
1.86M
    f154 = f151 + f152;
682
1.86M
    f155 = f153 - f152;
683
1.86M
    f156 = f8 + f22;
684
1.86M
    f157 = MUL_C(COEF_CONST(1.3315443865537255), f8);
685
1.86M
    f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156);
686
1.86M
    f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22);
687
1.86M
    f160 = f157 + f158;
688
1.86M
    f161 = f159 - f158;
689
1.86M
    f162 = f12 + f18;
690
1.86M
    f163 = MUL_C(COEF_CONST(1.3989068359730781), f12);
691
1.86M
    f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162);
692
1.86M
    f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18);
693
1.86M
    f166 = f163 + f164;
694
1.86M
    f167 = f165 - f164;
695
1.86M
    f168 = f16 + f14;
696
1.86M
    f169 = MUL_C(COEF_CONST(1.4125100802019777), f16);
697
1.86M
    f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168);
698
1.86M
    f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14);
699
1.86M
    f172 = f169 + f170;
700
1.86M
    f173 = f171 - f170;
701
1.86M
    f174 = f20 + f10;
702
1.86M
    f175 = MUL_C(COEF_CONST(1.3718313541934939), f20);
703
1.86M
    f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174);
704
1.86M
    f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10);
705
1.86M
    f178 = f175 + f176;
706
1.86M
    f179 = f177 - f176;
707
1.86M
    f180 = f24 + f6;
708
1.86M
    f181 = MUL_C(COEF_CONST(1.2784339185752409), f24);
709
1.86M
    f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180);
710
1.86M
    f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6);
711
1.86M
    f184 = f181 + f182;
712
1.86M
    f185 = f183 - f182;
713
1.86M
    f186 = f28 + f2;
714
1.86M
    f187 = MUL_C(COEF_CONST(1.1359069844201433), f28);
715
1.86M
    f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186);
716
1.86M
    f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2);
717
1.86M
    f190 = f187 + f188;
718
1.86M
    f191 = f189 - f188;
719
1.86M
    f192 = f149 - f173;
720
1.86M
    f193 = f149 + f173;
721
1.86M
    f194 = f148 - f172;
722
1.86M
    f195 = f148 + f172;
723
1.86M
    f196 = f155 - f179;
724
1.86M
    f197 = f155 + f179;
725
1.86M
    f198 = f154 - f178;
726
1.86M
    f199 = f154 + f178;
727
1.86M
    f200 = f161 - f185;
728
1.86M
    f201 = f161 + f185;
729
1.86M
    f202 = f160 - f184;
730
1.86M
    f203 = f160 + f184;
731
1.86M
    f204 = f167 - f191;
732
1.86M
    f205 = f167 + f191;
733
1.86M
    f206 = f166 - f190;
734
1.86M
    f207 = f166 + f190;
735
1.86M
    f208 = f192 + f194;
736
1.86M
    f209 = MUL_C(COEF_CONST(1.1758756024193588), f192);
737
1.86M
    f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208);
738
1.86M
    f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194);
739
1.86M
    f212 = f209 + f210;
740
1.86M
    f213 = f211 - f210;
741
1.86M
    f214 = f196 + f198;
742
1.86M
    f215 = MUL_C(COEF_CONST(1.3870398453221475), f196);
743
1.86M
    f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214);
744
1.86M
    f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198);
745
1.86M
    f218 = f215 + f216;
746
1.86M
    f219 = f217 - f216;
747
1.86M
    f220 = f200 + f202;
748
1.86M
    f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200);
749
1.86M
    f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220);
750
1.86M
    f223 = MUL_C(COEF_CONST(1.1758756024193586), f202);
751
1.86M
    f224 = f221 + f222;
752
1.86M
    f225 = f223 - f222;
753
1.86M
    f226 = f204 + f206;
754
1.86M
    f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204);
755
1.86M
    f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226);
756
1.86M
    f229 = MUL_C(COEF_CONST(1.3870398453221475), f206);
757
1.86M
    f230 = f227 + f228;
758
1.86M
    f231 = f229 - f228;
759
1.86M
    f232 = f193 - f201;
760
1.86M
    f233 = f193 + f201;
761
1.86M
    f234 = f195 - f203;
762
1.86M
    f235 = f195 + f203;
763
1.86M
    f236 = f197 - f205;
764
1.86M
    f237 = f197 + f205;
765
1.86M
    f238 = f199 - f207;
766
1.86M
    f239 = f199 + f207;
767
1.86M
    f240 = f213 - f225;
768
1.86M
    f241 = f213 + f225;
769
1.86M
    f242 = f212 - f224;
770
1.86M
    f243 = f212 + f224;
771
1.86M
    f244 = f219 - f231;
772
1.86M
    f245 = f219 + f231;
773
1.86M
    f246 = f218 - f230;
774
1.86M
    f247 = f218 + f230;
775
1.86M
    f248 = f232 + f234;
776
1.86M
    f249 = MUL_C(COEF_CONST(1.3065629648763766), f232);
777
1.86M
    f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248);
778
1.86M
    f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234);
779
1.86M
    f252 = f249 + f250;
780
1.86M
    f253 = f251 - f250;
781
1.86M
    f254 = f236 + f238;
782
1.86M
    f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236);
783
1.86M
    f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254);
784
1.86M
    f257 = MUL_C(COEF_CONST(1.3065629648763766), f238);
785
1.86M
    f258 = f255 + f256;
786
1.86M
    f259 = f257 - f256;
787
1.86M
    f260 = f240 + f242;
788
1.86M
    f261 = MUL_C(COEF_CONST(1.3065629648763766), f240);
789
1.86M
    f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260);
790
1.86M
    f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242);
791
1.86M
    f264 = f261 + f262;
792
1.86M
    f265 = f263 - f262;
793
1.86M
    f266 = f244 + f246;
794
1.86M
    f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244);
795
1.86M
    f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266);
796
1.86M
    f269 = MUL_C(COEF_CONST(1.3065629648763766), f246);
797
1.86M
    f270 = f267 + f268;
798
1.86M
    f271 = f269 - f268;
799
1.86M
    f272 = f233 - f237;
800
1.86M
    f273 = f233 + f237;
801
1.86M
    f274 = f235 - f239;
802
1.86M
    f275 = f235 + f239;
803
1.86M
    f276 = f253 - f259;
804
1.86M
    f277 = f253 + f259;
805
1.86M
    f278 = f252 - f258;
806
1.86M
    f279 = f252 + f258;
807
1.86M
    f280 = f241 - f245;
808
1.86M
    f281 = f241 + f245;
809
1.86M
    f282 = f243 - f247;
810
1.86M
    f283 = f243 + f247;
811
1.86M
    f284 = f265 - f271;
812
1.86M
    f285 = f265 + f271;
813
1.86M
    f286 = f264 - f270;
814
1.86M
    f287 = f264 + f270;
815
1.86M
    f288 = f272 - f274;
816
1.86M
    f289 = f272 + f274;
817
1.86M
    f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288);
818
1.86M
    f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289);
819
1.86M
    f292 = f276 - f278;
820
1.86M
    f293 = f276 + f278;
821
1.86M
    f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292);
822
1.86M
    f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293);
823
1.86M
    f296 = f280 - f282;
824
1.86M
    f297 = f280 + f282;
825
1.86M
    f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296);
826
1.86M
    f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297);
827
1.86M
    f300 = f284 - f286;
828
1.86M
    f301 = f284 + f286;
829
1.86M
    f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300);
830
1.86M
    f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301);
831
1.86M
    f304 = f129 - f273;
832
1.86M
    f305 = f129 + f273;
833
1.86M
    f306 = f131 - f281;
834
1.86M
    f307 = f131 + f281;
835
1.86M
    f308 = f133 - f285;
836
1.86M
    f309 = f133 + f285;
837
1.86M
    f310 = f135 - f277;
838
1.86M
    f311 = f135 + f277;
839
1.86M
    f312 = f137 - f295;
840
1.86M
    f313 = f137 + f295;
841
1.86M
    f314 = f139 - f303;
842
1.86M
    f315 = f139 + f303;
843
1.86M
    f316 = f141 - f299;
844
1.86M
    f317 = f141 + f299;
845
1.86M
    f318 = f143 - f291;
846
1.86M
    f319 = f143 + f291;
847
1.86M
    f320 = f142 - f290;
848
1.86M
    f321 = f142 + f290;
849
1.86M
    f322 = f140 - f298;
850
1.86M
    f323 = f140 + f298;
851
1.86M
    f324 = f138 - f302;
852
1.86M
    f325 = f138 + f302;
853
1.86M
    f326 = f136 - f294;
854
1.86M
    f327 = f136 + f294;
855
1.86M
    f328 = f134 - f279;
856
1.86M
    f329 = f134 + f279;
857
1.86M
    f330 = f132 - f287;
858
1.86M
    f331 = f132 + f287;
859
1.86M
    f332 = f130 - f283;
860
1.86M
    f333 = f130 + f283;
861
1.86M
    f334 = f128 - f275;
862
1.86M
    f335 = f128 + f275;
863
1.86M
    y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305);
864
1.86M
    y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307);
865
1.86M
    y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309);
866
1.86M
    y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311);
867
1.86M
    y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313);
868
1.86M
    y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315);
869
1.86M
    y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317);
870
1.86M
    y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319);
871
1.86M
    y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321);
872
1.86M
    y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323);
873
1.86M
    y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325);
874
1.86M
    y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327);
875
1.86M
    y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329);
876
1.86M
    y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331);
877
1.86M
    y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333);
878
1.86M
    y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335);
879
1.86M
    y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334);
880
1.86M
    y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332);
881
1.86M
    y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330);
882
1.86M
    y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328);
883
1.86M
    y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326);
884
1.86M
    y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324);
885
1.86M
    y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322);
886
1.86M
    y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320);
887
1.86M
    y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318);
888
1.86M
    y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316);
889
1.86M
    y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314);
890
1.86M
    y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312);
891
1.86M
    y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310);
892
1.86M
    y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308);
893
1.86M
    y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306);
894
1.86M
    y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304);
895
1.86M
}
DST4_32
Line
Count
Source
491
3.81M
{
492
3.81M
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9;
493
3.81M
    real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19;
494
3.81M
    real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29;
495
3.81M
    real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39;
496
3.81M
    real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49;
497
3.81M
    real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59;
498
3.81M
    real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69;
499
3.81M
    real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79;
500
3.81M
    real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
501
3.81M
    real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99;
502
3.81M
    real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109;
503
3.81M
    real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
504
3.81M
    real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129;
505
3.81M
    real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139;
506
3.81M
    real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149;
507
3.81M
    real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159;
508
3.81M
    real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169;
509
3.81M
    real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179;
510
3.81M
    real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189;
511
3.81M
    real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199;
512
3.81M
    real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209;
513
3.81M
    real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219;
514
3.81M
    real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229;
515
3.81M
    real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239;
516
3.81M
    real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249;
517
3.81M
    real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259;
518
3.81M
    real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269;
519
3.81M
    real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279;
520
3.81M
    real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289;
521
3.81M
    real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299;
522
3.81M
    real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309;
523
3.81M
    real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319;
524
3.81M
    real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329;
525
3.81M
    real_t f330, f331, f332, f333, f334, f335;
526
527
3.81M
    f0 = x[0] - x[1];
528
3.81M
    f1 = x[2] - x[1];
529
3.81M
    f2 = x[2] - x[3];
530
3.81M
    f3 = x[4] - x[3];
531
3.81M
    f4 = x[4] - x[5];
532
3.81M
    f5 = x[6] - x[5];
533
3.81M
    f6 = x[6] - x[7];
534
3.81M
    f7 = x[8] - x[7];
535
3.81M
    f8 = x[8] - x[9];
536
3.81M
    f9 = x[10] - x[9];
537
3.81M
    f10 = x[10] - x[11];
538
3.81M
    f11 = x[12] - x[11];
539
3.81M
    f12 = x[12] - x[13];
540
3.81M
    f13 = x[14] - x[13];
541
3.81M
    f14 = x[14] - x[15];
542
3.81M
    f15 = x[16] - x[15];
543
3.81M
    f16 = x[16] - x[17];
544
3.81M
    f17 = x[18] - x[17];
545
3.81M
    f18 = x[18] - x[19];
546
3.81M
    f19 = x[20] - x[19];
547
3.81M
    f20 = x[20] - x[21];
548
3.81M
    f21 = x[22] - x[21];
549
3.81M
    f22 = x[22] - x[23];
550
3.81M
    f23 = x[24] - x[23];
551
3.81M
    f24 = x[24] - x[25];
552
3.81M
    f25 = x[26] - x[25];
553
3.81M
    f26 = x[26] - x[27];
554
3.81M
    f27 = x[28] - x[27];
555
3.81M
    f28 = x[28] - x[29];
556
3.81M
    f29 = x[30] - x[29];
557
3.81M
    f30 = x[30] - x[31];
558
3.81M
    f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15);
559
3.81M
    f32 = x[0] - f31;
560
3.81M
    f33 = x[0] + f31;
561
3.81M
    f34 = f7 + f23;
562
3.81M
    f35 = MUL_C(COEF_CONST(1.3065629648763766), f7);
563
3.81M
    f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34);
564
3.81M
    f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23);
565
3.81M
    f38 = f35 + f36;
566
3.81M
    f39 = f37 - f36;
567
3.81M
    f40 = f33 - f39;
568
3.81M
    f41 = f33 + f39;
569
3.81M
    f42 = f32 - f38;
570
3.81M
    f43 = f32 + f38;
571
3.81M
    f44 = f11 - f19;
572
3.81M
    f45 = f11 + f19;
573
3.81M
    f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45);
574
3.81M
    f47 = f3 - f46;
575
3.81M
    f48 = f3 + f46;
576
3.81M
    f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44);
577
3.81M
    f50 = f49 - f27;
578
3.81M
    f51 = f49 + f27;
579
3.81M
    f52 = f51 + f48;
580
3.81M
    f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51);
581
3.81M
    f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52);
582
3.81M
    f55 = MUL_C(COEF_CONST(1.1758756024193588), f48);
583
3.81M
    f56 = f53 + f54;
584
3.81M
    f57 = f55 - f54;
585
3.81M
    f58 = f50 + f47;
586
3.81M
    f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50);
587
3.81M
    f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58);
588
3.81M
    f61 = MUL_C(COEF_CONST(1.3870398453221475), f47);
589
3.81M
    f62 = f59 + f60;
590
3.81M
    f63 = f61 - f60;
591
3.81M
    f64 = f41 - f56;
592
3.81M
    f65 = f41 + f56;
593
3.81M
    f66 = f43 - f62;
594
3.81M
    f67 = f43 + f62;
595
3.81M
    f68 = f42 - f63;
596
3.81M
    f69 = f42 + f63;
597
3.81M
    f70 = f40 - f57;
598
3.81M
    f71 = f40 + f57;
599
3.81M
    f72 = f5 - f9;
600
3.81M
    f73 = f5 + f9;
601
3.81M
    f74 = f13 - f17;
602
3.81M
    f75 = f13 + f17;
603
3.81M
    f76 = f21 - f25;
604
3.81M
    f77 = f21 + f25;
605
3.81M
    f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75);
606
3.81M
    f79 = f1 - f78;
607
3.81M
    f80 = f1 + f78;
608
3.81M
    f81 = f73 + f77;
609
3.81M
    f82 = MUL_C(COEF_CONST(1.3065629648763766), f73);
610
3.81M
    f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81);
611
3.81M
    f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77);
612
3.81M
    f85 = f82 + f83;
613
3.81M
    f86 = f84 - f83;
614
3.81M
    f87 = f80 - f86;
615
3.81M
    f88 = f80 + f86;
616
3.81M
    f89 = f79 - f85;
617
3.81M
    f90 = f79 + f85;
618
3.81M
    f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74);
619
3.81M
    f92 = f29 - f91;
620
3.81M
    f93 = f29 + f91;
621
3.81M
    f94 = f76 + f72;
622
3.81M
    f95 = MUL_C(COEF_CONST(1.3065629648763766), f76);
623
3.81M
    f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94);
624
3.81M
    f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72);
625
3.81M
    f98 = f95 + f96;
626
3.81M
    f99 = f97 - f96;
627
3.81M
    f100 = f93 - f99;
628
3.81M
    f101 = f93 + f99;
629
3.81M
    f102 = f92 - f98;
630
3.81M
    f103 = f92 + f98;
631
3.81M
    f104 = f101 + f88;
632
3.81M
    f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101);
633
3.81M
    f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104);
634
3.81M
    f107 = MUL_C(COEF_CONST(1.0932018670017576), f88);
635
3.81M
    f108 = f105 + f106;
636
3.81M
    f109 = f107 - f106;
637
3.81M
    f110 = f90 - f103;
638
3.81M
    f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103);
639
3.81M
    f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110);
640
3.81M
    f113 = MUL_C(COEF_CONST(1.2472250129866713), f90);
641
3.81M
    f114 = f112 - f111;
642
3.81M
    f115 = f113 - f112;
643
3.81M
    f116 = f102 + f89;
644
3.81M
    f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102);
645
3.81M
    f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116);
646
3.81M
    f119 = MUL_C(COEF_CONST(1.3533180011743529), f89);
647
3.81M
    f120 = f117 + f118;
648
3.81M
    f121 = f119 - f118;
649
3.81M
    f122 = f87 - f100;
650
3.81M
    f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100);
651
3.81M
    f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122);
652
3.81M
    f125 = MUL_C(COEF_CONST(1.4074037375263826), f87);
653
3.81M
    f126 = f124 - f123;
654
3.81M
    f127 = f125 - f124;
655
3.81M
    f128 = f65 - f108;
656
3.81M
    f129 = f65 + f108;
657
3.81M
    f130 = f67 - f114;
658
3.81M
    f131 = f67 + f114;
659
3.81M
    f132 = f69 - f120;
660
3.81M
    f133 = f69 + f120;
661
3.81M
    f134 = f71 - f126;
662
3.81M
    f135 = f71 + f126;
663
3.81M
    f136 = f70 - f127;
664
3.81M
    f137 = f70 + f127;
665
3.81M
    f138 = f68 - f121;
666
3.81M
    f139 = f68 + f121;
667
3.81M
    f140 = f66 - f115;
668
3.81M
    f141 = f66 + f115;
669
3.81M
    f142 = f64 - f109;
670
3.81M
    f143 = f64 + f109;
671
3.81M
    f144 = f0 + f30;
672
3.81M
    f145 = MUL_C(COEF_CONST(1.0478631305325901), f0);
673
3.81M
    f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144);
674
3.81M
    f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30);
675
3.81M
    f148 = f145 + f146;
676
3.81M
    f149 = f147 - f146;
677
3.81M
    f150 = f4 + f26;
678
3.81M
    f151 = MUL_C(COEF_CONST(1.2130114330978077), f4);
679
3.81M
    f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150);
680
3.81M
    f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26);
681
3.81M
    f154 = f151 + f152;
682
3.81M
    f155 = f153 - f152;
683
3.81M
    f156 = f8 + f22;
684
3.81M
    f157 = MUL_C(COEF_CONST(1.3315443865537255), f8);
685
3.81M
    f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156);
686
3.81M
    f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22);
687
3.81M
    f160 = f157 + f158;
688
3.81M
    f161 = f159 - f158;
689
3.81M
    f162 = f12 + f18;
690
3.81M
    f163 = MUL_C(COEF_CONST(1.3989068359730781), f12);
691
3.81M
    f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162);
692
3.81M
    f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18);
693
3.81M
    f166 = f163 + f164;
694
3.81M
    f167 = f165 - f164;
695
3.81M
    f168 = f16 + f14;
696
3.81M
    f169 = MUL_C(COEF_CONST(1.4125100802019777), f16);
697
3.81M
    f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168);
698
3.81M
    f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14);
699
3.81M
    f172 = f169 + f170;
700
3.81M
    f173 = f171 - f170;
701
3.81M
    f174 = f20 + f10;
702
3.81M
    f175 = MUL_C(COEF_CONST(1.3718313541934939), f20);
703
3.81M
    f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174);
704
3.81M
    f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10);
705
3.81M
    f178 = f175 + f176;
706
3.81M
    f179 = f177 - f176;
707
3.81M
    f180 = f24 + f6;
708
3.81M
    f181 = MUL_C(COEF_CONST(1.2784339185752409), f24);
709
3.81M
    f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180);
710
3.81M
    f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6);
711
3.81M
    f184 = f181 + f182;
712
3.81M
    f185 = f183 - f182;
713
3.81M
    f186 = f28 + f2;
714
3.81M
    f187 = MUL_C(COEF_CONST(1.1359069844201433), f28);
715
3.81M
    f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186);
716
3.81M
    f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2);
717
3.81M
    f190 = f187 + f188;
718
3.81M
    f191 = f189 - f188;
719
3.81M
    f192 = f149 - f173;
720
3.81M
    f193 = f149 + f173;
721
3.81M
    f194 = f148 - f172;
722
3.81M
    f195 = f148 + f172;
723
3.81M
    f196 = f155 - f179;
724
3.81M
    f197 = f155 + f179;
725
3.81M
    f198 = f154 - f178;
726
3.81M
    f199 = f154 + f178;
727
3.81M
    f200 = f161 - f185;
728
3.81M
    f201 = f161 + f185;
729
3.81M
    f202 = f160 - f184;
730
3.81M
    f203 = f160 + f184;
731
3.81M
    f204 = f167 - f191;
732
3.81M
    f205 = f167 + f191;
733
3.81M
    f206 = f166 - f190;
734
3.81M
    f207 = f166 + f190;
735
3.81M
    f208 = f192 + f194;
736
3.81M
    f209 = MUL_C(COEF_CONST(1.1758756024193588), f192);
737
3.81M
    f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208);
738
3.81M
    f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194);
739
3.81M
    f212 = f209 + f210;
740
3.81M
    f213 = f211 - f210;
741
3.81M
    f214 = f196 + f198;
742
3.81M
    f215 = MUL_C(COEF_CONST(1.3870398453221475), f196);
743
3.81M
    f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214);
744
3.81M
    f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198);
745
3.81M
    f218 = f215 + f216;
746
3.81M
    f219 = f217 - f216;
747
3.81M
    f220 = f200 + f202;
748
3.81M
    f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200);
749
3.81M
    f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220);
750
3.81M
    f223 = MUL_C(COEF_CONST(1.1758756024193586), f202);
751
3.81M
    f224 = f221 + f222;
752
3.81M
    f225 = f223 - f222;
753
3.81M
    f226 = f204 + f206;
754
3.81M
    f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204);
755
3.81M
    f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226);
756
3.81M
    f229 = MUL_C(COEF_CONST(1.3870398453221475), f206);
757
3.81M
    f230 = f227 + f228;
758
3.81M
    f231 = f229 - f228;
759
3.81M
    f232 = f193 - f201;
760
3.81M
    f233 = f193 + f201;
761
3.81M
    f234 = f195 - f203;
762
3.81M
    f235 = f195 + f203;
763
3.81M
    f236 = f197 - f205;
764
3.81M
    f237 = f197 + f205;
765
3.81M
    f238 = f199 - f207;
766
3.81M
    f239 = f199 + f207;
767
3.81M
    f240 = f213 - f225;
768
3.81M
    f241 = f213 + f225;
769
3.81M
    f242 = f212 - f224;
770
3.81M
    f243 = f212 + f224;
771
3.81M
    f244 = f219 - f231;
772
3.81M
    f245 = f219 + f231;
773
3.81M
    f246 = f218 - f230;
774
3.81M
    f247 = f218 + f230;
775
3.81M
    f248 = f232 + f234;
776
3.81M
    f249 = MUL_C(COEF_CONST(1.3065629648763766), f232);
777
3.81M
    f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248);
778
3.81M
    f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234);
779
3.81M
    f252 = f249 + f250;
780
3.81M
    f253 = f251 - f250;
781
3.81M
    f254 = f236 + f238;
782
3.81M
    f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236);
783
3.81M
    f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254);
784
3.81M
    f257 = MUL_C(COEF_CONST(1.3065629648763766), f238);
785
3.81M
    f258 = f255 + f256;
786
3.81M
    f259 = f257 - f256;
787
3.81M
    f260 = f240 + f242;
788
3.81M
    f261 = MUL_C(COEF_CONST(1.3065629648763766), f240);
789
3.81M
    f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260);
790
3.81M
    f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242);
791
3.81M
    f264 = f261 + f262;
792
3.81M
    f265 = f263 - f262;
793
3.81M
    f266 = f244 + f246;
794
3.81M
    f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244);
795
3.81M
    f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266);
796
3.81M
    f269 = MUL_C(COEF_CONST(1.3065629648763766), f246);
797
3.81M
    f270 = f267 + f268;
798
3.81M
    f271 = f269 - f268;
799
3.81M
    f272 = f233 - f237;
800
3.81M
    f273 = f233 + f237;
801
3.81M
    f274 = f235 - f239;
802
3.81M
    f275 = f235 + f239;
803
3.81M
    f276 = f253 - f259;
804
3.81M
    f277 = f253 + f259;
805
3.81M
    f278 = f252 - f258;
806
3.81M
    f279 = f252 + f258;
807
3.81M
    f280 = f241 - f245;
808
3.81M
    f281 = f241 + f245;
809
3.81M
    f282 = f243 - f247;
810
3.81M
    f283 = f243 + f247;
811
3.81M
    f284 = f265 - f271;
812
3.81M
    f285 = f265 + f271;
813
3.81M
    f286 = f264 - f270;
814
3.81M
    f287 = f264 + f270;
815
3.81M
    f288 = f272 - f274;
816
3.81M
    f289 = f272 + f274;
817
3.81M
    f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288);
818
3.81M
    f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289);
819
3.81M
    f292 = f276 - f278;
820
3.81M
    f293 = f276 + f278;
821
3.81M
    f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292);
822
3.81M
    f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293);
823
3.81M
    f296 = f280 - f282;
824
3.81M
    f297 = f280 + f282;
825
3.81M
    f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296);
826
3.81M
    f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297);
827
3.81M
    f300 = f284 - f286;
828
3.81M
    f301 = f284 + f286;
829
3.81M
    f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300);
830
3.81M
    f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301);
831
3.81M
    f304 = f129 - f273;
832
3.81M
    f305 = f129 + f273;
833
3.81M
    f306 = f131 - f281;
834
3.81M
    f307 = f131 + f281;
835
3.81M
    f308 = f133 - f285;
836
3.81M
    f309 = f133 + f285;
837
3.81M
    f310 = f135 - f277;
838
3.81M
    f311 = f135 + f277;
839
3.81M
    f312 = f137 - f295;
840
3.81M
    f313 = f137 + f295;
841
3.81M
    f314 = f139 - f303;
842
3.81M
    f315 = f139 + f303;
843
3.81M
    f316 = f141 - f299;
844
3.81M
    f317 = f141 + f299;
845
3.81M
    f318 = f143 - f291;
846
3.81M
    f319 = f143 + f291;
847
3.81M
    f320 = f142 - f290;
848
3.81M
    f321 = f142 + f290;
849
3.81M
    f322 = f140 - f298;
850
3.81M
    f323 = f140 + f298;
851
3.81M
    f324 = f138 - f302;
852
3.81M
    f325 = f138 + f302;
853
3.81M
    f326 = f136 - f294;
854
3.81M
    f327 = f136 + f294;
855
3.81M
    f328 = f134 - f279;
856
3.81M
    f329 = f134 + f279;
857
3.81M
    f330 = f132 - f287;
858
3.81M
    f331 = f132 + f287;
859
3.81M
    f332 = f130 - f283;
860
3.81M
    f333 = f130 + f283;
861
3.81M
    f334 = f128 - f275;
862
3.81M
    f335 = f128 + f275;
863
3.81M
    y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305);
864
3.81M
    y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307);
865
3.81M
    y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309);
866
3.81M
    y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311);
867
3.81M
    y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313);
868
3.81M
    y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315);
869
3.81M
    y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317);
870
3.81M
    y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319);
871
3.81M
    y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321);
872
3.81M
    y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323);
873
3.81M
    y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325);
874
3.81M
    y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327);
875
3.81M
    y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329);
876
3.81M
    y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331);
877
3.81M
    y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333);
878
3.81M
    y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335);
879
3.81M
    y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334);
880
3.81M
    y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332);
881
3.81M
    y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330);
882
3.81M
    y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328);
883
3.81M
    y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326);
884
3.81M
    y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324);
885
3.81M
    y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322);
886
3.81M
    y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320);
887
3.81M
    y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318);
888
3.81M
    y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316);
889
3.81M
    y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314);
890
3.81M
    y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312);
891
3.81M
    y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310);
892
3.81M
    y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308);
893
3.81M
    y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306);
894
3.81M
    y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304);
895
3.81M
}
896
897
#ifdef SBR_LOW_POWER
898
899
void DCT2_16_unscaled(real_t *y, real_t *x)
900
{
901
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
902
    real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
903
    real_t f21, f22, f23, f24, f25, f26, f27, f28, f31, f32;
904
    real_t f33, f34, f37, f38, f39, f40, f41, f42, f43, f44;
905
    real_t f45, f46, f47, f48, f49, f51, f53, f54, f57, f58;
906
    real_t f59, f60, f61, f62, f63, f64, f65, f66, f67, f68;
907
    real_t f69, f70, f71, f72, f73, f74, f75, f76, f77, f78;
908
    real_t f79, f80, f81, f82, f83, f84, f85, f86, f87, f88;
909
    real_t f89, f90, f91, f92, f95, f96, f97, f98, f101, f102;
910
    real_t f103, f104, f107, f108, f109, f110;
911
912
    f0 = x[0] - x[15];
913
    f1 = x[0] + x[15];
914
    f2 = x[1] - x[14];
915
    f3 = x[1] + x[14];
916
    f4 = x[2] - x[13];
917
    f5 = x[2] + x[13];
918
    f6 = x[3] - x[12];
919
    f7 = x[3] + x[12];
920
    f8 = x[4] - x[11];
921
    f9 = x[4] + x[11];
922
    f10 = x[5] - x[10];
923
    f11 = x[5] + x[10];
924
    f12 = x[6] - x[9];
925
    f13 = x[6] + x[9];
926
    f14 = x[7] - x[8];
927
    f15 = x[7] + x[8];
928
    f16 = f1 - f15;
929
    f17 = f1 + f15;
930
    f18 = f3 - f13;
931
    f19 = f3 + f13;
932
    f20 = f5 - f11;
933
    f21 = f5 + f11;
934
    f22 = f7 - f9;
935
    f23 = f7 + f9;
936
    f24 = f17 - f23;
937
    f25 = f17 + f23;
938
    f26 = f19 - f21;
939
    f27 = f19 + f21;
940
    f28 = f25 - f27;
941
    y[0] = f25 + f27;
942
    y[8] = MUL_F(f28, FRAC_CONST(0.7071067811865476));
943
    f31 = f24 + f26;
944
    f32 = MUL_C(f24, COEF_CONST(1.3065629648763766));
945
    f33 = MUL_F(f31, FRAC_CONST(-0.9238795325112866));
946
    f34 = MUL_F(f26, FRAC_CONST(-0.5411961001461967));
947
    y[12] = f32 + f33;
948
    y[4] = f34 - f33;
949
    f37 = f16 + f22;
950
    f38 = MUL_C(f16, COEF_CONST(1.1758756024193588));
951
    f39 = MUL_F(f37, FRAC_CONST(-0.9807852804032304));
952
    f40 = MUL_F(f22, FRAC_CONST(-0.7856949583871021));
953
    f41 = f38 + f39;
954
    f42 = f40 - f39;
955
    f43 = f18 + f20;
956
    f44 = MUL_C(f18, COEF_CONST(1.3870398453221473));
957
    f45 = MUL_F(f43, FRAC_CONST(-0.8314696123025455));
958
    f46 = MUL_F(f20, FRAC_CONST(-0.2758993792829436));
959
    f47 = f44 + f45;
960
    f48 = f46 - f45;
961
    f49 = f42 - f48;
962
    y[2] = f42 + f48;
963
    f51 = MUL_F(f49, FRAC_CONST(0.7071067811865476));
964
    y[14] = f41 - f47;
965
    f53 = f41 + f47;
966
    f54 = MUL_F(f53, FRAC_CONST(0.7071067811865476));
967
    y[10] = f51 - f54;
968
    y[6] = f51 + f54;
969
    f57 = f2 - f4;
970
    f58 = f2 + f4;
971
    f59 = f6 - f8;
972
    f60 = f6 + f8;
973
    f61 = f10 - f12;
974
    f62 = f10 + f12;
975
    f63 = MUL_F(f60, FRAC_CONST(0.7071067811865476));
976
    f64 = f0 - f63;
977
    f65 = f0 + f63;
978
    f66 = f58 + f62;
979
    f67 = MUL_C(f58, COEF_CONST(1.3065629648763766));
980
    f68 = MUL_F(f66, FRAC_CONST(-0.9238795325112866));
981
    f69 = MUL_F(f62, FRAC_CONST(-0.5411961001461967));
982
    f70 = f67 + f68;
983
    f71 = f69 - f68;
984
    f72 = f65 - f71;
985
    f73 = f65 + f71;
986
    f74 = f64 - f70;
987
    f75 = f64 + f70;
988
    f76 = MUL_F(f59, FRAC_CONST(0.7071067811865476));
989
    f77 = f14 - f76;
990
    f78 = f14 + f76;
991
    f79 = f61 + f57;
992
    f80 = MUL_C(f61, COEF_CONST(1.3065629648763766));
993
    f81 = MUL_F(f79, FRAC_CONST(-0.9238795325112866));
994
    f82 = MUL_F(f57, FRAC_CONST(-0.5411961001461967));
995
    f83 = f80 + f81;
996
    f84 = f82 - f81;
997
    f85 = f78 - f84;
998
    f86 = f78 + f84;
999
    f87 = f77 - f83;
1000
    f88 = f77 + f83;
1001
    f89 = f86 + f73;
1002
    f90 = MUL_F(f86, FRAC_CONST(-0.8971675863426361));
1003
    f91 = MUL_F(f89, FRAC_CONST(0.9951847266721968));
1004
    f92 = MUL_C(f73, COEF_CONST(1.0932018670017576));
1005
    y[1] = f90 + f91;
1006
    y[15] = f92 - f91;
1007
    f95 = f75 - f88;
1008
    f96 = MUL_F(f88, FRAC_CONST(-0.6666556584777466));
1009
    f97 = MUL_F(f95, FRAC_CONST(0.9569403357322089));
1010
    f98 = MUL_C(f75, COEF_CONST(1.2472250129866713));
1011
    y[3] = f97 - f96;
1012
    y[13] = f98 - f97;
1013
    f101 = f87 + f74;
1014
    f102 = MUL_F(f87, FRAC_CONST(-0.4105245275223571));
1015
    f103 = MUL_F(f101, FRAC_CONST(0.8819212643483549));
1016
    f104 = MUL_C(f74, COEF_CONST(1.3533180011743529));
1017
    y[5] = f102 + f103;
1018
    y[11] = f104 - f103;
1019
    f107 = f72 - f85;
1020
    f108 = MUL_F(f85, FRAC_CONST(-0.1386171691990915));
1021
    f109 = MUL_F(f107, FRAC_CONST(0.7730104533627370));
1022
    f110 = MUL_C(f72, COEF_CONST(1.4074037375263826));
1023
    y[7] = f109 - f108;
1024
    y[9] = f110 - f109;
1025
}
1026
1027
void DCT4_16(real_t *y, real_t *x)
1028
{
1029
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
1030
    real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
1031
    real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
1032
    real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
1033
    real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
1034
    real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
1035
    real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
1036
    real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
1037
    real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
1038
    real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
1039
    real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
1040
    real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
1041
    real_t f121, f122, f123, f124, f125, f126, f127, f128, f130, f132;
1042
    real_t f134, f136, f138, f140, f142, f144, f145, f148, f149, f152;
1043
    real_t f153, f156, f157;
1044
1045
    f0 = x[0] + x[15];
1046
    f1 = MUL_C(COEF_CONST(1.0478631305325901), x[0]);
1047
    f2 = MUL_F(FRAC_CONST(-0.9987954562051724), f0);
1048
    f3 = MUL_F(FRAC_CONST(-0.9497277818777548), x[15]);
1049
    f4 = f1 + f2;
1050
    f5 = f3 - f2;
1051
    f6 = x[2] + x[13];
1052
    f7 = MUL_C(COEF_CONST(1.2130114330978077), x[2]);
1053
    f8 = MUL_F(FRAC_CONST(-0.9700312531945440), f6);
1054
    f9 = MUL_F(FRAC_CONST(-0.7270510732912803), x[13]);
1055
    f10 = f7 + f8;
1056
    f11 = f9 - f8;
1057
    f12 = x[4] + x[11];
1058
    f13 = MUL_C(COEF_CONST(1.3315443865537255), x[4]);
1059
    f14 = MUL_F(FRAC_CONST(-0.9039892931234433), f12);
1060
    f15 = MUL_F(FRAC_CONST(-0.4764341996931612), x[11]);
1061
    f16 = f13 + f14;
1062
    f17 = f15 - f14;
1063
    f18 = x[6] + x[9];
1064
    f19 = MUL_C(COEF_CONST(1.3989068359730781), x[6]);
1065
    f20 = MUL_F(FRAC_CONST(-0.8032075314806453), f18);
1066
    f21 = MUL_F(FRAC_CONST(-0.2075082269882124), x[9]);
1067
    f22 = f19 + f20;
1068
    f23 = f21 - f20;
1069
    f24 = x[8] + x[7];
1070
    f25 = MUL_C(COEF_CONST(1.4125100802019777), x[8]);
1071
    f26 = MUL_F(FRAC_CONST(-0.6715589548470187), f24);
1072
    f27 = MUL_F(FRAC_CONST(0.0693921705079402), x[7]);
1073
    f28 = f25 + f26;
1074
    f29 = f27 - f26;
1075
    f30 = x[10] + x[5];
1076
    f31 = MUL_C(COEF_CONST(1.3718313541934939), x[10]);
1077
    f32 = MUL_F(FRAC_CONST(-0.5141027441932219), f30);
1078
    f33 = MUL_F(FRAC_CONST(0.3436258658070501), x[5]);
1079
    f34 = f31 + f32;
1080
    f35 = f33 - f32;
1081
    f36 = x[12] + x[3];
1082
    f37 = MUL_C(COEF_CONST(1.2784339185752409), x[12]);
1083
    f38 = MUL_F(FRAC_CONST(-0.3368898533922200), f36);
1084
    f39 = MUL_F(FRAC_CONST(0.6046542117908008), x[3]);
1085
    f40 = f37 + f38;
1086
    f41 = f39 - f38;
1087
    f42 = x[14] + x[1];
1088
    f43 = MUL_C(COEF_CONST(1.1359069844201433), x[14]);
1089
    f44 = MUL_F(FRAC_CONST(-0.1467304744553624), f42);
1090
    f45 = MUL_F(FRAC_CONST(0.8424460355094185), x[1]);
1091
    f46 = f43 + f44;
1092
    f47 = f45 - f44;
1093
    f48 = f5 - f29;
1094
    f49 = f5 + f29;
1095
    f50 = f4 - f28;
1096
    f51 = f4 + f28;
1097
    f52 = f11 - f35;
1098
    f53 = f11 + f35;
1099
    f54 = f10 - f34;
1100
    f55 = f10 + f34;
1101
    f56 = f17 - f41;
1102
    f57 = f17 + f41;
1103
    f58 = f16 - f40;
1104
    f59 = f16 + f40;
1105
    f60 = f23 - f47;
1106
    f61 = f23 + f47;
1107
    f62 = f22 - f46;
1108
    f63 = f22 + f46;
1109
    f64 = f48 + f50;
1110
    f65 = MUL_C(COEF_CONST(1.1758756024193588), f48);
1111
    f66 = MUL_F(FRAC_CONST(-0.9807852804032304), f64);
1112
    f67 = MUL_F(FRAC_CONST(-0.7856949583871021), f50);
1113
    f68 = f65 + f66;
1114
    f69 = f67 - f66;
1115
    f70 = f52 + f54;
1116
    f71 = MUL_C(COEF_CONST(1.3870398453221475), f52);
1117
    f72 = MUL_F(FRAC_CONST(-0.5555702330196022), f70);
1118
    f73 = MUL_F(FRAC_CONST(0.2758993792829431), f54);
1119
    f74 = f71 + f72;
1120
    f75 = f73 - f72;
1121
    f76 = f56 + f58;
1122
    f77 = MUL_F(FRAC_CONST(0.7856949583871022), f56);
1123
    f78 = MUL_F(FRAC_CONST(0.1950903220161283), f76);
1124
    f79 = MUL_C(COEF_CONST(1.1758756024193586), f58);
1125
    f80 = f77 + f78;
1126
    f81 = f79 - f78;
1127
    f82 = f60 + f62;
1128
    f83 = MUL_F(FRAC_CONST(-0.2758993792829430), f60);
1129
    f84 = MUL_F(FRAC_CONST(0.8314696123025452), f82);
1130
    f85 = MUL_C(COEF_CONST(1.3870398453221475), f62);
1131
    f86 = f83 + f84;
1132
    f87 = f85 - f84;
1133
    f88 = f49 - f57;
1134
    f89 = f49 + f57;
1135
    f90 = f51 - f59;
1136
    f91 = f51 + f59;
1137
    f92 = f53 - f61;
1138
    f93 = f53 + f61;
1139
    f94 = f55 - f63;
1140
    f95 = f55 + f63;
1141
    f96 = f69 - f81;
1142
    f97 = f69 + f81;
1143
    f98 = f68 - f80;
1144
    f99 = f68 + f80;
1145
    f100 = f75 - f87;
1146
    f101 = f75 + f87;
1147
    f102 = f74 - f86;
1148
    f103 = f74 + f86;
1149
    f104 = f88 + f90;
1150
    f105 = MUL_C(COEF_CONST(1.3065629648763766), f88);
1151
    f106 = MUL_F(FRAC_CONST(-0.9238795325112866), f104);
1152
    f107 = MUL_F(FRAC_CONST(-0.5411961001461967), f90);
1153
    f108 = f105 + f106;
1154
    f109 = f107 - f106;
1155
    f110 = f92 + f94;
1156
    f111 = MUL_F(FRAC_CONST(0.5411961001461969), f92);
1157
    f112 = MUL_F(FRAC_CONST(0.3826834323650898), f110);
1158
    f113 = MUL_C(COEF_CONST(1.3065629648763766), f94);
1159
    f114 = f111 + f112;
1160
    f115 = f113 - f112;
1161
    f116 = f96 + f98;
1162
    f117 = MUL_C(COEF_CONST(1.3065629648763766), f96);
1163
    f118 = MUL_F(FRAC_CONST(-0.9238795325112866), f116);
1164
    f119 = MUL_F(FRAC_CONST(-0.5411961001461967), f98);
1165
    f120 = f117 + f118;
1166
    f121 = f119 - f118;
1167
    f122 = f100 + f102;
1168
    f123 = MUL_F(FRAC_CONST(0.5411961001461969), f100);
1169
    f124 = MUL_F(FRAC_CONST(0.3826834323650898), f122);
1170
    f125 = MUL_C(COEF_CONST(1.3065629648763766), f102);
1171
    f126 = f123 + f124;
1172
    f127 = f125 - f124;
1173
    f128 = f89 - f93;
1174
    y[0] = f89 + f93;
1175
    f130 = f91 - f95;
1176
    y[15] = f91 + f95;
1177
    f132 = f109 - f115;
1178
    y[3] = f109 + f115;
1179
    f134 = f108 - f114;
1180
    y[12] = f108 + f114;
1181
    f136 = f97 - f101;
1182
    y[1] = f97 + f101;
1183
    f138 = f99 - f103;
1184
    y[14] = f99 + f103;
1185
    f140 = f121 - f127;
1186
    y[2] = f121 + f127;
1187
    f142 = f120 - f126;
1188
    y[13] = f120 + f126;
1189
    f144 = f128 - f130;
1190
    f145 = f128 + f130;
1191
    y[8] = MUL_F(FRAC_CONST(0.7071067811865474), f144);
1192
    y[7] = MUL_F(FRAC_CONST(0.7071067811865474), f145);
1193
    f148 = f132 - f134;
1194
    f149 = f132 + f134;
1195
    y[11] = MUL_F(FRAC_CONST(0.7071067811865474), f148);
1196
    y[4] = MUL_F(FRAC_CONST(0.7071067811865474), f149);
1197
    f152 = f136 - f138;
1198
    f153 = f136 + f138;
1199
    y[9] = MUL_F(FRAC_CONST(0.7071067811865474), f152);
1200
    y[6] = MUL_F(FRAC_CONST(0.7071067811865474), f153);
1201
    f156 = f140 - f142;
1202
    f157 = f140 + f142;
1203
    y[10] = MUL_F(FRAC_CONST(0.7071067811865474), f156);
1204
    y[5] = MUL_F(FRAC_CONST(0.7071067811865474), f157);
1205
}
1206
1207
void DCT3_32_unscaled(real_t *y, real_t *x)
1208
{
1209
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
1210
    real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
1211
    real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
1212
    real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
1213
    real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
1214
    real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
1215
    real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
1216
    real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
1217
    real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
1218
    real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
1219
    real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
1220
    real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
1221
    real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130;
1222
    real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
1223
    real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
1224
    real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
1225
    real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
1226
    real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
1227
    real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
1228
    real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
1229
    real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
1230
    real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
1231
    real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
1232
    real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
1233
    real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
1234
    real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
1235
    real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
1236
    real_t f271, f272;
1237
1238
    f0 = MUL_F(x[16], FRAC_CONST(0.7071067811865476));
1239
    f1 = x[0] - f0;
1240
    f2 = x[0] + f0;
1241
    f3 = x[8] + x[24];
1242
    f4 = MUL_C(x[8], COEF_CONST(1.3065629648763766));
1243
    f5 = MUL_F(f3, FRAC_CONST((-0.9238795325112866)));
1244
    f6 = MUL_F(x[24], FRAC_CONST((-0.5411961001461967)));
1245
    f7 = f4 + f5;
1246
    f8 = f6 - f5;
1247
    f9 = f2 - f8;
1248
    f10 = f2 + f8;
1249
    f11 = f1 - f7;
1250
    f12 = f1 + f7;
1251
    f13 = x[4] + x[28];
1252
    f14 = MUL_C(x[4], COEF_CONST(1.1758756024193588));
1253
    f15 = MUL_F(f13, FRAC_CONST((-0.9807852804032304)));
1254
    f16 = MUL_F(x[28], FRAC_CONST((-0.7856949583871021)));
1255
    f17 = f14 + f15;
1256
    f18 = f16 - f15;
1257
    f19 = x[12] + x[20];
1258
    f20 = MUL_C(x[12], COEF_CONST(1.3870398453221473));
1259
    f21 = MUL_F(f19, FRAC_CONST((-0.8314696123025455)));
1260
    f22 = MUL_F(x[20], FRAC_CONST((-0.2758993792829436)));
1261
    f23 = f20 + f21;
1262
    f24 = f22 - f21;
1263
    f25 = f18 - f24;
1264
    f26 = f18 + f24;
1265
    f27 = MUL_F(f25, FRAC_CONST(0.7071067811865476));
1266
    f28 = f17 - f23;
1267
    f29 = f17 + f23;
1268
    f30 = MUL_F(f29, FRAC_CONST(0.7071067811865476));
1269
    f31 = f27 - f30;
1270
    f32 = f27 + f30;
1271
    f33 = f10 - f26;
1272
    f34 = f10 + f26;
1273
    f35 = f12 - f32;
1274
    f36 = f12 + f32;
1275
    f37 = f11 - f31;
1276
    f38 = f11 + f31;
1277
    f39 = f9 - f28;
1278
    f40 = f9 + f28;
1279
    f41 = x[2] + x[30];
1280
    f42 = MUL_C(x[2], COEF_CONST(1.0932018670017569));
1281
    f43 = MUL_F(f41, FRAC_CONST((-0.9951847266721969)));
1282
    f44 = MUL_F(x[30], FRAC_CONST((-0.8971675863426368)));
1283
    f45 = f42 + f43;
1284
    f46 = f44 - f43;
1285
    f47 = x[6] + x[26];
1286
    f48 = MUL_C(x[6], COEF_CONST(1.2472250129866711));
1287
    f49 = MUL_F(f47, FRAC_CONST((-0.9569403357322089)));
1288
    f50 = MUL_F(x[26], FRAC_CONST((-0.6666556584777469)));
1289
    f51 = f48 + f49;
1290
    f52 = f50 - f49;
1291
    f53 = x[10] + x[22];
1292
    f54 = MUL_C(x[10], COEF_CONST(1.3533180011743526));
1293
    f55 = MUL_F(f53, FRAC_CONST((-0.8819212643483551)));
1294
    f56 = MUL_F(x[22], FRAC_CONST((-0.4105245275223575)));
1295
    f57 = f54 + f55;
1296
    f58 = f56 - f55;
1297
    f59 = x[14] + x[18];
1298
    f60 = MUL_C(x[14], COEF_CONST(1.4074037375263826));
1299
    f61 = MUL_F(f59, FRAC_CONST((-0.7730104533627369)));
1300
    f62 = MUL_F(x[18], FRAC_CONST((-0.1386171691990913)));
1301
    f63 = f60 + f61;
1302
    f64 = f62 - f61;
1303
    f65 = f46 - f64;
1304
    f66 = f46 + f64;
1305
    f67 = f52 - f58;
1306
    f68 = f52 + f58;
1307
    f69 = f66 - f68;
1308
    f70 = f66 + f68;
1309
    f71 = MUL_F(f69, FRAC_CONST(0.7071067811865476));
1310
    f72 = f65 + f67;
1311
    f73 = MUL_C(f65, COEF_CONST(1.3065629648763766));
1312
    f74 = MUL_F(f72, FRAC_CONST((-0.9238795325112866)));
1313
    f75 = MUL_F(f67, FRAC_CONST((-0.5411961001461967)));
1314
    f76 = f73 + f74;
1315
    f77 = f75 - f74;
1316
    f78 = f45 - f63;
1317
    f79 = f45 + f63;
1318
    f80 = f51 - f57;
1319
    f81 = f51 + f57;
1320
    f82 = f79 + f81;
1321
    f83 = MUL_C(f79, COEF_CONST(1.3065629648763770));
1322
    f84 = MUL_F(f82, FRAC_CONST((-0.3826834323650904)));
1323
    f85 = MUL_F(f81, FRAC_CONST(0.5411961001461961));
1324
    f86 = f83 + f84;
1325
    f87 = f85 - f84;
1326
    f88 = f78 - f80;
1327
    f89 = f78 + f80;
1328
    f90 = MUL_F(f89, FRAC_CONST(0.7071067811865476));
1329
    f91 = f77 - f87;
1330
    f92 = f77 + f87;
1331
    f93 = f71 - f90;
1332
    f94 = f71 + f90;
1333
    f95 = f76 - f86;
1334
    f96 = f76 + f86;
1335
    f97 = f34 - f70;
1336
    f98 = f34 + f70;
1337
    f99 = f36 - f92;
1338
    f100 = f36 + f92;
1339
    f101 = f38 - f91;
1340
    f102 = f38 + f91;
1341
    f103 = f40 - f94;
1342
    f104 = f40 + f94;
1343
    f105 = f39 - f93;
1344
    f106 = f39 + f93;
1345
    f107 = f37 - f96;
1346
    f108 = f37 + f96;
1347
    f109 = f35 - f95;
1348
    f110 = f35 + f95;
1349
    f111 = f33 - f88;
1350
    f112 = f33 + f88;
1351
    f113 = x[1] + x[31];
1352
    f114 = MUL_C(x[1], COEF_CONST(1.0478631305325901));
1353
    f115 = MUL_F(f113, FRAC_CONST((-0.9987954562051724)));
1354
    f116 = MUL_F(x[31], FRAC_CONST((-0.9497277818777548)));
1355
    f117 = f114 + f115;
1356
    f118 = f116 - f115;
1357
    f119 = x[5] + x[27];
1358
    f120 = MUL_C(x[5], COEF_CONST(1.2130114330978077));
1359
    f121 = MUL_F(f119, FRAC_CONST((-0.9700312531945440)));
1360
    f122 = MUL_F(x[27], FRAC_CONST((-0.7270510732912803)));
1361
    f123 = f120 + f121;
1362
    f124 = f122 - f121;
1363
    f125 = x[9] + x[23];
1364
    f126 = MUL_C(x[9], COEF_CONST(1.3315443865537255));
1365
    f127 = MUL_F(f125, FRAC_CONST((-0.9039892931234433)));
1366
    f128 = MUL_F(x[23], FRAC_CONST((-0.4764341996931612)));
1367
    f129 = f126 + f127;
1368
    f130 = f128 - f127;
1369
    f131 = x[13] + x[19];
1370
    f132 = MUL_C(x[13], COEF_CONST(1.3989068359730781));
1371
    f133 = MUL_F(f131, FRAC_CONST((-0.8032075314806453)));
1372
    f134 = MUL_F(x[19], FRAC_CONST((-0.2075082269882124)));
1373
    f135 = f132 + f133;
1374
    f136 = f134 - f133;
1375
    f137 = x[17] + x[15];
1376
    f138 = MUL_C(x[17], COEF_CONST(1.4125100802019777));
1377
    f139 = MUL_F(f137, FRAC_CONST((-0.6715589548470187)));
1378
    f140 = MUL_F(x[15], FRAC_CONST(0.0693921705079402));
1379
    f141 = f138 + f139;
1380
    f142 = f140 - f139;
1381
    f143 = x[21] + x[11];
1382
    f144 = MUL_C(x[21], COEF_CONST(1.3718313541934939));
1383
    f145 = MUL_F(f143, FRAC_CONST((-0.5141027441932219)));
1384
    f146 = MUL_F(x[11], FRAC_CONST(0.3436258658070501));
1385
    f147 = f144 + f145;
1386
    f148 = f146 - f145;
1387
    f149 = x[25] + x[7];
1388
    f150 = MUL_C(x[25], COEF_CONST(1.2784339185752409));
1389
    f151 = MUL_F(f149, FRAC_CONST((-0.3368898533922200)));
1390
    f152 = MUL_F(x[7], FRAC_CONST(0.6046542117908008));
1391
    f153 = f150 + f151;
1392
    f154 = f152 - f151;
1393
    f155 = x[29] + x[3];
1394
    f156 = MUL_C(x[29], COEF_CONST(1.1359069844201433));
1395
    f157 = MUL_F(f155, FRAC_CONST((-0.1467304744553624)));
1396
    f158 = MUL_F(x[3], FRAC_CONST(0.8424460355094185));
1397
    f159 = f156 + f157;
1398
    f160 = f158 - f157;
1399
    f161 = f118 - f142;
1400
    f162 = f118 + f142;
1401
    f163 = f117 - f141;
1402
    f164 = f117 + f141;
1403
    f165 = f124 - f148;
1404
    f166 = f124 + f148;
1405
    f167 = f123 - f147;
1406
    f168 = f123 + f147;
1407
    f169 = f130 - f154;
1408
    f170 = f130 + f154;
1409
    f171 = f129 - f153;
1410
    f172 = f129 + f153;
1411
    f173 = f136 - f160;
1412
    f174 = f136 + f160;
1413
    f175 = f135 - f159;
1414
    f176 = f135 + f159;
1415
    f177 = f161 + f163;
1416
    f178 = MUL_C(f161, COEF_CONST(1.1758756024193588));
1417
    f179 = MUL_F(f177, FRAC_CONST((-0.9807852804032304)));
1418
    f180 = MUL_F(f163, FRAC_CONST((-0.7856949583871021)));
1419
    f181 = f178 + f179;
1420
    f182 = f180 - f179;
1421
    f183 = f165 + f167;
1422
    f184 = MUL_C(f165, COEF_CONST(1.3870398453221475));
1423
    f185 = MUL_F(f183, FRAC_CONST((-0.5555702330196022)));
1424
    f186 = MUL_F(f167, FRAC_CONST(0.2758993792829431));
1425
    f187 = f184 + f185;
1426
    f188 = f186 - f185;
1427
    f189 = f169 + f171;
1428
    f190 = MUL_F(f169, FRAC_CONST(0.7856949583871022));
1429
    f191 = MUL_F(f189, FRAC_CONST(0.1950903220161283));
1430
    f192 = MUL_C(f171, COEF_CONST(1.1758756024193586));
1431
    f193 = f190 + f191;
1432
    f194 = f192 - f191;
1433
    f195 = f173 + f175;
1434
    f196 = MUL_F(f173, FRAC_CONST((-0.2758993792829430)));
1435
    f197 = MUL_F(f195, FRAC_CONST(0.8314696123025452));
1436
    f198 = MUL_C(f175, COEF_CONST(1.3870398453221475));
1437
    f199 = f196 + f197;
1438
    f200 = f198 - f197;
1439
    f201 = f162 - f170;
1440
    f202 = f162 + f170;
1441
    f203 = f164 - f172;
1442
    f204 = f164 + f172;
1443
    f205 = f166 - f174;
1444
    f206 = f166 + f174;
1445
    f207 = f168 - f176;
1446
    f208 = f168 + f176;
1447
    f209 = f182 - f194;
1448
    f210 = f182 + f194;
1449
    f211 = f181 - f193;
1450
    f212 = f181 + f193;
1451
    f213 = f188 - f200;
1452
    f214 = f188 + f200;
1453
    f215 = f187 - f199;
1454
    f216 = f187 + f199;
1455
    f217 = f201 + f203;
1456
    f218 = MUL_C(f201, COEF_CONST(1.3065629648763766));
1457
    f219 = MUL_F(f217, FRAC_CONST((-0.9238795325112866)));
1458
    f220 = MUL_F(f203, FRAC_CONST((-0.5411961001461967)));
1459
    f221 = f218 + f219;
1460
    f222 = f220 - f219;
1461
    f223 = f205 + f207;
1462
    f224 = MUL_F(f205, FRAC_CONST(0.5411961001461969));
1463
    f225 = MUL_F(f223, FRAC_CONST(0.3826834323650898));
1464
    f226 = MUL_C(f207, COEF_CONST(1.3065629648763766));
1465
    f227 = f224 + f225;
1466
    f228 = f226 - f225;
1467
    f229 = f209 + f211;
1468
    f230 = MUL_C(f209, COEF_CONST(1.3065629648763766));
1469
    f231 = MUL_F(f229, FRAC_CONST((-0.9238795325112866)));
1470
    f232 = MUL_F(f211, FRAC_CONST((-0.5411961001461967)));
1471
    f233 = f230 + f231;
1472
    f234 = f232 - f231;
1473
    f235 = f213 + f215;
1474
    f236 = MUL_F(f213, FRAC_CONST(0.5411961001461969));
1475
    f237 = MUL_F(f235, FRAC_CONST(0.3826834323650898));
1476
    f238 = MUL_C(f215, COEF_CONST(1.3065629648763766));
1477
    f239 = f236 + f237;
1478
    f240 = f238 - f237;
1479
    f241 = f202 - f206;
1480
    f242 = f202 + f206;
1481
    f243 = f204 - f208;
1482
    f244 = f204 + f208;
1483
    f245 = f222 - f228;
1484
    f246 = f222 + f228;
1485
    f247 = f221 - f227;
1486
    f248 = f221 + f227;
1487
    f249 = f210 - f214;
1488
    f250 = f210 + f214;
1489
    f251 = f212 - f216;
1490
    f252 = f212 + f216;
1491
    f253 = f234 - f240;
1492
    f254 = f234 + f240;
1493
    f255 = f233 - f239;
1494
    f256 = f233 + f239;
1495
    f257 = f241 - f243;
1496
    f258 = f241 + f243;
1497
    f259 = MUL_F(f257, FRAC_CONST(0.7071067811865474));
1498
    f260 = MUL_F(f258, FRAC_CONST(0.7071067811865474));
1499
    f261 = f245 - f247;
1500
    f262 = f245 + f247;
1501
    f263 = MUL_F(f261, FRAC_CONST(0.7071067811865474));
1502
    f264 = MUL_F(f262, FRAC_CONST(0.7071067811865474));
1503
    f265 = f249 - f251;
1504
    f266 = f249 + f251;
1505
    f267 = MUL_F(f265, FRAC_CONST(0.7071067811865474));
1506
    f268 = MUL_F(f266, FRAC_CONST(0.7071067811865474));
1507
    f269 = f253 - f255;
1508
    f270 = f253 + f255;
1509
    f271 = MUL_F(f269, FRAC_CONST(0.7071067811865474));
1510
    f272 = MUL_F(f270, FRAC_CONST(0.7071067811865474));
1511
    y[31] = f98 - f242;
1512
    y[0] = f98 + f242;
1513
    y[30] = f100 - f250;
1514
    y[1] = f100 + f250;
1515
    y[29] = f102 - f254;
1516
    y[2] = f102 + f254;
1517
    y[28] = f104 - f246;
1518
    y[3] = f104 + f246;
1519
    y[27] = f106 - f264;
1520
    y[4] = f106 + f264;
1521
    y[26] = f108 - f272;
1522
    y[5] = f108 + f272;
1523
    y[25] = f110 - f268;
1524
    y[6] = f110 + f268;
1525
    y[24] = f112 - f260;
1526
    y[7] = f112 + f260;
1527
    y[23] = f111 - f259;
1528
    y[8] = f111 + f259;
1529
    y[22] = f109 - f267;
1530
    y[9] = f109 + f267;
1531
    y[21] = f107 - f271;
1532
    y[10] = f107 + f271;
1533
    y[20] = f105 - f263;
1534
    y[11] = f105 + f263;
1535
    y[19] = f103 - f248;
1536
    y[12] = f103 + f248;
1537
    y[18] = f101 - f256;
1538
    y[13] = f101 + f256;
1539
    y[17] = f99 - f252;
1540
    y[14] = f99 + f252;
1541
    y[16] = f97 - f244;
1542
    y[15] = f97 + f244;
1543
}
1544
1545
void DCT2_32_unscaled(real_t *y, real_t *x)
1546
{
1547
    real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
1548
    real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
1549
    real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
1550
    real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
1551
    real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
1552
    real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
1553
    real_t f63, f64, f65, f66, f69, f70, f71, f72, f73, f74;
1554
    real_t f75, f76, f77, f78, f79, f80, f81, f83, f85, f86;
1555
    real_t f89, f90, f91, f92, f93, f94, f95, f96, f97, f98;
1556
    real_t f99, f100, f101, f102, f103, f104, f105, f106, f107, f108;
1557
    real_t f109, f110, f111, f112, f113, f114, f115, f116, f117, f118;
1558
    real_t f119, f120, f121, f122, f123, f124, f127, f128, f129, f130;
1559
    real_t f133, f134, f135, f136, f139, f140, f141, f142, f145, f146;
1560
    real_t f147, f148, f149, f150, f151, f152, f153, f154, f155, f156;
1561
    real_t f157, f158, f159, f160, f161, f162, f163, f164, f165, f166;
1562
    real_t f167, f168, f169, f170, f171, f172, f173, f174, f175, f176;
1563
    real_t f177, f178, f179, f180, f181, f182, f183, f184, f185, f186;
1564
    real_t f187, f188, f189, f190, f191, f192, f193, f194, f195, f196;
1565
    real_t f197, f198, f199, f200, f201, f202, f203, f204, f205, f206;
1566
    real_t f207, f208, f209, f210, f211, f212, f213, f214, f215, f216;
1567
    real_t f217, f218, f219, f220, f221, f222, f223, f224, f225, f226;
1568
    real_t f227, f228, f229, f230, f231, f232, f233, f234, f235, f236;
1569
    real_t f237, f238, f239, f240, f241, f242, f243, f244, f247, f248;
1570
    real_t f249, f250, f253, f254, f255, f256, f259, f260, f261, f262;
1571
    real_t f265, f266, f267, f268, f271, f272, f273, f274, f277, f278;
1572
    real_t f279, f280, f283, f284, f285, f286;
1573
1574
    f0 = x[0] - x[31];
1575
    f1 = x[0] + x[31];
1576
    f2 = x[1] - x[30];
1577
    f3 = x[1] + x[30];
1578
    f4 = x[2] - x[29];
1579
    f5 = x[2] + x[29];
1580
    f6 = x[3] - x[28];
1581
    f7 = x[3] + x[28];
1582
    f8 = x[4] - x[27];
1583
    f9 = x[4] + x[27];
1584
    f10 = x[5] - x[26];
1585
    f11 = x[5] + x[26];
1586
    f12 = x[6] - x[25];
1587
    f13 = x[6] + x[25];
1588
    f14 = x[7] - x[24];
1589
    f15 = x[7] + x[24];
1590
    f16 = x[8] - x[23];
1591
    f17 = x[8] + x[23];
1592
    f18 = x[9] - x[22];
1593
    f19 = x[9] + x[22];
1594
    f20 = x[10] - x[21];
1595
    f21 = x[10] + x[21];
1596
    f22 = x[11] - x[20];
1597
    f23 = x[11] + x[20];
1598
    f24 = x[12] - x[19];
1599
    f25 = x[12] + x[19];
1600
    f26 = x[13] - x[18];
1601
    f27 = x[13] + x[18];
1602
    f28 = x[14] - x[17];
1603
    f29 = x[14] + x[17];
1604
    f30 = x[15] - x[16];
1605
    f31 = x[15] + x[16];
1606
    f32 = f1 - f31;
1607
    f33 = f1 + f31;
1608
    f34 = f3 - f29;
1609
    f35 = f3 + f29;
1610
    f36 = f5 - f27;
1611
    f37 = f5 + f27;
1612
    f38 = f7 - f25;
1613
    f39 = f7 + f25;
1614
    f40 = f9 - f23;
1615
    f41 = f9 + f23;
1616
    f42 = f11 - f21;
1617
    f43 = f11 + f21;
1618
    f44 = f13 - f19;
1619
    f45 = f13 + f19;
1620
    f46 = f15 - f17;
1621
    f47 = f15 + f17;
1622
    f48 = f33 - f47;
1623
    f49 = f33 + f47;
1624
    f50 = f35 - f45;
1625
    f51 = f35 + f45;
1626
    f52 = f37 - f43;
1627
    f53 = f37 + f43;
1628
    f54 = f39 - f41;
1629
    f55 = f39 + f41;
1630
    f56 = f49 - f55;
1631
    f57 = f49 + f55;
1632
    f58 = f51 - f53;
1633
    f59 = f51 + f53;
1634
    f60 = f57 - f59;
1635
    y[0] = f57 + f59;
1636
    y[16] = MUL_F(FRAC_CONST(0.7071067811865476), f60);
1637
    f63 = f56 + f58;
1638
    f64 = MUL_C(COEF_CONST(1.3065629648763766), f56);
1639
    f65 = MUL_F(FRAC_CONST(-0.9238795325112866), f63);
1640
    f66 = MUL_F(FRAC_CONST(-0.5411961001461967), f58);
1641
    y[24] = f64 + f65;
1642
    y[8] = f66 - f65;
1643
    f69 = f48 + f54;
1644
    f70 = MUL_C(COEF_CONST(1.1758756024193588), f48);
1645
    f71 = MUL_F(FRAC_CONST(-0.9807852804032304), f69);
1646
    f72 = MUL_F(FRAC_CONST(-0.7856949583871021), f54);
1647
    f73 = f70 + f71;
1648
    f74 = f72 - f71;
1649
    f75 = f50 + f52;
1650
    f76 = MUL_C(COEF_CONST(1.3870398453221473), f50);
1651
    f77 = MUL_F(FRAC_CONST(-0.8314696123025455), f75);
1652
    f78 = MUL_F(FRAC_CONST(-0.2758993792829436), f52);
1653
    f79 = f76 + f77;
1654
    f80 = f78 - f77;
1655
    f81 = f74 - f80;
1656
    y[4] = f74 + f80;
1657
    f83 = MUL_F(FRAC_CONST(0.7071067811865476), f81);
1658
    y[28] = f73 - f79;
1659
    f85 = f73 + f79;
1660
    f86 = MUL_F(FRAC_CONST(0.7071067811865476), f85);
1661
    y[20] = f83 - f86;
1662
    y[12] = f83 + f86;
1663
    f89 = f34 - f36;
1664
    f90 = f34 + f36;
1665
    f91 = f38 - f40;
1666
    f92 = f38 + f40;
1667
    f93 = f42 - f44;
1668
    f94 = f42 + f44;
1669
    f95 = MUL_F(FRAC_CONST(0.7071067811865476), f92);
1670
    f96 = f32 - f95;
1671
    f97 = f32 + f95;
1672
    f98 = f90 + f94;
1673
    f99 = MUL_C(COEF_CONST(1.3065629648763766), f90);
1674
    f100 = MUL_F(FRAC_CONST(-0.9238795325112866), f98);
1675
    f101 = MUL_F(FRAC_CONST(-0.5411961001461967), f94);
1676
    f102 = f99 + f100;
1677
    f103 = f101 - f100;
1678
    f104 = f97 - f103;
1679
    f105 = f97 + f103;
1680
    f106 = f96 - f102;
1681
    f107 = f96 + f102;
1682
    f108 = MUL_F(FRAC_CONST(0.7071067811865476), f91);
1683
    f109 = f46 - f108;
1684
    f110 = f46 + f108;
1685
    f111 = f93 + f89;
1686
    f112 = MUL_C(COEF_CONST(1.3065629648763766), f93);
1687
    f113 = MUL_F(FRAC_CONST(-0.9238795325112866), f111);
1688
    f114 = MUL_F(FRAC_CONST(-0.5411961001461967), f89);
1689
    f115 = f112 + f113;
1690
    f116 = f114 - f113;
1691
    f117 = f110 - f116;
1692
    f118 = f110 + f116;
1693
    f119 = f109 - f115;
1694
    f120 = f109 + f115;
1695
    f121 = f118 + f105;
1696
    f122 = MUL_F(FRAC_CONST(-0.8971675863426361), f118);
1697
    f123 = MUL_F(FRAC_CONST(0.9951847266721968), f121);
1698
    f124 = MUL_C(COEF_CONST(1.0932018670017576), f105);
1699
    y[2] = f122 + f123;
1700
    y[30] = f124 - f123;
1701
    f127 = f107 - f120;
1702
    f128 = MUL_F(FRAC_CONST(-0.6666556584777466), f120);
1703
    f129 = MUL_F(FRAC_CONST(0.9569403357322089), f127);
1704
    f130 = MUL_C(COEF_CONST(1.2472250129866713), f107);
1705
    y[6] = f129 - f128;
1706
    y[26] = f130 - f129;
1707
    f133 = f119 + f106;
1708
    f134 = MUL_F(FRAC_CONST(-0.4105245275223571), f119);
1709
    f135 = MUL_F(FRAC_CONST(0.8819212643483549), f133);
1710
    f136 = MUL_C(COEF_CONST(1.3533180011743529), f106);
1711
    y[10] = f134 + f135;
1712
    y[22] = f136 - f135;
1713
    f139 = f104 - f117;
1714
    f140 = MUL_F(FRAC_CONST(-0.1386171691990915), f117);
1715
    f141 = MUL_F(FRAC_CONST(0.7730104533627370), f139);
1716
    f142 = MUL_C(COEF_CONST(1.4074037375263826), f104);
1717
    y[14] = f141 - f140;
1718
    y[18] = f142 - f141;
1719
    f145 = f2 - f4;
1720
    f146 = f2 + f4;
1721
    f147 = f6 - f8;
1722
    f148 = f6 + f8;
1723
    f149 = f10 - f12;
1724
    f150 = f10 + f12;
1725
    f151 = f14 - f16;
1726
    f152 = f14 + f16;
1727
    f153 = f18 - f20;
1728
    f154 = f18 + f20;
1729
    f155 = f22 - f24;
1730
    f156 = f22 + f24;
1731
    f157 = f26 - f28;
1732
    f158 = f26 + f28;
1733
    f159 = MUL_F(FRAC_CONST(0.7071067811865476), f152);
1734
    f160 = f0 - f159;
1735
    f161 = f0 + f159;
1736
    f162 = f148 + f156;
1737
    f163 = MUL_C(COEF_CONST(1.3065629648763766), f148);
1738
    f164 = MUL_F(FRAC_CONST(-0.9238795325112866), f162);
1739
    f165 = MUL_F(FRAC_CONST(-0.5411961001461967), f156);
1740
    f166 = f163 + f164;
1741
    f167 = f165 - f164;
1742
    f168 = f161 - f167;
1743
    f169 = f161 + f167;
1744
    f170 = f160 - f166;
1745
    f171 = f160 + f166;
1746
    f172 = f146 + f158;
1747
    f173 = MUL_C(COEF_CONST(1.1758756024193588), f146);
1748
    f174 = MUL_F(FRAC_CONST(-0.9807852804032304), f172);
1749
    f175 = MUL_F(FRAC_CONST(-0.7856949583871021), f158);
1750
    f176 = f173 + f174;
1751
    f177 = f175 - f174;
1752
    f178 = f150 + f154;
1753
    f179 = MUL_C(COEF_CONST(1.3870398453221473), f150);
1754
    f180 = MUL_F(FRAC_CONST(-0.8314696123025455), f178);
1755
    f181 = MUL_F(FRAC_CONST(-0.2758993792829436), f154);
1756
    f182 = f179 + f180;
1757
    f183 = f181 - f180;
1758
    f184 = f177 - f183;
1759
    f185 = f177 + f183;
1760
    f186 = MUL_F(FRAC_CONST(0.7071067811865476), f184);
1761
    f187 = f176 - f182;
1762
    f188 = f176 + f182;
1763
    f189 = MUL_F(FRAC_CONST(0.7071067811865476), f188);
1764
    f190 = f186 - f189;
1765
    f191 = f186 + f189;
1766
    f192 = f169 - f185;
1767
    f193 = f169 + f185;
1768
    f194 = f171 - f191;
1769
    f195 = f171 + f191;
1770
    f196 = f170 - f190;
1771
    f197 = f170 + f190;
1772
    f198 = f168 - f187;
1773
    f199 = f168 + f187;
1774
    f200 = MUL_F(FRAC_CONST(0.7071067811865476), f151);
1775
    f201 = f30 - f200;
1776
    f202 = f30 + f200;
1777
    f203 = f155 + f147;
1778
    f204 = MUL_C(COEF_CONST(1.3065629648763766), f155);
1779
    f205 = MUL_F(FRAC_CONST(-0.9238795325112866), f203);
1780
    f206 = MUL_F(FRAC_CONST(-0.5411961001461967), f147);
1781
    f207 = f204 + f205;
1782
    f208 = f206 - f205;
1783
    f209 = f202 - f208;
1784
    f210 = f202 + f208;
1785
    f211 = f201 - f207;
1786
    f212 = f201 + f207;
1787
    f213 = f157 + f145;
1788
    f214 = MUL_C(COEF_CONST(1.1758756024193588), f157);
1789
    f215 = MUL_F(FRAC_CONST(-0.9807852804032304), f213);
1790
    f216 = MUL_F(FRAC_CONST(-0.7856949583871021), f145);
1791
    f217 = f214 + f215;
1792
    f218 = f216 - f215;
1793
    f219 = f153 + f149;
1794
    f220 = MUL_C(COEF_CONST(1.3870398453221473), f153);
1795
    f221 = MUL_F(FRAC_CONST(-0.8314696123025455), f219);
1796
    f222 = MUL_F(FRAC_CONST(-0.2758993792829436), f149);
1797
    f223 = f220 + f221;
1798
    f224 = f222 - f221;
1799
    f225 = f218 - f224;
1800
    f226 = f218 + f224;
1801
    f227 = MUL_F(FRAC_CONST(0.7071067811865476), f225);
1802
    f228 = f217 - f223;
1803
    f229 = f217 + f223;
1804
    f230 = MUL_F(FRAC_CONST(0.7071067811865476), f229);
1805
    f231 = f227 - f230;
1806
    f232 = f227 + f230;
1807
    f233 = f210 - f226;
1808
    f234 = f210 + f226;
1809
    f235 = f212 - f232;
1810
    f236 = f212 + f232;
1811
    f237 = f211 - f231;
1812
    f238 = f211 + f231;
1813
    f239 = f209 - f228;
1814
    f240 = f209 + f228;
1815
    f241 = f234 + f193;
1816
    f242 = MUL_F(FRAC_CONST(-0.9497277818777543), f234);
1817
    f243 = MUL_F(FRAC_CONST(0.9987954562051724), f241);
1818
    f244 = MUL_C(COEF_CONST(1.0478631305325905), f193);
1819
    y[1] = f242 + f243;
1820
    y[31] = f244 - f243;
1821
    f247 = f195 - f236;
1822
    f248 = MUL_F(FRAC_CONST(-0.8424460355094192), f236);
1823
    f249 = MUL_F(FRAC_CONST(0.9891765099647810), f247);
1824
    f250 = MUL_C(COEF_CONST(1.1359069844201428), f195);
1825
    y[3] = f249 - f248;
1826
    y[29] = f250 - f249;
1827
    f253 = f238 + f197;
1828
    f254 = MUL_F(FRAC_CONST(-0.7270510732912801), f238);
1829
    f255 = MUL_F(FRAC_CONST(0.9700312531945440), f253);
1830
    f256 = MUL_C(COEF_CONST(1.2130114330978079), f197);
1831
    y[5] = f254 + f255;
1832
    y[27] = f256 - f255;
1833
    f259 = f199 - f240;
1834
    f260 = MUL_F(FRAC_CONST(-0.6046542117908007), f240);
1835
    f261 = MUL_F(FRAC_CONST(0.9415440651830208), f259);
1836
    f262 = MUL_C(COEF_CONST(1.2784339185752409), f199);
1837
    y[7] = f261 - f260;
1838
    y[25] = f262 - f261;
1839
    f265 = f239 + f198;
1840
    f266 = MUL_F(FRAC_CONST(-0.4764341996931611), f239);
1841
    f267 = MUL_F(FRAC_CONST(0.9039892931234433), f265);
1842
    f268 = MUL_C(COEF_CONST(1.3315443865537255), f198);
1843
    y[9] = f266 + f267;
1844
    y[23] = f268 - f267;
1845
    f271 = f196 - f237;
1846
    f272 = MUL_F(FRAC_CONST(-0.3436258658070505), f237);
1847
    f273 = MUL_F(FRAC_CONST(0.8577286100002721), f271);
1848
    f274 = MUL_C(COEF_CONST(1.3718313541934939), f196);
1849
    y[11] = f273 - f272;
1850
    y[21] = f274 - f273;
1851
    f277 = f235 + f194;
1852
    f278 = MUL_F(FRAC_CONST(-0.2075082269882114), f235);
1853
    f279 = MUL_F(FRAC_CONST(0.8032075314806448), f277);
1854
    f280 = MUL_C(COEF_CONST(1.3989068359730783), f194);
1855
    y[13] = f278 + f279;
1856
    y[19] = f280 - f279;
1857
    f283 = f192 - f233;
1858
    f284 = MUL_F(FRAC_CONST(-0.0693921705079408), f233);
1859
    f285 = MUL_F(FRAC_CONST(0.7409511253549591), f283);
1860
    f286 = MUL_C(COEF_CONST(1.4125100802019774), f192);
1861
    y[15] = f285 - f284;
1862
    y[17] = f286 - f285;
1863
}
1864
1865
#else
1866
1867
1868
4.03G
#define n 32
1869
#define log2n 5
1870
1871
// w_array_real[i] = cos(2*M_PI*i/32)
1872
static const real_t w_array_real[] = {
1873
    FRAC_CONST(1.000000000000000), FRAC_CONST(0.980785279337272),
1874
    FRAC_CONST(0.923879528329380), FRAC_CONST(0.831469603195765),
1875
    FRAC_CONST(0.707106765732237), FRAC_CONST(0.555570210304169),
1876
    FRAC_CONST(0.382683402077046), FRAC_CONST(0.195090284503576),
1877
    FRAC_CONST(0.000000000000000), FRAC_CONST(-0.195090370246552),
1878
    FRAC_CONST(-0.382683482845162), FRAC_CONST(-0.555570282993553),
1879
    FRAC_CONST(-0.707106827549476), FRAC_CONST(-0.831469651765257),
1880
    FRAC_CONST(-0.923879561784627), FRAC_CONST(-0.980785296392607)
1881
};
1882
1883
// w_array_imag[i] = sin(-2*M_PI*i/32)
1884
static const real_t w_array_imag[] = {
1885
    FRAC_CONST(0.000000000000000), FRAC_CONST(-0.195090327375064),
1886
    FRAC_CONST(-0.382683442461104), FRAC_CONST(-0.555570246648862),
1887
    FRAC_CONST(-0.707106796640858), FRAC_CONST(-0.831469627480512),
1888
    FRAC_CONST(-0.923879545057005), FRAC_CONST(-0.980785287864940),
1889
    FRAC_CONST(-1.000000000000000), FRAC_CONST(-0.980785270809601),
1890
    FRAC_CONST(-0.923879511601754), FRAC_CONST(-0.831469578911016),
1891
    FRAC_CONST(-0.707106734823616), FRAC_CONST(-0.555570173959476),
1892
    FRAC_CONST(-0.382683361692986), FRAC_CONST(-0.195090241632088)
1893
};
1894
1895
// FFT decimation in frequency
1896
// 4*16*2+16=128+16=144 multiplications
1897
// 6*16*2+10*8+4*16*2=192+80+128=400 additions
1898
static void fft_dif(real_t * Real, real_t * Imag)
1899
73.2M
{
1900
73.2M
    real_t w_real, w_imag; // For faster access
1901
73.2M
    real_t point1_real, point1_imag, point2_real, point2_imag; // For faster access
1902
73.2M
    uint32_t j, i, i2, w_index; // Counters
1903
1904
    // First 2 stages of 32 point FFT decimation in frequency
1905
    // 4*16*2=64*2=128 multiplications
1906
    // 6*16*2=96*2=192 additions
1907
  // Stage 1 of 32 point FFT decimation in frequency
1908
1.24G
    for (i = 0; i < 16; i++)
1909
1.17G
    {
1910
1.17G
        point1_real = Real[i];
1911
1.17G
        point1_imag = Imag[i];
1912
1.17G
        i2 = i+16;
1913
1.17G
        point2_real = Real[i2];
1914
1.17G
        point2_imag = Imag[i2];
1915
1916
1.17G
        w_real = w_array_real[i];
1917
1.17G
        w_imag = w_array_imag[i];
1918
1919
        // temp1 = x[i] - x[i2]
1920
1.17G
        point1_real -= point2_real;
1921
1.17G
        point1_imag -= point2_imag;
1922
1923
        // x[i1] = x[i] + x[i2]
1924
1.17G
        Real[i] += point2_real;
1925
1.17G
        Imag[i] += point2_imag;
1926
1927
        // x[i2] = (x[i] - x[i2]) * w
1928
1.17G
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1929
1.17G
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1930
1.17G
     }
1931
    // Stage 2 of 32 point FFT decimation in frequency
1932
659M
    for (j = 0, w_index = 0; j < 8; j++, w_index += 2)
1933
586M
    {
1934
586M
        w_real = w_array_real[w_index];
1935
586M
        w_imag = w_array_imag[w_index];
1936
1937
586M
      i = j;
1938
586M
        point1_real = Real[i];
1939
586M
        point1_imag = Imag[i];
1940
586M
        i2 = i+8;
1941
586M
        point2_real = Real[i2];
1942
586M
        point2_imag = Imag[i2];
1943
1944
        // temp1 = x[i] - x[i2]
1945
586M
        point1_real -= point2_real;
1946
586M
        point1_imag -= point2_imag;
1947
1948
        // x[i1] = x[i] + x[i2]
1949
586M
        Real[i] += point2_real;
1950
586M
        Imag[i] += point2_imag;
1951
1952
        // x[i2] = (x[i] - x[i2]) * w
1953
586M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1954
586M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1955
1956
586M
        i = j+16;
1957
586M
        point1_real = Real[i];
1958
586M
        point1_imag = Imag[i];
1959
586M
        i2 = i+8;
1960
586M
        point2_real = Real[i2];
1961
586M
        point2_imag = Imag[i2];
1962
1963
        // temp1 = x[i] - x[i2]
1964
586M
        point1_real -= point2_real;
1965
586M
        point1_imag -= point2_imag;
1966
1967
        // x[i1] = x[i] + x[i2]
1968
586M
        Real[i] += point2_real;
1969
586M
        Imag[i] += point2_imag;
1970
1971
        // x[i2] = (x[i] - x[i2]) * w
1972
586M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1973
586M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1974
586M
    }
1975
1976
    // Stage 3 of 32 point FFT decimation in frequency
1977
    // 2*4*2=16 multiplications
1978
    // 4*4*2+6*4*2=10*8=80 additions
1979
366M
    for (i = 0; i < n; i += 8)
1980
293M
    {
1981
293M
        i2 = i+4;
1982
293M
        point1_real = Real[i];
1983
293M
        point1_imag = Imag[i];
1984
1985
293M
        point2_real = Real[i2];
1986
293M
        point2_imag = Imag[i2];
1987
1988
        // out[i1] = point1 + point2
1989
293M
        Real[i] += point2_real;
1990
293M
        Imag[i] += point2_imag;
1991
1992
        // out[i2] = point1 - point2
1993
293M
        Real[i2] = point1_real - point2_real;
1994
293M
        Imag[i2] = point1_imag - point2_imag;
1995
293M
    }
1996
73.2M
    w_real = w_array_real[4]; // = sqrt(2)/2
1997
    // w_imag = -w_real; // = w_array_imag[4]; // = -sqrt(2)/2
1998
366M
    for (i = 1; i < n; i += 8)
1999
293M
    {
2000
293M
        i2 = i+4;
2001
293M
        point1_real = Real[i];
2002
293M
        point1_imag = Imag[i];
2003
2004
293M
        point2_real = Real[i2];
2005
293M
        point2_imag = Imag[i2];
2006
2007
        // temp1 = x[i] - x[i2]
2008
293M
        point1_real -= point2_real;
2009
293M
        point1_imag -= point2_imag;
2010
2011
        // x[i1] = x[i] + x[i2]
2012
293M
        Real[i] += point2_real;
2013
293M
        Imag[i] += point2_imag;
2014
2015
        // x[i2] = (x[i] - x[i2]) * w
2016
293M
        Real[i2] = MUL_F(point1_real+point1_imag, w_real);
2017
293M
        Imag[i2] = MUL_F(point1_imag-point1_real, w_real);
2018
293M
    }
2019
366M
    for (i = 2; i < n; i += 8)
2020
293M
    {
2021
293M
        i2 = i+4;
2022
293M
        point1_real = Real[i];
2023
293M
        point1_imag = Imag[i];
2024
2025
293M
        point2_real = Real[i2];
2026
293M
        point2_imag = Imag[i2];
2027
2028
        // x[i] = x[i] + x[i2]
2029
293M
        Real[i] += point2_real;
2030
293M
        Imag[i] += point2_imag;
2031
2032
        // x[i2] = (x[i] - x[i2]) * (-i)
2033
293M
        Real[i2] = point1_imag - point2_imag;
2034
293M
        Imag[i2] = point2_real - point1_real;
2035
293M
    }
2036
73.2M
    w_real = w_array_real[12]; // = -sqrt(2)/2
2037
    // w_imag = w_real; // = w_array_imag[12]; // = -sqrt(2)/2
2038
366M
    for (i = 3; i < n; i += 8)
2039
293M
    {
2040
293M
        i2 = i+4;
2041
293M
        point1_real = Real[i];
2042
293M
        point1_imag = Imag[i];
2043
2044
293M
        point2_real = Real[i2];
2045
293M
        point2_imag = Imag[i2];
2046
2047
        // temp1 = x[i] - x[i2]
2048
293M
        point1_real -= point2_real;
2049
293M
        point1_imag -= point2_imag;
2050
2051
        // x[i1] = x[i] + x[i2]
2052
293M
        Real[i] += point2_real;
2053
293M
        Imag[i] += point2_imag;
2054
2055
        // x[i2] = (x[i] - x[i2]) * w
2056
293M
        Real[i2] = MUL_F(point1_real-point1_imag, w_real);
2057
293M
        Imag[i2] = MUL_F(point1_real+point1_imag, w_real);
2058
293M
    }
2059
2060
2061
    // Stage 4 of 32 point FFT decimation in frequency (no multiplications)
2062
    // 16*4=64 additions
2063
659M
    for (i = 0; i < n; i += 4)
2064
586M
    {
2065
586M
        i2 = i+2;
2066
586M
        point1_real = Real[i];
2067
586M
        point1_imag = Imag[i];
2068
2069
586M
        point2_real = Real[i2];
2070
586M
        point2_imag = Imag[i2];
2071
2072
        // x[i1] = x[i] + x[i2]
2073
586M
        Real[i] += point2_real;
2074
586M
        Imag[i] += point2_imag;
2075
2076
        // x[i2] = x[i] - x[i2]
2077
586M
        Real[i2] = point1_real - point2_real;
2078
586M
        Imag[i2] = point1_imag - point2_imag;
2079
586M
    }
2080
659M
    for (i = 1; i < n; i += 4)
2081
586M
    {
2082
586M
        i2 = i+2;
2083
586M
        point1_real = Real[i];
2084
586M
        point1_imag = Imag[i];
2085
2086
586M
        point2_real = Real[i2];
2087
586M
        point2_imag = Imag[i2];
2088
2089
        // x[i] = x[i] + x[i2]
2090
586M
        Real[i] += point2_real;
2091
586M
        Imag[i] += point2_imag;
2092
2093
        // x[i2] = (x[i] - x[i2]) * (-i)
2094
586M
        Real[i2] = point1_imag - point2_imag;
2095
586M
        Imag[i2] = point2_real - point1_real;
2096
586M
    }
2097
2098
    // Stage 5 of 32 point FFT decimation in frequency (no multiplications)
2099
    // 16*4=64 additions
2100
1.24G
    for (i = 0; i < n; i += 2)
2101
1.17G
    {
2102
1.17G
        i2 = i+1;
2103
1.17G
        point1_real = Real[i];
2104
1.17G
        point1_imag = Imag[i];
2105
2106
1.17G
        point2_real = Real[i2];
2107
1.17G
        point2_imag = Imag[i2];
2108
2109
        // out[i1] = point1 + point2
2110
1.17G
        Real[i] += point2_real;
2111
1.17G
        Imag[i] += point2_imag;
2112
2113
        // out[i2] = point1 - point2
2114
1.17G
        Real[i2] = point1_real - point2_real;
2115
1.17G
        Imag[i2] = point1_imag - point2_imag;
2116
1.17G
    }
2117
2118
#ifdef REORDER_IN_FFT
2119
    FFTReorder(Real, Imag);
2120
#endif // #ifdef REORDER_IN_FFT
2121
73.2M
}
sbr_dct.c:fft_dif
Line
Count
Source
1899
36.6M
{
1900
36.6M
    real_t w_real, w_imag; // For faster access
1901
36.6M
    real_t point1_real, point1_imag, point2_real, point2_imag; // For faster access
1902
36.6M
    uint32_t j, i, i2, w_index; // Counters
1903
1904
    // First 2 stages of 32 point FFT decimation in frequency
1905
    // 4*16*2=64*2=128 multiplications
1906
    // 6*16*2=96*2=192 additions
1907
  // Stage 1 of 32 point FFT decimation in frequency
1908
622M
    for (i = 0; i < 16; i++)
1909
586M
    {
1910
586M
        point1_real = Real[i];
1911
586M
        point1_imag = Imag[i];
1912
586M
        i2 = i+16;
1913
586M
        point2_real = Real[i2];
1914
586M
        point2_imag = Imag[i2];
1915
1916
586M
        w_real = w_array_real[i];
1917
586M
        w_imag = w_array_imag[i];
1918
1919
        // temp1 = x[i] - x[i2]
1920
586M
        point1_real -= point2_real;
1921
586M
        point1_imag -= point2_imag;
1922
1923
        // x[i1] = x[i] + x[i2]
1924
586M
        Real[i] += point2_real;
1925
586M
        Imag[i] += point2_imag;
1926
1927
        // x[i2] = (x[i] - x[i2]) * w
1928
586M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1929
586M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1930
586M
     }
1931
    // Stage 2 of 32 point FFT decimation in frequency
1932
329M
    for (j = 0, w_index = 0; j < 8; j++, w_index += 2)
1933
293M
    {
1934
293M
        w_real = w_array_real[w_index];
1935
293M
        w_imag = w_array_imag[w_index];
1936
1937
293M
      i = j;
1938
293M
        point1_real = Real[i];
1939
293M
        point1_imag = Imag[i];
1940
293M
        i2 = i+8;
1941
293M
        point2_real = Real[i2];
1942
293M
        point2_imag = Imag[i2];
1943
1944
        // temp1 = x[i] - x[i2]
1945
293M
        point1_real -= point2_real;
1946
293M
        point1_imag -= point2_imag;
1947
1948
        // x[i1] = x[i] + x[i2]
1949
293M
        Real[i] += point2_real;
1950
293M
        Imag[i] += point2_imag;
1951
1952
        // x[i2] = (x[i] - x[i2]) * w
1953
293M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1954
293M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1955
1956
293M
        i = j+16;
1957
293M
        point1_real = Real[i];
1958
293M
        point1_imag = Imag[i];
1959
293M
        i2 = i+8;
1960
293M
        point2_real = Real[i2];
1961
293M
        point2_imag = Imag[i2];
1962
1963
        // temp1 = x[i] - x[i2]
1964
293M
        point1_real -= point2_real;
1965
293M
        point1_imag -= point2_imag;
1966
1967
        // x[i1] = x[i] + x[i2]
1968
293M
        Real[i] += point2_real;
1969
293M
        Imag[i] += point2_imag;
1970
1971
        // x[i2] = (x[i] - x[i2]) * w
1972
293M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1973
293M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1974
293M
    }
1975
1976
    // Stage 3 of 32 point FFT decimation in frequency
1977
    // 2*4*2=16 multiplications
1978
    // 4*4*2+6*4*2=10*8=80 additions
1979
183M
    for (i = 0; i < n; i += 8)
1980
146M
    {
1981
146M
        i2 = i+4;
1982
146M
        point1_real = Real[i];
1983
146M
        point1_imag = Imag[i];
1984
1985
146M
        point2_real = Real[i2];
1986
146M
        point2_imag = Imag[i2];
1987
1988
        // out[i1] = point1 + point2
1989
146M
        Real[i] += point2_real;
1990
146M
        Imag[i] += point2_imag;
1991
1992
        // out[i2] = point1 - point2
1993
146M
        Real[i2] = point1_real - point2_real;
1994
146M
        Imag[i2] = point1_imag - point2_imag;
1995
146M
    }
1996
36.6M
    w_real = w_array_real[4]; // = sqrt(2)/2
1997
    // w_imag = -w_real; // = w_array_imag[4]; // = -sqrt(2)/2
1998
183M
    for (i = 1; i < n; i += 8)
1999
146M
    {
2000
146M
        i2 = i+4;
2001
146M
        point1_real = Real[i];
2002
146M
        point1_imag = Imag[i];
2003
2004
146M
        point2_real = Real[i2];
2005
146M
        point2_imag = Imag[i2];
2006
2007
        // temp1 = x[i] - x[i2]
2008
146M
        point1_real -= point2_real;
2009
146M
        point1_imag -= point2_imag;
2010
2011
        // x[i1] = x[i] + x[i2]
2012
146M
        Real[i] += point2_real;
2013
146M
        Imag[i] += point2_imag;
2014
2015
        // x[i2] = (x[i] - x[i2]) * w
2016
146M
        Real[i2] = MUL_F(point1_real+point1_imag, w_real);
2017
146M
        Imag[i2] = MUL_F(point1_imag-point1_real, w_real);
2018
146M
    }
2019
183M
    for (i = 2; i < n; i += 8)
2020
146M
    {
2021
146M
        i2 = i+4;
2022
146M
        point1_real = Real[i];
2023
146M
        point1_imag = Imag[i];
2024
2025
146M
        point2_real = Real[i2];
2026
146M
        point2_imag = Imag[i2];
2027
2028
        // x[i] = x[i] + x[i2]
2029
146M
        Real[i] += point2_real;
2030
146M
        Imag[i] += point2_imag;
2031
2032
        // x[i2] = (x[i] - x[i2]) * (-i)
2033
146M
        Real[i2] = point1_imag - point2_imag;
2034
146M
        Imag[i2] = point2_real - point1_real;
2035
146M
    }
2036
36.6M
    w_real = w_array_real[12]; // = -sqrt(2)/2
2037
    // w_imag = w_real; // = w_array_imag[12]; // = -sqrt(2)/2
2038
183M
    for (i = 3; i < n; i += 8)
2039
146M
    {
2040
146M
        i2 = i+4;
2041
146M
        point1_real = Real[i];
2042
146M
        point1_imag = Imag[i];
2043
2044
146M
        point2_real = Real[i2];
2045
146M
        point2_imag = Imag[i2];
2046
2047
        // temp1 = x[i] - x[i2]
2048
146M
        point1_real -= point2_real;
2049
146M
        point1_imag -= point2_imag;
2050
2051
        // x[i1] = x[i] + x[i2]
2052
146M
        Real[i] += point2_real;
2053
146M
        Imag[i] += point2_imag;
2054
2055
        // x[i2] = (x[i] - x[i2]) * w
2056
146M
        Real[i2] = MUL_F(point1_real-point1_imag, w_real);
2057
146M
        Imag[i2] = MUL_F(point1_real+point1_imag, w_real);
2058
146M
    }
2059
2060
2061
    // Stage 4 of 32 point FFT decimation in frequency (no multiplications)
2062
    // 16*4=64 additions
2063
329M
    for (i = 0; i < n; i += 4)
2064
293M
    {
2065
293M
        i2 = i+2;
2066
293M
        point1_real = Real[i];
2067
293M
        point1_imag = Imag[i];
2068
2069
293M
        point2_real = Real[i2];
2070
293M
        point2_imag = Imag[i2];
2071
2072
        // x[i1] = x[i] + x[i2]
2073
293M
        Real[i] += point2_real;
2074
293M
        Imag[i] += point2_imag;
2075
2076
        // x[i2] = x[i] - x[i2]
2077
293M
        Real[i2] = point1_real - point2_real;
2078
293M
        Imag[i2] = point1_imag - point2_imag;
2079
293M
    }
2080
329M
    for (i = 1; i < n; i += 4)
2081
293M
    {
2082
293M
        i2 = i+2;
2083
293M
        point1_real = Real[i];
2084
293M
        point1_imag = Imag[i];
2085
2086
293M
        point2_real = Real[i2];
2087
293M
        point2_imag = Imag[i2];
2088
2089
        // x[i] = x[i] + x[i2]
2090
293M
        Real[i] += point2_real;
2091
293M
        Imag[i] += point2_imag;
2092
2093
        // x[i2] = (x[i] - x[i2]) * (-i)
2094
293M
        Real[i2] = point1_imag - point2_imag;
2095
293M
        Imag[i2] = point2_real - point1_real;
2096
293M
    }
2097
2098
    // Stage 5 of 32 point FFT decimation in frequency (no multiplications)
2099
    // 16*4=64 additions
2100
622M
    for (i = 0; i < n; i += 2)
2101
586M
    {
2102
586M
        i2 = i+1;
2103
586M
        point1_real = Real[i];
2104
586M
        point1_imag = Imag[i];
2105
2106
586M
        point2_real = Real[i2];
2107
586M
        point2_imag = Imag[i2];
2108
2109
        // out[i1] = point1 + point2
2110
586M
        Real[i] += point2_real;
2111
586M
        Imag[i] += point2_imag;
2112
2113
        // out[i2] = point1 - point2
2114
586M
        Real[i2] = point1_real - point2_real;
2115
586M
        Imag[i2] = point1_imag - point2_imag;
2116
586M
    }
2117
2118
#ifdef REORDER_IN_FFT
2119
    FFTReorder(Real, Imag);
2120
#endif // #ifdef REORDER_IN_FFT
2121
36.6M
}
sbr_dct.c:fft_dif
Line
Count
Source
1899
36.6M
{
1900
36.6M
    real_t w_real, w_imag; // For faster access
1901
36.6M
    real_t point1_real, point1_imag, point2_real, point2_imag; // For faster access
1902
36.6M
    uint32_t j, i, i2, w_index; // Counters
1903
1904
    // First 2 stages of 32 point FFT decimation in frequency
1905
    // 4*16*2=64*2=128 multiplications
1906
    // 6*16*2=96*2=192 additions
1907
  // Stage 1 of 32 point FFT decimation in frequency
1908
622M
    for (i = 0; i < 16; i++)
1909
586M
    {
1910
586M
        point1_real = Real[i];
1911
586M
        point1_imag = Imag[i];
1912
586M
        i2 = i+16;
1913
586M
        point2_real = Real[i2];
1914
586M
        point2_imag = Imag[i2];
1915
1916
586M
        w_real = w_array_real[i];
1917
586M
        w_imag = w_array_imag[i];
1918
1919
        // temp1 = x[i] - x[i2]
1920
586M
        point1_real -= point2_real;
1921
586M
        point1_imag -= point2_imag;
1922
1923
        // x[i1] = x[i] + x[i2]
1924
586M
        Real[i] += point2_real;
1925
586M
        Imag[i] += point2_imag;
1926
1927
        // x[i2] = (x[i] - x[i2]) * w
1928
586M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1929
586M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1930
586M
     }
1931
    // Stage 2 of 32 point FFT decimation in frequency
1932
329M
    for (j = 0, w_index = 0; j < 8; j++, w_index += 2)
1933
293M
    {
1934
293M
        w_real = w_array_real[w_index];
1935
293M
        w_imag = w_array_imag[w_index];
1936
1937
293M
      i = j;
1938
293M
        point1_real = Real[i];
1939
293M
        point1_imag = Imag[i];
1940
293M
        i2 = i+8;
1941
293M
        point2_real = Real[i2];
1942
293M
        point2_imag = Imag[i2];
1943
1944
        // temp1 = x[i] - x[i2]
1945
293M
        point1_real -= point2_real;
1946
293M
        point1_imag -= point2_imag;
1947
1948
        // x[i1] = x[i] + x[i2]
1949
293M
        Real[i] += point2_real;
1950
293M
        Imag[i] += point2_imag;
1951
1952
        // x[i2] = (x[i] - x[i2]) * w
1953
293M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1954
293M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1955
1956
293M
        i = j+16;
1957
293M
        point1_real = Real[i];
1958
293M
        point1_imag = Imag[i];
1959
293M
        i2 = i+8;
1960
293M
        point2_real = Real[i2];
1961
293M
        point2_imag = Imag[i2];
1962
1963
        // temp1 = x[i] - x[i2]
1964
293M
        point1_real -= point2_real;
1965
293M
        point1_imag -= point2_imag;
1966
1967
        // x[i1] = x[i] + x[i2]
1968
293M
        Real[i] += point2_real;
1969
293M
        Imag[i] += point2_imag;
1970
1971
        // x[i2] = (x[i] - x[i2]) * w
1972
293M
        Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
1973
293M
        Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
1974
293M
    }
1975
1976
    // Stage 3 of 32 point FFT decimation in frequency
1977
    // 2*4*2=16 multiplications
1978
    // 4*4*2+6*4*2=10*8=80 additions
1979
183M
    for (i = 0; i < n; i += 8)
1980
146M
    {
1981
146M
        i2 = i+4;
1982
146M
        point1_real = Real[i];
1983
146M
        point1_imag = Imag[i];
1984
1985
146M
        point2_real = Real[i2];
1986
146M
        point2_imag = Imag[i2];
1987
1988
        // out[i1] = point1 + point2
1989
146M
        Real[i] += point2_real;
1990
146M
        Imag[i] += point2_imag;
1991
1992
        // out[i2] = point1 - point2
1993
146M
        Real[i2] = point1_real - point2_real;
1994
146M
        Imag[i2] = point1_imag - point2_imag;
1995
146M
    }
1996
36.6M
    w_real = w_array_real[4]; // = sqrt(2)/2
1997
    // w_imag = -w_real; // = w_array_imag[4]; // = -sqrt(2)/2
1998
183M
    for (i = 1; i < n; i += 8)
1999
146M
    {
2000
146M
        i2 = i+4;
2001
146M
        point1_real = Real[i];
2002
146M
        point1_imag = Imag[i];
2003
2004
146M
        point2_real = Real[i2];
2005
146M
        point2_imag = Imag[i2];
2006
2007
        // temp1 = x[i] - x[i2]
2008
146M
        point1_real -= point2_real;
2009
146M
        point1_imag -= point2_imag;
2010
2011
        // x[i1] = x[i] + x[i2]
2012
146M
        Real[i] += point2_real;
2013
146M
        Imag[i] += point2_imag;
2014
2015
        // x[i2] = (x[i] - x[i2]) * w
2016
146M
        Real[i2] = MUL_F(point1_real+point1_imag, w_real);
2017
146M
        Imag[i2] = MUL_F(point1_imag-point1_real, w_real);
2018
146M
    }
2019
183M
    for (i = 2; i < n; i += 8)
2020
146M
    {
2021
146M
        i2 = i+4;
2022
146M
        point1_real = Real[i];
2023
146M
        point1_imag = Imag[i];
2024
2025
146M
        point2_real = Real[i2];
2026
146M
        point2_imag = Imag[i2];
2027
2028
        // x[i] = x[i] + x[i2]
2029
146M
        Real[i] += point2_real;
2030
146M
        Imag[i] += point2_imag;
2031
2032
        // x[i2] = (x[i] - x[i2]) * (-i)
2033
146M
        Real[i2] = point1_imag - point2_imag;
2034
146M
        Imag[i2] = point2_real - point1_real;
2035
146M
    }
2036
36.6M
    w_real = w_array_real[12]; // = -sqrt(2)/2
2037
    // w_imag = w_real; // = w_array_imag[12]; // = -sqrt(2)/2
2038
183M
    for (i = 3; i < n; i += 8)
2039
146M
    {
2040
146M
        i2 = i+4;
2041
146M
        point1_real = Real[i];
2042
146M
        point1_imag = Imag[i];
2043
2044
146M
        point2_real = Real[i2];
2045
146M
        point2_imag = Imag[i2];
2046
2047
        // temp1 = x[i] - x[i2]
2048
146M
        point1_real -= point2_real;
2049
146M
        point1_imag -= point2_imag;
2050
2051
        // x[i1] = x[i] + x[i2]
2052
146M
        Real[i] += point2_real;
2053
146M
        Imag[i] += point2_imag;
2054
2055
        // x[i2] = (x[i] - x[i2]) * w
2056
146M
        Real[i2] = MUL_F(point1_real-point1_imag, w_real);
2057
146M
        Imag[i2] = MUL_F(point1_real+point1_imag, w_real);
2058
146M
    }
2059
2060
2061
    // Stage 4 of 32 point FFT decimation in frequency (no multiplications)
2062
    // 16*4=64 additions
2063
329M
    for (i = 0; i < n; i += 4)
2064
293M
    {
2065
293M
        i2 = i+2;
2066
293M
        point1_real = Real[i];
2067
293M
        point1_imag = Imag[i];
2068
2069
293M
        point2_real = Real[i2];
2070
293M
        point2_imag = Imag[i2];
2071
2072
        // x[i1] = x[i] + x[i2]
2073
293M
        Real[i] += point2_real;
2074
293M
        Imag[i] += point2_imag;
2075
2076
        // x[i2] = x[i] - x[i2]
2077
293M
        Real[i2] = point1_real - point2_real;
2078
293M
        Imag[i2] = point1_imag - point2_imag;
2079
293M
    }
2080
329M
    for (i = 1; i < n; i += 4)
2081
293M
    {
2082
293M
        i2 = i+2;
2083
293M
        point1_real = Real[i];
2084
293M
        point1_imag = Imag[i];
2085
2086
293M
        point2_real = Real[i2];
2087
293M
        point2_imag = Imag[i2];
2088
2089
        // x[i] = x[i] + x[i2]
2090
293M
        Real[i] += point2_real;
2091
293M
        Imag[i] += point2_imag;
2092
2093
        // x[i2] = (x[i] - x[i2]) * (-i)
2094
293M
        Real[i2] = point1_imag - point2_imag;
2095
293M
        Imag[i2] = point2_real - point1_real;
2096
293M
    }
2097
2098
    // Stage 5 of 32 point FFT decimation in frequency (no multiplications)
2099
    // 16*4=64 additions
2100
622M
    for (i = 0; i < n; i += 2)
2101
586M
    {
2102
586M
        i2 = i+1;
2103
586M
        point1_real = Real[i];
2104
586M
        point1_imag = Imag[i];
2105
2106
586M
        point2_real = Real[i2];
2107
586M
        point2_imag = Imag[i2];
2108
2109
        // out[i1] = point1 + point2
2110
586M
        Real[i] += point2_real;
2111
586M
        Imag[i] += point2_imag;
2112
2113
        // out[i2] = point1 - point2
2114
586M
        Real[i2] = point1_real - point2_real;
2115
586M
        Imag[i2] = point1_imag - point2_imag;
2116
586M
    }
2117
2118
#ifdef REORDER_IN_FFT
2119
    FFTReorder(Real, Imag);
2120
#endif // #ifdef REORDER_IN_FFT
2121
36.6M
}
2122
#undef n
2123
#undef log2n
2124
2125
static const real_t dct4_64_tab[] = {
2126
    COEF_CONST(0.999924719333649), COEF_CONST(0.998118102550507),
2127
    COEF_CONST(0.993906974792480), COEF_CONST(0.987301409244537),
2128
    COEF_CONST(0.978317379951477), COEF_CONST(0.966976463794708),
2129
    COEF_CONST(0.953306019306183), COEF_CONST(0.937339007854462),
2130
    COEF_CONST(0.919113874435425), COEF_CONST(0.898674488067627),
2131
    COEF_CONST(0.876070082187653), COEF_CONST(0.851355195045471),
2132
    COEF_CONST(0.824589252471924), COEF_CONST(0.795836925506592),
2133
    COEF_CONST(0.765167236328125), COEF_CONST(0.732654273509979),
2134
    COEF_CONST(0.698376238346100), COEF_CONST(0.662415742874146),
2135
    COEF_CONST(0.624859452247620), COEF_CONST(0.585797846317291),
2136
    COEF_CONST(0.545324981212616), COEF_CONST(0.503538429737091),
2137
    COEF_CONST(0.460538715124130), COEF_CONST(0.416429549455643),
2138
    COEF_CONST(0.371317148208618), COEF_CONST(0.325310230255127),
2139
    COEF_CONST(0.278519600629807), COEF_CONST(0.231058135628700),
2140
    COEF_CONST(0.183039888739586), COEF_CONST(0.134580686688423),
2141
    COEF_CONST(0.085797272622585), COEF_CONST(0.036807164549828),
2142
    COEF_CONST(-1.012196302413940), COEF_CONST(-1.059438824653626),
2143
    COEF_CONST(-1.104129195213318), COEF_CONST(-1.146159529685974),
2144
    COEF_CONST(-1.185428738594055), COEF_CONST(-1.221842169761658),
2145
    COEF_CONST(-1.255311965942383), COEF_CONST(-1.285757660865784),
2146
    COEF_CONST(-1.313105940818787), COEF_CONST(-1.337290763854981),
2147
    COEF_CONST(-1.358253836631775), COEF_CONST(-1.375944852828980),
2148
    COEF_CONST(-1.390321016311646), COEF_CONST(-1.401347875595093),
2149
    COEF_CONST(-1.408998727798462), COEF_CONST(-1.413255214691162),
2150
    COEF_CONST(-1.414107084274292), COEF_CONST(-1.411552190780640),
2151
    COEF_CONST(-1.405596733093262), COEF_CONST(-1.396255016326904),
2152
    COEF_CONST(-1.383549690246582), COEF_CONST(-1.367511272430420),
2153
    COEF_CONST(-1.348178386688232), COEF_CONST(-1.325597524642944),
2154
    COEF_CONST(-1.299823284149170), COEF_CONST(-1.270917654037476),
2155
    COEF_CONST(-1.238950133323669), COEF_CONST(-1.203998088836670),
2156
    COEF_CONST(-1.166145324707031), COEF_CONST(-1.125483393669128),
2157
    COEF_CONST(-1.082109928131104), COEF_CONST(-1.036129593849182),
2158
    COEF_CONST(-0.987653195858002), COEF_CONST(-0.936797380447388),
2159
    COEF_CONST(-0.883684754371643), COEF_CONST(-0.828443288803101),
2160
    COEF_CONST(-0.771206021308899), COEF_CONST(-0.712110757827759),
2161
    COEF_CONST(-0.651300072669983), COEF_CONST(-0.588920354843140),
2162
    COEF_CONST(-0.525121808052063), COEF_CONST(-0.460058242082596),
2163
    COEF_CONST(-0.393886327743530), COEF_CONST(-0.326765477657318),
2164
    COEF_CONST(-0.258857429027557), COEF_CONST(-0.190325915813446),
2165
    COEF_CONST(-0.121335685253143), COEF_CONST(-0.052053272724152),
2166
    COEF_CONST(0.017354607582092), COEF_CONST(0.086720645427704),
2167
    COEF_CONST(0.155877828598022), COEF_CONST(0.224659323692322),
2168
    COEF_CONST(0.292899727821350), COEF_CONST(0.360434412956238),
2169
    COEF_CONST(0.427100926637650), COEF_CONST(0.492738455533981),
2170
    COEF_CONST(0.557188928127289), COEF_CONST(0.620297133922577),
2171
    COEF_CONST(0.681910991668701), COEF_CONST(0.741881847381592),
2172
    COEF_CONST(0.800065577030182), COEF_CONST(0.856321990489960),
2173
    COEF_CONST(0.910515367984772), COEF_CONST(0.962515234947205),
2174
    COEF_CONST(1.000000000000000), COEF_CONST(0.998795449733734),
2175
    COEF_CONST(0.995184719562531), COEF_CONST(0.989176511764526),
2176
    COEF_CONST(0.980785250663757), COEF_CONST(0.970031261444092),
2177
    COEF_CONST(0.956940352916718), COEF_CONST(0.941544055938721),
2178
    COEF_CONST(0.923879504203796), COEF_CONST(0.903989315032959),
2179
    COEF_CONST(0.881921231746674), COEF_CONST(0.857728600502014),
2180
    COEF_CONST(0.831469595432281), COEF_CONST(0.803207516670227),
2181
    COEF_CONST(0.773010432720184), COEF_CONST(0.740951120853424),
2182
    COEF_CONST(0.707106769084930), COEF_CONST(0.671558916568756),
2183
    COEF_CONST(0.634393274784088), COEF_CONST(0.595699310302734),
2184
    COEF_CONST(0.555570185184479), COEF_CONST(0.514102697372437),
2185
    COEF_CONST(0.471396654844284), COEF_CONST(0.427555114030838),
2186
    COEF_CONST(0.382683426141739), COEF_CONST(0.336889833211899),
2187
    COEF_CONST(0.290284633636475), COEF_CONST(0.242980122566223),
2188
    COEF_CONST(0.195090234279633), COEF_CONST(0.146730497479439),
2189
    COEF_CONST(0.098017133772373), COEF_CONST(0.049067649990320),
2190
    COEF_CONST(-1.000000000000000), COEF_CONST(-1.047863125801086),
2191
    COEF_CONST(-1.093201875686646), COEF_CONST(-1.135906934738159),
2192
    COEF_CONST(-1.175875544548035), COEF_CONST(-1.213011503219605),
2193
    COEF_CONST(-1.247225046157837), COEF_CONST(-1.278433918952942),
2194
    COEF_CONST(-1.306562900543213), COEF_CONST(-1.331544399261475),
2195
    COEF_CONST(-1.353317975997925), COEF_CONST(-1.371831417083740),
2196
    COEF_CONST(-1.387039899826050), COEF_CONST(-1.398906826972961),
2197
    COEF_CONST(-1.407403707504273), COEF_CONST(-1.412510156631470),
2198
    COEF_CONST(0), COEF_CONST(-1.412510156631470),
2199
    COEF_CONST(-1.407403707504273), COEF_CONST(-1.398906826972961),
2200
    COEF_CONST(-1.387039899826050), COEF_CONST(-1.371831417083740),
2201
    COEF_CONST(-1.353317975997925), COEF_CONST(-1.331544399261475),
2202
    COEF_CONST(-1.306562900543213), COEF_CONST(-1.278433918952942),
2203
    COEF_CONST(-1.247225046157837), COEF_CONST(-1.213011384010315),
2204
    COEF_CONST(-1.175875544548035), COEF_CONST(-1.135907053947449),
2205
    COEF_CONST(-1.093201875686646), COEF_CONST(-1.047863125801086),
2206
    COEF_CONST(-1.000000000000000), COEF_CONST(-0.949727773666382),
2207
    COEF_CONST(-0.897167563438416), COEF_CONST(-0.842446029186249),
2208
    COEF_CONST(-0.785694956779480), COEF_CONST(-0.727051079273224),
2209
    COEF_CONST(-0.666655659675598), COEF_CONST(-0.604654192924500),
2210
    COEF_CONST(-0.541196048259735), COEF_CONST(-0.476434230804443),
2211
    COEF_CONST(-0.410524487495422), COEF_CONST(-0.343625843524933),
2212
    COEF_CONST(-0.275899350643158), COEF_CONST(-0.207508206367493),
2213
    COEF_CONST(-0.138617098331451), COEF_CONST(-0.069392144680023),
2214
    COEF_CONST(0), COEF_CONST(0.069392263889313),
2215
    COEF_CONST(0.138617157936096), COEF_CONST(0.207508206367493),
2216
    COEF_CONST(0.275899469852448), COEF_CONST(0.343625962734222),
2217
    COEF_CONST(0.410524636507034), COEF_CONST(0.476434201002121),
2218
    COEF_CONST(0.541196107864380), COEF_CONST(0.604654192924500),
2219
    COEF_CONST(0.666655719280243), COEF_CONST(0.727051138877869),
2220
    COEF_CONST(0.785695075988770), COEF_CONST(0.842446029186249),
2221
    COEF_CONST(0.897167563438416), COEF_CONST(0.949727773666382)
2222
};
2223
2224
/* size 64 only! */
2225
void dct4_kernel(real_t * in_real, real_t * in_imag, real_t * out_real, real_t * out_imag)
2226
73.2M
{
2227
    // Tables with bit reverse values for 5 bits, bit reverse of i at i-th position
2228
73.2M
    const uint8_t bit_rev_tab[32] = { 0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31 };
2229
73.2M
    uint32_t i, i_rev;
2230
2231
    /* Step 2: modulate */
2232
    // 3*32=96 multiplications
2233
    // 3*32=96 additions
2234
2.41G
    for (i = 0; i < 32; i++)
2235
2.34G
    {
2236
2.34G
      real_t x_re, x_im, tmp;
2237
2.34G
      x_re = in_real[i];
2238
2.34G
      x_im = in_imag[i];
2239
2.34G
        tmp =        MUL_C(x_re + x_im, dct4_64_tab[i]);
2240
2.34G
        in_real[i] = MUL_C(x_im, dct4_64_tab[i + 64]) + tmp;
2241
2.34G
        in_imag[i] = MUL_C(x_re, dct4_64_tab[i + 32]) + tmp;
2242
2.34G
    }
2243
2244
    /* Step 3: FFT, but with output in bit reverse order */
2245
73.2M
    fft_dif(in_real, in_imag);
2246
2247
    /* Step 4: modulate + bitreverse reordering */
2248
    // 3*31+2=95 multiplications
2249
    // 3*31+2=95 additions
2250
1.24G
    for (i = 0; i < 16; i++)
2251
1.17G
    {
2252
1.17G
      real_t x_re, x_im, tmp;
2253
1.17G
      i_rev = bit_rev_tab[i];
2254
1.17G
      x_re = in_real[i_rev];
2255
1.17G
      x_im = in_imag[i_rev];
2256
2257
1.17G
        tmp =         MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
2258
1.17G
        out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
2259
1.17G
        out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
2260
1.17G
    }
2261
    // i = 16, i_rev = 1 = rev(16);
2262
73.2M
    out_imag[16] = MUL_C(in_imag[1] - in_real[1], dct4_64_tab[16 + 3*32]);
2263
73.2M
    out_real[16] = MUL_C(in_real[1] + in_imag[1], dct4_64_tab[16 + 3*32]);
2264
1.17G
    for (i = 17; i < 32; i++)
2265
1.09G
    {
2266
1.09G
      real_t x_re, x_im, tmp;
2267
1.09G
      i_rev = bit_rev_tab[i];
2268
1.09G
      x_re = in_real[i_rev];
2269
1.09G
      x_im = in_imag[i_rev];
2270
1.09G
        tmp =         MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
2271
1.09G
        out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
2272
1.09G
        out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
2273
1.09G
    }
2274
2275
73.2M
}
dct4_kernel
Line
Count
Source
2226
36.6M
{
2227
    // Tables with bit reverse values for 5 bits, bit reverse of i at i-th position
2228
36.6M
    const uint8_t bit_rev_tab[32] = { 0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31 };
2229
36.6M
    uint32_t i, i_rev;
2230
2231
    /* Step 2: modulate */
2232
    // 3*32=96 multiplications
2233
    // 3*32=96 additions
2234
1.20G
    for (i = 0; i < 32; i++)
2235
1.17G
    {
2236
1.17G
      real_t x_re, x_im, tmp;
2237
1.17G
      x_re = in_real[i];
2238
1.17G
      x_im = in_imag[i];
2239
1.17G
        tmp =        MUL_C(x_re + x_im, dct4_64_tab[i]);
2240
1.17G
        in_real[i] = MUL_C(x_im, dct4_64_tab[i + 64]) + tmp;
2241
1.17G
        in_imag[i] = MUL_C(x_re, dct4_64_tab[i + 32]) + tmp;
2242
1.17G
    }
2243
2244
    /* Step 3: FFT, but with output in bit reverse order */
2245
36.6M
    fft_dif(in_real, in_imag);
2246
2247
    /* Step 4: modulate + bitreverse reordering */
2248
    // 3*31+2=95 multiplications
2249
    // 3*31+2=95 additions
2250
622M
    for (i = 0; i < 16; i++)
2251
586M
    {
2252
586M
      real_t x_re, x_im, tmp;
2253
586M
      i_rev = bit_rev_tab[i];
2254
586M
      x_re = in_real[i_rev];
2255
586M
      x_im = in_imag[i_rev];
2256
2257
586M
        tmp =         MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
2258
586M
        out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
2259
586M
        out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
2260
586M
    }
2261
    // i = 16, i_rev = 1 = rev(16);
2262
36.6M
    out_imag[16] = MUL_C(in_imag[1] - in_real[1], dct4_64_tab[16 + 3*32]);
2263
36.6M
    out_real[16] = MUL_C(in_real[1] + in_imag[1], dct4_64_tab[16 + 3*32]);
2264
586M
    for (i = 17; i < 32; i++)
2265
549M
    {
2266
549M
      real_t x_re, x_im, tmp;
2267
549M
      i_rev = bit_rev_tab[i];
2268
549M
      x_re = in_real[i_rev];
2269
549M
      x_im = in_imag[i_rev];
2270
549M
        tmp =         MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
2271
549M
        out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
2272
549M
        out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
2273
549M
    }
2274
2275
36.6M
}
dct4_kernel
Line
Count
Source
2226
36.6M
{
2227
    // Tables with bit reverse values for 5 bits, bit reverse of i at i-th position
2228
36.6M
    const uint8_t bit_rev_tab[32] = { 0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31 };
2229
36.6M
    uint32_t i, i_rev;
2230
2231
    /* Step 2: modulate */
2232
    // 3*32=96 multiplications
2233
    // 3*32=96 additions
2234
1.20G
    for (i = 0; i < 32; i++)
2235
1.17G
    {
2236
1.17G
      real_t x_re, x_im, tmp;
2237
1.17G
      x_re = in_real[i];
2238
1.17G
      x_im = in_imag[i];
2239
1.17G
        tmp =        MUL_C(x_re + x_im, dct4_64_tab[i]);
2240
1.17G
        in_real[i] = MUL_C(x_im, dct4_64_tab[i + 64]) + tmp;
2241
1.17G
        in_imag[i] = MUL_C(x_re, dct4_64_tab[i + 32]) + tmp;
2242
1.17G
    }
2243
2244
    /* Step 3: FFT, but with output in bit reverse order */
2245
36.6M
    fft_dif(in_real, in_imag);
2246
2247
    /* Step 4: modulate + bitreverse reordering */
2248
    // 3*31+2=95 multiplications
2249
    // 3*31+2=95 additions
2250
622M
    for (i = 0; i < 16; i++)
2251
586M
    {
2252
586M
      real_t x_re, x_im, tmp;
2253
586M
      i_rev = bit_rev_tab[i];
2254
586M
      x_re = in_real[i_rev];
2255
586M
      x_im = in_imag[i_rev];
2256
2257
586M
        tmp =         MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
2258
586M
        out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
2259
586M
        out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
2260
586M
    }
2261
    // i = 16, i_rev = 1 = rev(16);
2262
36.6M
    out_imag[16] = MUL_C(in_imag[1] - in_real[1], dct4_64_tab[16 + 3*32]);
2263
36.6M
    out_real[16] = MUL_C(in_real[1] + in_imag[1], dct4_64_tab[16 + 3*32]);
2264
586M
    for (i = 17; i < 32; i++)
2265
549M
    {
2266
549M
      real_t x_re, x_im, tmp;
2267
549M
      i_rev = bit_rev_tab[i];
2268
549M
      x_re = in_real[i_rev];
2269
549M
      x_im = in_imag[i_rev];
2270
549M
        tmp =         MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
2271
549M
        out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
2272
549M
        out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
2273
549M
    }
2274
2275
36.6M
}
2276
2277
#endif
2278
2279
#endif