2 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
3 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
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.
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ** GNU General Public License for more details.
15 ** You should have received a copy of the GNU General Public License
16 ** along with this program; if not, write to the Free Software
17 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 ** Any non-GPL usage of this software or parts of this software is strictly
22 ** Commercial non-GPL licensing of this software is possible.
23 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
25 ** $Id: sbr_dct.c,v 1.15 2004/09/04 14:56:28 menno Exp $
33 #pragma warning(disable:4305)
34 #pragma warning(disable:4244)
40 void DCT4_32(real_t
*y
, real_t
*x
)
42 real_t f0
, f1
, f2
, f3
, f4
, f5
, f6
, f7
, f8
, f9
, f10
;
43 real_t f11
, f12
, f13
, f14
, f15
, f16
, f17
, f18
, f19
, f20
;
44 real_t f21
, f22
, f23
, f24
, f25
, f26
, f27
, f28
, f29
, f30
;
45 real_t f31
, f32
, f33
, f34
, f35
, f36
, f37
, f38
, f39
, f40
;
46 real_t f41
, f42
, f43
, f44
, f45
, f46
, f47
, f48
, f49
, f50
;
47 real_t f51
, f52
, f53
, f54
, f55
, f56
, f57
, f58
, f59
, f60
;
48 real_t f61
, f62
, f63
, f64
, f65
, f66
, f67
, f68
, f69
, f70
;
49 real_t f71
, f72
, f73
, f74
, f75
, f76
, f77
, f78
, f79
, f80
;
50 real_t f81
, f82
, f83
, f84
, f85
, f86
, f87
, f88
, f89
, f90
;
51 real_t f91
, f92
, f93
, f94
, f95
, f96
, f97
, f98
, f99
, f100
;
52 real_t f101
, f102
, f103
, f104
, f105
, f106
, f107
, f108
, f109
, f110
;
53 real_t f111
, f112
, f113
, f114
, f115
, f116
, f117
, f118
, f119
, f120
;
54 real_t f121
, f122
, f123
, f124
, f125
, f126
, f127
, f128
, f129
, f130
;
55 real_t f131
, f132
, f133
, f134
, f135
, f136
, f137
, f138
, f139
, f140
;
56 real_t f141
, f142
, f143
, f144
, f145
, f146
, f147
, f148
, f149
, f150
;
57 real_t f151
, f152
, f153
, f154
, f155
, f156
, f157
, f158
, f159
, f160
;
58 real_t f161
, f162
, f163
, f164
, f165
, f166
, f167
, f168
, f169
, f170
;
59 real_t f171
, f172
, f173
, f174
, f175
, f176
, f177
, f178
, f179
, f180
;
60 real_t f181
, f182
, f183
, f184
, f185
, f186
, f187
, f188
, f189
, f190
;
61 real_t f191
, f192
, f193
, f194
, f195
, f196
, f197
, f198
, f199
, f200
;
62 real_t f201
, f202
, f203
, f204
, f205
, f206
, f207
, f208
, f209
, f210
;
63 real_t f211
, f212
, f213
, f214
, f215
, f216
, f217
, f218
, f219
, f220
;
64 real_t f221
, f222
, f223
, f224
, f225
, f226
, f227
, f228
, f229
, f230
;
65 real_t f231
, f232
, f233
, f234
, f235
, f236
, f237
, f238
, f239
, f240
;
66 real_t f241
, f242
, f243
, f244
, f245
, f246
, f247
, f248
, f249
, f250
;
67 real_t f251
, f252
, f253
, f254
, f255
, f256
, f257
, f258
, f259
, f260
;
68 real_t f261
, f262
, f263
, f264
, f265
, f266
, f267
, f268
, f269
, f270
;
69 real_t f271
, f272
, f273
, f274
, f275
, f276
, f277
, f278
, f279
, f280
;
70 real_t f281
, f282
, f283
, f284
, f285
, f286
, f287
, f288
, f289
, f290
;
71 real_t f291
, f292
, f293
, f294
, f295
, f296
, f297
, f298
, f299
, f300
;
72 real_t f301
, f302
, f303
, f304
, f305
, f306
, f307
, f310
, f311
, f312
;
73 real_t f313
, f316
, f317
, f318
, f319
, f322
, f323
, f324
, f325
, f328
;
74 real_t f329
, f330
, f331
, f334
, f335
, f336
, f337
, f340
, f341
, f342
;
75 real_t f343
, f346
, f347
, f348
, f349
, f352
, f353
, f354
, f355
, f358
;
76 real_t f359
, f360
, f361
, f364
, f365
, f366
, f367
, f370
, f371
, f372
;
77 real_t f373
, f376
, f377
, f378
, f379
, f382
, f383
, f384
, f385
, f388
;
78 real_t f389
, f390
, f391
, f394
, f395
, f396
, f397
;
82 f2
= MUL_F(FRAC_CONST(0.7071067811865476), f1
);
83 f3
= MUL_F(FRAC_CONST(0.7071067811865476), f0
);
86 f6
= MUL_F(FRAC_CONST(0.7071067811865476), f5
);
87 f7
= MUL_F(FRAC_CONST(0.7071067811865476), f4
);
90 f10
= MUL_F(FRAC_CONST(0.7071067811865476), f9
);
91 f11
= MUL_F(FRAC_CONST(0.7071067811865476), f8
);
94 f14
= MUL_F(FRAC_CONST(0.7071067811865476), f13
);
95 f15
= MUL_F(FRAC_CONST(0.7071067811865476), f12
);
98 f18
= MUL_F(FRAC_CONST(0.7071067811865476), f17
);
99 f19
= MUL_F(FRAC_CONST(0.7071067811865476), f16
);
102 f22
= MUL_F(FRAC_CONST(0.7071067811865476), f21
);
103 f23
= MUL_F(FRAC_CONST(0.7071067811865476), f20
);
106 f26
= MUL_F(FRAC_CONST(0.7071067811865476), f25
);
107 f27
= MUL_F(FRAC_CONST(0.7071067811865476), f24
);
110 f30
= MUL_F(FRAC_CONST(0.7071067811865476), f29
);
111 f31
= MUL_F(FRAC_CONST(0.7071067811865476), f28
);
145 f65
= MUL_F(FRAC_CONST(-0.5411961001461969), f39
);
146 f66
= MUL_F(FRAC_CONST(0.9238795325112867), f64
);
147 f67
= MUL_C(COEF_CONST(1.3065629648763766), f37
);
151 f71
= MUL_C(COEF_CONST(1.3065629648763770), f38
);
152 f72
= MUL_F(FRAC_CONST(-0.3826834323650904), f70
);
153 f73
= MUL_F(FRAC_CONST(0.5411961001461961), f36
);
157 f77
= MUL_F(FRAC_CONST(-0.5411961001461969), f47
);
158 f78
= MUL_F(FRAC_CONST(0.9238795325112867), f76
);
159 f79
= MUL_C(COEF_CONST(1.3065629648763766), f45
);
163 f83
= MUL_C(COEF_CONST(1.3065629648763770), f46
);
164 f84
= MUL_F(FRAC_CONST(-0.3826834323650904), f82
);
165 f85
= MUL_F(FRAC_CONST(0.5411961001461961), f44
);
169 f89
= MUL_F(FRAC_CONST(-0.5411961001461969), f55
);
170 f90
= MUL_F(FRAC_CONST(0.9238795325112867), f88
);
171 f91
= MUL_C(COEF_CONST(1.3065629648763766), f53
);
175 f95
= MUL_C(COEF_CONST(1.3065629648763770), f54
);
176 f96
= MUL_F(FRAC_CONST(-0.3826834323650904), f94
);
177 f97
= MUL_F(FRAC_CONST(0.5411961001461961), f52
);
181 f101
= MUL_F(FRAC_CONST(-0.5411961001461969), f63
);
182 f102
= MUL_F(FRAC_CONST(0.9238795325112867), f100
);
183 f103
= MUL_C(COEF_CONST(1.3065629648763766), f61
);
187 f107
= MUL_C(COEF_CONST(1.3065629648763770), f62
);
188 f108
= MUL_F(FRAC_CONST(-0.3826834323650904), f106
);
189 f109
= MUL_F(FRAC_CONST(0.5411961001461961), f60
);
225 f145
= MUL_F(FRAC_CONST(-0.7856949583871021), f123
);
226 f146
= MUL_F(FRAC_CONST(0.9807852804032304), f144
);
227 f147
= MUL_C(COEF_CONST(1.1758756024193588), f121
);
231 f151
= MUL_F(FRAC_CONST(0.2758993792829431), f127
);
232 f152
= MUL_F(FRAC_CONST(0.5555702330196022), f150
);
233 f153
= MUL_C(COEF_CONST(1.3870398453221475), f125
);
237 f157
= MUL_C(COEF_CONST(1.1758756024193591), f122
);
238 f158
= MUL_F(FRAC_CONST(-0.1950903220161287), f156
);
239 f159
= MUL_F(FRAC_CONST(0.7856949583871016), f120
);
243 f163
= MUL_C(COEF_CONST(1.3870398453221473), f126
);
244 f164
= MUL_F(FRAC_CONST(-0.8314696123025455), f162
);
245 f165
= MUL_F(FRAC_CONST(-0.2758993792829436), f124
);
249 f169
= MUL_F(FRAC_CONST(-0.7856949583871021), f139
);
250 f170
= MUL_F(FRAC_CONST(0.9807852804032304), f168
);
251 f171
= MUL_C(COEF_CONST(1.1758756024193588), f137
);
255 f175
= MUL_F(FRAC_CONST(0.2758993792829431), f143
);
256 f176
= MUL_F(FRAC_CONST(0.5555702330196022), f174
);
257 f177
= MUL_C(COEF_CONST(1.3870398453221475), f141
);
261 f181
= MUL_C(COEF_CONST(1.1758756024193591), f138
);
262 f182
= MUL_F(FRAC_CONST(-0.1950903220161287), f180
);
263 f183
= MUL_F(FRAC_CONST(0.7856949583871016), f136
);
267 f187
= MUL_C(COEF_CONST(1.3870398453221473), f142
);
268 f188
= MUL_F(FRAC_CONST(-0.8314696123025455), f186
);
269 f189
= MUL_F(FRAC_CONST(-0.2758993792829436), f140
);
305 f225
= MUL_F(FRAC_CONST(-0.8971675863426361), f211
);
306 f226
= MUL_F(FRAC_CONST(0.9951847266721968), f224
);
307 f227
= MUL_C(COEF_CONST(1.0932018670017576), f209
);
311 f231
= MUL_F(FRAC_CONST(-0.4105245275223571), f215
);
312 f232
= MUL_F(FRAC_CONST(0.8819212643483549), f230
);
313 f233
= MUL_C(COEF_CONST(1.3533180011743529), f213
);
317 f237
= MUL_F(FRAC_CONST(0.1386171691990915), f219
);
318 f238
= MUL_F(FRAC_CONST(0.6343932841636455), f236
);
319 f239
= MUL_C(COEF_CONST(1.4074037375263826), f217
);
323 f243
= MUL_F(FRAC_CONST(0.6666556584777466), f223
);
324 f244
= MUL_F(FRAC_CONST(0.2902846772544623), f242
);
325 f245
= MUL_C(COEF_CONST(1.2472250129866711), f221
);
329 f249
= MUL_C(COEF_CONST(1.0932018670017574), f210
);
330 f250
= MUL_F(FRAC_CONST(-0.0980171403295605), f248
);
331 f251
= MUL_F(FRAC_CONST(0.8971675863426364), f208
);
335 f255
= MUL_C(COEF_CONST(1.3533180011743529), f214
);
336 f256
= MUL_F(FRAC_CONST(-0.4713967368259979), f254
);
337 f257
= MUL_F(FRAC_CONST(0.4105245275223569), f212
);
341 f261
= MUL_C(COEF_CONST(1.4074037375263826), f218
);
342 f262
= MUL_F(FRAC_CONST(-0.7730104533627369), f260
);
343 f263
= MUL_F(FRAC_CONST(-0.1386171691990913), f216
);
347 f267
= MUL_C(COEF_CONST(1.2472250129866711), f222
);
348 f268
= MUL_F(FRAC_CONST(-0.9569403357322089), f266
);
349 f269
= MUL_F(FRAC_CONST(-0.6666556584777469), f220
);
385 f305
= MUL_F(FRAC_CONST(-0.9751575901732920), f275
);
386 f306
= MUL_F(FRAC_CONST(0.9996988186962043), f304
);
387 f307
= MUL_C(COEF_CONST(1.0242400472191164), f273
);
391 f311
= MUL_F(FRAC_CONST(-0.8700688593994936), f279
);
392 f312
= MUL_F(FRAC_CONST(0.9924795345987100), f310
);
393 f313
= MUL_C(COEF_CONST(1.1148902097979263), f277
);
397 f317
= MUL_F(FRAC_CONST(-0.7566008898816587), f283
);
398 f318
= MUL_F(FRAC_CONST(0.9757021300385286), f316
);
399 f319
= MUL_C(COEF_CONST(1.1948033701953984), f281
);
403 f323
= MUL_F(FRAC_CONST(-0.6358464401941451), f287
);
404 f324
= MUL_F(FRAC_CONST(0.9495281805930367), f322
);
405 f325
= MUL_C(COEF_CONST(1.2632099209919283), f285
);
409 f329
= MUL_F(FRAC_CONST(-0.5089684416985408), f291
);
410 f330
= MUL_F(FRAC_CONST(0.9142097557035307), f328
);
411 f331
= MUL_C(COEF_CONST(1.3194510697085207), f289
);
415 f335
= MUL_F(FRAC_CONST(-0.3771887988789273), f295
);
416 f336
= MUL_F(FRAC_CONST(0.8700869911087114), f334
);
417 f337
= MUL_C(COEF_CONST(1.3629851833384954), f293
);
421 f341
= MUL_F(FRAC_CONST(-0.2417766217337384), f299
);
422 f342
= MUL_F(FRAC_CONST(0.8175848131515837), f340
);
423 f343
= MUL_C(COEF_CONST(1.3933930045694289), f297
);
427 f347
= MUL_F(FRAC_CONST(-0.1040360035527077), f303
);
428 f348
= MUL_F(FRAC_CONST(0.7572088465064845), f346
);
429 f349
= MUL_C(COEF_CONST(1.4103816894602612), f301
);
433 f353
= MUL_F(FRAC_CONST(0.0347065382144002), f274
);
434 f354
= MUL_F(FRAC_CONST(0.6895405447370668), f352
);
435 f355
= MUL_C(COEF_CONST(1.4137876276885337), f272
);
439 f359
= MUL_F(FRAC_CONST(0.1731148370459795), f278
);
440 f360
= MUL_F(FRAC_CONST(0.6152315905806268), f358
);
441 f361
= MUL_C(COEF_CONST(1.4035780182072330), f276
);
445 f365
= MUL_F(FRAC_CONST(0.3098559453626100), f282
);
446 f366
= MUL_F(FRAC_CONST(0.5349976198870972), f364
);
447 f367
= MUL_C(COEF_CONST(1.3798511851368043), f280
);
451 f371
= MUL_F(FRAC_CONST(0.4436129715409088), f286
);
452 f372
= MUL_F(FRAC_CONST(0.4496113296546065), f370
);
453 f373
= MUL_C(COEF_CONST(1.3428356308501219), f284
);
457 f377
= MUL_F(FRAC_CONST(0.5730977622997509), f290
);
458 f378
= MUL_F(FRAC_CONST(0.3598950365349881), f376
);
459 f379
= MUL_C(COEF_CONST(1.2928878353697271), f288
);
463 f383
= MUL_F(FRAC_CONST(0.6970633083205415), f294
);
464 f384
= MUL_F(FRAC_CONST(0.2667127574748984), f382
);
465 f385
= MUL_C(COEF_CONST(1.2304888232703382), f292
);
469 f389
= MUL_F(FRAC_CONST(0.8143157536286401), f298
);
470 f390
= MUL_F(FRAC_CONST(0.1709618887603012), f388
);
471 f391
= MUL_C(COEF_CONST(1.1562395311492424), f296
);
475 f395
= MUL_F(FRAC_CONST(0.9237258930790228), f302
);
476 f396
= MUL_F(FRAC_CONST(0.0735645635996674), f394
);
477 f397
= MUL_C(COEF_CONST(1.0708550202783576), f300
);
484 void DCT2_16_unscaled(real_t
*y
, real_t
*x
)
486 real_t f0
, f1
, f2
, f3
, f4
, f5
, f6
, f7
, f8
, f9
, f10
;
487 real_t f11
, f12
, f13
, f14
, f15
, f16
, f17
, f18
, f19
, f20
;
488 real_t f21
, f22
, f23
, f24
, f25
, f26
, f27
, f28
, f31
, f32
;
489 real_t f33
, f34
, f37
, f38
, f39
, f40
, f41
, f42
, f43
, f44
;
490 real_t f45
, f46
, f47
, f48
, f49
, f51
, f53
, f54
, f57
, f58
;
491 real_t f59
, f60
, f61
, f62
, f63
, f64
, f65
, f66
, f67
, f68
;
492 real_t f69
, f70
, f71
, f72
, f73
, f74
, f75
, f76
, f77
, f78
;
493 real_t f79
, f80
, f81
, f82
, f83
, f84
, f85
, f86
, f87
, f88
;
494 real_t f89
, f90
, f91
, f92
, f95
, f96
, f97
, f98
, f101
, f102
;
495 real_t f103
, f104
, f107
, f108
, f109
, f110
;
527 y
[8] = MUL_F(f28
, FRAC_CONST(0.7071067811865476));
529 f32
= MUL_C(f24
, COEF_CONST(1.3065629648763766));
530 f33
= MUL_F(f31
, FRAC_CONST(-0.9238795325112866));
531 f34
= MUL_F(f26
, FRAC_CONST(-0.5411961001461967));
535 f38
= MUL_C(f16
, COEF_CONST(1.1758756024193588));
536 f39
= MUL_F(f37
, FRAC_CONST(-0.9807852804032304));
537 f40
= MUL_F(f22
, FRAC_CONST(-0.7856949583871021));
541 f44
= MUL_C(f18
, COEF_CONST(1.3870398453221473));
542 f45
= MUL_F(f43
, FRAC_CONST(-0.8314696123025455));
543 f46
= MUL_F(f20
, FRAC_CONST(-0.2758993792829436));
548 f51
= MUL_F(f49
, FRAC_CONST(0.7071067811865476));
551 f54
= MUL_F(f53
, FRAC_CONST(0.7071067811865476));
560 f63
= MUL_F(f60
, FRAC_CONST(0.7071067811865476));
564 f67
= MUL_C(f58
, COEF_CONST(1.3065629648763766));
565 f68
= MUL_F(f66
, FRAC_CONST(-0.9238795325112866));
566 f69
= MUL_F(f62
, FRAC_CONST(-0.5411961001461967));
573 f76
= MUL_F(f59
, FRAC_CONST(0.7071067811865476));
577 f80
= MUL_C(f61
, COEF_CONST(1.3065629648763766));
578 f81
= MUL_F(f79
, FRAC_CONST(-0.9238795325112866));
579 f82
= MUL_F(f57
, FRAC_CONST(-0.5411961001461967));
587 f90
= MUL_F(f86
, FRAC_CONST(-0.8971675863426361));
588 f91
= MUL_F(f89
, FRAC_CONST(0.9951847266721968));
589 f92
= MUL_C(f73
, COEF_CONST(1.0932018670017576));
593 f96
= MUL_F(f88
, FRAC_CONST(-0.6666556584777466));
594 f97
= MUL_F(f95
, FRAC_CONST(0.9569403357322089));
595 f98
= MUL_C(f75
, COEF_CONST(1.2472250129866713));
599 f102
= MUL_F(f87
, FRAC_CONST(-0.4105245275223571));
600 f103
= MUL_F(f101
, FRAC_CONST(0.8819212643483549));
601 f104
= MUL_C(f74
, COEF_CONST(1.3533180011743529));
605 f108
= MUL_F(f85
, FRAC_CONST(-0.1386171691990915));
606 f109
= MUL_F(f107
, FRAC_CONST(0.7730104533627370));
607 f110
= MUL_C(f72
, COEF_CONST(1.4074037375263826));
612 void DCT4_16(real_t
*y
, real_t
*x
)
614 real_t f0
, f1
, f2
, f3
, f4
, f5
, f6
, f7
, f8
, f9
, f10
;
615 real_t f11
, f12
, f13
, f14
, f15
, f16
, f17
, f18
, f19
, f20
;
616 real_t f21
, f22
, f23
, f24
, f25
, f26
, f27
, f28
, f29
, f30
;
617 real_t f31
, f32
, f33
, f34
, f35
, f36
, f37
, f38
, f39
, f40
;
618 real_t f41
, f42
, f43
, f44
, f45
, f46
, f47
, f48
, f49
, f50
;
619 real_t f51
, f52
, f53
, f54
, f55
, f56
, f57
, f58
, f59
, f60
;
620 real_t f61
, f62
, f63
, f64
, f65
, f66
, f67
, f68
, f69
, f70
;
621 real_t f71
, f72
, f73
, f74
, f75
, f76
, f77
, f78
, f79
, f80
;
622 real_t f81
, f82
, f83
, f84
, f85
, f86
, f87
, f88
, f89
, f90
;
623 real_t f91
, f92
, f93
, f94
, f95
, f96
, f97
, f98
, f99
, f100
;
624 real_t f101
, f102
, f103
, f104
, f105
, f106
, f107
, f108
, f109
, f110
;
625 real_t f111
, f112
, f113
, f114
, f115
, f116
, f117
, f118
, f119
, f120
;
626 real_t f121
, f122
, f123
, f124
, f125
, f126
, f127
, f128
, f130
, f132
;
627 real_t f134
, f136
, f138
, f140
, f142
, f144
, f145
, f148
, f149
, f152
;
628 real_t f153
, f156
, f157
;
631 f1
= MUL_C(COEF_CONST(1.0478631305325901), x
[0]);
632 f2
= MUL_F(FRAC_CONST(-0.9987954562051724), f0
);
633 f3
= MUL_F(FRAC_CONST(-0.9497277818777548), x
[15]);
637 f7
= MUL_C(COEF_CONST(1.2130114330978077), x
[2]);
638 f8
= MUL_F(FRAC_CONST(-0.9700312531945440), f6
);
639 f9
= MUL_F(FRAC_CONST(-0.7270510732912803), x
[13]);
643 f13
= MUL_C(COEF_CONST(1.3315443865537255), x
[4]);
644 f14
= MUL_F(FRAC_CONST(-0.9039892931234433), f12
);
645 f15
= MUL_F(FRAC_CONST(-0.4764341996931612), x
[11]);
649 f19
= MUL_C(COEF_CONST(1.3989068359730781), x
[6]);
650 f20
= MUL_F(FRAC_CONST(-0.8032075314806453), f18
);
651 f21
= MUL_F(FRAC_CONST(-0.2075082269882124), x
[9]);
655 f25
= MUL_C(COEF_CONST(1.4125100802019777), x
[8]);
656 f26
= MUL_F(FRAC_CONST(-0.6715589548470187), f24
);
657 f27
= MUL_F(FRAC_CONST(0.0693921705079402), x
[7]);
661 f31
= MUL_C(COEF_CONST(1.3718313541934939), x
[10]);
662 f32
= MUL_F(FRAC_CONST(-0.5141027441932219), f30
);
663 f33
= MUL_F(FRAC_CONST(0.3436258658070501), x
[5]);
667 f37
= MUL_C(COEF_CONST(1.2784339185752409), x
[12]);
668 f38
= MUL_F(FRAC_CONST(-0.3368898533922200), f36
);
669 f39
= MUL_F(FRAC_CONST(0.6046542117908008), x
[3]);
673 f43
= MUL_C(COEF_CONST(1.1359069844201433), x
[14]);
674 f44
= MUL_F(FRAC_CONST(-0.1467304744553624), f42
);
675 f45
= MUL_F(FRAC_CONST(0.8424460355094185), x
[1]);
695 f65
= MUL_C(COEF_CONST(1.1758756024193588), f48
);
696 f66
= MUL_F(FRAC_CONST(-0.9807852804032304), f64
);
697 f67
= MUL_F(FRAC_CONST(-0.7856949583871021), f50
);
701 f71
= MUL_C(COEF_CONST(1.3870398453221475), f52
);
702 f72
= MUL_F(FRAC_CONST(-0.5555702330196022), f70
);
703 f73
= MUL_F(FRAC_CONST(0.2758993792829431), f54
);
707 f77
= MUL_F(FRAC_CONST(0.7856949583871022), f56
);
708 f78
= MUL_F(FRAC_CONST(0.1950903220161283), f76
);
709 f79
= MUL_C(COEF_CONST(1.1758756024193586), f58
);
713 f83
= MUL_F(FRAC_CONST(-0.2758993792829430), f60
);
714 f84
= MUL_F(FRAC_CONST(0.8314696123025452), f82
);
715 f85
= MUL_C(COEF_CONST(1.3870398453221475), f62
);
735 f105
= MUL_C(COEF_CONST(1.3065629648763766), f88
);
736 f106
= MUL_F(FRAC_CONST(-0.9238795325112866), f104
);
737 f107
= MUL_F(FRAC_CONST(-0.5411961001461967), f90
);
741 f111
= MUL_F(FRAC_CONST(0.5411961001461969), f92
);
742 f112
= MUL_F(FRAC_CONST(0.3826834323650898), f110
);
743 f113
= MUL_C(COEF_CONST(1.3065629648763766), f94
);
747 f117
= MUL_C(COEF_CONST(1.3065629648763766), f96
);
748 f118
= MUL_F(FRAC_CONST(-0.9238795325112866), f116
);
749 f119
= MUL_F(FRAC_CONST(-0.5411961001461967), f98
);
753 f123
= MUL_F(FRAC_CONST(0.5411961001461969), f100
);
754 f124
= MUL_F(FRAC_CONST(0.3826834323650898), f122
);
755 f125
= MUL_C(COEF_CONST(1.3065629648763766), f102
);
776 y
[8] = MUL_F(FRAC_CONST(0.7071067811865474), f144
);
777 y
[7] = MUL_F(FRAC_CONST(0.7071067811865474), f145
);
780 y
[11] = MUL_F(FRAC_CONST(0.7071067811865474), f148
);
781 y
[4] = MUL_F(FRAC_CONST(0.7071067811865474), f149
);
784 y
[9] = MUL_F(FRAC_CONST(0.7071067811865474), f152
);
785 y
[6] = MUL_F(FRAC_CONST(0.7071067811865474), f153
);
788 y
[10] = MUL_F(FRAC_CONST(0.7071067811865474), f156
);
789 y
[5] = MUL_F(FRAC_CONST(0.7071067811865474), f157
);
792 void DCT3_32_unscaled(real_t
*y
, real_t
*x
)
794 real_t f0
, f1
, f2
, f3
, f4
, f5
, f6
, f7
, f8
, f9
, f10
;
795 real_t f11
, f12
, f13
, f14
, f15
, f16
, f17
, f18
, f19
, f20
;
796 real_t f21
, f22
, f23
, f24
, f25
, f26
, f27
, f28
, f29
, f30
;
797 real_t f31
, f32
, f33
, f34
, f35
, f36
, f37
, f38
, f39
, f40
;
798 real_t f41
, f42
, f43
, f44
, f45
, f46
, f47
, f48
, f49
, f50
;
799 real_t f51
, f52
, f53
, f54
, f55
, f56
, f57
, f58
, f59
, f60
;
800 real_t f61
, f62
, f63
, f64
, f65
, f66
, f67
, f68
, f69
, f70
;
801 real_t f71
, f72
, f73
, f74
, f75
, f76
, f77
, f78
, f79
, f80
;
802 real_t f81
, f82
, f83
, f84
, f85
, f86
, f87
, f88
, f89
, f90
;
803 real_t f91
, f92
, f93
, f94
, f95
, f96
, f97
, f98
, f99
, f100
;
804 real_t f101
, f102
, f103
, f104
, f105
, f106
, f107
, f108
, f109
, f110
;
805 real_t f111
, f112
, f113
, f114
, f115
, f116
, f117
, f118
, f119
, f120
;
806 real_t f121
, f122
, f123
, f124
, f125
, f126
, f127
, f128
, f129
, f130
;
807 real_t f131
, f132
, f133
, f134
, f135
, f136
, f137
, f138
, f139
, f140
;
808 real_t f141
, f142
, f143
, f144
, f145
, f146
, f147
, f148
, f149
, f150
;
809 real_t f151
, f152
, f153
, f154
, f155
, f156
, f157
, f158
, f159
, f160
;
810 real_t f161
, f162
, f163
, f164
, f165
, f166
, f167
, f168
, f169
, f170
;
811 real_t f171
, f172
, f173
, f174
, f175
, f176
, f177
, f178
, f179
, f180
;
812 real_t f181
, f182
, f183
, f184
, f185
, f186
, f187
, f188
, f189
, f190
;
813 real_t f191
, f192
, f193
, f194
, f195
, f196
, f197
, f198
, f199
, f200
;
814 real_t f201
, f202
, f203
, f204
, f205
, f206
, f207
, f208
, f209
, f210
;
815 real_t f211
, f212
, f213
, f214
, f215
, f216
, f217
, f218
, f219
, f220
;
816 real_t f221
, f222
, f223
, f224
, f225
, f226
, f227
, f228
, f229
, f230
;
817 real_t f231
, f232
, f233
, f234
, f235
, f236
, f237
, f238
, f239
, f240
;
818 real_t f241
, f242
, f243
, f244
, f245
, f246
, f247
, f248
, f249
, f250
;
819 real_t f251
, f252
, f253
, f254
, f255
, f256
, f257
, f258
, f259
, f260
;
820 real_t f261
, f262
, f263
, f264
, f265
, f266
, f267
, f268
, f269
, f270
;
823 f0
= MUL_F(x
[16], FRAC_CONST(0.7071067811865476));
827 f4
= MUL_C(x
[8], COEF_CONST(1.3065629648763766));
828 f5
= MUL_F(f3
, FRAC_CONST((-0.9238795325112866)));
829 f6
= MUL_F(x
[24], FRAC_CONST((-0.5411961001461967)));
837 f14
= MUL_C(x
[4], COEF_CONST(1.1758756024193588));
838 f15
= MUL_F(f13
, FRAC_CONST((-0.9807852804032304)));
839 f16
= MUL_F(x
[28], FRAC_CONST((-0.7856949583871021)));
843 f20
= MUL_C(x
[12], COEF_CONST(1.3870398453221473));
844 f21
= MUL_F(f19
, FRAC_CONST((-0.8314696123025455)));
845 f22
= MUL_F(x
[20], FRAC_CONST((-0.2758993792829436)));
850 f27
= MUL_F(f25
, FRAC_CONST(0.7071067811865476));
853 f30
= MUL_F(f29
, FRAC_CONST(0.7071067811865476));
865 f42
= MUL_C(x
[2], COEF_CONST(1.0932018670017569));
866 f43
= MUL_F(f41
, FRAC_CONST((-0.9951847266721969)));
867 f44
= MUL_F(x
[30], FRAC_CONST((-0.8971675863426368)));
871 f48
= MUL_C(x
[6], COEF_CONST(1.2472250129866711));
872 f49
= MUL_F(f47
, FRAC_CONST((-0.9569403357322089)));
873 f50
= MUL_F(x
[26], FRAC_CONST((-0.6666556584777469)));
877 f54
= MUL_C(x
[10], COEF_CONST(1.3533180011743526));
878 f55
= MUL_F(f53
, FRAC_CONST((-0.8819212643483551)));
879 f56
= MUL_F(x
[22], FRAC_CONST((-0.4105245275223575)));
883 f60
= MUL_C(x
[14], COEF_CONST(1.4074037375263826));
884 f61
= MUL_F(f59
, FRAC_CONST((-0.7730104533627369)));
885 f62
= MUL_F(x
[18], FRAC_CONST((-0.1386171691990913)));
894 f71
= MUL_F(f69
, FRAC_CONST(0.7071067811865476));
896 f73
= MUL_C(f65
, COEF_CONST(1.3065629648763766));
897 f74
= MUL_F(f72
, FRAC_CONST((-0.9238795325112866)));
898 f75
= MUL_F(f67
, FRAC_CONST((-0.5411961001461967)));
906 f83
= MUL_C(f79
, COEF_CONST(1.3065629648763770));
907 f84
= MUL_F(f82
, FRAC_CONST((-0.3826834323650904)));
908 f85
= MUL_F(f81
, FRAC_CONST(0.5411961001461961));
913 f90
= MUL_F(f89
, FRAC_CONST(0.7071067811865476));
937 f114
= MUL_C(x
[1], COEF_CONST(1.0478631305325901));
938 f115
= MUL_F(f113
, FRAC_CONST((-0.9987954562051724)));
939 f116
= MUL_F(x
[31], FRAC_CONST((-0.9497277818777548)));
943 f120
= MUL_C(x
[5], COEF_CONST(1.2130114330978077));
944 f121
= MUL_F(f119
, FRAC_CONST((-0.9700312531945440)));
945 f122
= MUL_F(x
[27], FRAC_CONST((-0.7270510732912803)));
949 f126
= MUL_C(x
[9], COEF_CONST(1.3315443865537255));
950 f127
= MUL_F(f125
, FRAC_CONST((-0.9039892931234433)));
951 f128
= MUL_F(x
[23], FRAC_CONST((-0.4764341996931612)));
954 f131
= x
[13] + x
[19];
955 f132
= MUL_C(x
[13], COEF_CONST(1.3989068359730781));
956 f133
= MUL_F(f131
, FRAC_CONST((-0.8032075314806453)));
957 f134
= MUL_F(x
[19], FRAC_CONST((-0.2075082269882124)));
960 f137
= x
[17] + x
[15];
961 f138
= MUL_C(x
[17], COEF_CONST(1.4125100802019777));
962 f139
= MUL_F(f137
, FRAC_CONST((-0.6715589548470187)));
963 f140
= MUL_F(x
[15], FRAC_CONST(0.0693921705079402));
966 f143
= x
[21] + x
[11];
967 f144
= MUL_C(x
[21], COEF_CONST(1.3718313541934939));
968 f145
= MUL_F(f143
, FRAC_CONST((-0.5141027441932219)));
969 f146
= MUL_F(x
[11], FRAC_CONST(0.3436258658070501));
973 f150
= MUL_C(x
[25], COEF_CONST(1.2784339185752409));
974 f151
= MUL_F(f149
, FRAC_CONST((-0.3368898533922200)));
975 f152
= MUL_F(x
[7], FRAC_CONST(0.6046542117908008));
979 f156
= MUL_C(x
[29], COEF_CONST(1.1359069844201433));
980 f157
= MUL_F(f155
, FRAC_CONST((-0.1467304744553624)));
981 f158
= MUL_F(x
[3], FRAC_CONST(0.8424460355094185));
1001 f178
= MUL_C(f161
, COEF_CONST(1.1758756024193588));
1002 f179
= MUL_F(f177
, FRAC_CONST((-0.9807852804032304)));
1003 f180
= MUL_F(f163
, FRAC_CONST((-0.7856949583871021)));
1007 f184
= MUL_C(f165
, COEF_CONST(1.3870398453221475));
1008 f185
= MUL_F(f183
, FRAC_CONST((-0.5555702330196022)));
1009 f186
= MUL_F(f167
, FRAC_CONST(0.2758993792829431));
1013 f190
= MUL_F(f169
, FRAC_CONST(0.7856949583871022));
1014 f191
= MUL_F(f189
, FRAC_CONST(0.1950903220161283));
1015 f192
= MUL_C(f171
, COEF_CONST(1.1758756024193586));
1019 f196
= MUL_F(f173
, FRAC_CONST((-0.2758993792829430)));
1020 f197
= MUL_F(f195
, FRAC_CONST(0.8314696123025452));
1021 f198
= MUL_C(f175
, COEF_CONST(1.3870398453221475));
1041 f218
= MUL_C(f201
, COEF_CONST(1.3065629648763766));
1042 f219
= MUL_F(f217
, FRAC_CONST((-0.9238795325112866)));
1043 f220
= MUL_F(f203
, FRAC_CONST((-0.5411961001461967)));
1047 f224
= MUL_F(f205
, FRAC_CONST(0.5411961001461969));
1048 f225
= MUL_F(f223
, FRAC_CONST(0.3826834323650898));
1049 f226
= MUL_C(f207
, COEF_CONST(1.3065629648763766));
1053 f230
= MUL_C(f209
, COEF_CONST(1.3065629648763766));
1054 f231
= MUL_F(f229
, FRAC_CONST((-0.9238795325112866)));
1055 f232
= MUL_F(f211
, FRAC_CONST((-0.5411961001461967)));
1059 f236
= MUL_F(f213
, FRAC_CONST(0.5411961001461969));
1060 f237
= MUL_F(f235
, FRAC_CONST(0.3826834323650898));
1061 f238
= MUL_C(f215
, COEF_CONST(1.3065629648763766));
1082 f259
= MUL_F(f257
, FRAC_CONST(0.7071067811865474));
1083 f260
= MUL_F(f258
, FRAC_CONST(0.7071067811865474));
1086 f263
= MUL_F(f261
, FRAC_CONST(0.7071067811865474));
1087 f264
= MUL_F(f262
, FRAC_CONST(0.7071067811865474));
1090 f267
= MUL_F(f265
, FRAC_CONST(0.7071067811865474));
1091 f268
= MUL_F(f266
, FRAC_CONST(0.7071067811865474));
1094 f271
= MUL_F(f269
, FRAC_CONST(0.7071067811865474));
1095 f272
= MUL_F(f270
, FRAC_CONST(0.7071067811865474));
1098 y
[30] = f100
- f250
;
1100 y
[29] = f102
- f254
;
1102 y
[28] = f104
- f246
;
1104 y
[27] = f106
- f264
;
1106 y
[26] = f108
- f272
;
1108 y
[25] = f110
- f268
;
1110 y
[24] = f112
- f260
;
1112 y
[23] = f111
- f259
;
1114 y
[22] = f109
- f267
;
1116 y
[21] = f107
- f271
;
1117 y
[10] = f107
+ f271
;
1118 y
[20] = f105
- f263
;
1119 y
[11] = f105
+ f263
;
1120 y
[19] = f103
- f248
;
1121 y
[12] = f103
+ f248
;
1122 y
[18] = f101
- f256
;
1123 y
[13] = f101
+ f256
;
1130 void DCT2_32_unscaled(real_t
*y
, real_t
*x
)
1132 real_t f0
, f1
, f2
, f3
, f4
, f5
, f6
, f7
, f8
, f9
, f10
;
1133 real_t f11
, f12
, f13
, f14
, f15
, f16
, f17
, f18
, f19
, f20
;
1134 real_t f21
, f22
, f23
, f24
, f25
, f26
, f27
, f28
, f29
, f30
;
1135 real_t f31
, f32
, f33
, f34
, f35
, f36
, f37
, f38
, f39
, f40
;
1136 real_t f41
, f42
, f43
, f44
, f45
, f46
, f47
, f48
, f49
, f50
;
1137 real_t f51
, f52
, f53
, f54
, f55
, f56
, f57
, f58
, f59
, f60
;
1138 real_t f63
, f64
, f65
, f66
, f69
, f70
, f71
, f72
, f73
, f74
;
1139 real_t f75
, f76
, f77
, f78
, f79
, f80
, f81
, f83
, f85
, f86
;
1140 real_t f89
, f90
, f91
, f92
, f93
, f94
, f95
, f96
, f97
, f98
;
1141 real_t f99
, f100
, f101
, f102
, f103
, f104
, f105
, f106
, f107
, f108
;
1142 real_t f109
, f110
, f111
, f112
, f113
, f114
, f115
, f116
, f117
, f118
;
1143 real_t f119
, f120
, f121
, f122
, f123
, f124
, f127
, f128
, f129
, f130
;
1144 real_t f133
, f134
, f135
, f136
, f139
, f140
, f141
, f142
, f145
, f146
;
1145 real_t f147
, f148
, f149
, f150
, f151
, f152
, f153
, f154
, f155
, f156
;
1146 real_t f157
, f158
, f159
, f160
, f161
, f162
, f163
, f164
, f165
, f166
;
1147 real_t f167
, f168
, f169
, f170
, f171
, f172
, f173
, f174
, f175
, f176
;
1148 real_t f177
, f178
, f179
, f180
, f181
, f182
, f183
, f184
, f185
, f186
;
1149 real_t f187
, f188
, f189
, f190
, f191
, f192
, f193
, f194
, f195
, f196
;
1150 real_t f197
, f198
, f199
, f200
, f201
, f202
, f203
, f204
, f205
, f206
;
1151 real_t f207
, f208
, f209
, f210
, f211
, f212
, f213
, f214
, f215
, f216
;
1152 real_t f217
, f218
, f219
, f220
, f221
, f222
, f223
, f224
, f225
, f226
;
1153 real_t f227
, f228
, f229
, f230
, f231
, f232
, f233
, f234
, f235
, f236
;
1154 real_t f237
, f238
, f239
, f240
, f241
, f242
, f243
, f244
, f247
, f248
;
1155 real_t f249
, f250
, f253
, f254
, f255
, f256
, f259
, f260
, f261
, f262
;
1156 real_t f265
, f266
, f267
, f268
, f271
, f272
, f273
, f274
, f277
, f278
;
1157 real_t f279
, f280
, f283
, f284
, f285
, f286
;
1179 f20
= x
[10] - x
[21];
1180 f21
= x
[10] + x
[21];
1181 f22
= x
[11] - x
[20];
1182 f23
= x
[11] + x
[20];
1183 f24
= x
[12] - x
[19];
1184 f25
= x
[12] + x
[19];
1185 f26
= x
[13] - x
[18];
1186 f27
= x
[13] + x
[18];
1187 f28
= x
[14] - x
[17];
1188 f29
= x
[14] + x
[17];
1189 f30
= x
[15] - x
[16];
1190 f31
= x
[15] + x
[16];
1221 y
[16] = MUL_F(FRAC_CONST(0.7071067811865476), f60
);
1223 f64
= MUL_C(COEF_CONST(1.3065629648763766), f56
);
1224 f65
= MUL_F(FRAC_CONST(-0.9238795325112866), f63
);
1225 f66
= MUL_F(FRAC_CONST(-0.5411961001461967), f58
);
1229 f70
= MUL_C(COEF_CONST(1.1758756024193588), f48
);
1230 f71
= MUL_F(FRAC_CONST(-0.9807852804032304), f69
);
1231 f72
= MUL_F(FRAC_CONST(-0.7856949583871021), f54
);
1235 f76
= MUL_C(COEF_CONST(1.3870398453221473), f50
);
1236 f77
= MUL_F(FRAC_CONST(-0.8314696123025455), f75
);
1237 f78
= MUL_F(FRAC_CONST(-0.2758993792829436), f52
);
1242 f83
= MUL_F(FRAC_CONST(0.7071067811865476), f81
);
1245 f86
= MUL_F(FRAC_CONST(0.7071067811865476), f85
);
1254 f95
= MUL_F(FRAC_CONST(0.7071067811865476), f92
);
1258 f99
= MUL_C(COEF_CONST(1.3065629648763766), f90
);
1259 f100
= MUL_F(FRAC_CONST(-0.9238795325112866), f98
);
1260 f101
= MUL_F(FRAC_CONST(-0.5411961001461967), f94
);
1267 f108
= MUL_F(FRAC_CONST(0.7071067811865476), f91
);
1271 f112
= MUL_C(COEF_CONST(1.3065629648763766), f93
);
1272 f113
= MUL_F(FRAC_CONST(-0.9238795325112866), f111
);
1273 f114
= MUL_F(FRAC_CONST(-0.5411961001461967), f89
);
1281 f122
= MUL_F(FRAC_CONST(-0.8971675863426361), f118
);
1282 f123
= MUL_F(FRAC_CONST(0.9951847266721968), f121
);
1283 f124
= MUL_C(COEF_CONST(1.0932018670017576), f105
);
1285 y
[30] = f124
- f123
;
1287 f128
= MUL_F(FRAC_CONST(-0.6666556584777466), f120
);
1288 f129
= MUL_F(FRAC_CONST(0.9569403357322089), f127
);
1289 f130
= MUL_C(COEF_CONST(1.2472250129866713), f107
);
1291 y
[26] = f130
- f129
;
1293 f134
= MUL_F(FRAC_CONST(-0.4105245275223571), f119
);
1294 f135
= MUL_F(FRAC_CONST(0.8819212643483549), f133
);
1295 f136
= MUL_C(COEF_CONST(1.3533180011743529), f106
);
1296 y
[10] = f134
+ f135
;
1297 y
[22] = f136
- f135
;
1299 f140
= MUL_F(FRAC_CONST(-0.1386171691990915), f117
);
1300 f141
= MUL_F(FRAC_CONST(0.7730104533627370), f139
);
1301 f142
= MUL_C(COEF_CONST(1.4074037375263826), f104
);
1302 y
[14] = f141
- f140
;
1303 y
[18] = f142
- f141
;
1318 f159
= MUL_F(FRAC_CONST(0.7071067811865476), f152
);
1322 f163
= MUL_C(COEF_CONST(1.3065629648763766), f148
);
1323 f164
= MUL_F(FRAC_CONST(-0.9238795325112866), f162
);
1324 f165
= MUL_F(FRAC_CONST(-0.5411961001461967), f156
);
1332 f173
= MUL_C(COEF_CONST(1.1758756024193588), f146
);
1333 f174
= MUL_F(FRAC_CONST(-0.9807852804032304), f172
);
1334 f175
= MUL_F(FRAC_CONST(-0.7856949583871021), f158
);
1338 f179
= MUL_C(COEF_CONST(1.3870398453221473), f150
);
1339 f180
= MUL_F(FRAC_CONST(-0.8314696123025455), f178
);
1340 f181
= MUL_F(FRAC_CONST(-0.2758993792829436), f154
);
1345 f186
= MUL_F(FRAC_CONST(0.7071067811865476), f184
);
1348 f189
= MUL_F(FRAC_CONST(0.7071067811865476), f188
);
1359 f200
= MUL_F(FRAC_CONST(0.7071067811865476), f151
);
1363 f204
= MUL_C(COEF_CONST(1.3065629648763766), f155
);
1364 f205
= MUL_F(FRAC_CONST(-0.9238795325112866), f203
);
1365 f206
= MUL_F(FRAC_CONST(-0.5411961001461967), f147
);
1373 f214
= MUL_C(COEF_CONST(1.1758756024193588), f157
);
1374 f215
= MUL_F(FRAC_CONST(-0.9807852804032304), f213
);
1375 f216
= MUL_F(FRAC_CONST(-0.7856949583871021), f145
);
1379 f220
= MUL_C(COEF_CONST(1.3870398453221473), f153
);
1380 f221
= MUL_F(FRAC_CONST(-0.8314696123025455), f219
);
1381 f222
= MUL_F(FRAC_CONST(-0.2758993792829436), f149
);
1386 f227
= MUL_F(FRAC_CONST(0.7071067811865476), f225
);
1389 f230
= MUL_F(FRAC_CONST(0.7071067811865476), f229
);
1401 f242
= MUL_F(FRAC_CONST(-0.9497277818777543), f234
);
1402 f243
= MUL_F(FRAC_CONST(0.9987954562051724), f241
);
1403 f244
= MUL_C(COEF_CONST(1.0478631305325905), f193
);
1405 y
[31] = f244
- f243
;
1407 f248
= MUL_F(FRAC_CONST(-0.8424460355094192), f236
);
1408 f249
= MUL_F(FRAC_CONST(0.9891765099647810), f247
);
1409 f250
= MUL_C(COEF_CONST(1.1359069844201428), f195
);
1411 y
[29] = f250
- f249
;
1413 f254
= MUL_F(FRAC_CONST(-0.7270510732912801), f238
);
1414 f255
= MUL_F(FRAC_CONST(0.9700312531945440), f253
);
1415 f256
= MUL_C(COEF_CONST(1.2130114330978079), f197
);
1417 y
[27] = f256
- f255
;
1419 f260
= MUL_F(FRAC_CONST(-0.6046542117908007), f240
);
1420 f261
= MUL_F(FRAC_CONST(0.9415440651830208), f259
);
1421 f262
= MUL_C(COEF_CONST(1.2784339185752409), f199
);
1423 y
[25] = f262
- f261
;
1425 f266
= MUL_F(FRAC_CONST(-0.4764341996931611), f239
);
1426 f267
= MUL_F(FRAC_CONST(0.9039892931234433), f265
);
1427 f268
= MUL_C(COEF_CONST(1.3315443865537255), f198
);
1429 y
[23] = f268
- f267
;
1431 f272
= MUL_F(FRAC_CONST(-0.3436258658070505), f237
);
1432 f273
= MUL_F(FRAC_CONST(0.8577286100002721), f271
);
1433 f274
= MUL_C(COEF_CONST(1.3718313541934939), f196
);
1434 y
[11] = f273
- f272
;
1435 y
[21] = f274
- f273
;
1437 f278
= MUL_F(FRAC_CONST(-0.2075082269882114), f235
);
1438 f279
= MUL_F(FRAC_CONST(0.8032075314806448), f277
);
1439 f280
= MUL_C(COEF_CONST(1.3989068359730783), f194
);
1440 y
[13] = f278
+ f279
;
1441 y
[19] = f280
- f279
;
1443 f284
= MUL_F(FRAC_CONST(-0.0693921705079408), f233
);
1444 f285
= MUL_F(FRAC_CONST(0.7409511253549591), f283
);
1445 f286
= MUL_C(COEF_CONST(1.4125100802019774), f192
);
1446 y
[15] = f285
- f284
;
1447 y
[17] = f286
- f285
;
1456 // w_array_real[i] = cos(2*M_PI*i/32)
1457 static const real_t w_array_real
[] = {
1458 FRAC_CONST(1.000000000000000), FRAC_CONST(0.980785279337272),
1459 FRAC_CONST(0.923879528329380), FRAC_CONST(0.831469603195765),
1460 FRAC_CONST(0.707106765732237), FRAC_CONST(0.555570210304169),
1461 FRAC_CONST(0.382683402077046), FRAC_CONST(0.195090284503576),
1462 FRAC_CONST(0.000000000000000), FRAC_CONST(-0.195090370246552),
1463 FRAC_CONST(-0.382683482845162), FRAC_CONST(-0.555570282993553),
1464 FRAC_CONST(-0.707106827549476), FRAC_CONST(-0.831469651765257),
1465 FRAC_CONST(-0.923879561784627), FRAC_CONST(-0.980785296392607)
1468 // w_array_imag[i] = sin(-2*M_PI*i/32)
1469 static const real_t w_array_imag
[] = {
1470 FRAC_CONST(0.000000000000000), FRAC_CONST(-0.195090327375064),
1471 FRAC_CONST(-0.382683442461104), FRAC_CONST(-0.555570246648862),
1472 FRAC_CONST(-0.707106796640858), FRAC_CONST(-0.831469627480512),
1473 FRAC_CONST(-0.923879545057005), FRAC_CONST(-0.980785287864940),
1474 FRAC_CONST(-1.000000000000000), FRAC_CONST(-0.980785270809601),
1475 FRAC_CONST(-0.923879511601754), FRAC_CONST(-0.831469578911016),
1476 FRAC_CONST(-0.707106734823616), FRAC_CONST(-0.555570173959476),
1477 FRAC_CONST(-0.382683361692986), FRAC_CONST(-0.195090241632088)
1480 // FFT decimation in frequency
1481 // 4*16*2+16=128+16=144 multiplications
1482 // 6*16*2+10*8+4*16*2=192+80+128=400 additions
1483 static void fft_dif(real_t
* Real
, real_t
* Imag
)
1485 real_t w_real
, w_imag
; // For faster access
1486 real_t point1_real
, point1_imag
, point2_real
, point2_imag
; // For faster access
1487 uint32_t j
, i
, i2
, w_index
; // Counters
1489 // First 2 stages of 32 point FFT decimation in frequency
1490 // 4*16*2=64*2=128 multiplications
1491 // 6*16*2=96*2=192 additions
1492 // Stage 1 of 32 point FFT decimation in frequency
1493 for (i
= 0; i
< 16; i
++)
1495 point1_real
= Real
[i
];
1496 point1_imag
= Imag
[i
];
1498 point2_real
= Real
[i2
];
1499 point2_imag
= Imag
[i2
];
1501 w_real
= w_array_real
[i
];
1502 w_imag
= w_array_imag
[i
];
1504 // temp1 = x[i] - x[i2]
1505 point1_real
-= point2_real
;
1506 point1_imag
-= point2_imag
;
1508 // x[i1] = x[i] + x[i2]
1509 Real
[i
] += point2_real
;
1510 Imag
[i
] += point2_imag
;
1512 // x[i2] = (x[i] - x[i2]) * w
1513 Real
[i2
] = (MUL_F(point1_real
,w_real
) - MUL_F(point1_imag
,w_imag
));
1514 Imag
[i2
] = (MUL_F(point1_real
,w_imag
) + MUL_F(point1_imag
,w_real
));
1516 // Stage 2 of 32 point FFT decimation in frequency
1517 for (j
= 0, w_index
= 0; j
< 8; j
++, w_index
+= 2)
1519 w_real
= w_array_real
[w_index
];
1520 w_imag
= w_array_imag
[w_index
];
1523 point1_real
= Real
[i
];
1524 point1_imag
= Imag
[i
];
1526 point2_real
= Real
[i2
];
1527 point2_imag
= Imag
[i2
];
1529 // temp1 = x[i] - x[i2]
1530 point1_real
-= point2_real
;
1531 point1_imag
-= point2_imag
;
1533 // x[i1] = x[i] + x[i2]
1534 Real
[i
] += point2_real
;
1535 Imag
[i
] += point2_imag
;
1537 // x[i2] = (x[i] - x[i2]) * w
1538 Real
[i2
] = (MUL_F(point1_real
,w_real
) - MUL_F(point1_imag
,w_imag
));
1539 Imag
[i2
] = (MUL_F(point1_real
,w_imag
) + MUL_F(point1_imag
,w_real
));
1542 point1_real
= Real
[i
];
1543 point1_imag
= Imag
[i
];
1545 point2_real
= Real
[i2
];
1546 point2_imag
= Imag
[i2
];
1548 // temp1 = x[i] - x[i2]
1549 point1_real
-= point2_real
;
1550 point1_imag
-= point2_imag
;
1552 // x[i1] = x[i] + x[i2]
1553 Real
[i
] += point2_real
;
1554 Imag
[i
] += point2_imag
;
1556 // x[i2] = (x[i] - x[i2]) * w
1557 Real
[i2
] = (MUL_F(point1_real
,w_real
) - MUL_F(point1_imag
,w_imag
));
1558 Imag
[i2
] = (MUL_F(point1_real
,w_imag
) + MUL_F(point1_imag
,w_real
));
1561 // Stage 3 of 32 point FFT decimation in frequency
1562 // 2*4*2=16 multiplications
1563 // 4*4*2+6*4*2=10*8=80 additions
1564 for (i
= 0; i
< n
; i
+= 8)
1567 point1_real
= Real
[i
];
1568 point1_imag
= Imag
[i
];
1570 point2_real
= Real
[i2
];
1571 point2_imag
= Imag
[i2
];
1573 // out[i1] = point1 + point2
1574 Real
[i
] += point2_real
;
1575 Imag
[i
] += point2_imag
;
1577 // out[i2] = point1 - point2
1578 Real
[i2
] = point1_real
- point2_real
;
1579 Imag
[i2
] = point1_imag
- point2_imag
;
1581 w_real
= w_array_real
[4]; // = sqrt(2)/2
1582 // w_imag = -w_real; // = w_array_imag[4]; // = -sqrt(2)/2
1583 for (i
= 1; i
< n
; i
+= 8)
1586 point1_real
= Real
[i
];
1587 point1_imag
= Imag
[i
];
1589 point2_real
= Real
[i2
];
1590 point2_imag
= Imag
[i2
];
1592 // temp1 = x[i] - x[i2]
1593 point1_real
-= point2_real
;
1594 point1_imag
-= point2_imag
;
1596 // x[i1] = x[i] + x[i2]
1597 Real
[i
] += point2_real
;
1598 Imag
[i
] += point2_imag
;
1600 // x[i2] = (x[i] - x[i2]) * w
1601 Real
[i2
] = MUL_F(point1_real
+point1_imag
, w_real
);
1602 Imag
[i2
] = MUL_F(point1_imag
-point1_real
, w_real
);
1604 for (i
= 2; i
< n
; i
+= 8)
1607 point1_real
= Real
[i
];
1608 point1_imag
= Imag
[i
];
1610 point2_real
= Real
[i2
];
1611 point2_imag
= Imag
[i2
];
1613 // x[i] = x[i] + x[i2]
1614 Real
[i
] += point2_real
;
1615 Imag
[i
] += point2_imag
;
1617 // x[i2] = (x[i] - x[i2]) * (-i)
1618 Real
[i2
] = point1_imag
- point2_imag
;
1619 Imag
[i2
] = point2_real
- point1_real
;
1621 w_real
= w_array_real
[12]; // = -sqrt(2)/2
1622 // w_imag = w_real; // = w_array_imag[12]; // = -sqrt(2)/2
1623 for (i
= 3; i
< n
; i
+= 8)
1626 point1_real
= Real
[i
];
1627 point1_imag
= Imag
[i
];
1629 point2_real
= Real
[i2
];
1630 point2_imag
= Imag
[i2
];
1632 // temp1 = x[i] - x[i2]
1633 point1_real
-= point2_real
;
1634 point1_imag
-= point2_imag
;
1636 // x[i1] = x[i] + x[i2]
1637 Real
[i
] += point2_real
;
1638 Imag
[i
] += point2_imag
;
1640 // x[i2] = (x[i] - x[i2]) * w
1641 Real
[i2
] = MUL_F(point1_real
-point1_imag
, w_real
);
1642 Imag
[i2
] = MUL_F(point1_real
+point1_imag
, w_real
);
1646 // Stage 4 of 32 point FFT decimation in frequency (no multiplications)
1647 // 16*4=64 additions
1648 for (i
= 0; i
< n
; i
+= 4)
1651 point1_real
= Real
[i
];
1652 point1_imag
= Imag
[i
];
1654 point2_real
= Real
[i2
];
1655 point2_imag
= Imag
[i2
];
1657 // x[i1] = x[i] + x[i2]
1658 Real
[i
] += point2_real
;
1659 Imag
[i
] += point2_imag
;
1661 // x[i2] = x[i] - x[i2]
1662 Real
[i2
] = point1_real
- point2_real
;
1663 Imag
[i2
] = point1_imag
- point2_imag
;
1665 for (i
= 1; i
< n
; i
+= 4)
1668 point1_real
= Real
[i
];
1669 point1_imag
= Imag
[i
];
1671 point2_real
= Real
[i2
];
1672 point2_imag
= Imag
[i2
];
1674 // x[i] = x[i] + x[i2]
1675 Real
[i
] += point2_real
;
1676 Imag
[i
] += point2_imag
;
1678 // x[i2] = (x[i] - x[i2]) * (-i)
1679 Real
[i2
] = point1_imag
- point2_imag
;
1680 Imag
[i2
] = point2_real
- point1_real
;
1683 // Stage 5 of 32 point FFT decimation in frequency (no multiplications)
1684 // 16*4=64 additions
1685 for (i
= 0; i
< n
; i
+= 2)
1688 point1_real
= Real
[i
];
1689 point1_imag
= Imag
[i
];
1691 point2_real
= Real
[i2
];
1692 point2_imag
= Imag
[i2
];
1694 // out[i1] = point1 + point2
1695 Real
[i
] += point2_real
;
1696 Imag
[i
] += point2_imag
;
1698 // out[i2] = point1 - point2
1699 Real
[i2
] = point1_real
- point2_real
;
1700 Imag
[i2
] = point1_imag
- point2_imag
;
1703 #ifdef REORDER_IN_FFT
1704 FFTReorder(Real
, Imag
);
1705 #endif // #ifdef REORDER_IN_FFT
1710 static const real_t dct4_64_tab
[] = {
1711 COEF_CONST(0.999924719333649), COEF_CONST(0.998118102550507),
1712 COEF_CONST(0.993906974792480), COEF_CONST(0.987301409244537),
1713 COEF_CONST(0.978317379951477), COEF_CONST(0.966976463794708),
1714 COEF_CONST(0.953306019306183), COEF_CONST(0.937339007854462),
1715 COEF_CONST(0.919113874435425), COEF_CONST(0.898674488067627),
1716 COEF_CONST(0.876070082187653), COEF_CONST(0.851355195045471),
1717 COEF_CONST(0.824589252471924), COEF_CONST(0.795836925506592),
1718 COEF_CONST(0.765167236328125), COEF_CONST(0.732654273509979),
1719 COEF_CONST(0.698376238346100), COEF_CONST(0.662415742874146),
1720 COEF_CONST(0.624859452247620), COEF_CONST(0.585797846317291),
1721 COEF_CONST(0.545324981212616), COEF_CONST(0.503538429737091),
1722 COEF_CONST(0.460538715124130), COEF_CONST(0.416429549455643),
1723 COEF_CONST(0.371317148208618), COEF_CONST(0.325310230255127),
1724 COEF_CONST(0.278519600629807), COEF_CONST(0.231058135628700),
1725 COEF_CONST(0.183039888739586), COEF_CONST(0.134580686688423),
1726 COEF_CONST(0.085797272622585), COEF_CONST(0.036807164549828),
1727 COEF_CONST(-1.012196302413940), COEF_CONST(-1.059438824653626),
1728 COEF_CONST(-1.104129195213318), COEF_CONST(-1.146159529685974),
1729 COEF_CONST(-1.185428738594055), COEF_CONST(-1.221842169761658),
1730 COEF_CONST(-1.255311965942383), COEF_CONST(-1.285757660865784),
1731 COEF_CONST(-1.313105940818787), COEF_CONST(-1.337290763854981),
1732 COEF_CONST(-1.358253836631775), COEF_CONST(-1.375944852828980),
1733 COEF_CONST(-1.390321016311646), COEF_CONST(-1.401347875595093),
1734 COEF_CONST(-1.408998727798462), COEF_CONST(-1.413255214691162),
1735 COEF_CONST(-1.414107084274292), COEF_CONST(-1.411552190780640),
1736 COEF_CONST(-1.405596733093262), COEF_CONST(-1.396255016326904),
1737 COEF_CONST(-1.383549690246582), COEF_CONST(-1.367511272430420),
1738 COEF_CONST(-1.348178386688232), COEF_CONST(-1.325597524642944),
1739 COEF_CONST(-1.299823284149170), COEF_CONST(-1.270917654037476),
1740 COEF_CONST(-1.238950133323669), COEF_CONST(-1.203998088836670),
1741 COEF_CONST(-1.166145324707031), COEF_CONST(-1.125483393669128),
1742 COEF_CONST(-1.082109928131104), COEF_CONST(-1.036129593849182),
1743 COEF_CONST(-0.987653195858002), COEF_CONST(-0.936797380447388),
1744 COEF_CONST(-0.883684754371643), COEF_CONST(-0.828443288803101),
1745 COEF_CONST(-0.771206021308899), COEF_CONST(-0.712110757827759),
1746 COEF_CONST(-0.651300072669983), COEF_CONST(-0.588920354843140),
1747 COEF_CONST(-0.525121808052063), COEF_CONST(-0.460058242082596),
1748 COEF_CONST(-0.393886327743530), COEF_CONST(-0.326765477657318),
1749 COEF_CONST(-0.258857429027557), COEF_CONST(-0.190325915813446),
1750 COEF_CONST(-0.121335685253143), COEF_CONST(-0.052053272724152),
1751 COEF_CONST(0.017354607582092), COEF_CONST(0.086720645427704),
1752 COEF_CONST(0.155877828598022), COEF_CONST(0.224659323692322),
1753 COEF_CONST(0.292899727821350), COEF_CONST(0.360434412956238),
1754 COEF_CONST(0.427100926637650), COEF_CONST(0.492738455533981),
1755 COEF_CONST(0.557188928127289), COEF_CONST(0.620297133922577),
1756 COEF_CONST(0.681910991668701), COEF_CONST(0.741881847381592),
1757 COEF_CONST(0.800065577030182), COEF_CONST(0.856321990489960),
1758 COEF_CONST(0.910515367984772), COEF_CONST(0.962515234947205),
1759 COEF_CONST(1.000000000000000), COEF_CONST(0.998795449733734),
1760 COEF_CONST(0.995184719562531), COEF_CONST(0.989176511764526),
1761 COEF_CONST(0.980785250663757), COEF_CONST(0.970031261444092),
1762 COEF_CONST(0.956940352916718), COEF_CONST(0.941544055938721),
1763 COEF_CONST(0.923879504203796), COEF_CONST(0.903989315032959),
1764 COEF_CONST(0.881921231746674), COEF_CONST(0.857728600502014),
1765 COEF_CONST(0.831469595432281), COEF_CONST(0.803207516670227),
1766 COEF_CONST(0.773010432720184), COEF_CONST(0.740951120853424),
1767 COEF_CONST(0.707106769084930), COEF_CONST(0.671558916568756),
1768 COEF_CONST(0.634393274784088), COEF_CONST(0.595699310302734),
1769 COEF_CONST(0.555570185184479), COEF_CONST(0.514102697372437),
1770 COEF_CONST(0.471396654844284), COEF_CONST(0.427555114030838),
1771 COEF_CONST(0.382683426141739), COEF_CONST(0.336889833211899),
1772 COEF_CONST(0.290284633636475), COEF_CONST(0.242980122566223),
1773 COEF_CONST(0.195090234279633), COEF_CONST(0.146730497479439),
1774 COEF_CONST(0.098017133772373), COEF_CONST(0.049067649990320),
1775 COEF_CONST(-1.000000000000000), COEF_CONST(-1.047863125801086),
1776 COEF_CONST(-1.093201875686646), COEF_CONST(-1.135906934738159),
1777 COEF_CONST(-1.175875544548035), COEF_CONST(-1.213011503219605),
1778 COEF_CONST(-1.247225046157837), COEF_CONST(-1.278433918952942),
1779 COEF_CONST(-1.306562900543213), COEF_CONST(-1.331544399261475),
1780 COEF_CONST(-1.353317975997925), COEF_CONST(-1.371831417083740),
1781 COEF_CONST(-1.387039899826050), COEF_CONST(-1.398906826972961),
1782 COEF_CONST(-1.407403707504273), COEF_CONST(-1.412510156631470),
1783 COEF_CONST(0), COEF_CONST(-1.412510156631470),
1784 COEF_CONST(-1.407403707504273), COEF_CONST(-1.398906826972961),
1785 COEF_CONST(-1.387039899826050), COEF_CONST(-1.371831417083740),
1786 COEF_CONST(-1.353317975997925), COEF_CONST(-1.331544399261475),
1787 COEF_CONST(-1.306562900543213), COEF_CONST(-1.278433918952942),
1788 COEF_CONST(-1.247225046157837), COEF_CONST(-1.213011384010315),
1789 COEF_CONST(-1.175875544548035), COEF_CONST(-1.135907053947449),
1790 COEF_CONST(-1.093201875686646), COEF_CONST(-1.047863125801086),
1791 COEF_CONST(-1.000000000000000), COEF_CONST(-0.949727773666382),
1792 COEF_CONST(-0.897167563438416), COEF_CONST(-0.842446029186249),
1793 COEF_CONST(-0.785694956779480), COEF_CONST(-0.727051079273224),
1794 COEF_CONST(-0.666655659675598), COEF_CONST(-0.604654192924500),
1795 COEF_CONST(-0.541196048259735), COEF_CONST(-0.476434230804443),
1796 COEF_CONST(-0.410524487495422), COEF_CONST(-0.343625843524933),
1797 COEF_CONST(-0.275899350643158), COEF_CONST(-0.207508206367493),
1798 COEF_CONST(-0.138617098331451), COEF_CONST(-0.069392144680023),
1799 COEF_CONST(0), COEF_CONST(0.069392263889313),
1800 COEF_CONST(0.138617157936096), COEF_CONST(0.207508206367493),
1801 COEF_CONST(0.275899469852448), COEF_CONST(0.343625962734222),
1802 COEF_CONST(0.410524636507034), COEF_CONST(0.476434201002121),
1803 COEF_CONST(0.541196107864380), COEF_CONST(0.604654192924500),
1804 COEF_CONST(0.666655719280243), COEF_CONST(0.727051138877869),
1805 COEF_CONST(0.785695075988770), COEF_CONST(0.842446029186249),
1806 COEF_CONST(0.897167563438416), COEF_CONST(0.949727773666382)
1810 void dct4_kernel(real_t
* in_real
, real_t
* in_imag
, real_t
* out_real
, real_t
* out_imag
)
1812 // Tables with bit reverse values for 5 bits, bit reverse of i at i-th position
1813 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 };
1816 /* Step 2: modulate */
1817 // 3*32=96 multiplications
1818 // 3*32=96 additions
1819 for (i
= 0; i
< 32; i
++)
1821 real_t x_re
, x_im
, tmp
;
1824 tmp
= MUL_C(x_re
+ x_im
, dct4_64_tab
[i
]);
1825 in_real
[i
] = MUL_C(x_im
, dct4_64_tab
[i
+ 64]) + tmp
;
1826 in_imag
[i
] = MUL_C(x_re
, dct4_64_tab
[i
+ 32]) + tmp
;
1829 /* Step 3: FFT, but with output in bit reverse order */
1830 fft_dif(in_real
, in_imag
);
1832 /* Step 4: modulate + bitreverse reordering */
1833 // 3*31+2=95 multiplications
1834 // 3*31+2=95 additions
1835 for (i
= 0; i
< 16; i
++)
1837 real_t x_re
, x_im
, tmp
;
1838 i_rev
= bit_rev_tab
[i
];
1839 x_re
= in_real
[i_rev
];
1840 x_im
= in_imag
[i_rev
];
1842 tmp
= MUL_C(x_re
+ x_im
, dct4_64_tab
[i
+ 3*32]);
1843 out_real
[i
] = MUL_C(x_im
, dct4_64_tab
[i
+ 5*32]) + tmp
;
1844 out_imag
[i
] = MUL_C(x_re
, dct4_64_tab
[i
+ 4*32]) + tmp
;
1846 // i = 16, i_rev = 1 = rev(16);
1847 out_imag
[16] = MUL_C(in_imag
[1] - in_real
[1], dct4_64_tab
[16 + 3*32]);
1848 out_real
[16] = MUL_C(in_real
[1] + in_imag
[1], dct4_64_tab
[16 + 3*32]);
1849 for (i
= 17; i
< 32; i
++)
1851 real_t x_re
, x_im
, tmp
;
1852 i_rev
= bit_rev_tab
[i
];
1853 x_re
= in_real
[i_rev
];
1854 x_im
= in_imag
[i_rev
];
1855 tmp
= MUL_C(x_re
+ x_im
, dct4_64_tab
[i
+ 3*32]);
1856 out_real
[i
] = MUL_C(x_im
, dct4_64_tab
[i
+ 5*32]) + tmp
;
1857 out_imag
[i
] = MUL_C(x_re
, dct4_64_tab
[i
+ 4*32]) + tmp
;
1862 void DST4_32(real_t
*y
, real_t
*x
)
1864 real_t f0
, f1
, f2
, f3
, f4
, f5
, f6
, f7
, f8
, f9
;
1865 real_t f10
, f11
, f12
, f13
, f14
, f15
, f16
, f17
, f18
, f19
;
1866 real_t f20
, f21
, f22
, f23
, f24
, f25
, f26
, f27
, f28
, f29
;
1867 real_t f30
, f31
, f32
, f33
, f34
, f35
, f36
, f37
, f38
, f39
;
1868 real_t f40
, f41
, f42
, f43
, f44
, f45
, f46
, f47
, f48
, f49
;
1869 real_t f50
, f51
, f52
, f53
, f54
, f55
, f56
, f57
, f58
, f59
;
1870 real_t f60
, f61
, f62
, f63
, f64
, f65
, f66
, f67
, f68
, f69
;
1871 real_t f70
, f71
, f72
, f73
, f74
, f75
, f76
, f77
, f78
, f79
;
1872 real_t f80
, f81
, f82
, f83
, f84
, f85
, f86
, f87
, f88
, f89
;
1873 real_t f90
, f91
, f92
, f93
, f94
, f95
, f96
, f97
, f98
, f99
;
1874 real_t f100
, f101
, f102
, f103
, f104
, f105
, f106
, f107
, f108
, f109
;
1875 real_t f110
, f111
, f112
, f113
, f114
, f115
, f116
, f117
, f118
, f119
;
1876 real_t f120
, f121
, f122
, f123
, f124
, f125
, f126
, f127
, f128
, f129
;
1877 real_t f130
, f131
, f132
, f133
, f134
, f135
, f136
, f137
, f138
, f139
;
1878 real_t f140
, f141
, f142
, f143
, f144
, f145
, f146
, f147
, f148
, f149
;
1879 real_t f150
, f151
, f152
, f153
, f154
, f155
, f156
, f157
, f158
, f159
;
1880 real_t f160
, f161
, f162
, f163
, f164
, f165
, f166
, f167
, f168
, f169
;
1881 real_t f170
, f171
, f172
, f173
, f174
, f175
, f176
, f177
, f178
, f179
;
1882 real_t f180
, f181
, f182
, f183
, f184
, f185
, f186
, f187
, f188
, f189
;
1883 real_t f190
, f191
, f192
, f193
, f194
, f195
, f196
, f197
, f198
, f199
;
1884 real_t f200
, f201
, f202
, f203
, f204
, f205
, f206
, f207
, f208
, f209
;
1885 real_t f210
, f211
, f212
, f213
, f214
, f215
, f216
, f217
, f218
, f219
;
1886 real_t f220
, f221
, f222
, f223
, f224
, f225
, f226
, f227
, f228
, f229
;
1887 real_t f230
, f231
, f232
, f233
, f234
, f235
, f236
, f237
, f238
, f239
;
1888 real_t f240
, f241
, f242
, f243
, f244
, f245
, f246
, f247
, f248
, f249
;
1889 real_t f250
, f251
, f252
, f253
, f254
, f255
, f256
, f257
, f258
, f259
;
1890 real_t f260
, f261
, f262
, f263
, f264
, f265
, f266
, f267
, f268
, f269
;
1891 real_t f270
, f271
, f272
, f273
, f274
, f275
, f276
, f277
, f278
, f279
;
1892 real_t f280
, f281
, f282
, f283
, f284
, f285
, f286
, f287
, f288
, f289
;
1893 real_t f290
, f291
, f292
, f293
, f294
, f295
, f296
, f297
, f298
, f299
;
1894 real_t f300
, f301
, f302
, f303
, f304
, f305
, f306
, f307
, f308
, f309
;
1895 real_t f310
, f311
, f312
, f313
, f314
, f315
, f316
, f317
, f318
, f319
;
1896 real_t f320
, f321
, f322
, f323
, f324
, f325
, f326
, f327
, f328
, f329
;
1897 real_t f330
, f331
, f332
, f333
, f334
, f335
;
1909 f10
= x
[10] - x
[11];
1910 f11
= x
[12] - x
[11];
1911 f12
= x
[12] - x
[13];
1912 f13
= x
[14] - x
[13];
1913 f14
= x
[14] - x
[15];
1914 f15
= x
[16] - x
[15];
1915 f16
= x
[16] - x
[17];
1916 f17
= x
[18] - x
[17];
1917 f18
= x
[18] - x
[19];
1918 f19
= x
[20] - x
[19];
1919 f20
= x
[20] - x
[21];
1920 f21
= x
[22] - x
[21];
1921 f22
= x
[22] - x
[23];
1922 f23
= x
[24] - x
[23];
1923 f24
= x
[24] - x
[25];
1924 f25
= x
[26] - x
[25];
1925 f26
= x
[26] - x
[27];
1926 f27
= x
[28] - x
[27];
1927 f28
= x
[28] - x
[29];
1928 f29
= x
[30] - x
[29];
1929 f30
= x
[30] - x
[31];
1930 f31
= MUL_F(FRAC_CONST(0.7071067811865476), f15
);
1934 f35
= MUL_C(COEF_CONST(1.3065629648763766), f7
);
1935 f36
= MUL_F(FRAC_CONST(-0.9238795325112866), f34
);
1936 f37
= MUL_F(FRAC_CONST(-0.5411961001461967), f23
);
1945 f46
= MUL_F(FRAC_CONST(0.7071067811865476), f45
);
1948 f49
= MUL_F(FRAC_CONST(0.7071067811865476), f44
);
1952 f53
= MUL_F(FRAC_CONST(-0.7856949583871021), f51
);
1953 f54
= MUL_F(FRAC_CONST(0.9807852804032304), f52
);
1954 f55
= MUL_C(COEF_CONST(1.1758756024193588), f48
);
1958 f59
= MUL_F(FRAC_CONST(-0.2758993792829430), f50
);
1959 f60
= MUL_F(FRAC_CONST(0.8314696123025452), f58
);
1960 f61
= MUL_C(COEF_CONST(1.3870398453221475), f47
);
1977 f78
= MUL_F(FRAC_CONST(0.7071067811865476), f75
);
1981 f82
= MUL_C(COEF_CONST(1.3065629648763766), f73
);
1982 f83
= MUL_F(FRAC_CONST(-0.9238795325112866), f81
);
1983 f84
= MUL_F(FRAC_CONST(-0.5411961001461967), f77
);
1990 f91
= MUL_F(FRAC_CONST(0.7071067811865476), f74
);
1994 f95
= MUL_C(COEF_CONST(1.3065629648763766), f76
);
1995 f96
= MUL_F(FRAC_CONST(-0.9238795325112866), f94
);
1996 f97
= MUL_F(FRAC_CONST(-0.5411961001461967), f72
);
2004 f105
= MUL_F(FRAC_CONST(-0.8971675863426361), f101
);
2005 f106
= MUL_F(FRAC_CONST(0.9951847266721968), f104
);
2006 f107
= MUL_C(COEF_CONST(1.0932018670017576), f88
);
2010 f111
= MUL_F(FRAC_CONST(-0.6666556584777466), f103
);
2011 f112
= MUL_F(FRAC_CONST(0.9569403357322089), f110
);
2012 f113
= MUL_C(COEF_CONST(1.2472250129866713), f90
);
2016 f117
= MUL_F(FRAC_CONST(-0.4105245275223571), f102
);
2017 f118
= MUL_F(FRAC_CONST(0.8819212643483549), f116
);
2018 f119
= MUL_C(COEF_CONST(1.3533180011743529), f89
);
2022 f123
= MUL_F(FRAC_CONST(-0.1386171691990915), f100
);
2023 f124
= MUL_F(FRAC_CONST(0.7730104533627370), f122
);
2024 f125
= MUL_C(COEF_CONST(1.4074037375263826), f87
);
2044 f145
= MUL_C(COEF_CONST(1.0478631305325901), f0
);
2045 f146
= MUL_F(FRAC_CONST(-0.9987954562051724), f144
);
2046 f147
= MUL_F(FRAC_CONST(-0.9497277818777548), f30
);
2050 f151
= MUL_F(FRAC_CONST(1.2130114330978077), f4
);
2051 f152
= MUL_F(FRAC_CONST(-0.9700312531945440), f150
);
2052 f153
= MUL_F(FRAC_CONST(-0.7270510732912803), f26
);
2056 f157
= MUL_C(COEF_CONST(1.3315443865537255), f8
);
2057 f158
= MUL_F(FRAC_CONST(-0.9039892931234433), f156
);
2058 f159
= MUL_F(FRAC_CONST(-0.4764341996931612), f22
);
2062 f163
= MUL_C(COEF_CONST(1.3989068359730781), f12
);
2063 f164
= MUL_F(FRAC_CONST(-0.8032075314806453), f162
);
2064 f165
= MUL_F(FRAC_CONST(-0.2075082269882124), f18
);
2068 f169
= MUL_C(COEF_CONST(1.4125100802019777), f16
);
2069 f170
= MUL_F(FRAC_CONST(-0.6715589548470187), f168
);
2070 f171
= MUL_F(FRAC_CONST(0.0693921705079402), f14
);
2074 f175
= MUL_C(COEF_CONST(1.3718313541934939), f20
);
2075 f176
= MUL_F(FRAC_CONST(-0.5141027441932219), f174
);
2076 f177
= MUL_F(FRAC_CONST(0.3436258658070501), f10
);
2080 f181
= MUL_C(COEF_CONST(1.2784339185752409), f24
);
2081 f182
= MUL_F(FRAC_CONST(-0.3368898533922200), f180
);
2082 f183
= MUL_F(FRAC_CONST(0.6046542117908008), f6
);
2086 f187
= MUL_C(COEF_CONST(1.1359069844201433), f28
);
2087 f188
= MUL_F(FRAC_CONST(-0.1467304744553624), f186
);
2088 f189
= MUL_F(FRAC_CONST(0.8424460355094185), f2
);
2108 f209
= MUL_C(COEF_CONST(1.1758756024193588), f192
);
2109 f210
= MUL_F(FRAC_CONST(-0.9807852804032304), f208
);
2110 f211
= MUL_F(FRAC_CONST(-0.7856949583871021), f194
);
2114 f215
= MUL_C(COEF_CONST(1.3870398453221475), f196
);
2115 f216
= MUL_F(FRAC_CONST(-0.5555702330196022), f214
);
2116 f217
= MUL_F(FRAC_CONST(0.2758993792829431), f198
);
2120 f221
= MUL_F(FRAC_CONST(0.7856949583871022), f200
);
2121 f222
= MUL_F(FRAC_CONST(0.1950903220161283), f220
);
2122 f223
= MUL_C(COEF_CONST(1.1758756024193586), f202
);
2126 f227
= MUL_F(FRAC_CONST(-0.2758993792829430), f204
);
2127 f228
= MUL_F(FRAC_CONST(0.8314696123025452), f226
);
2128 f229
= MUL_C(COEF_CONST(1.3870398453221475), f206
);
2148 f249
= MUL_C(COEF_CONST(1.3065629648763766), f232
);
2149 f250
= MUL_F(FRAC_CONST(-0.9238795325112866), f248
);
2150 f251
= MUL_F(FRAC_CONST(-0.5411961001461967), f234
);
2154 f255
= MUL_F(FRAC_CONST(0.5411961001461969), f236
);
2155 f256
= MUL_F(FRAC_CONST(0.3826834323650898), f254
);
2156 f257
= MUL_C(COEF_CONST(1.3065629648763766), f238
);
2160 f261
= MUL_C(COEF_CONST(1.3065629648763766), f240
);
2161 f262
= MUL_F(FRAC_CONST(-0.9238795325112866), f260
);
2162 f263
= MUL_F(FRAC_CONST(-0.5411961001461967), f242
);
2166 f267
= MUL_F(FRAC_CONST(0.5411961001461969), f244
);
2167 f268
= MUL_F(FRAC_CONST(0.3826834323650898), f266
);
2168 f269
= MUL_C(COEF_CONST(1.3065629648763766), f246
);
2189 f290
= MUL_F(FRAC_CONST(0.7071067811865474), f288
);
2190 f291
= MUL_F(FRAC_CONST(0.7071067811865474), f289
);
2193 f294
= MUL_F(FRAC_CONST(0.7071067811865474), f292
);
2194 f295
= MUL_F(FRAC_CONST(0.7071067811865474), f293
);
2197 f298
= MUL_F(FRAC_CONST(0.7071067811865474), f296
);
2198 f299
= MUL_F(FRAC_CONST(0.7071067811865474), f297
);
2201 f302
= MUL_F(FRAC_CONST(0.7071067811865474), f300
);
2202 f303
= MUL_F(FRAC_CONST(0.7071067811865474), f301
);
2235 y
[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305
);
2236 y
[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307
);
2237 y
[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309
);
2238 y
[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311
);
2239 y
[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313
);
2240 y
[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315
);
2241 y
[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317
);
2242 y
[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319
);
2243 y
[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321
);
2244 y
[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323
);
2245 y
[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325
);
2246 y
[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327
);
2247 y
[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329
);
2248 y
[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331
);
2249 y
[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333
);
2250 y
[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335
);
2251 y
[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334
);
2252 y
[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332
);
2253 y
[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330
);
2254 y
[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328
);
2255 y
[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326
);
2256 y
[10] = MUL_C(COEF_CONST(1.0144082649970547), f324
);
2257 y
[9] = MUL_C(COEF_CONST(1.1120716205797176), f322
);
2258 y
[8] = MUL_C(COEF_CONST(1.2338327379765710), f320
);
2259 y
[7] = MUL_C(COEF_CONST(1.3892939586328277), f318
);
2260 y
[6] = MUL_C(COEF_CONST(1.5939722833856311), f316
);
2261 y
[5] = MUL_C(COEF_CONST(1.8746759800084078), f314
);
2262 y
[4] = MUL_C(COEF_CONST(2.2820500680051619), f312
);
2263 y
[3] = MUL_C(COEF_CONST(2.9246284281582162), f310
);
2264 y
[2] = MUL_C(COEF_CONST(4.0846110781292477), f308
);
2265 y
[1] = MUL_C(COEF_CONST(6.7967507116736332), f306
);
2266 y
[0] = MUL_R(REAL_CONST(20.3738781672314530), f304
);