aboutsummaryrefslogtreecommitdiffhomepage
path: root/libfaad2/sbr_dct.c
diff options
context:
space:
mode:
Diffstat (limited to 'libfaad2/sbr_dct.c')
-rw-r--r--libfaad2/sbr_dct.c4420
1 files changed, 1940 insertions, 2480 deletions
diff --git a/libfaad2/sbr_dct.c b/libfaad2/sbr_dct.c
index dc8fef2d5d..2c4db6201c 100644
--- a/libfaad2/sbr_dct.c
+++ b/libfaad2/sbr_dct.c
@@ -23,7 +23,7 @@
** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
**
** Initially modified for use with MPlayer by Arpad Gereöffy on 2003/08/30
-** $Id: sbr_dct.c,v 1.3 2004/06/02 22:59:03 diego Exp $
+** $Id: sbr_dct.c,v 1.4 2004/06/23 13:50:51 diego Exp $
** detailed CVS changelog at http://www.mplayerhq.hu/cgi-bin/cvsweb.cgi/main/
**/
@@ -39,8 +39,758 @@
#include "sbr_dct.h"
+void DCT4_32(real_t *y, real_t *x)
+{
+ real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
+ real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
+ real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
+ real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
+ real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
+ real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
+ real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
+ real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
+ real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
+ real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
+ real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
+ real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
+ real_t f121, f122, f123, f124, f125, f126, f127, f128, f129, f130;
+ real_t f131, f132, f133, f134, f135, f136, f137, f138, f139, f140;
+ real_t f141, f142, f143, f144, f145, f146, f147, f148, f149, f150;
+ real_t f151, f152, f153, f154, f155, f156, f157, f158, f159, f160;
+ real_t f161, f162, f163, f164, f165, f166, f167, f168, f169, f170;
+ real_t f171, f172, f173, f174, f175, f176, f177, f178, f179, f180;
+ real_t f181, f182, f183, f184, f185, f186, f187, f188, f189, f190;
+ real_t f191, f192, f193, f194, f195, f196, f197, f198, f199, f200;
+ real_t f201, f202, f203, f204, f205, f206, f207, f208, f209, f210;
+ real_t f211, f212, f213, f214, f215, f216, f217, f218, f219, f220;
+ real_t f221, f222, f223, f224, f225, f226, f227, f228, f229, f230;
+ real_t f231, f232, f233, f234, f235, f236, f237, f238, f239, f240;
+ real_t f241, f242, f243, f244, f245, f246, f247, f248, f249, f250;
+ real_t f251, f252, f253, f254, f255, f256, f257, f258, f259, f260;
+ real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
+ real_t f271, f272, f273, f274, f275, f276, f277, f278, f279, f280;
+ real_t f281, f282, f283, f284, f285, f286, f287, f288, f289, f290;
+ real_t f291, f292, f293, f294, f295, f296, f297, f298, f299, f300;
+ real_t f301, f302, f303, f304, f305, f306, f307, f310, f311, f312;
+ real_t f313, f316, f317, f318, f319, f322, f323, f324, f325, f328;
+ real_t f329, f330, f331, f334, f335, f336, f337, f340, f341, f342;
+ real_t f343, f346, f347, f348, f349, f352, f353, f354, f355, f358;
+ real_t f359, f360, f361, f364, f365, f366, f367, f370, f371, f372;
+ real_t f373, f376, f377, f378, f379, f382, f383, f384, f385, f388;
+ real_t f389, f390, f391, f394, f395, f396, f397;
+
+ f0 = x[15] - x[16];
+ f1 = x[15] + x[16];
+ f2 = MUL_F(FRAC_CONST(0.7071067811865476), f1);
+ f3 = MUL_F(FRAC_CONST(0.7071067811865476), f0);
+ f4 = x[8] - x[23];
+ f5 = x[8] + x[23];
+ f6 = MUL_F(FRAC_CONST(0.7071067811865476), f5);
+ f7 = MUL_F(FRAC_CONST(0.7071067811865476), f4);
+ f8 = x[12] - x[19];
+ f9 = x[12] + x[19];
+ f10 = MUL_F(FRAC_CONST(0.7071067811865476), f9);
+ f11 = MUL_F(FRAC_CONST(0.7071067811865476), f8);
+ f12 = x[11] - x[20];
+ f13 = x[11] + x[20];
+ f14 = MUL_F(FRAC_CONST(0.7071067811865476), f13);
+ f15 = MUL_F(FRAC_CONST(0.7071067811865476), f12);
+ f16 = x[14] - x[17];
+ f17 = x[14] + x[17];
+ f18 = MUL_F(FRAC_CONST(0.7071067811865476), f17);
+ f19 = MUL_F(FRAC_CONST(0.7071067811865476), f16);
+ f20 = x[9] - x[22];
+ f21 = x[9] + x[22];
+ f22 = MUL_F(FRAC_CONST(0.7071067811865476), f21);
+ f23 = MUL_F(FRAC_CONST(0.7071067811865476), f20);
+ f24 = x[13] - x[18];
+ f25 = x[13] + x[18];
+ f26 = MUL_F(FRAC_CONST(0.7071067811865476), f25);
+ f27 = MUL_F(FRAC_CONST(0.7071067811865476), f24);
+ f28 = x[10] - x[21];
+ f29 = x[10] + x[21];
+ f30 = MUL_F(FRAC_CONST(0.7071067811865476), f29);
+ f31 = MUL_F(FRAC_CONST(0.7071067811865476), f28);
+ f32 = x[0] - f2;
+ f33 = x[0] + f2;
+ f34 = x[31] - f3;
+ f35 = x[31] + f3;
+ f36 = x[7] - f6;
+ f37 = x[7] + f6;
+ f38 = x[24] - f7;
+ f39 = x[24] + f7;
+ f40 = x[3] - f10;
+ f41 = x[3] + f10;
+ f42 = x[28] - f11;
+ f43 = x[28] + f11;
+ f44 = x[4] - f14;
+ f45 = x[4] + f14;
+ f46 = x[27] - f15;
+ f47 = x[27] + f15;
+ f48 = x[1] - f18;
+ f49 = x[1] + f18;
+ f50 = x[30] - f19;
+ f51 = x[30] + f19;
+ f52 = x[6] - f22;
+ f53 = x[6] + f22;
+ f54 = x[25] - f23;
+ f55 = x[25] + f23;
+ f56 = x[2] - f26;
+ f57 = x[2] + f26;
+ f58 = x[29] - f27;
+ f59 = x[29] + f27;
+ f60 = x[5] - f30;
+ f61 = x[5] + f30;
+ f62 = x[26] - f31;
+ f63 = x[26] + f31;
+ f64 = f39 + f37;
+ f65 = MUL_F(FRAC_CONST(-0.5411961001461969), f39);
+ f66 = MUL_F(FRAC_CONST(0.9238795325112867), f64);
+ f67 = MUL_C(COEF_CONST(1.3065629648763766), f37);
+ f68 = f65 + f66;
+ f69 = f67 - f66;
+ f70 = f38 + f36;
+ f71 = MUL_C(COEF_CONST(1.3065629648763770), f38);
+ f72 = MUL_F(FRAC_CONST(-0.3826834323650904), f70);
+ f73 = MUL_F(FRAC_CONST(0.5411961001461961), f36);
+ f74 = f71 + f72;
+ f75 = f73 - f72;
+ f76 = f47 + f45;
+ f77 = MUL_F(FRAC_CONST(-0.5411961001461969), f47);
+ f78 = MUL_F(FRAC_CONST(0.9238795325112867), f76);
+ f79 = MUL_C(COEF_CONST(1.3065629648763766), f45);
+ f80 = f77 + f78;
+ f81 = f79 - f78;
+ f82 = f46 + f44;
+ f83 = MUL_C(COEF_CONST(1.3065629648763770), f46);
+ f84 = MUL_F(FRAC_CONST(-0.3826834323650904), f82);
+ f85 = MUL_F(FRAC_CONST(0.5411961001461961), f44);
+ f86 = f83 + f84;
+ f87 = f85 - f84;
+ f88 = f55 + f53;
+ f89 = MUL_F(FRAC_CONST(-0.5411961001461969), f55);
+ f90 = MUL_F(FRAC_CONST(0.9238795325112867), f88);
+ f91 = MUL_C(COEF_CONST(1.3065629648763766), f53);
+ f92 = f89 + f90;
+ f93 = f91 - f90;
+ f94 = f54 + f52;
+ f95 = MUL_C(COEF_CONST(1.3065629648763770), f54);
+ f96 = MUL_F(FRAC_CONST(-0.3826834323650904), f94);
+ f97 = MUL_F(FRAC_CONST(0.5411961001461961), f52);
+ f98 = f95 + f96;
+ f99 = f97 - f96;
+ f100 = f63 + f61;
+ f101 = MUL_F(FRAC_CONST(-0.5411961001461969), f63);
+ f102 = MUL_F(FRAC_CONST(0.9238795325112867), f100);
+ f103 = MUL_C(COEF_CONST(1.3065629648763766), f61);
+ f104 = f101 + f102;
+ f105 = f103 - f102;
+ f106 = f62 + f60;
+ f107 = MUL_C(COEF_CONST(1.3065629648763770), f62);
+ f108 = MUL_F(FRAC_CONST(-0.3826834323650904), f106);
+ f109 = MUL_F(FRAC_CONST(0.5411961001461961), f60);
+ f110 = f107 + f108;
+ f111 = f109 - f108;
+ f112 = f33 - f68;
+ f113 = f33 + f68;
+ f114 = f35 - f69;
+ f115 = f35 + f69;
+ f116 = f32 - f74;
+ f117 = f32 + f74;
+ f118 = f34 - f75;
+ f119 = f34 + f75;
+ f120 = f41 - f80;
+ f121 = f41 + f80;
+ f122 = f43 - f81;
+ f123 = f43 + f81;
+ f124 = f40 - f86;
+ f125 = f40 + f86;
+ f126 = f42 - f87;
+ f127 = f42 + f87;
+ f128 = f49 - f92;
+ f129 = f49 + f92;
+ f130 = f51 - f93;
+ f131 = f51 + f93;
+ f132 = f48 - f98;
+ f133 = f48 + f98;
+ f134 = f50 - f99;
+ f135 = f50 + f99;
+ f136 = f57 - f104;
+ f137 = f57 + f104;
+ f138 = f59 - f105;
+ f139 = f59 + f105;
+ f140 = f56 - f110;
+ f141 = f56 + f110;
+ f142 = f58 - f111;
+ f143 = f58 + f111;
+ f144 = f123 + f121;
+ f145 = MUL_F(FRAC_CONST(-0.7856949583871021), f123);
+ f146 = MUL_F(FRAC_CONST(0.9807852804032304), f144);
+ f147 = MUL_C(COEF_CONST(1.1758756024193588), f121);
+ f148 = f145 + f146;
+ f149 = f147 - f146;
+ f150 = f127 + f125;
+ f151 = MUL_F(FRAC_CONST(0.2758993792829431), f127);
+ f152 = MUL_F(FRAC_CONST(0.5555702330196022), f150);
+ f153 = MUL_C(COEF_CONST(1.3870398453221475), f125);
+ f154 = f151 + f152;
+ f155 = f153 - f152;
+ f156 = f122 + f120;
+ f157 = MUL_C(COEF_CONST(1.1758756024193591), f122);
+ f158 = MUL_F(FRAC_CONST(-0.1950903220161287), f156);
+ f159 = MUL_F(FRAC_CONST(0.7856949583871016), f120);
+ f160 = f157 + f158;
+ f161 = f159 - f158;
+ f162 = f126 + f124;
+ f163 = MUL_C(COEF_CONST(1.3870398453221473), f126);
+ f164 = MUL_F(FRAC_CONST(-0.8314696123025455), f162);
+ f165 = MUL_F(FRAC_CONST(-0.2758993792829436), f124);
+ f166 = f163 + f164;
+ f167 = f165 - f164;
+ f168 = f139 + f137;
+ f169 = MUL_F(FRAC_CONST(-0.7856949583871021), f139);
+ f170 = MUL_F(FRAC_CONST(0.9807852804032304), f168);
+ f171 = MUL_C(COEF_CONST(1.1758756024193588), f137);
+ f172 = f169 + f170;
+ f173 = f171 - f170;
+ f174 = f143 + f141;
+ f175 = MUL_F(FRAC_CONST(0.2758993792829431), f143);
+ f176 = MUL_F(FRAC_CONST(0.5555702330196022), f174);
+ f177 = MUL_C(COEF_CONST(1.3870398453221475), f141);
+ f178 = f175 + f176;
+ f179 = f177 - f176;
+ f180 = f138 + f136;
+ f181 = MUL_C(COEF_CONST(1.1758756024193591), f138);
+ f182 = MUL_F(FRAC_CONST(-0.1950903220161287), f180);
+ f183 = MUL_F(FRAC_CONST(0.7856949583871016), f136);
+ f184 = f181 + f182;
+ f185 = f183 - f182;
+ f186 = f142 + f140;
+ f187 = MUL_C(COEF_CONST(1.3870398453221473), f142);
+ f188 = MUL_F(FRAC_CONST(-0.8314696123025455), f186);
+ f189 = MUL_F(FRAC_CONST(-0.2758993792829436), f140);
+ f190 = f187 + f188;
+ f191 = f189 - f188;
+ f192 = f113 - f148;
+ f193 = f113 + f148;
+ f194 = f115 - f149;
+ f195 = f115 + f149;
+ f196 = f117 - f154;
+ f197 = f117 + f154;
+ f198 = f119 - f155;
+ f199 = f119 + f155;
+ f200 = f112 - f160;
+ f201 = f112 + f160;
+ f202 = f114 - f161;
+ f203 = f114 + f161;
+ f204 = f116 - f166;
+ f205 = f116 + f166;
+ f206 = f118 - f167;
+ f207 = f118 + f167;
+ f208 = f129 - f172;
+ f209 = f129 + f172;
+ f210 = f131 - f173;
+ f211 = f131 + f173;
+ f212 = f133 - f178;
+ f213 = f133 + f178;
+ f214 = f135 - f179;
+ f215 = f135 + f179;
+ f216 = f128 - f184;
+ f217 = f128 + f184;
+ f218 = f130 - f185;
+ f219 = f130 + f185;
+ f220 = f132 - f190;
+ f221 = f132 + f190;
+ f222 = f134 - f191;
+ f223 = f134 + f191;
+ f224 = f211 + f209;
+ f225 = MUL_F(FRAC_CONST(-0.8971675863426361), f211);
+ f226 = MUL_F(FRAC_CONST(0.9951847266721968), f224);
+ f227 = MUL_C(COEF_CONST(1.0932018670017576), f209);
+ f228 = f225 + f226;
+ f229 = f227 - f226;
+ f230 = f215 + f213;
+ f231 = MUL_F(FRAC_CONST(-0.4105245275223571), f215);
+ f232 = MUL_F(FRAC_CONST(0.8819212643483549), f230);
+ f233 = MUL_C(COEF_CONST(1.3533180011743529), f213);
+ f234 = f231 + f232;
+ f235 = f233 - f232;
+ f236 = f219 + f217;
+ f237 = MUL_F(FRAC_CONST(0.1386171691990915), f219);
+ f238 = MUL_F(FRAC_CONST(0.6343932841636455), f236);
+ f239 = MUL_C(COEF_CONST(1.4074037375263826), f217);
+ f240 = f237 + f238;
+ f241 = f239 - f238;
+ f242 = f223 + f221;
+ f243 = MUL_F(FRAC_CONST(0.6666556584777466), f223);
+ f244 = MUL_F(FRAC_CONST(0.2902846772544623), f242);
+ f245 = MUL_C(COEF_CONST(1.2472250129866711), f221);
+ f246 = f243 + f244;
+ f247 = f245 - f244;
+ f248 = f210 + f208;
+ f249 = MUL_C(COEF_CONST(1.0932018670017574), f210);
+ f250 = MUL_F(FRAC_CONST(-0.0980171403295605), f248);
+ f251 = MUL_F(FRAC_CONST(0.8971675863426364), f208);
+ f252 = f249 + f250;
+ f253 = f251 - f250;
+ f254 = f214 + f212;
+ f255 = MUL_C(COEF_CONST(1.3533180011743529), f214);
+ f256 = MUL_F(FRAC_CONST(-0.4713967368259979), f254);
+ f257 = MUL_F(FRAC_CONST(0.4105245275223569), f212);
+ f258 = f255 + f256;
+ f259 = f257 - f256;
+ f260 = f218 + f216;
+ f261 = MUL_C(COEF_CONST(1.4074037375263826), f218);
+ f262 = MUL_F(FRAC_CONST(-0.7730104533627369), f260);
+ f263 = MUL_F(FRAC_CONST(-0.1386171691990913), f216);
+ f264 = f261 + f262;
+ f265 = f263 - f262;
+ f266 = f222 + f220;
+ f267 = MUL_C(COEF_CONST(1.2472250129866711), f222);
+ f268 = MUL_F(FRAC_CONST(-0.9569403357322089), f266);
+ f269 = MUL_F(FRAC_CONST(-0.6666556584777469), f220);
+ f270 = f267 + f268;
+ f271 = f269 - f268;
+ f272 = f193 - f228;
+ f273 = f193 + f228;
+ f274 = f195 - f229;
+ f275 = f195 + f229;
+ f276 = f197 - f234;
+ f277 = f197 + f234;
+ f278 = f199 - f235;
+ f279 = f199 + f235;
+ f280 = f201 - f240;
+ f281 = f201 + f240;
+ f282 = f203 - f241;
+ f283 = f203 + f241;
+ f284 = f205 - f246;
+ f285 = f205 + f246;
+ f286 = f207 - f247;
+ f287 = f207 + f247;
+ f288 = f192 - f252;
+ f289 = f192 + f252;
+ f290 = f194 - f253;
+ f291 = f194 + f253;
+ f292 = f196 - f258;
+ f293 = f196 + f258;
+ f294 = f198 - f259;
+ f295 = f198 + f259;
+ f296 = f200 - f264;
+ f297 = f200 + f264;
+ f298 = f202 - f265;
+ f299 = f202 + f265;
+ f300 = f204 - f270;
+ f301 = f204 + f270;
+ f302 = f206 - f271;
+ f303 = f206 + f271;
+ f304 = f275 + f273;
+ f305 = MUL_F(FRAC_CONST(-0.9751575901732920), f275);
+ f306 = MUL_F(FRAC_CONST(0.9996988186962043), f304);
+ f307 = MUL_C(COEF_CONST(1.0242400472191164), f273);
+ y[0] = f305 + f306;
+ y[31] = f307 - f306;
+ f310 = f279 + f277;
+ f311 = MUL_F(FRAC_CONST(-0.8700688593994936), f279);
+ f312 = MUL_F(FRAC_CONST(0.9924795345987100), f310);
+ f313 = MUL_C(COEF_CONST(1.1148902097979263), f277);
+ y[2] = f311 + f312;
+ y[29] = f313 - f312;
+ f316 = f283 + f281;
+ f317 = MUL_F(FRAC_CONST(-0.7566008898816587), f283);
+ f318 = MUL_F(FRAC_CONST(0.9757021300385286), f316);
+ f319 = MUL_C(COEF_CONST(1.1948033701953984), f281);
+ y[4] = f317 + f318;
+ y[27] = f319 - f318;
+ f322 = f287 + f285;
+ f323 = MUL_F(FRAC_CONST(-0.6358464401941451), f287);
+ f324 = MUL_F(FRAC_CONST(0.9495281805930367), f322);
+ f325 = MUL_C(COEF_CONST(1.2632099209919283), f285);
+ y[6] = f323 + f324;
+ y[25] = f325 - f324;
+ f328 = f291 + f289;
+ f329 = MUL_F(FRAC_CONST(-0.5089684416985408), f291);
+ f330 = MUL_F(FRAC_CONST(0.9142097557035307), f328);
+ f331 = MUL_C(COEF_CONST(1.3194510697085207), f289);
+ y[8] = f329 + f330;
+ y[23] = f331 - f330;
+ f334 = f295 + f293;
+ f335 = MUL_F(FRAC_CONST(-0.3771887988789273), f295);
+ f336 = MUL_F(FRAC_CONST(0.8700869911087114), f334);
+ f337 = MUL_C(COEF_CONST(1.3629851833384954), f293);
+ y[10] = f335 + f336;
+ y[21] = f337 - f336;
+ f340 = f299 + f297;
+ f341 = MUL_F(FRAC_CONST(-0.2417766217337384), f299);
+ f342 = MUL_F(FRAC_CONST(0.8175848131515837), f340);
+ f343 = MUL_C(COEF_CONST(1.3933930045694289), f297);
+ y[12] = f341 + f342;
+ y[19] = f343 - f342;
+ f346 = f303 + f301;
+ f347 = MUL_F(FRAC_CONST(-0.1040360035527077), f303);
+ f348 = MUL_F(FRAC_CONST(0.7572088465064845), f346);
+ f349 = MUL_C(COEF_CONST(1.4103816894602612), f301);
+ y[14] = f347 + f348;
+ y[17] = f349 - f348;
+ f352 = f274 + f272;
+ f353 = MUL_F(FRAC_CONST(0.0347065382144002), f274);
+ f354 = MUL_F(FRAC_CONST(0.6895405447370668), f352);
+ f355 = MUL_C(COEF_CONST(1.4137876276885337), f272);
+ y[16] = f353 + f354;
+ y[15] = f355 - f354;
+ f358 = f278 + f276;
+ f359 = MUL_F(FRAC_CONST(0.1731148370459795), f278);
+ f360 = MUL_F(FRAC_CONST(0.6152315905806268), f358);
+ f361 = MUL_C(COEF_CONST(1.4035780182072330), f276);
+ y[18] = f359 + f360;
+ y[13] = f361 - f360;
+ f364 = f282 + f280;
+ f365 = MUL_F(FRAC_CONST(0.3098559453626100), f282);
+ f366 = MUL_F(FRAC_CONST(0.5349976198870972), f364);
+ f367 = MUL_C(COEF_CONST(1.3798511851368043), f280);
+ y[20] = f365 + f366;
+ y[11] = f367 - f366;
+ f370 = f286 + f284;
+ f371 = MUL_F(FRAC_CONST(0.4436129715409088), f286);
+ f372 = MUL_F(FRAC_CONST(0.4496113296546065), f370);
+ f373 = MUL_C(COEF_CONST(1.3428356308501219), f284);
+ y[22] = f371 + f372;
+ y[9] = f373 - f372;
+ f376 = f290 + f288;
+ f377 = MUL_F(FRAC_CONST(0.5730977622997509), f290);
+ f378 = MUL_F(FRAC_CONST(0.3598950365349881), f376);
+ f379 = MUL_C(COEF_CONST(1.2928878353697271), f288);
+ y[24] = f377 + f378;
+ y[7] = f379 - f378;
+ f382 = f294 + f292;
+ f383 = MUL_F(FRAC_CONST(0.6970633083205415), f294);
+ f384 = MUL_F(FRAC_CONST(0.2667127574748984), f382);
+ f385 = MUL_C(COEF_CONST(1.2304888232703382), f292);
+ y[26] = f383 + f384;
+ y[5] = f385 - f384;
+ f388 = f298 + f296;
+ f389 = MUL_F(FRAC_CONST(0.8143157536286401), f298);
+ f390 = MUL_F(FRAC_CONST(0.1709618887603012), f388);
+ f391 = MUL_C(COEF_CONST(1.1562395311492424), f296);
+ y[28] = f389 + f390;
+ y[3] = f391 - f390;
+ f394 = f302 + f300;
+ f395 = MUL_F(FRAC_CONST(0.9237258930790228), f302);
+ f396 = MUL_F(FRAC_CONST(0.0735645635996674), f394);
+ f397 = MUL_C(COEF_CONST(1.0708550202783576), f300);
+ y[30] = f395 + f396;
+ y[1] = f397 - f396;
+}
+
#ifdef SBR_LOW_POWER
+void DCT2_16_unscaled(real_t *y, real_t *x)
+{
+ real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
+ real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
+ real_t f21, f22, f23, f24, f25, f26, f27, f28, f31, f32;
+ real_t f33, f34, f37, f38, f39, f40, f41, f42, f43, f44;
+ real_t f45, f46, f47, f48, f49, f51, f53, f54, f57, f58;
+ real_t f59, f60, f61, f62, f63, f64, f65, f66, f67, f68;
+ real_t f69, f70, f71, f72, f73, f74, f75, f76, f77, f78;
+ real_t f79, f80, f81, f82, f83, f84, f85, f86, f87, f88;
+ real_t f89, f90, f91, f92, f95, f96, f97, f98, f101, f102;
+ real_t f103, f104, f107, f108, f109, f110;
+
+ f0 = x[0] - x[15];
+ f1 = x[0] + x[15];
+ f2 = x[1] - x[14];
+ f3 = x[1] + x[14];
+ f4 = x[2] - x[13];
+ f5 = x[2] + x[13];
+ f6 = x[3] - x[12];
+ f7 = x[3] + x[12];
+ f8 = x[4] - x[11];
+ f9 = x[4] + x[11];
+ f10 = x[5] - x[10];
+ f11 = x[5] + x[10];
+ f12 = x[6] - x[9];
+ f13 = x[6] + x[9];
+ f14 = x[7] - x[8];
+ f15 = x[7] + x[8];
+ f16 = f1 - f15;
+ f17 = f1 + f15;
+ f18 = f3 - f13;
+ f19 = f3 + f13;
+ f20 = f5 - f11;
+ f21 = f5 + f11;
+ f22 = f7 - f9;
+ f23 = f7 + f9;
+ f24 = f17 - f23;
+ f25 = f17 + f23;
+ f26 = f19 - f21;
+ f27 = f19 + f21;
+ f28 = f25 - f27;
+ y[0] = f25 + f27;
+ y[8] = MUL_F(f28, FRAC_CONST(0.7071067811865476));
+ f31 = f24 + f26;
+ f32 = MUL_C(f24, COEF_CONST(1.3065629648763766));
+ f33 = MUL_F(f31, FRAC_CONST(-0.9238795325112866));
+ f34 = MUL_F(f26, FRAC_CONST(-0.5411961001461967));
+ y[12] = f32 + f33;
+ y[4] = f34 - f33;
+ f37 = f16 + f22;
+ f38 = MUL_C(f16, COEF_CONST(1.1758756024193588));
+ f39 = MUL_F(f37, FRAC_CONST(-0.9807852804032304));
+ f40 = MUL_F(f22, FRAC_CONST(-0.7856949583871021));
+ f41 = f38 + f39;
+ f42 = f40 - f39;
+ f43 = f18 + f20;
+ f44 = MUL_C(f18, COEF_CONST(1.3870398453221473));
+ f45 = MUL_F(f43, FRAC_CONST(-0.8314696123025455));
+ f46 = MUL_F(f20, FRAC_CONST(-0.2758993792829436));
+ f47 = f44 + f45;
+ f48 = f46 - f45;
+ f49 = f42 - f48;
+ y[2] = f42 + f48;
+ f51 = MUL_F(f49, FRAC_CONST(0.7071067811865476));
+ y[14] = f41 - f47;
+ f53 = f41 + f47;
+ f54 = MUL_F(f53, FRAC_CONST(0.7071067811865476));
+ y[10] = f51 - f54;
+ y[6] = f51 + f54;
+ f57 = f2 - f4;
+ f58 = f2 + f4;
+ f59 = f6 - f8;
+ f60 = f6 + f8;
+ f61 = f10 - f12;
+ f62 = f10 + f12;
+ f63 = MUL_F(f60, FRAC_CONST(0.7071067811865476));
+ f64 = f0 - f63;
+ f65 = f0 + f63;
+ f66 = f58 + f62;
+ f67 = MUL_C(f58, COEF_CONST(1.3065629648763766));
+ f68 = MUL_F(f66, FRAC_CONST(-0.9238795325112866));
+ f69 = MUL_F(f62, FRAC_CONST(-0.5411961001461967));
+ f70 = f67 + f68;
+ f71 = f69 - f68;
+ f72 = f65 - f71;
+ f73 = f65 + f71;
+ f74 = f64 - f70;
+ f75 = f64 + f70;
+ f76 = MUL_F(f59, FRAC_CONST(0.7071067811865476));
+ f77 = f14 - f76;
+ f78 = f14 + f76;
+ f79 = f61 + f57;
+ f80 = MUL_C(f61, COEF_CONST(1.3065629648763766));
+ f81 = MUL_F(f79, FRAC_CONST(-0.9238795325112866));
+ f82 = MUL_F(f57, FRAC_CONST(-0.5411961001461967));
+ f83 = f80 + f81;
+ f84 = f82 - f81;
+ f85 = f78 - f84;
+ f86 = f78 + f84;
+ f87 = f77 - f83;
+ f88 = f77 + f83;
+ f89 = f86 + f73;
+ f90 = MUL_F(f86, FRAC_CONST(-0.8971675863426361));
+ f91 = MUL_F(f89, FRAC_CONST(0.9951847266721968));
+ f92 = MUL_C(f73, COEF_CONST(1.0932018670017576));
+ y[1] = f90 + f91;
+ y[15] = f92 - f91;
+ f95 = f75 - f88;
+ f96 = MUL_F(f88, FRAC_CONST(-0.6666556584777466));
+ f97 = MUL_F(f95, FRAC_CONST(0.9569403357322089));
+ f98 = MUL_C(f75, COEF_CONST(1.2472250129866713));
+ y[3] = f97 - f96;
+ y[13] = f98 - f97;
+ f101 = f87 + f74;
+ f102 = MUL_F(f87, FRAC_CONST(-0.4105245275223571));
+ f103 = MUL_F(f101, FRAC_CONST(0.8819212643483549));
+ f104 = MUL_C(f74, COEF_CONST(1.3533180011743529));
+ y[5] = f102 + f103;
+ y[11] = f104 - f103;
+ f107 = f72 - f85;
+ f108 = MUL_F(f85, FRAC_CONST(-0.1386171691990915));
+ f109 = MUL_F(f107, FRAC_CONST(0.7730104533627370));
+ f110 = MUL_C(f72, COEF_CONST(1.4074037375263826));
+ y[7] = f109 - f108;
+ y[9] = f110 - f109;
+}
+
+void DCT4_16(real_t *y, real_t *x)
+{
+ real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
+ real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
+ real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
+ real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
+ real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
+ real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
+ real_t f61, f62, f63, f64, f65, f66, f67, f68, f69, f70;
+ real_t f71, f72, f73, f74, f75, f76, f77, f78, f79, f80;
+ real_t f81, f82, f83, f84, f85, f86, f87, f88, f89, f90;
+ real_t f91, f92, f93, f94, f95, f96, f97, f98, f99, f100;
+ real_t f101, f102, f103, f104, f105, f106, f107, f108, f109, f110;
+ real_t f111, f112, f113, f114, f115, f116, f117, f118, f119, f120;
+ real_t f121, f122, f123, f124, f125, f126, f127, f128, f130, f132;
+ real_t f134, f136, f138, f140, f142, f144, f145, f148, f149, f152;
+ real_t f153, f156, f157;
+
+ f0 = x[0] + x[15];
+ f1 = MUL_C(COEF_CONST(1.0478631305325901), x[0]);
+ f2 = MUL_F(FRAC_CONST(-0.9987954562051724), f0);
+ f3 = MUL_F(FRAC_CONST(-0.9497277818777548), x[15]);
+ f4 = f1 + f2;
+ f5 = f3 - f2;
+ f6 = x[2] + x[13];
+ f7 = MUL_C(COEF_CONST(1.2130114330978077), x[2]);
+ f8 = MUL_F(FRAC_CONST(-0.9700312531945440), f6);
+ f9 = MUL_F(FRAC_CONST(-0.7270510732912803), x[13]);
+ f10 = f7 + f8;
+ f11 = f9 - f8;
+ f12 = x[4] + x[11];
+ f13 = MUL_C(COEF_CONST(1.3315443865537255), x[4]);
+ f14 = MUL_F(FRAC_CONST(-0.9039892931234433), f12);
+ f15 = MUL_F(FRAC_CONST(-0.4764341996931612), x[11]);
+ f16 = f13 + f14;
+ f17 = f15 - f14;
+ f18 = x[6] + x[9];
+ f19 = MUL_C(COEF_CONST(1.3989068359730781), x[6]);
+ f20 = MUL_F(FRAC_CONST(-0.8032075314806453), f18);
+ f21 = MUL_F(FRAC_CONST(-0.2075082269882124), x[9]);
+ f22 = f19 + f20;
+ f23 = f21 - f20;
+ f24 = x[8] + x[7];
+ f25 = MUL_C(COEF_CONST(1.4125100802019777), x[8]);
+ f26 = MUL_F(FRAC_CONST(-0.6715589548470187), f24);
+ f27 = MUL_F(FRAC_CONST(0.0693921705079402), x[7]);
+ f28 = f25 + f26;
+ f29 = f27 - f26;
+ f30 = x[10] + x[5];
+ f31 = MUL_C(COEF_CONST(1.3718313541934939), x[10]);
+ f32 = MUL_F(FRAC_CONST(-0.5141027441932219), f30);
+ f33 = MUL_F(FRAC_CONST(0.3436258658070501), x[5]);
+ f34 = f31 + f32;
+ f35 = f33 - f32;
+ f36 = x[12] + x[3];
+ f37 = MUL_C(COEF_CONST(1.2784339185752409), x[12]);
+ f38 = MUL_F(FRAC_CONST(-0.3368898533922200), f36);
+ f39 = MUL_F(FRAC_CONST(0.6046542117908008), x[3]);
+ f40 = f37 + f38;
+ f41 = f39 - f38;
+ f42 = x[14] + x[1];
+ f43 = MUL_C(COEF_CONST(1.1359069844201433), x[14]);
+ f44 = MUL_F(FRAC_CONST(-0.1467304744553624), f42);
+ f45 = MUL_F(FRAC_CONST(0.8424460355094185), x[1]);
+ f46 = f43 + f44;
+ f47 = f45 - f44;
+ f48 = f5 - f29;
+ f49 = f5 + f29;
+ f50 = f4 - f28;
+ f51 = f4 + f28;
+ f52 = f11 - f35;
+ f53 = f11 + f35;
+ f54 = f10 - f34;
+ f55 = f10 + f34;
+ f56 = f17 - f41;
+ f57 = f17 + f41;
+ f58 = f16 - f40;
+ f59 = f16 + f40;
+ f60 = f23 - f47;
+ f61 = f23 + f47;
+ f62 = f22 - f46;
+ f63 = f22 + f46;
+ f64 = f48 + f50;
+ f65 = MUL_C(COEF_CONST(1.1758756024193588), f48);
+ f66 = MUL_F(FRAC_CONST(-0.9807852804032304), f64);
+ f67 = MUL_F(FRAC_CONST(-0.7856949583871021), f50);
+ f68 = f65 + f66;
+ f69 = f67 - f66;
+ f70 = f52 + f54;
+ f71 = MUL_C(COEF_CONST(1.3870398453221475), f52);
+ f72 = MUL_F(FRAC_CONST(-0.5555702330196022), f70);
+ f73 = MUL_F(FRAC_CONST(0.2758993792829431), f54);
+ f74 = f71 + f72;
+ f75 = f73 - f72;
+ f76 = f56 + f58;
+ f77 = MUL_F(FRAC_CONST(0.7856949583871022), f56);
+ f78 = MUL_F(FRAC_CONST(0.1950903220161283), f76);
+ f79 = MUL_C(COEF_CONST(1.1758756024193586), f58);
+ f80 = f77 + f78;
+ f81 = f79 - f78;
+ f82 = f60 + f62;
+ f83 = MUL_F(FRAC_CONST(-0.2758993792829430), f60);
+ f84 = MUL_F(FRAC_CONST(0.8314696123025452), f82);
+ f85 = MUL_C(COEF_CONST(1.3870398453221475), f62);
+ f86 = f83 + f84;
+ f87 = f85 - f84;
+ f88 = f49 - f57;
+ f89 = f49 + f57;
+ f90 = f51 - f59;
+ f91 = f51 + f59;
+ f92 = f53 - f61;
+ f93 = f53 + f61;
+ f94 = f55 - f63;
+ f95 = f55 + f63;
+ f96 = f69 - f81;
+ f97 = f69 + f81;
+ f98 = f68 - f80;
+ f99 = f68 + f80;
+ f100 = f75 - f87;
+ f101 = f75 + f87;
+ f102 = f74 - f86;
+ f103 = f74 + f86;
+ f104 = f88 + f90;
+ f105 = MUL_C(COEF_CONST(1.3065629648763766), f88);
+ f106 = MUL_F(FRAC_CONST(-0.9238795325112866), f104);
+ f107 = MUL_F(FRAC_CONST(-0.5411961001461967), f90);
+ f108 = f105 + f106;
+ f109 = f107 - f106;
+ f110 = f92 + f94;
+ f111 = MUL_F(FRAC_CONST(0.5411961001461969), f92);
+ f112 = MUL_F(FRAC_CONST(0.3826834323650898), f110);
+ f113 = MUL_C(COEF_CONST(1.3065629648763766), f94);
+ f114 = f111 + f112;
+ f115 = f113 - f112;
+ f116 = f96 + f98;
+ f117 = MUL_C(COEF_CONST(1.3065629648763766), f96);
+ f118 = MUL_F(FRAC_CONST(-0.9238795325112866), f116);
+ f119 = MUL_F(FRAC_CONST(-0.5411961001461967), f98);
+ f120 = f117 + f118;
+ f121 = f119 - f118;
+ f122 = f100 + f102;
+ f123 = MUL_F(FRAC_CONST(0.5411961001461969), f100);
+ f124 = MUL_F(FRAC_CONST(0.3826834323650898), f122);
+ f125 = MUL_C(COEF_CONST(1.3065629648763766), f102);
+ f126 = f123 + f124;
+ f127 = f125 - f124;
+ f128 = f89 - f93;
+ y[0] = f89 + f93;
+ f130 = f91 - f95;
+ y[15] = f91 + f95;
+ f132 = f109 - f115;
+ y[3] = f109 + f115;
+ f134 = f108 - f114;
+ y[12] = f108 + f114;
+ f136 = f97 - f101;
+ y[1] = f97 + f101;
+ f138 = f99 - f103;
+ y[14] = f99 + f103;
+ f140 = f121 - f127;
+ y[2] = f121 + f127;
+ f142 = f120 - f126;
+ y[13] = f120 + f126;
+ f144 = f128 - f130;
+ f145 = f128 + f130;
+ y[8] = MUL_F(FRAC_CONST(0.7071067811865474), f144);
+ y[7] = MUL_F(FRAC_CONST(0.7071067811865474), f145);
+ f148 = f132 - f134;
+ f149 = f132 + f134;
+ y[11] = MUL_F(FRAC_CONST(0.7071067811865474), f148);
+ y[4] = MUL_F(FRAC_CONST(0.7071067811865474), f149);
+ f152 = f136 - f138;
+ f153 = f136 + f138;
+ y[9] = MUL_F(FRAC_CONST(0.7071067811865474), f152);
+ y[6] = MUL_F(FRAC_CONST(0.7071067811865474), f153);
+ f156 = f140 - f142;
+ f157 = f140 + f142;
+ y[10] = MUL_F(FRAC_CONST(0.7071067811865474), f156);
+ y[5] = MUL_F(FRAC_CONST(0.7071067811865474), f157);
+}
+
void DCT3_32_unscaled(real_t *y, real_t *x)
{
real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
@@ -72,13 +822,13 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
real_t f261, f262, f263, f264, f265, f266, f267, f268, f269, f270;
real_t f271, f272;
- f0 = MUL_C(COEF_CONST(0.7071067811865476), x[16]);
+ f0 = MUL_F(x[16], FRAC_CONST(0.7071067811865476));
f1 = x[0] - f0;
f2 = x[0] + f0;
f3 = x[8] + x[24];
- f4 = MUL_C(COEF_CONST(1.3065629648763766), x[8]);
- f5 = MUL_C(COEF_CONST((-0.9238795325112866)), f3);
- f6 = MUL_C(COEF_CONST((-0.5411961001461967)), x[24]);
+ f4 = MUL_C(x[8], COEF_CONST(1.3065629648763766));
+ f5 = MUL_F(f3, FRAC_CONST((-0.9238795325112866)));
+ f6 = MUL_F(x[24], FRAC_CONST((-0.5411961001461967)));
f7 = f4 + f5;
f8 = f6 - f5;
f9 = f2 - f8;
@@ -86,23 +836,23 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f11 = f1 - f7;
f12 = f1 + f7;
f13 = x[4] + x[28];
- f14 = MUL_C(COEF_CONST(1.1758756024193588), x[4]);
- f15 = MUL_C(COEF_CONST((-0.9807852804032304)), f13);
- f16 = MUL_C(COEF_CONST((-0.7856949583871021)), x[28]);
+ f14 = MUL_C(x[4], COEF_CONST(1.1758756024193588));
+ f15 = MUL_F(f13, FRAC_CONST((-0.9807852804032304)));
+ f16 = MUL_F(x[28], FRAC_CONST((-0.7856949583871021)));
f17 = f14 + f15;
f18 = f16 - f15;
f19 = x[12] + x[20];
- f20 = MUL_C(COEF_CONST(1.3870398453221473), x[12]);
- f21 = MUL_C(COEF_CONST((-0.8314696123025455)), f19);
- f22 = MUL_C(COEF_CONST((-0.2758993792829436)), x[20]);
+ f20 = MUL_C(x[12], COEF_CONST(1.3870398453221473));
+ f21 = MUL_F(f19, FRAC_CONST((-0.8314696123025455)));
+ f22 = MUL_F(x[20], FRAC_CONST((-0.2758993792829436)));
f23 = f20 + f21;
f24 = f22 - f21;
f25 = f18 - f24;
f26 = f18 + f24;
- f27 = MUL_C(COEF_CONST(0.7071067811865476), f25);
+ f27 = MUL_F(f25, FRAC_CONST(0.7071067811865476));
f28 = f17 - f23;
f29 = f17 + f23;
- f30 = MUL_C(COEF_CONST(0.7071067811865476), f29);
+ f30 = MUL_F(f29, FRAC_CONST(0.7071067811865476));
f31 = f27 - f30;
f32 = f27 + f30;
f33 = f10 - f26;
@@ -114,27 +864,27 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f39 = f9 - f28;
f40 = f9 + f28;
f41 = x[2] + x[30];
- f42 = MUL_C(COEF_CONST(1.0932018670017569), x[2]);
- f43 = MUL_C(COEF_CONST((-0.9951847266721969)), f41);
- f44 = MUL_C(COEF_CONST((-0.8971675863426368)), x[30]);
+ f42 = MUL_C(x[2], COEF_CONST(1.0932018670017569));
+ f43 = MUL_F(f41, FRAC_CONST((-0.9951847266721969)));
+ f44 = MUL_F(x[30], FRAC_CONST((-0.8971675863426368)));
f45 = f42 + f43;
f46 = f44 - f43;
f47 = x[6] + x[26];
- f48 = MUL_C(COEF_CONST(1.2472250129866711), x[6]);
- f49 = MUL_C(COEF_CONST((-0.9569403357322089)), f47);
- f50 = MUL_C(COEF_CONST((-0.6666556584777469)), x[26]);
+ f48 = MUL_C(x[6], COEF_CONST(1.2472250129866711));
+ f49 = MUL_F(f47, FRAC_CONST((-0.9569403357322089)));
+ f50 = MUL_F(x[26], FRAC_CONST((-0.6666556584777469)));
f51 = f48 + f49;
f52 = f50 - f49;
f53 = x[10] + x[22];
- f54 = MUL_C(COEF_CONST(1.3533180011743526), x[10]);
- f55 = MUL_C(COEF_CONST((-0.8819212643483551)), f53);
- f56 = MUL_C(COEF_CONST((-0.4105245275223575)), x[22]);
+ f54 = MUL_C(x[10], COEF_CONST(1.3533180011743526));
+ f55 = MUL_F(f53, FRAC_CONST((-0.8819212643483551)));
+ f56 = MUL_F(x[22], FRAC_CONST((-0.4105245275223575)));
f57 = f54 + f55;
f58 = f56 - f55;
f59 = x[14] + x[18];
- f60 = MUL_C(COEF_CONST(1.4074037375263826), x[14]);
- f61 = MUL_C(COEF_CONST((-0.7730104533627369)), f59);
- f62 = MUL_C(COEF_CONST((-0.1386171691990913)), x[18]);
+ f60 = MUL_C(x[14], COEF_CONST(1.4074037375263826));
+ f61 = MUL_F(f59, FRAC_CONST((-0.7730104533627369)));
+ f62 = MUL_F(x[18], FRAC_CONST((-0.1386171691990913)));
f63 = f60 + f61;
f64 = f62 - f61;
f65 = f46 - f64;
@@ -143,11 +893,11 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f68 = f52 + f58;
f69 = f66 - f68;
f70 = f66 + f68;
- f71 = MUL_C(COEF_CONST(0.7071067811865476), f69);
+ f71 = MUL_F(f69, FRAC_CONST(0.7071067811865476));
f72 = f65 + f67;
- f73 = MUL_C(COEF_CONST(1.3065629648763766), f65);
- f74 = MUL_C(COEF_CONST((-0.9238795325112866)), f72);
- f75 = MUL_C(COEF_CONST((-0.5411961001461967)), f67);
+ f73 = MUL_C(f65, COEF_CONST(1.3065629648763766));
+ f74 = MUL_F(f72, FRAC_CONST((-0.9238795325112866)));
+ f75 = MUL_F(f67, FRAC_CONST((-0.5411961001461967)));
f76 = f73 + f74;
f77 = f75 - f74;
f78 = f45 - f63;
@@ -155,14 +905,14 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f80 = f51 - f57;
f81 = f51 + f57;
f82 = f79 + f81;
- f83 = MUL_C(COEF_CONST(1.3065629648763770), f79);
- f84 = MUL_C(COEF_CONST((-0.3826834323650904)), f82);
- f85 = MUL_C(COEF_CONST(0.5411961001461961), f81);
+ f83 = MUL_C(f79, COEF_CONST(1.3065629648763770));
+ f84 = MUL_F(f82, FRAC_CONST((-0.3826834323650904)));
+ f85 = MUL_F(f81, FRAC_CONST(0.5411961001461961));
f86 = f83 + f84;
f87 = f85 - f84;
f88 = f78 - f80;
f89 = f78 + f80;
- f90 = MUL_C(COEF_CONST(0.7071067811865476), f89);
+ f90 = MUL_F(f89, FRAC_CONST(0.7071067811865476));
f91 = f77 - f87;
f92 = f77 + f87;
f93 = f71 - f90;
@@ -186,51 +936,51 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f111 = f33 - f88;
f112 = f33 + f88;
f113 = x[1] + x[31];
- f114 = MUL_C(COEF_CONST(1.0478631305325901), x[1]);
- f115 = MUL_C(COEF_CONST((-0.9987954562051724)), f113);
- f116 = MUL_C(COEF_CONST((-0.9497277818777548)), x[31]);
+ f114 = MUL_C(x[1], COEF_CONST(1.0478631305325901));
+ f115 = MUL_F(f113, FRAC_CONST((-0.9987954562051724)));
+ f116 = MUL_F(x[31], FRAC_CONST((-0.9497277818777548)));
f117 = f114 + f115;
f118 = f116 - f115;
f119 = x[5] + x[27];
- f120 = MUL_C(COEF_CONST(1.2130114330978077), x[5]);
- f121 = MUL_C(COEF_CONST((-0.9700312531945440)), f119);
- f122 = MUL_C(COEF_CONST((-0.7270510732912803)), x[27]);
+ f120 = MUL_C(x[5], COEF_CONST(1.2130114330978077));
+ f121 = MUL_F(f119, FRAC_CONST((-0.9700312531945440)));
+ f122 = MUL_F(x[27], FRAC_CONST((-0.7270510732912803)));
f123 = f120 + f121;
f124 = f122 - f121;
f125 = x[9] + x[23];
- f126 = MUL_C(COEF_CONST(1.3315443865537255), x[9]);
- f127 = MUL_C(COEF_CONST((-0.9039892931234433)), f125);
- f128 = MUL_C(COEF_CONST((-0.4764341996931612)), x[23]);
+ f126 = MUL_C(x[9], COEF_CONST(1.3315443865537255));
+ f127 = MUL_F(f125, FRAC_CONST((-0.9039892931234433)));
+ f128 = MUL_F(x[23], FRAC_CONST((-0.4764341996931612)));
f129 = f126 + f127;
f130 = f128 - f127;
f131 = x[13] + x[19];
- f132 = MUL_C(COEF_CONST(1.3989068359730781), x[13]);
- f133 = MUL_C(COEF_CONST((-0.8032075314806453)), f131);
- f134 = MUL_C(COEF_CONST((-0.2075082269882124)), x[19]);
+ f132 = MUL_C(x[13], COEF_CONST(1.3989068359730781));
+ f133 = MUL_F(f131, FRAC_CONST((-0.8032075314806453)));
+ f134 = MUL_F(x[19], FRAC_CONST((-0.2075082269882124)));
f135 = f132 + f133;
f136 = f134 - f133;
f137 = x[17] + x[15];
- f138 = MUL_C(COEF_CONST(1.4125100802019777), x[17]);
- f139 = MUL_C(COEF_CONST((-0.6715589548470187)), f137);
- f140 = MUL_C(COEF_CONST(0.0693921705079402), x[15]);
+ f138 = MUL_C(x[17], COEF_CONST(1.4125100802019777));
+ f139 = MUL_F(f137, FRAC_CONST((-0.6715589548470187)));
+ f140 = MUL_F(x[15], FRAC_CONST(0.0693921705079402));
f141 = f138 + f139;
f142 = f140 - f139;
f143 = x[21] + x[11];
- f144 = MUL_C(COEF_CONST(1.3718313541934939), x[21]);
- f145 = MUL_C(COEF_CONST((-0.5141027441932219)), f143);
- f146 = MUL_C(COEF_CONST(0.3436258658070501), x[11]);
+ f144 = MUL_C(x[21], COEF_CONST(1.3718313541934939));
+ f145 = MUL_F(f143, FRAC_CONST((-0.5141027441932219)));
+ f146 = MUL_F(x[11], FRAC_CONST(0.3436258658070501));
f147 = f144 + f145;
f148 = f146 - f145;
f149 = x[25] + x[7];
- f150 = MUL_C(COEF_CONST(1.2784339185752409), x[25]);
- f151 = MUL_C(COEF_CONST((-0.3368898533922200)), f149);
- f152 = MUL_C(COEF_CONST(0.6046542117908008), x[7]);
+ f150 = MUL_C(x[25], COEF_CONST(1.2784339185752409));
+ f151 = MUL_F(f149, FRAC_CONST((-0.3368898533922200)));
+ f152 = MUL_F(x[7], FRAC_CONST(0.6046542117908008));
f153 = f150 + f151;
f154 = f152 - f151;
f155 = x[29] + x[3];
- f156 = MUL_C(COEF_CONST(1.1359069844201433), x[29]);
- f157 = MUL_C(COEF_CONST((-0.1467304744553624)), f155);
- f158 = MUL_C(COEF_CONST(0.8424460355094185), x[3]);
+ f156 = MUL_C(x[29], COEF_CONST(1.1359069844201433));
+ f157 = MUL_F(f155, FRAC_CONST((-0.1467304744553624)));
+ f158 = MUL_F(x[3], FRAC_CONST(0.8424460355094185));
f159 = f156 + f157;
f160 = f158 - f157;
f161 = f118 - f142;
@@ -250,27 +1000,27 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f175 = f135 - f159;
f176 = f135 + f159;
f177 = f161 + f163;
- f178 = MUL_C(COEF_CONST(1.1758756024193588), f161);
- f179 = MUL_C(COEF_CONST((-0.9807852804032304)), f177);
- f180 = MUL_C(COEF_CONST((-0.7856949583871021)), f163);
+ f178 = MUL_C(f161, COEF_CONST(1.1758756024193588));
+ f179 = MUL_F(f177, FRAC_CONST((-0.9807852804032304)));
+ f180 = MUL_F(f163, FRAC_CONST((-0.7856949583871021)));
f181 = f178 + f179;
f182 = f180 - f179;
f183 = f165 + f167;
- f184 = MUL_C(COEF_CONST(1.3870398453221475), f165);
- f185 = MUL_C(COEF_CONST((-0.5555702330196022)), f183);
- f186 = MUL_C(COEF_CONST(0.2758993792829431), f167);
+ f184 = MUL_C(f165, COEF_CONST(1.3870398453221475));
+ f185 = MUL_F(f183, FRAC_CONST((-0.5555702330196022)));
+ f186 = MUL_F(f167, FRAC_CONST(0.2758993792829431));
f187 = f184 + f185;
f188 = f186 - f185;
f189 = f169 + f171;
- f190 = MUL_C(COEF_CONST(0.7856949583871022), f169);
- f191 = MUL_C(COEF_CONST(0.1950903220161283), f189);
- f192 = MUL_C(COEF_CONST(1.1758756024193586), f171);
+ f190 = MUL_F(f169, FRAC_CONST(0.7856949583871022));
+ f191 = MUL_F(f189, FRAC_CONST(0.1950903220161283));
+ f192 = MUL_C(f171, COEF_CONST(1.1758756024193586));
f193 = f190 + f191;
f194 = f192 - f191;
f195 = f173 + f175;
- f196 = MUL_C(COEF_CONST((-0.2758993792829430)), f173);
- f197 = MUL_C(COEF_CONST(0.8314696123025452), f195);
- f198 = MUL_C(COEF_CONST(1.3870398453221475), f175);
+ f196 = MUL_F(f173, FRAC_CONST((-0.2758993792829430)));
+ f197 = MUL_F(f195, FRAC_CONST(0.8314696123025452));
+ f198 = MUL_C(f175, COEF_CONST(1.3870398453221475));
f199 = f196 + f197;
f200 = f198 - f197;
f201 = f162 - f170;
@@ -290,27 +1040,27 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f215 = f187 - f199;
f216 = f187 + f199;
f217 = f201 + f203;
- f218 = MUL_C(COEF_CONST(1.3065629648763766), f201);
- f219 = MUL_C(COEF_CONST((-0.9238795325112866)), f217);
- f220 = MUL_C(COEF_CONST((-0.5411961001461967)), f203);
+ f218 = MUL_C(f201, COEF_CONST(1.3065629648763766));
+ f219 = MUL_F(f217, FRAC_CONST((-0.9238795325112866)));
+ f220 = MUL_F(f203, FRAC_CONST((-0.5411961001461967)));
f221 = f218 + f219;
f222 = f220 - f219;
f223 = f205 + f207;
- f224 = MUL_C(COEF_CONST(0.5411961001461969), f205);
- f225 = MUL_C(COEF_CONST(0.3826834323650898), f223);
- f226 = MUL_C(COEF_CONST(1.3065629648763766), f207);
+ f224 = MUL_F(f205, FRAC_CONST(0.5411961001461969));
+ f225 = MUL_F(f223, FRAC_CONST(0.3826834323650898));
+ f226 = MUL_C(f207, COEF_CONST(1.3065629648763766));
f227 = f224 + f225;
f228 = f226 - f225;
f229 = f209 + f211;
- f230 = MUL_C(COEF_CONST(1.3065629648763766), f209);
- f231 = MUL_C(COEF_CONST((-0.9238795325112866)), f229);
- f232 = MUL_C(COEF_CONST((-0.5411961001461967)), f211);
+ f230 = MUL_C(f209, COEF_CONST(1.3065629648763766));
+ f231 = MUL_F(f229, FRAC_CONST((-0.9238795325112866)));
+ f232 = MUL_F(f211, FRAC_CONST((-0.5411961001461967)));
f233 = f230 + f231;
f234 = f232 - f231;
f235 = f213 + f215;
- f236 = MUL_C(COEF_CONST(0.5411961001461969), f213);
- f237 = MUL_C(COEF_CONST(0.3826834323650898), f235);
- f238 = MUL_C(COEF_CONST(1.3065629648763766), f215);
+ f236 = MUL_F(f213, FRAC_CONST(0.5411961001461969));
+ f237 = MUL_F(f235, FRAC_CONST(0.3826834323650898));
+ f238 = MUL_C(f215, COEF_CONST(1.3065629648763766));
f239 = f236 + f237;
f240 = f238 - f237;
f241 = f202 - f206;
@@ -331,20 +1081,20 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
f256 = f233 + f239;
f257 = f241 - f243;
f258 = f241 + f243;
- f259 = MUL_C(COEF_CONST(0.7071067811865474), f257);
- f260 = MUL_C(COEF_CONST(0.7071067811865474), f258);
+ f259 = MUL_F(f257, FRAC_CONST(0.7071067811865474));
+ f260 = MUL_F(f258, FRAC_CONST(0.7071067811865474));
f261 = f245 - f247;
f262 = f245 + f247;
- f263 = MUL_C(COEF_CONST(0.7071067811865474), f261);
- f264 = MUL_C(COEF_CONST(0.7071067811865474), f262);
+ f263 = MUL_F(f261, FRAC_CONST(0.7071067811865474));
+ f264 = MUL_F(f262, FRAC_CONST(0.7071067811865474));
f265 = f249 - f251;
f266 = f249 + f251;
- f267 = MUL_C(COEF_CONST(0.7071067811865474), f265);
- f268 = MUL_C(COEF_CONST(0.7071067811865474), f266);
+ f267 = MUL_F(f265, FRAC_CONST(0.7071067811865474));
+ f268 = MUL_F(f266, FRAC_CONST(0.7071067811865474));
f269 = f253 - f255;
f270 = f253 + f255;
- f271 = MUL_C(COEF_CONST(0.7071067811865474), f269);
- f272 = MUL_C(COEF_CONST(0.7071067811865474), f270);
+ f271 = MUL_F(f269, FRAC_CONST(0.7071067811865474));
+ f272 = MUL_F(f270, FRAC_CONST(0.7071067811865474));
y[31] = f98 - f242;
y[0] = f98 + f242;
y[30] = f100 - f250;
@@ -379,22 +1129,21 @@ void DCT3_32_unscaled(real_t *y, real_t *x)
y[15] = f97 + f244;
}
-void DCT2_64_unscaled(real_t *y, real_t *x)
+void DCT2_32_unscaled(real_t *y, real_t *x)
{
- int16_t i0;
- real_t f2, f3, f4, f5, f6, f7, f8, f9, f10;
+ real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
real_t f11, f12, f13, f14, f15, f16, f17, f18, f19, f20;
real_t f21, f22, f23, f24, f25, f26, f27, f28, f29, f30;
real_t f31, f32, f33, f34, f35, f36, f37, f38, f39, f40;
real_t f41, f42, f43, f44, f45, f46, f47, f48, f49, f50;
real_t f51, f52, f53, f54, f55, f56, f57, f58, f59, f60;
- real_t f61, f62, f65, f66, f67, f68, f71, f72, f73, f74;
- real_t f75, f76, f77, f78, f79, f80, f81, f82, f83, f85;
- real_t f87, f88, f91, f92, f93, f94, f95, f96, f97, f98;
+ real_t f63, f64, f65, f66, f69, f70, f71, f72, f73, f74;
+ real_t f75, f76, f77, f78, f79, f80, f81, f83, f85, f86;
+ real_t f89, f90, f91, f92, f93, f94, f95, f96, f97, f98;
real_t f99, f100, f101, f102, f103, f104, f105, f106, f107, f108;
real_t f109, f110, f111, f112, f113, f114, f115, f116, f117, f118;
- real_t f119, f120, f121, f122, f123, f124, f125, f126, f129, f130;
- real_t f131, f132, f135, f136, f137, f138, f141, f142, f143, f144;
+ real_t f119, f120, f121, f122, f123, f124, f127, f128, f129, f130;
+ real_t f133, f134, f135, f136, f139, f140, f141, f142, f145, f146;
real_t f147, f148, f149, f150, f151, f152, f153, f154, f155, f156;
real_t f157, f158, f159, f160, f161, f162, f163, f164, f165, f166;
real_t f167, f168, f169, f170, f171, f172, f173, f174, f175, f176;
@@ -404,2410 +1153,1121 @@ void DCT2_64_unscaled(real_t *y, real_t *x)
real_t f207, f208, f209, f210, f211, f212, f213, f214, f215, f216;
real_t f217, f218, f219, f220, f221, f222, f223, f224, f225, f226;
real_t f227, f228, f229, f230, f231, f232, f233, f234, f235, f236;
- real_t f237, f238, f239, f240, f241, f242, f243, f244, f245, f246;
- real_t f247, f248, f249, f250, f251, f252, f253, f254, f255, f256;
- real_t f257, f258, f259, f260, f261, f262, f265, f266, f267, f268;
- real_t f271, f272, f273, f274, f277, f278, f279, f280, f283, f284;
- real_t f285, f286, f289, f290, f291, f292, f295, f296, f297, f298;
- real_t f301, f302, f303, f304, f307, f308, f309, f310, f311, f312;
- real_t f313, f314, f315, f316, f317, f318, f319, f320, f321, f322;
- real_t f323, f324, f325, f326, f327, f328, f329, f330, f331, f332;
- real_t f333, f334, f335, f336, f337, f338, f339, f340, f341, f342;
- real_t f343, f344, f345, f346, f347, f348, f349, f350, f351, f352;
- real_t f353, f354, f355, f356, f357, f358, f359, f360, f361, f362;
- real_t f363, f364, f365, f366, f367, f368, f369, f370, f371, f372;
- real_t f373, f374, f375, f376, f377, f378, f379, f380, f381, f382;
- real_t f383, f384, f385, f386, f387, f388, f389, f390, f391, f392;
- real_t f393, f394, f395, f396, f397, f398, f399, f400, f401, f402;
- real_t f403, f404, f405, f406, f407, f408, f409, f410, f411, f412;
- real_t f413, f414, f415, f416, f417, f418, f419, f420, f421, f422;
- real_t f423, f424, f425, f426, f427, f428, f429, f430, f431, f433;
- real_t f434, f435, f436, f437, f438, f439, f440, f441, f442, f443;
- real_t f444, f445, f446, f447, f448, f449, f450, f451, f452, f453;
- real_t f454, f455, f456, f457, f458, f459, f460, f461, f462, f463;
- real_t f464, f465, f466, f467, f468, f469, f470, f471, f472, f473;
- real_t f474, f475, f476, f477, f478, f479, f480, f481, f482, f483;
- real_t f484, f485, f486, f487, f488, f489, f490, f491, f492, f493;
- real_t f494, f495, f496, f497, f498, f499, f500, f501, f502, f503;
- real_t f504, f505, f506, f507, f508, f509, f510, f511, f512, f513;
- real_t f514, f515, f516, f517, f518, f519, f520, f521, f522, f523;
- real_t f524, f525, f526, f527, f528, f529, f530, f531, f532, f533;
- real_t f534, f535, f536, f537, f538, f539, f540, f541, f542, f543;
- real_t f544, f546, f547, f548, f549, f550, f551, f552, f553, f554;
- real_t f555, f556, f557, f558, f559, f560, f561, f562, f563, f564;
- real_t f565, f566, f567, f568, f569, f570, f571, f572, f573, f574;
- real_t f575, f576, f577, f578, f579, f580, f581, f582, f583, f584;
- real_t f585, f586, f587, f588, f589, f590, f591, f592, f593, f594;
- real_t f595, f596, f597, f598, f599, f600, f601, f602, f603, f604;
- real_t f605, f606, f607, f608, f609, f610, f611, f612, f613, f614;
- real_t f615, f616, f617, f618, f619, f620, f621, f622, f623, f624;
- real_t f625, f626, f627, f628;
- ALIGN static real_t t2[64];
-
- for (i0=0; i0<32; i0++)
- {
- t2[2*i0+1] = x[i0] - x[-i0+63];
- t2[2*i0] = x[i0] + x[-i0+63];
- }
- f2 = t2[0] - t2[62];
- f3 = t2[0] + t2[62];
- f4 = t2[2] - t2[60];
- f5 = t2[2] + t2[60];
- f6 = t2[4] - t2[58];
- f7 = t2[4] + t2[58];
- f8 = t2[6] - t2[56];
- f9 = t2[6] + t2[56];
- f10 = t2[8] - t2[54];
- f11 = t2[8] + t2[54];
- f12 = t2[10] - t2[52];
- f13 = t2[10] + t2[52];
- f14 = t2[12] - t2[50];
- f15 = t2[12] + t2[50];
- f16 = t2[14] - t2[48];
- f17 = t2[14] + t2[48];
- f18 = t2[16] - t2[46];
- f19 = t2[16] + t2[46];
- f20 = t2[18] - t2[44];
- f21 = t2[18] + t2[44];
- f22 = t2[20] - t2[42];
- f23 = t2[20] + t2[42];
- f24 = t2[22] - t2[40];
- f25 = t2[22] + t2[40];
- f26 = t2[24] - t2[38];
- f27 = t2[24] + t2[38];
- f28 = t2[26] - t2[36];
- f29 = t2[26] + t2[36];
- f30 = t2[28] - t2[34];
- f31 = t2[28] + t2[34];
- f32 = t2[30] - t2[32];
- f33 = t2[30] + t2[32];
- f34 = f3 - f33;
- f35 = f3 + f33;
- f36 = f5 - f31;
- f37 = f5 + f31;
- f38 = f7 - f29;
- f39 = f7 + f29;
- f40 = f9 - f27;
- f41 = f9 + f27;
- f42 = f11 - f25;
- f43 = f11 + f25;
- f44 = f13 - f23;
- f45 = f13 + f23;
- f46 = f15 - f21;
- f47 = f15 + f21;
- f48 = f17 - f19;
- f49 = f17 + f19;
- f50 = f35 - f49;
- f51 = f35 + f49;
- f52 = f37 - f47;
- f53 = f37 + f47;
- f54 = f39 - f45;
- f55 = f39 + f45;
- f56 = f41 - f43;
- f57 = f41 + f43;
- f58 = f51 - f57;
- f59 = f51 + f57;
- f60 = f53 - f55;
- f61 = f53 + f55;
- f62 = f59 - f61;
- y[0] = f59 + f61;
- y[32] = MUL_C(COEF_CONST(0.7071067811865476), f62);
- f65 = f58 + f60;
- f66 = MUL_C(COEF_CONST(1.3065629648763766), f58);
- f67 = MUL_C(COEF_CONST((-0.9238795325112866)), f65);
- f68 = MUL_C(COEF_CONST((-0.5411961001461967)), f60);
- y[48] = f66 + f67;
- y[16] = f68 - f67;
- f71 = f50 + f56;
- f72 = MUL_C(COEF_CONST(1.1758756024193588), f50);
- f73 = MUL_C(COEF_CONST((-0.9807852804032304)), f71);
- f74 = MUL_C(COEF_CONST((-0.7856949583871021)), f56);
- f75 = f72 + f73;
- f76 = f74 - f73;
- f77 = f52 + f54;
- f78 = MUL_C(COEF_CONST(1.3870398453221473), f52);
- f79 = MUL_C(COEF_CONST((-0.8314696123025455)), f77);
- f80 = MUL_C(COEF_CONST((-0.2758993792829436)), f54);
- f81 = f78 + f79;
- f82 = f80 - f79;
- f83 = f76 - f82;
- y[8] = f76 + f82;
- f85 = MUL_C(COEF_CONST(0.7071067811865476), f83);
- y[56] = f75 - f81;
- f87 = f75 + f81;
- f88 = MUL_C(COEF_CONST(0.7071067811865476), f87);
- y[40] = f85 - f88;
- y[24] = f85 + f88;
- f91 = f36 - f38;
- f92 = f36 + f38;
- f93 = f40 - f42;
- f94 = f40 + f42;
- f95 = f44 - f46;
- f96 = f44 + f46;
- f97 = MUL_C(COEF_CONST(0.7071067811865476), f94);
- f98 = f34 - f97;
- f99 = f34 + f97;
- f100 = f92 + f96;
- f101 = MUL_C(COEF_CONST(1.3065629648763766), f92);
- f102 = MUL_C(COEF_CONST((-0.9238795325112866)), f100);
- f103 = MUL_C(COEF_CONST((-0.5411961001461967)), f96);
- f104 = f101 + f102;
- f105 = f103 - f102;
- f106 = f99 - f105;
- f107 = f99 + f105;
- f108 = f98 - f104;
- f109 = f98 + f104;
- f110 = f91 + f95;
- f111 = MUL_C(COEF_CONST(1.3065629648763770), f91);
- f112 = MUL_C(COEF_CONST((-0.3826834323650904)), f110);
- f113 = MUL_C(COEF_CONST(0.5411961001461961), f95);
- f114 = f111 + f112;
- f115 = f113 - f112;
- f116 = MUL_C(COEF_CONST(0.7071067811865476), f93);
- f117 = f116 - f48;
- f118 = f116 + f48;
- f119 = f115 - f118;
- f120 = f115 + f118;
- f121 = f114 - f117;
- f122 = f114 + f117;
- f123 = f120 + f107;
- f124 = MUL_C(COEF_CONST((-0.8971675863426361)), f120);
- f125 = MUL_C(COEF_CONST(0.9951847266721968), f123);
- f126 = MUL_C(COEF_CONST(1.0932018670017576), f107);
- y[4] = f124 + f125;
- y[60] = f126 - f125;
- f129 = f122 + f109;
- f130 = MUL_C(COEF_CONST((-0.6666556584777466)), f122);
- f131 = MUL_C(COEF_CONST(0.9569403357322089), f129);
- f132 = MUL_C(COEF_CONST(1.2472250129866713), f109);
- y[12] = f130 + f131;
- y[52] = f132 - f131;
- f135 = f121 + f108;
- f136 = MUL_C(COEF_CONST((-0.4105245275223571)), f121);
- f137 = MUL_C(COEF_CONST(0.8819212643483549), f135);
- f138 = MUL_C(COEF_CONST(1.3533180011743529), f108);
- y[20] = f136 + f137;
- y[44] = f138 - f137;
- f141 = f119 + f106;
- f142 = MUL_C(COEF_CONST((-0.1386171691990915)), f119);
- f143 = MUL_C(COEF_CONST(0.7730104533627370), f141);
- f144 = MUL_C(COEF_CONST(1.4074037375263826), f106);
- y[28] = f142 + f143;
- y[36] = f144 - f143;
- f147 = f16 - f18;
- f148 = f16 + f18;
- f149 = MUL_C(COEF_CONST(0.7071067811865476), f148);
- f150 = MUL_C(COEF_CONST(0.7071067811865476), f147);
- f151 = f10 - f24;
- f152 = f10 + f24;
- f153 = MUL_C(COEF_CONST(0.7071067811865476), f152);
- f154 = MUL_C(COEF_CONST(0.7071067811865476), f151);
- f155 = f14 - f20;
- f156 = f14 + f20;
- f157 = MUL_C(COEF_CONST(0.7071067811865476), f156);
- f158 = MUL_C(COEF_CONST(0.7071067811865476), f155);
- f159 = f12 - f22;
- f160 = f12 + f22;
- f161 = MUL_C(COEF_CONST(0.7071067811865476), f160);
- f162 = MUL_C(COEF_CONST(0.7071067811865476), f159);
- f163 = f2 - f149;
- f164 = f2 + f149;
- f165 = f32 - f150;
- f166 = f32 + f150;
- f167 = f8 - f153;
- f168 = f8 + f153;
- f169 = f26 - f154;
- f170 = f26 + f154;
- f171 = f4 - f157;
- f172 = f4 + f157;
- f173 = f30 - f158;
- f174 = f30 + f158;
- f175 = f6 - f161;
- f176 = f6 + f161;
- f177 = f28 - f162;
- f178 = f28 + f162;
- f179 = f170 + f168;
- f180 = MUL_C(COEF_CONST((-0.5411961001461969)), f170);
- f181 = MUL_C(COEF_CONST(0.9238795325112867), f179);
- f182 = MUL_C(COEF_CONST(1.3065629648763766), f168);
- f183 = f180 + f181;
- f184 = f182 - f181;
- f185 = f169 + f167;
- f186 = MUL_C(COEF_CONST(1.3065629648763770), f169);
- f187 = MUL_C(COEF_CONST((-0.3826834323650904)), f185);
- f188 = MUL_C(COEF_CONST(0.5411961001461961), f167);
- f189 = f186 + f187;
- f190 = f188 - f187;
- f191 = f178 + f176;
- f192 = MUL_C(COEF_CONST((-0.5411961001461969)), f178);
- f193 = MUL_C(COEF_CONST(0.9238795325112867), f191);
- f194 = MUL_C(COEF_CONST(1.3065629648763766), f176);
- f195 = f192 + f193;
- f196 = f194 - f193;
- f197 = f177 + f175;
- f198 = MUL_C(COEF_CONST(1.3065629648763770), f177);
- f199 = MUL_C(COEF_CONST((-0.3826834323650904)), f197);
- f200 = MUL_C(COEF_CONST(0.5411961001461961), f175);
- f201 = f198 + f199;
- f202 = f200 - f199;
- f203 = f164 - f183;
- f204 = f164 + f183;
- f205 = f166 - f184;
- f206 = f166 + f184;
- f207 = f163 - f189;
- f208 = f163 + f189;
- f209 = f165 - f190;
- f210 = f165 + f190;
- f211 = f172 - f195;
- f212 = f172 + f195;
- f213 = f174 - f196;
- f214 = f174 + f196;
- f215 = f171 - f201;
- f216 = f171 + f201;
- f217 = f173 - f202;
- f218 = f173 + f202;
- f219 = f214 + f212;
- f220 = MUL_C(COEF_CONST((-0.7856949583871021)), f214);
- f221 = MUL_C(COEF_CONST(0.9807852804032304), f219);
- f222 = MUL_C(COEF_CONST(1.1758756024193588), f212);
+ real_t f237, f238, f239, f240, f241, f242, f243, f244, f247, f248;
+ real_t f249, f250, f253, f254, f255, f256, f259, f260, f261, f262;
+ real_t f265, f266, f267, f268, f271, f272, f273, f274, f277, f278;
+ real_t f279, f280, f283, f284, f285, f286;
+
+ f0 = x[0] - x[31];
+ f1 = x[0] + x[31];
+ f2 = x[1] - x[30];
+ f3 = x[1] + x[30];
+ f4 = x[2] - x[29];
+ f5 = x[2] + x[29];
+ f6 = x[3] - x[28];
+ f7 = x[3] + x[28];
+ f8 = x[4] - x[27];
+ f9 = x[4] + x[27];
+ f10 = x[5] - x[26];
+ f11 = x[5] + x[26];
+ f12 = x[6] - x[25];
+ f13 = x[6] + x[25];
+ f14 = x[7] - x[24];
+ f15 = x[7] + x[24];
+ f16 = x[8] - x[23];
+ f17 = x[8] + x[23];
+ f18 = x[9] - x[22];
+ f19 = x[9] + x[22];
+ f20 = x[10] - x[21];
+ f21 = x[10] + x[21];
+ f22 = x[11] - x[20];
+ f23 = x[11] + x[20];
+ f24 = x[12] - x[19];
+ f25 = x[12] + x[19];
+ f26 = x[13] - x[18];
+ f27 = x[13] + x[18];
+ f28 = x[14] - x[17];
+ f29 = x[14] + x[17];
+ f30 = x[15] - x[16];
+ f31 = x[15] + x[16];
+ f32 = f1 - f31;
+ f33 = f1 + f31;
+ f34 = f3 - f29;
+ f35 = f3 + f29;
+ f36 = f5 - f27;
+ f37 = f5 + f27;
+ f38 = f7 - f25;
+ f39 = f7 + f25;
+ f40 = f9 - f23;
+ f41 = f9 + f23;
+ f42 = f11 - f21;
+ f43 = f11 + f21;
+ f44 = f13 - f19;
+ f45 = f13 + f19;
+ f46 = f15 - f17;
+ f47 = f15 + f17;
+ f48 = f33 - f47;
+ f49 = f33 + f47;
+ f50 = f35 - f45;
+ f51 = f35 + f45;
+ f52 = f37 - f43;
+ f53 = f37 + f43;
+ f54 = f39 - f41;
+ f55 = f39 + f41;
+ f56 = f49 - f55;
+ f57 = f49 + f55;
+ f58 = f51 - f53;
+ f59 = f51 + f53;
+ f60 = f57 - f59;
+ y[0] = f57 + f59;
+ y[16] = MUL_F(FRAC_CONST(0.7071067811865476), f60);
+ f63 = f56 + f58;
+ f64 = MUL_C(COEF_CONST(1.3065629648763766), f56);
+ f65 = MUL_F(FRAC_CONST(-0.9238795325112866), f63);
+ f66 = MUL_F(FRAC_CONST(-0.5411961001461967), f58);
+ y[24] = f64 + f65;
+ y[8] = f66 - f65;
+ f69 = f48 + f54;
+ f70 = MUL_C(COEF_CONST(1.1758756024193588), f48);
+ f71 = MUL_F(FRAC_CONST(-0.9807852804032304), f69);
+ f72 = MUL_F(FRAC_CONST(-0.7856949583871021), f54);
+ f73 = f70 + f71;
+ f74 = f72 - f71;
+ f75 = f50 + f52;
+ f76 = MUL_C(COEF_CONST(1.3870398453221473), f50);
+ f77 = MUL_F(FRAC_CONST(-0.8314696123025455), f75);
+ f78 = MUL_F(FRAC_CONST(-0.2758993792829436), f52);
+ f79 = f76 + f77;
+ f80 = f78 - f77;
+ f81 = f74 - f80;
+ y[4] = f74 + f80;
+ f83 = MUL_F(FRAC_CONST(0.7071067811865476), f81);
+ y[28] = f73 - f79;
+ f85 = f73 + f79;
+ f86 = MUL_F(FRAC_CONST(0.7071067811865476), f85);
+ y[20] = f83 - f86;
+ y[12] = f83 + f86;
+ f89 = f34 - f36;
+ f90 = f34 + f36;
+ f91 = f38 - f40;
+ f92 = f38 + f40;
+ f93 = f42 - f44;
+ f94 = f42 + f44;
+ f95 = MUL_F(FRAC_CONST(0.7071067811865476), f92);
+ f96 = f32 - f95;
+ f97 = f32 + f95;
+ f98 = f90 + f94;
+ f99 = MUL_C(COEF_CONST(1.3065629648763766), f90);
+ f100 = MUL_F(FRAC_CONST(-0.9238795325112866), f98);
+ f101 = MUL_F(FRAC_CONST(-0.5411961001461967), f94);
+ f102 = f99 + f100;
+ f103 = f101 - f100;
+ f104 = f97 - f103;
+ f105 = f97 + f103;
+ f106 = f96 - f102;
+ f107 = f96 + f102;
+ f108 = MUL_F(FRAC_CONST(0.7071067811865476), f91);
+ f109 = f46 - f108;
+ f110 = f46 + f108;
+ f111 = f93 + f89;
+ f112 = MUL_C(COEF_CONST(1.3065629648763766), f93);
+ f113 = MUL_F(FRAC_CONST(-0.9238795325112866), f111);
+ f114 = MUL_F(FRAC_CONST(-0.5411961001461967), f89);
+ f115 = f112 + f113;
+ f116 = f114 - f113;
+ f117 = f110 - f116;
+ f118 = f110 + f116;
+ f119 = f109 - f115;
+ f120 = f109 + f115;
+ f121 = f118 + f105;
+ f122 = MUL_F(FRAC_CONST(-0.8971675863426361), f118);
+ f123 = MUL_F(FRAC_CONST(0.9951847266721968), f121);
+ f124 = MUL_C(COEF_CONST(1.0932018670017576), f105);
+ y[2] = f122 + f123;
+ y[30] = f124 - f123;
+ f127 = f107 - f120;
+ f128 = MUL_F(FRAC_CONST(-0.6666556584777466), f120);
+ f129 = MUL_F(FRAC_CONST(0.9569403357322089), f127);
+ f130 = MUL_C(COEF_CONST(1.2472250129866713), f107);
+ y[6] = f129 - f128;
+ y[26] = f130 - f129;
+ f133 = f119 + f106;
+ f134 = MUL_F(FRAC_CONST(-0.4105245275223571), f119);
+ f135 = MUL_F(FRAC_CONST(0.8819212643483549), f133);
+ f136 = MUL_C(COEF_CONST(1.3533180011743529), f106);
+ y[10] = f134 + f135;
+ y[22] = f136 - f135;
+ f139 = f104 - f117;
+ f140 = MUL_F(FRAC_CONST(-0.1386171691990915), f117);
+ f141 = MUL_F(FRAC_CONST(0.7730104533627370), f139);
+ f142 = MUL_C(COEF_CONST(1.4074037375263826), f104);
+ y[14] = f141 - f140;
+ y[18] = f142 - f141;
+ f145 = f2 - f4;
+ f146 = f2 + f4;
+ f147 = f6 - f8;
+ f148 = f6 + f8;
+ f149 = f10 - f12;
+ f150 = f10 + f12;
+ f151 = f14 - f16;
+ f152 = f14 + f16;
+ f153 = f18 - f20;
+ f154 = f18 + f20;
+ f155 = f22 - f24;
+ f156 = f22 + f24;
+ f157 = f26 - f28;
+ f158 = f26 + f28;
+ f159 = MUL_F(FRAC_CONST(0.7071067811865476), f152);
+ f160 = f0 - f159;
+ f161 = f0 + f159;
+ f162 = f148 + f156;
+ f163 = MUL_C(COEF_CONST(1.3065629648763766), f148);
+ f164 = MUL_F(FRAC_CONST(-0.9238795325112866), f162);
+ f165 = MUL_F(FRAC_CONST(-0.5411961001461967), f156);
+ f166 = f163 + f164;
+ f167 = f165 - f164;
+ f168 = f161 - f167;
+ f169 = f161 + f167;
+ f170 = f160 - f166;
+ f171 = f160 + f166;
+ f172 = f146 + f158;
+ f173 = MUL_C(COEF_CONST(1.1758756024193588), f146);
+ f174 = MUL_F(FRAC_CONST(-0.9807852804032304), f172);
+ f175 = MUL_F(FRAC_CONST(-0.7856949583871021), f158);
+ f176 = f173 + f174;
+ f177 = f175 - f174;
+ f178 = f150 + f154;
+ f179 = MUL_C(COEF_CONST(1.3870398453221473), f150);
+ f180 = MUL_F(FRAC_CONST(-0.8314696123025455), f178);
+ f181 = MUL_F(FRAC_CONST(-0.2758993792829436), f154);
+ f182 = f179 + f180;
+ f183 = f181 - f180;
+ f184 = f177 - f183;
+ f185 = f177 + f183;
+ f186 = MUL_F(FRAC_CONST(0.7071067811865476), f184);
+ f187 = f176 - f182;
+ f188 = f176 + f182;
+ f189 = MUL_F(FRAC_CONST(0.7071067811865476), f188);
+ f190 = f186 - f189;
+ f191 = f186 + f189;
+ f192 = f169 - f185;
+ f193 = f169 + f185;
+ f194 = f171 - f191;
+ f195 = f171 + f191;
+ f196 = f170 - f190;
+ f197 = f170 + f190;
+ f198 = f168 - f187;
+ f199 = f168 + f187;
+ f200 = MUL_F(FRAC_CONST(0.7071067811865476), f151);
+ f201 = f30 - f200;
+ f202 = f30 + f200;
+ f203 = f155 + f147;
+ f204 = MUL_C(COEF_CONST(1.3065629648763766), f155);
+ f205 = MUL_F(FRAC_CONST(-0.9238795325112866), f203);
+ f206 = MUL_F(FRAC_CONST(-0.5411961001461967), f147);
+ f207 = f204 + f205;
+ f208 = f206 - f205;
+ f209 = f202 - f208;
+ f210 = f202 + f208;
+ f211 = f201 - f207;
+ f212 = f201 + f207;
+ f213 = f157 + f145;
+ f214 = MUL_C(COEF_CONST(1.1758756024193588), f157);
+ f215 = MUL_F(FRAC_CONST(-0.9807852804032304), f213);
+ f216 = MUL_F(FRAC_CONST(-0.7856949583871021), f145);
+ f217 = f214 + f215;
+ f218 = f216 - f215;
+ f219 = f153 + f149;
+ f220 = MUL_C(COEF_CONST(1.3870398453221473), f153);
+ f221 = MUL_F(FRAC_CONST(-0.8314696123025455), f219);
+ f222 = MUL_F(FRAC_CONST(-0.2758993792829436), f149);
f223 = f220 + f221;
f224 = f222 - f221;
- f225 = f218 + f216;
- f226 = MUL_C(COEF_CONST(0.2758993792829431), f218);
- f227 = MUL_C(COEF_CONST(0.5555702330196022), f225);
- f228 = MUL_C(COEF_CONST(1.3870398453221475), f216);
- f229 = f226 + f227;
- f230 = f228 - f227;
- f231 = f213 + f211;
- f232 = MUL_C(COEF_CONST(1.1758756024193591), f213);
- f233 = MUL_C(COEF_CONST((-0.1950903220161287)), f231);
- f234 = MUL_C(COEF_CONST(0.7856949583871016), f211);
- f235 = f232 + f233;
- f236 = f234 - f233;
- f237 = f217 + f215;
- f238 = MUL_C(COEF_CONST(1.3870398453221473), f217);
- f239 = MUL_C(COEF_CONST((-0.8314696123025455)), f237);
- f240 = MUL_C(COEF_CONST((-0.2758993792829436)), f215);
- f241 = f238 + f239;
- f242 = f240 - f239;
- f243 = f204 - f223;
- f244 = f204 + f223;
- f245 = f206 - f224;
- f246 = f206 + f224;
- f247 = f208 - f229;
- f248 = f208 + f229;
- f249 = f210 - f230;
- f250 = f210 + f230;
- f251 = f203 - f235;
- f252 = f203 + f235;
- f253 = f205 - f236;
- f254 = f205 + f236;
- f255 = f207 - f241;
- f256 = f207 + f241;
- f257 = f209 - f242;
- f258 = f209 + f242;
- f259 = f246 + f244;
- f260 = MUL_C(COEF_CONST((-0.9497277818777543)), f246);
- f261 = MUL_C(COEF_CONST(0.9987954562051724), f259);
- f262 = MUL_C(COEF_CONST(1.0478631305325905), f244);
- y[2] = f260 + f261;
- y[62] = f262 - f261;
- f265 = f250 + f248;
- f266 = MUL_C(COEF_CONST((-0.7270510732912801)), f250);
- f267 = MUL_C(COEF_CONST(0.9700312531945440), f265);
- f268 = MUL_C(COEF_CONST(1.2130114330978079), f248);
- y[10] = f266 + f267;
- y[54] = f268 - f267;
- f271 = f254 + f252;
- f272 = MUL_C(COEF_CONST((-0.4764341996931611)), f254);
- f273 = MUL_C(COEF_CONST(0.9039892931234433), f271);
- f274 = MUL_C(COEF_CONST(1.3315443865537255), f252);
- y[18] = f272 + f273;
- y[46] = f274 - f273;
- f277 = f258 + f256;
- f278 = MUL_C(COEF_CONST((-0.2075082269882114)), f258);
- f279 = MUL_C(COEF_CONST(0.8032075314806448), f277);
- f280 = MUL_C(COEF_CONST(1.3989068359730783), f256);
- y[26] = f278 + f279;
- y[38] = f280 - f279;
- f283 = f245 + f243;
- f284 = MUL_C(COEF_CONST(0.0693921705079408), f245);
- f285 = MUL_C(COEF_CONST(0.6715589548470183), f283);
- f286 = MUL_C(COEF_CONST(1.4125100802019774), f243);
- y[34] = f284 + f285;
- y[30] = f286 - f285;
- f289 = f249 + f247;
- f290 = MUL_C(COEF_CONST(0.3436258658070505), f249);
- f291 = MUL_C(COEF_CONST(0.5141027441932217), f289);
- f292 = MUL_C(COEF_CONST(1.3718313541934939), f247);
- y[42] = f290 + f291;
- y[22] = f292 - f291;
- f295 = f253 + f251;
- f296 = MUL_C(COEF_CONST(0.6046542117908007), f253);
- f297 = MUL_C(COEF_CONST(0.3368898533922201), f295);
- f298 = MUL_C(COEF_CONST(1.2784339185752409), f251);
- y[50] = f296 + f297;
- y[14] = f298 - f297;
- f301 = f257 + f255;
- f302 = MUL_C(COEF_CONST(0.8424460355094192), f257);
- f303 = MUL_C(COEF_CONST(0.1467304744553618), f301);
- f304 = MUL_C(COEF_CONST(1.1359069844201428), f255);
- y[58] = f302 + f303;
- y[6] = f304 - f303;
- f307 = t2[1] + t2[63];
- f308 = MUL_C(COEF_CONST(1.0242400472191162), t2[1]);
- f309 = MUL_C(COEF_CONST((-0.9996988186962043)), f307);
- f310 = MUL_C(COEF_CONST((-0.9751575901732922)), t2[63]);
- f311 = f308 + f309;
- f312 = f310 - f309;
- f313 = t2[3] + t2[61];
- f314 = MUL_C(COEF_CONST(1.0708550202783571),t2[3]);
- f315 = MUL_C(COEF_CONST((-0.9972904566786902)), f313);
- f316 = MUL_C(COEF_CONST((-0.9237258930790232)), t2[61]);
- f317 = f314 + f315;
- f318 = f316 - f315;
- f319 = t2[5] + t2[59];
- f320 = MUL_C(COEF_CONST(1.1148902097979256), t2[5]);
- f321 = MUL_C(COEF_CONST((-0.9924795345987101)), f319);
- f322 = MUL_C(COEF_CONST((-0.8700688593994945)), t2[59]);
- f323 = f320 + f321;
- f324 = f322 - f321;
- f325 = t2[7] + t2[57];
- f326 = MUL_C(COEF_CONST(1.1562395311492426), t2[7]);
- f327 = MUL_C(COEF_CONST((-0.9852776423889412)), f325);
- f328 = MUL_C(COEF_CONST((-0.8143157536286398)), t2[57]);
- f329 = f326 + f327;
- f330 = f328 - f327;
- f331 = t2[9] + t2[55];
- f332 = MUL_C(COEF_CONST(1.1948033701953984), t2[9]);
- f333 = MUL_C(COEF_CONST((-0.9757021300385286)), f331);
- f334 = MUL_C(COEF_CONST((-0.7566008898816589)), t2[55]);
- f335 = f332 + f333;
- f336 = f334 - f333;
- f337 = t2[11] + t2[53];
- f338 = MUL_C(COEF_CONST(1.2304888232703382), t2[11]);
- f339 = MUL_C(COEF_CONST((-0.9637760657954400)), f337);
- f340 = MUL_C(COEF_CONST((-0.6970633083205418)), t2[53]);
- f341 = f338 + f339;
- f342 = f340 - f339;
- f343 = t2[13] + t2[51];
- f344 = MUL_C(COEF_CONST(1.2632099209919279), t2[13]);
- f345 = MUL_C(COEF_CONST((-0.9495281805930368)), f343);
- f346 = MUL_C(COEF_CONST((-0.6358464401941457)), t2[51]);
- f347 = f344 + f345;
- f348 = f346 - f345;
- f349 = t2[15] + t2[49];
- f350 = MUL_C(COEF_CONST(1.2928878353697266), t2[15]);
- f351 = MUL_C(COEF_CONST((-0.9329927988347391)), f349);
- f352 = MUL_C(COEF_CONST((-0.5730977622997515)), t2[49]);
- f353 = f350 + f351;
- f354 = f352 - f351;
- f355 = t2[17] + t2[47];
- f356 = MUL_C(COEF_CONST(1.3194510697085207), t2[17]);
- f357 = MUL_C(COEF_CONST((-0.9142097557035306)), f355);
- f358 = MUL_C(COEF_CONST((-0.5089684416985405)), t2[47]);
- f359 = f356 + f357;
- f360 = f358 - f357;
- f361 = t2[19] + t2[45];
- f362 = MUL_C(COEF_CONST(1.3428356308501219), t2[19]);
- f363 = MUL_C(COEF_CONST((-0.8932243011955153)), f361);
- f364 = MUL_C(COEF_CONST((-0.4436129715409087)), t2[45]);
- f365 = f362 + f363;
- f366 = f364 - f363;
- f367 = t2[21] + t2[43];
- f368 = MUL_C(COEF_CONST(1.3629851833384954), t2[21]);
- f369 = MUL_C(COEF_CONST((-0.8700869911087115)), f367);
- f370 = MUL_C(COEF_CONST((-0.3771887988789276)), t2[43]);
- f371 = f368 + f369;
- f372 = f370 - f369;
- f373 = t2[23] + t2[41];
- f374 = MUL_C(COEF_CONST(1.3798511851368040), t2[23]);
- f375 = MUL_C(COEF_CONST((-0.8448535652497072)), f373);
- f376 = MUL_C(COEF_CONST((-0.3098559453626103)), t2[41]);
- f377 = f374 + f375;
- f378 = f376 - f375;
- f379 = t2[25] + t2[39];
- f380 = MUL_C(COEF_CONST(1.3933930045694289), t2[25]);
- f381 = MUL_C(COEF_CONST((-0.8175848131515840)), f379);
- f382 = MUL_C(COEF_CONST((-0.2417766217337392)), t2[39]);
- f383 = f380 + f381;
- f384 = f382 - f381;
- f385 = t2[27] + t2[37];
- f386 = MUL_C(COEF_CONST(1.4035780182072330), t2[27]);
- f387 = MUL_C(COEF_CONST((-0.7883464276266061)), f385);
- f388 = MUL_C(COEF_CONST((-0.1731148370459791)), t2[37]);
- f389 = f386 + f387;
- f390 = f388 - f387;
- f391 = t2[29] + t2[35];
- f392 = MUL_C(COEF_CONST(1.4103816894602614), t2[29]);
- f393 = MUL_C(COEF_CONST((-0.7572088465064846)), f391);
- f394 = MUL_C(COEF_CONST((-0.1040360035527078)), t2[35]);
- f395 = f392 + f393;
- f396 = f394 - f393;
- f397 = t2[31] + t2[33];
- f398 = MUL_C(COEF_CONST(1.4137876276885337), t2[31]);
- f399 = MUL_C(COEF_CONST((-0.7242470829514670)), f397);
- f400 = MUL_C(COEF_CONST((-0.0347065382144002)), t2[33]);
- f401 = f398 + f399;
- f402 = f400 - f399;
- f403 = f312 - f402;
- f404 = f312 + f402;
- f405 = f318 - f396;
- f406 = f318 + f396;
- f407 = f324 - f390;
- f408 = f324 + f390;
- f409 = f330 - f384;
- f410 = f330 + f384;
- f411 = f336 - f378;
- f412 = f336 + f378;
- f413 = f342 - f372;
- f414 = f342 + f372;
- f415 = f348 - f366;
- f416 = f348 + f366;
- f417 = f354 - f360;
- f418 = f354 + f360;
- f419 = f404 - f418;
- f420 = f404 + f418;
- f421 = f406 - f416;
- f422 = f406 + f416;
- f423 = f408 - f414;
- f424 = f408 + f414;
- f425 = f410 - f412;
- f426 = f410 + f412;
- f427 = f420 - f426;
- f428 = f420 + f426;
- f429 = f422 - f424;
- f430 = f422 + f424;
- f431 = f428 - f430;
- y[1] = f428 + f430;
- f433 = MUL_C(COEF_CONST(0.7071067811865476), f431);
- f434 = f427 + f429;
- f435 = MUL_C(COEF_CONST(1.3065629648763766), f427);
- f436 = MUL_C(COEF_CONST((-0.9238795325112866)), f434);
- f437 = MUL_C(COEF_CONST((-0.5411961001461967)), f429);
- f438 = f435 + f436;
- f439 = f437 - f436;
- f440 = f419 + f425;
- f441 = MUL_C(COEF_CONST(1.1758756024193588), f419);
- f442 = MUL_C(COEF_CONST((-0.9807852804032304)), f440);
- f443 = MUL_C(COEF_CONST((-0.7856949583871021)), f425);
- f444 = f441 + f442;
- f445 = f443 - f442;
- f446 = f421 + f423;
- f447 = MUL_C(COEF_CONST(1.3870398453221473), f421);
- f448 = MUL_C(COEF_CONST((-0.8314696123025455)), f446);
- f449 = MUL_C(COEF_CONST((-0.2758993792829436)), f423);
- f450 = f447 + f448;
- f451 = f449 - f448;
- f452 = f445 - f451;
- f453 = f445 + f451;
- f454 = MUL_C(COEF_CONST(0.7071067811865476), f452);
- f455 = f444 - f450;
- f456 = f444 + f450;
- f457 = MUL_C(COEF_CONST(0.7071067811865476), f456);
- f458 = f454 - f457;
- f459 = f454 + f457;
- f460 = f405 - f407;
- f461 = f405 + f407;
- f462 = f409 - f411;
- f463 = f409 + f411;
- f464 = f413 - f415;
- f465 = f413 + f415;
- f466 = MUL_C(COEF_CONST(0.7071067811865476), f463);
- f467 = f403 - f466;
- f468 = f403 + f466;
- f469 = f461 + f465;
- f470 = MUL_C(COEF_CONST(1.3065629648763766), f461);
- f471 = MUL_C(COEF_CONST((-0.9238795325112866)), f469);
- f472 = MUL_C(COEF_CONST((-0.5411961001461967)), f465);
- f473 = f470 + f471;
- f474 = f472 - f471;
- f475 = f468 - f474;
- f476 = f468 + f474;
- f477 = f467 - f473;
- f478 = f467 + f473;
- f479 = f460 + f464;
- f480 = MUL_C(COEF_CONST(1.3065629648763770), f460);
- f481 = MUL_C(COEF_CONST((-0.3826834323650904)), f479);
- f482 = MUL_C(COEF_CONST(0.5411961001461961), f464);
- f483 = f480 + f481;
- f484 = f482 - f481;
- f485 = MUL_C(COEF_CONST(0.7071067811865476), f462);
- f486 = f485 - f417;
- f487 = f485 + f417;
- f488 = f484 - f487;
- f489 = f484 + f487;
- f490 = f483 - f486;
- f491 = f483 + f486;
- f492 = f489 + f476;
- f493 = MUL_C(COEF_CONST((-0.8971675863426361)), f489);
- f494 = MUL_C(COEF_CONST(0.9951847266721968), f492);
- f495 = MUL_C(COEF_CONST(1.0932018670017576), f476);
- f496 = f493 + f494;
- f497 = f495 - f494;
- f498 = f491 + f478;
- f499 = MUL_C(COEF_CONST((-0.6666556584777466)), f491);
- f500 = MUL_C(COEF_CONST(0.9569403357322089), f498);
- f501 = MUL_C(COEF_CONST(1.2472250129866713), f478);
- f502 = f499 + f500;
- f503 = f501 - f500;
- f504 = f490 + f477;
- f505 = MUL_C(COEF_CONST((-0.4105245275223571)), f490);
- f506 = MUL_C(COEF_CONST(0.8819212643483549), f504);
- f507 = MUL_C(COEF_CONST(1.3533180011743529), f477);
- f508 = f505 + f506;
- f509 = f507 - f506;
- f510 = f488 + f475;
- f511 = MUL_C(COEF_CONST((-0.1386171691990915)), f488);
- f512 = MUL_C(COEF_CONST(0.7730104533627370), f510);
- f513 = MUL_C(COEF_CONST(1.4074037375263826), f475);
- f514 = f511 + f512;
- f515 = f513 - f512;
- f516 = f311 + f401;
- f517 = f311 - f401;
- f518 = f317 + f395;
- f519 = f395 - f317;
- f520 = f323 + f389;
- f521 = f323 - f389;
- f522 = f329 + f383;
- f523 = f383 - f329;
- f524 = f335 + f377;
- f525 = f335 - f377;
- f526 = f341 + f371;
- f527 = f371 - f341;
- f528 = f347 + f365;
- f529 = f347 - f365;
- f530 = f353 + f359;
- f531 = f359 - f353;
- f532 = f517 - f531;
- f533 = f517 + f531;
- f534 = f519 - f529;
- f535 = f519 + f529;
- f536 = f521 - f527;
- f537 = f521 + f527;
- f538 = f523 - f525;
- f539 = f523 + f525;
- f540 = f533 - f539;
- f541 = f533 + f539;
- f542 = f535 - f537;
- f543 = f535 + f537;
- f544 = f541 - f543;
- y[63] = f541 + f543;
- f546 = MUL_C(COEF_CONST(0.7071067811865476), f544);
- f547 = f540 + f542;
- f548 = MUL_C(COEF_CONST(1.3065629648763766), f540);
- f549 = MUL_C(COEF_CONST((-0.9238795325112866)), f547);
- f550 = MUL_C(COEF_CONST((-0.5411961001461967)), f542);
- f551 = f548 + f549;
- f552 = f550 - f549;
- f553 = f532 + f538;
- f554 = MUL_C(COEF_CONST(1.1758756024193588), f532);
- f555 = MUL_C(COEF_CONST((-0.9807852804032304)), f553);
- f556 = MUL_C(COEF_CONST((-0.7856949583871021)), f538);
- f557 = f554 + f555;
- f558 = f556 - f555;
- f559 = f534 + f536;
- f560 = MUL_C(COEF_CONST(1.3870398453221473), f534);
- f561 = MUL_C(COEF_CONST((-0.8314696123025455)), f559);
- f562 = MUL_C(COEF_CONST((-0.2758993792829436)), f536);
- f563 = f560 + f561;
- f564 = f562 - f561;
- f565 = f558 - f564;
- f566 = f558 + f564;
- f567 = MUL_C(COEF_CONST(0.7071067811865476), f565);
- f568 = f557 - f563;
- f569 = f557 + f563;
- f570 = MUL_C(COEF_CONST(0.7071067811865476), f569);
- f571 = f567 - f570;
- f572 = f567 + f570;
- f573 = MUL_C(COEF_CONST(0.5024192861881557), f516);
- f574 = MUL_C(COEF_CONST(0.5224986149396889), f518);
- f575 = MUL_C(COEF_CONST(0.5669440348163577), f520);
- f576 = MUL_C(COEF_CONST(0.6468217833599901), f522);
- f577 = MUL_C(COEF_CONST(0.7881546234512502), f524);
- f578 = MUL_C(COEF_CONST(1.0606776859903471), f526);
- f579 = MUL_C(COEF_CONST(1.7224470982383342), f528);
- f580 = MUL_C(COEF_CONST(5.1011486186891553), f530);
- f581 = f573 + f580;
- f582 = f573 - f580;
- f583 = f574 + f579;
- f584 = f579 - f574;
- f585 = f575 + f578;
- f586 = f575 - f578;
- f587 = f576 + f577;
- f588 = f577 - f576;
- f589 = f582 - f588;
- f590 = f582 + f588;
- f591 = f584 - f586;
- f592 = f584 + f586;
- f593 = f590 - f592;
- f594 = f590 + f592;
- f595 = MUL_C(COEF_CONST(0.7071067811865476), f593);
- f596 = f589 + f591;
- f597 = MUL_C(COEF_CONST(1.3065629648763766), f589);
- f598 = MUL_C(COEF_CONST((-0.9238795325112866)), f596);
- f599 = MUL_C(COEF_CONST((-0.5411961001461967)), f591);
- f600 = f597 + f598;
- f601 = f599 - f598;
- f602 = f583 + f585;
- f603 = f585 - f583;
- f604 = MUL_C(COEF_CONST(0.7071067811865476), f603);
- f605 = MUL_C(COEF_CONST(0.7071067811865476), f602);
- f606 = f581 - f604;
- f607 = f581 + f604;
- f608 = f605 - f587;
- f609 = f587 + f605;
- f610 = f607 - f609;
- f611 = MUL_C(COEF_CONST((-0.7856949583871021)), f609);
- f612 = MUL_C(COEF_CONST(0.9807852804032304), f610);
- f613 = MUL_C(COEF_CONST(1.1758756024193588), f607);
- f614 = f612 - f611;
- f615 = f613 - f612;
- f616 = f608 + f606;
- f617 = MUL_C(COEF_CONST(0.2758993792829431), f608);
- f618 = MUL_C(COEF_CONST(0.5555702330196022), f616);
- f619 = MUL_C(COEF_CONST(1.3870398453221475), f606);
- f620 = f617 + f618;
- f621 = f619 - f618;
- f622 = f594 + f614;
- f623 = f614 + f601;
- f624 = f601 + f621;
- f625 = f621 + f595;
- f626 = f595 + f620;
- f627 = f620 + f600;
- f628 = f600 + f615;
- y[5] = f496 - f615;
- y[3] = f496 + f615;
- y[9] = f453 - f568;
- y[7] = f453 + f568;
- y[13] = f502 - f628;
- y[11] = f502 + f628;
- y[17] = f439 - f551;
- y[15] = f439 + f551;
- y[21] = f508 - f627;
- y[19] = f508 + f627;
- y[25] = f459 - f571;
- y[23] = f459 + f571;
- y[29] = f514 - f626;
- y[27] = f514 + f626;
- y[33] = f433 - f546;
- y[31] = f433 + f546;
- y[37] = f515 - f625;
- y[35] = f515 + f625;
- y[41] = f458 - f572;
- y[39] = f458 + f572;
- y[45] = f509 - f624;
- y[43] = f509 + f624;
- y[49] = f438 - f552;
- y[47] = f438 + f552;
- y[53] = f503 - f623;
- y[51] = f503 + f623;
- y[57] = f455 - f566;
- y[55] = f455 + f566;
- y[61] = f497 - f622;
- y[59] = f497 + f622;
+ f225 = f218 - f224;
+ f226 = f218 + f224;
+ f227 = MUL_F(FRAC_CONST(0.7071067811865476), f225);
+ f228 = f217 - f223;
+ f229 = f217 + f223;
+ f230 = MUL_F(FRAC_CONST(0.7071067811865476), f229);
+ f231 = f227 - f230;
+ f232 = f227 + f230;
+ f233 = f210 - f226;
+ f234 = f210 + f226;
+ f235 = f212 - f232;
+ f236 = f212 + f232;
+ f237 = f211 - f231;
+ f238 = f211 + f231;
+ f239 = f209 - f228;
+ f240 = f209 + f228;
+ f241 = f234 + f193;
+ f242 = MUL_F(FRAC_CONST(-0.9497277818777543), f234);
+ f243 = MUL_F(FRAC_CONST(0.9987954562051724), f241);
+ f244 = MUL_C(COEF_CONST(1.0478631305325905), f193);
+ y[1] = f242 + f243;
+ y[31] = f244 - f243;
+ f247 = f195 - f236;
+ f248 = MUL_F(FRAC_CONST(-0.8424460355094192), f236);
+ f249 = MUL_F(FRAC_CONST(0.9891765099647810), f247);
+ f250 = MUL_C(COEF_CONST(1.1359069844201428), f195);
+ y[3] = f249 - f248;
+ y[29] = f250 - f249;
+ f253 = f238 + f197;
+ f254 = MUL_F(FRAC_CONST(-0.7270510732912801), f238);
+ f255 = MUL_F(FRAC_CONST(0.9700312531945440), f253);
+ f256 = MUL_C(COEF_CONST(1.2130114330978079), f197);
+ y[5] = f254 + f255;
+ y[27] = f256 - f255;
+ f259 = f199 - f240;
+ f260 = MUL_F(FRAC_CONST(-0.6046542117908007), f240);
+ f261 = MUL_F(FRAC_CONST(0.9415440651830208), f259);
+ f262 = MUL_C(COEF_CONST(1.2784339185752409), f199);
+ y[7] = f261 - f260;
+ y[25] = f262 - f261;
+ f265 = f239 + f198;
+ f266 = MUL_F(FRAC_CONST(-0.4764341996931611), f239);
+ f267 = MUL_F(FRAC_CONST(0.9039892931234433), f265);
+ f268 = MUL_C(COEF_CONST(1.3315443865537255), f198);
+ y[9] = f266 + f267;
+ y[23] = f268 - f267;
+ f271 = f196 - f237;
+ f272 = MUL_F(FRAC_CONST(-0.3436258658070505), f237);
+ f273 = MUL_F(FRAC_CONST(0.8577286100002721), f271);
+ f274 = MUL_C(COEF_CONST(1.3718313541934939), f196);
+ y[11] = f273 - f272;
+ y[21] = f274 - f273;
+ f277 = f235 + f194;
+ f278 = MUL_F(FRAC_CONST(-0.2075082269882114), f235);
+ f279 = MUL_F(FRAC_CONST(0.8032075314806448), f277);
+ f280 = MUL_C(COEF_CONST(1.3989068359730783), f194);
+ y[13] = f278 + f279;
+ y[19] = f280 - f279;
+ f283 = f192 - f233;
+ f284 = MUL_F(FRAC_CONST(-0.0693921705079408), f233);
+ f285 = MUL_F(FRAC_CONST(0.7409511253549591), f283);
+ f286 = MUL_C(COEF_CONST(1.4125100802019774), f192);
+ y[15] = f285 - f284;
+ y[17] = f286 - f285;
}
-void DST2_64_unscaled(real_t *y, real_t *x)
+#else
+
+
+#define n 32
+#define log2n 5
+
+// w_array_real[i] = cos(2*M_PI*i/32)
+static const real_t w_array_real[] = {
+ FRAC_CONST(1.000000000000000), FRAC_CONST(0.980785279337272),
+ FRAC_CONST(0.923879528329380), FRAC_CONST(0.831469603195765),
+ FRAC_CONST(0.707106765732237), FRAC_CONST(0.555570210304169),
+ FRAC_CONST(0.382683402077046), FRAC_CONST(0.195090284503576),
+ FRAC_CONST(0.000000000000000), FRAC_CONST(-0.195090370246552),
+ FRAC_CONST(-0.382683482845162), FRAC_CONST(-0.555570282993553),
+ FRAC_CONST(-0.707106827549476), FRAC_CONST(-0.831469651765257),
+ FRAC_CONST(-0.923879561784627), FRAC_CONST(-0.980785296392607)
+};
+
+// w_array_imag[i] = sin(-2*M_PI*i/32)
+static const real_t w_array_imag[] = {
+ FRAC_CONST(0.000000000000000), FRAC_CONST(-0.195090327375064),
+ FRAC_CONST(-0.382683442461104), FRAC_CONST(-0.555570246648862),
+ FRAC_CONST(-0.707106796640858), FRAC_CONST(-0.831469627480512),
+ FRAC_CONST(-0.923879545057005), FRAC_CONST(-0.980785287864940),
+ FRAC_CONST(-1.000000000000000), FRAC_CONST(-0.980785270809601),
+ FRAC_CONST(-0.923879511601754), FRAC_CONST(-0.831469578911016),
+ FRAC_CONST(-0.707106734823616), FRAC_CONST(-0.555570173959476),
+ FRAC_CONST(-0.382683361692986), FRAC_CONST(-0.195090241632088)
+};
+
+// FFT decimation in frequency
+// 4*16*2+16=128+16=144 multiplications
+// 6*16*2+10*8+4*16*2=192+80+128=400 additions
+static void fft_dif(real_t * Real, real_t * Imag)
{
- int16_t i0;
- real_t f2, f3, f4, f5, f6, f7;
- real_t f8, f9, f10, f11, f12, f13;
- real_t f14, f15, f16, f17, f18, f19;
- real_t f20, f21, f22, f23, f24, f25;
- real_t f26, f27, f28, f29, f30, f31;
- real_t f32, f33, f34, f35, f36, f37;
- real_t f38, f39, f40, f41, f42, f43;
- real_t f44, f45, f46, f47, f48, f49;
- real_t f50, f51, f52, f53, f54, f55;
- real_t f56, f57, f58, f59, f60, f61;
- real_t f62, f63, f64, f65, f66, f67;
- real_t f68, f69, f70, f71, f72, f73;
- real_t f74, f75, f76, f77, f78, f79;
- real_t f80, f81, f82, f83, f84, f85;
- real_t f86, f87, f88, f89, f90, f91;
- real_t f92, f93, f94, f95, f96, f97;
- real_t f98, f99, f100, f101, f102, f103;
- real_t f104, f105, f106, f107, f108, f109;
- real_t f110, f111, f112, f113, f114, f115;
- real_t f116, f117, f118, f119, f120, f121;
- real_t f122, f123, f124, f125, f126, f127;
- real_t f128, f129, f130, f131, f132, f133;
- real_t f134, f135, f136, f137, f138, f139;
- real_t f140, f141, f142, f143, f144, f145;
- real_t f146, f147, f148, f149, f150, f151;
- real_t f152, f153, f154, f155, f156, f157;
- real_t f158, f159, f160, f161, f162, f163;
- real_t f164, f165, f166, f167, f168, f169;
- real_t f170, f171, f172, f173, f174, f175;
- real_t f176, f177, f178, f179, f180, f181;
- real_t f182, f183, f184, f185, f186, f187;
- real_t f188, f189, f190, f191, f192, f193;
- real_t f194, f195, f196, f197, f198, f199;
- real_t f200, f201, f202, f203, f204, f205;
- real_t f206, f207, f208, f209, f210, f211;
- real_t f212, f213, f214, f215, f216, f217;
- real_t f218, f219, f220, f221, f222, f223;
- real_t f224, f225, f226, f227, f228, f229;
- real_t f230, f231, f232, f233, f234, f235;
- real_t f236, f237, f238, f239, f240, f241;
- real_t f242, f243, f244, f245, f246, f247;
- real_t f248, f249, f250, f251, f252, f253;
- real_t f254, f255, f256, f257, f258, f259;
- real_t f260, f261, f264, f265, f266, f267;
- real_t f270, f271, f272, f273, f276, f277;
- real_t f278, f279, f282, f283, f284, f285;
- real_t f288, f289, f290, f291, f294, f295;
- real_t f296, f297, f300, f301, f302, f303;
- real_t f306, f307, f308, f309, f312, f313;
- real_t f314, f315, f318, f319, f320, f321;
- real_t f324, f325, f326, f327, f330, f331;
- real_t f332, f333, f336, f337, f338, f339;
- real_t f342, f343, f344, f345, f348, f349;
- real_t f350, f351, f354, f355, f356, f357;
- real_t f358, f359, f360, f361, f362, f363;
- real_t f364, f365, f366, f367, f368, f369;
- real_t f370, f371, f372, f373, f374, f375;
- real_t f376, f377, f378, f379, f380, f381;
- real_t f382, f383, f384, f385, f386, f387;
- real_t f388, f389, f390, f391, f392, f393;
- real_t f394, f395, f396, f397, f398, f399;
- real_t f400, f401, f402, f403, f404, f405;
- real_t f406, f407, f408, f409, f410, f411;
- real_t f412, f413, f414, f415, f416, f417;
- real_t f418, f419, f420, f421, f422, f423;
- real_t f424, f425, f426, f427, f428, f429;
- real_t f430, f431, f432, f433, f434, f435;
- real_t f436, f437, f438, f439, f440, f441;
- real_t f442, f443, f444, f445, f446, f447;
- real_t f448, f449, f450, f451, f452, f453;
- real_t f454, f455, f456, f457, f458, f459;
- real_t f460, f461, f462, f463, f464, f465;
- real_t f466, f467, f468, f469, f470, f471;
- real_t f472, f473, f474, f475, f476, f477;
- real_t f478, f479, f480, f481, f482, f483;
- real_t f484, f485, f486, f487, f488, f489;
- real_t f490, f491, f492, f493, f494, f495;
- real_t f496, f497, f498, f499, f500, f501;
- real_t f504, f505, f506, f507, f510, f511;
- real_t f512, f513, f516, f517, f518, f519;
- real_t f522, f523, f524, f525, f528, f529;
- real_t f530, f531, f534, f535, f536, f537;
- real_t f540, f541, f542, f543, f546, f547;
- real_t f548, f549, f550, f551, f552, f553;
- real_t f554, f555, f556, f557, f558, f559;
- real_t f560, f561, f562, f563, f564, f565;
- real_t f566, f567, f568, f569, f570, f571;
- real_t f572, f573, f574, f577, f578, f579;
- real_t f580, f583, f584, f585, f586, f587;
- real_t f588, f589, f590, f591, f592, f593;
- real_t f594, f595, f596, f597, f598, f603;
- real_t f604, f605, f606, f607, f608, f609;
- real_t f610, f611, f612, f613, f614, f615;
- real_t f616, f617, f618, f619, f620, f621;
- real_t f622, f623, f624, f625, f626, f627;
- real_t f628, f629, f630, f631, f632, f633;
- real_t f634, f635, f636, f637, f638, f639;
- real_t f640, f641, f642, f643, f644, f645;
- real_t f646, f647, f648, f649, f650;
- ALIGN static real_t t2[64];
-
- for (i0=0; i0<32; i0++)
+ real_t w_real, w_imag; // For faster access
+ real_t point1_real, point1_imag, point2_real, point2_imag; // For faster access
+ uint32_t j, i, i2, w_index; // Counters
+
+ // First 2 stages of 32 point FFT decimation in frequency
+ // 4*16*2=64*2=128 multiplications
+ // 6*16*2=96*2=192 additions
+ // Stage 1 of 32 point FFT decimation in frequency
+ for (i = 0; i < 16; i++)
+ {
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+ i2 = i+16;
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ w_real = w_array_real[i];
+ w_imag = w_array_imag[i];
+
+ // temp1 = x[i] - x[i2]
+ point1_real -= point2_real;
+ point1_imag -= point2_imag;
+
+ // x[i1] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = (x[i] - x[i2]) * w
+ Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
+ Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
+ }
+ // Stage 2 of 32 point FFT decimation in frequency
+ for (j = 0, w_index = 0; j < 8; j++, w_index += 2)
{
- t2[2*i0+1] = x[i0] - x[-i0+63];
- t2[2*i0] = x[i0] + x[-i0+63];
+ w_real = w_array_real[w_index];
+ w_imag = w_array_imag[w_index];
+
+ i = j;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+ i2 = i+8;
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // temp1 = x[i] - x[i2]
+ point1_real -= point2_real;
+ point1_imag -= point2_imag;
+
+ // x[i1] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = (x[i] - x[i2]) * w
+ Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
+ Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
+
+ i = j+16;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+ i2 = i+8;
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // temp1 = x[i] - x[i2]
+ point1_real -= point2_real;
+ point1_imag -= point2_imag;
+
+ // x[i1] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = (x[i] - x[i2]) * w
+ Real[i2] = (MUL_F(point1_real,w_real) - MUL_F(point1_imag,w_imag));
+ Imag[i2] = (MUL_F(point1_real,w_imag) + MUL_F(point1_imag,w_real));
}
- f2 = t2[2] + t2[4];
- f3 = t2[4] - t2[2];
- f4 = t2[6] + t2[8];
- f5 = t2[8] - t2[6];
- f6 = t2[10] + t2[12];
- f7 = t2[12] - t2[10];
- f8 = t2[14] + t2[16];
- f9 = t2[16] - t2[14];
- f10 = t2[18] + t2[20];
- f11 = t2[20] - t2[18];
- f12 = t2[22] + t2[24];
- f13 = t2[24] - t2[22];
- f14 = t2[26] + t2[28];
- f15 = t2[28] - t2[26];
- f16 = t2[30] + t2[32];
- f17 = t2[32] - t2[30];
- f18 = t2[34] + t2[36];
- f19 = t2[36] - t2[34];
- f20 = t2[38] + t2[40];
- f21 = t2[40] - t2[38];
- f22 = t2[42] + t2[44];
- f23 = t2[44] - t2[42];
- f24 = t2[46] + t2[48];
- f25 = t2[48] - t2[46];
- f26 = t2[50] + t2[52];
- f27 = t2[52] - t2[50];
- f28 = t2[54] + t2[56];
- f29 = t2[56] - t2[54];
- f30 = t2[58] + t2[60];
- f31 = t2[60] - t2[58];
- f32 = MUL_C(COEF_CONST(0.7071067811865476), f17);
- f33 = t2[0] - f32;
- f34 = t2[0] + f32;
- f35 = f9 + f25;
- f36 = MUL_C(COEF_CONST(1.3065629648763766), f9);
- f37 = MUL_C(COEF_CONST((-0.9238795325112866)), f35);
- f38 = MUL_C(COEF_CONST((-0.5411961001461967)), f25);
- f39 = f36 + f37;
- f40 = f38 - f37;
- f41 = f34 - f40;
- f42 = f34 + f40;
- f43 = f33 - f39;
- f44 = f33 + f39;
- f45 = MUL_C(COEF_CONST(2.5629154477415064), f5);
- f46 = MUL_C(COEF_CONST(0.8999762231364158), f13);
- f47 = MUL_C(COEF_CONST(0.5097955791041592), f29);
- f48 = MUL_C(COEF_CONST(0.6013448869350453), f21);
- f49 = f45 - f47;
- f50 = f45 + f47;
- f51 = f46 - f48;
- f52 = f46 + f48;
- f53 = f50 + f52;
- f54 = MUL_C(COEF_CONST(1.3065629648763770), f50);
- f55 = MUL_C(COEF_CONST((-0.3826834323650904)), f53);
- f56 = MUL_C(COEF_CONST(0.5411961001461961), f52);
- f57 = f54 + f55;
- f58 = f56 - f55;
- f59 = f51 - f49;
- f60 = f49 + f51;
- f61 = MUL_C(COEF_CONST(0.7071067811865476), f60);
- f62 = f58 - f61;
- f63 = f57 - f61;
- f64 = f59 + f57;
- f65 = f42 - f58;
- f66 = f42 + f58;
- f67 = f44 + f62;
- f68 = f44 - f62;
- f69 = f43 - f63;
- f70 = f43 + f63;
- f71 = f41 + f64;
- f72 = f41 - f64;
- f73 = f7 - f11;
- f74 = f7 + f11;
- f75 = f15 - f19;
- f76 = f15 + f19;
- f77 = f23 - f27;
- f78 = f23 + f27;
- f79 = MUL_C(COEF_CONST(0.7071067811865476), f76);
- f80 = f3 - f79;
- f81 = f3 + f79;
- f82 = f74 + f78;
- f83 = MUL_C(COEF_CONST(1.3065629648763766), f74);
- f84 = MUL_C(COEF_CONST((-0.9238795325112866)), f82);
- f85 = MUL_C(COEF_CONST((-0.5411961001461967)), f78);
- f86 = f83 + f84;
- f87 = f85 - f84;
- f88 = f81 - f87;
- f89 = f81 + f87;
- f90 = f80 - f86;
- f91 = f80 + f86;
- f92 = MUL_C(COEF_CONST(0.7071067811865476), f75);
- f93 = f31 - f92;
- f94 = f31 + f92;
- f95 = f77 + f73;
- f96 = MUL_C(COEF_CONST(1.3065629648763766), f77);
- f97 = MUL_C(COEF_CONST((-0.9238795325112866)), f95);
- f98 = MUL_C(COEF_CONST((-0.5411961001461967)), f73);
- f99 = f96 + f97;
- f100 = f98 - f97;
- f101 = f94 - f100;
- f102 = f94 + f100;
- f103 = f93 - f99;
- f104 = f93 + f99;
- f105 = f102 + f89;
- f106 = MUL_C(COEF_CONST((-0.8971675863426361)), f102);
- f107 = MUL_C(COEF_CONST(0.9951847266721968), f105);
- f108 = MUL_C(COEF_CONST(1.0932018670017576), f89);
- f109 = f106 + f107;
- f110 = f108 - f107;
- f111 = f91 - f104;
- f112 = MUL_C(COEF_CONST((-0.6666556584777466)), f104);
- f113 = MUL_C(COEF_CONST(0.9569403357322089), f111);
- f114 = MUL_C(COEF_CONST(1.2472250129866713), f91);
- f115 = f113 - f112;
- f116 = f114 - f113;
- f117 = f103 + f90;
- f118 = MUL_C(COEF_CONST((-0.4105245275223571)), f103);
- f119 = MUL_C(COEF_CONST(0.8819212643483549), f117);
- f120 = MUL_C(COEF_CONST(1.3533180011743529), f90);
- f121 = f118 + f119;
- f122 = f120 - f119;
- f123 = f88 - f101;
- f124 = MUL_C(COEF_CONST((-0.1386171691990915)), f101);
- f125 = MUL_C(COEF_CONST(0.7730104533627370), f123);
- f126 = MUL_C(COEF_CONST(1.4074037375263826), f88);
- f127 = f125 - f124;
- f128 = f126 - f125;
- f129 = f66 - f109;
- f130 = f66 + f109;
- f131 = f68 - f115;
- f132 = f68 + f115;
- f133 = f70 - f121;
- f134 = f70 + f121;
- f135 = f72 - f127;
- f136 = f72 + f127;
- f137 = f71 - f128;
- f138 = f71 + f128;
- f139 = f69 - f122;
- f140 = f69 + f122;
- f141 = f67 - f116;
- f142 = f67 + f116;
- f143 = f65 - f110;
- f144 = f65 + f110;
- f145 = f26 + f30;
- f146 = f22 + f26;
- f147 = f18 + f22;
- f148 = f14 + f18;
- f149 = f10 + f14;
- f150 = f6 + f10;
- f151 = f2 + f6;
- f152 = MUL_C(COEF_CONST(0.7071067811865476), f148);
- f153 = f152 - f30;
- f154 = f30 + f152;
- f155 = f146 + f150;
- f156 = MUL_C(COEF_CONST(1.3065629648763766), f146);
- f157 = MUL_C(COEF_CONST((-0.9238795325112866)), f155);
- f158 = MUL_C(COEF_CONST((-0.5411961001461967)), f150);
- f159 = f156 + f157;
- f160 = f157 - f158;
- f161 = f154 + f160;
- f162 = f160 - f154;
- f163 = f153 + f159;
- f164 = f153 - f159;
- f165 = f147 + f145;
- f166 = f149 + f147;
- f167 = f151 + f149;
- f168 = MUL_C(COEF_CONST(0.7071067811865476), f166);
- f169 = f168 - f145;
- f170 = f145 + f168;
- f171 = f165 + f167;
- f172 = MUL_C(COEF_CONST(1.3065629648763766), f165);
- f173 = MUL_C(COEF_CONST((-0.9238795325112866)), f171);
- f174 = MUL_C(COEF_CONST((-0.5411961001461967)), f167);
- f175 = f172 + f173;
- f176 = f173 - f174;
- f177 = f170 + f176;
- f178 = f176 - f170;
- f179 = f169 + f175;
- f180 = f169 - f175;
- f181 = MUL_C(COEF_CONST(0.5097955791041592), f178);
- f182 = MUL_C(COEF_CONST(0.6013448869350453), f180);
- f183 = MUL_C(COEF_CONST(0.8999762231364156), f179);
- f184 = MUL_C(COEF_CONST(2.5629154477415055), f177);
- f185 = f162 - f181;
- f186 = f162 + f181;
- f187 = f164 - f182;
- f188 = f164 + f182;
- f189 = f163 - f183;
- f190 = f163 + f183;
- f191 = f184 - f161;
- f192 = f161 + f184;
- f193 = MUL_C(COEF_CONST(0.5024192861881557), f186);
- f194 = MUL_C(COEF_CONST(0.5224986149396889), f188);
- f195 = MUL_C(COEF_CONST(0.5669440348163577), f190);
- f196 = MUL_C(COEF_CONST(0.6468217833599901), f192);
- f197 = MUL_C(COEF_CONST(0.7881546234512502), f191);
- f198 = MUL_C(COEF_CONST(1.0606776859903471), f189);
- f199 = MUL_C(COEF_CONST(1.7224470982383342), f187);
- f200 = MUL_C(COEF_CONST(5.1011486186891553), f185);
- f201 = MUL_C(COEF_CONST(0.7071067811865476), f16);
- f202 = f201 - t2[62];
- f203 = t2[62] + f201;
- f204 = f24 + f8;
- f205 = MUL_C(COEF_CONST(1.3065629648763766), f24);
- f206 = MUL_C(COEF_CONST((-0.9238795325112866)), f204);
- f207 = MUL_C(COEF_CONST((-0.5411961001461967)), f8);
- f208 = f205 + f206;
- f209 = f206 - f207;
- f210 = f203 + f209;
- f211 = f209 - f203;
- f212 = f202 + f208;
- f213 = f202 - f208;
- f214 = f20 + f28;
- f215 = f12 + f20;
- f216 = f4 + f12;
- f217 = MUL_C(COEF_CONST(0.7071067811865476), f215);
- f218 = f217 - f28;
- f219 = f28 + f217;
- f220 = f214 + f216;
- f221 = MUL_C(COEF_CONST(1.3065629648763766), f214);
- f222 = MUL_C(COEF_CONST((-0.9238795325112866)), f220);
- f223 = MUL_C(COEF_CONST((-0.5411961001461967)), f216);
- f224 = f221 + f222;
- f225 = f222 - f223;
- f226 = f219 + f225;
- f227 = f225 - f219;
- f228 = f218 + f224;
- f229 = f218 - f224;
- f230 = MUL_C(COEF_CONST(0.5097955791041592), f227);
- f231 = MUL_C(COEF_CONST(0.6013448869350453), f229);
- f232 = MUL_C(COEF_CONST(0.8999762231364156), f228);
- f233 = MUL_C(COEF_CONST(2.5629154477415055), f226);
- f234 = f211 - f230;
- f235 = f211 + f230;
- f236 = f213 - f231;
- f237 = f213 + f231;
- f238 = f212 - f232;
- f239 = f212 + f232;
- f240 = f233 - f210;
- f241 = f210 + f233;
- f242 = f193 - f235;
- f243 = f193 + f235;
- f244 = f237 - f194;
- f245 = f194 + f237;
- f246 = f195 - f239;
- f247 = f195 + f239;
- f248 = f196 - f241;
- f249 = f196 + f241;
- f250 = f197 - f240;
- f251 = f197 + f240;
- f252 = f238 - f198;
- f253 = f198 + f238;
- f254 = f199 - f236;
- f255 = f199 + f236;
- f256 = f234 - f200;
- f257 = f200 + f234;
- f258 = f243 + f130;
- f259 = MUL_C(COEF_CONST((-0.9751575901732920)), f243);
- f260 = MUL_C(COEF_CONST(0.9996988186962043), f258);
- f261 = MUL_C(COEF_CONST(1.0242400472191164), f130);
- y[62] = f259 + f260;
- y[0] = f261 - f260;
- f264 = f132 - f245;
- f265 = MUL_C(COEF_CONST((-0.9237258930790228)), f245);
- f266 = MUL_C(COEF_CONST(0.9972904566786902), f264);
- f267 = MUL_C(COEF_CONST(1.0708550202783576), f132);
- y[60] = f266 - f265;
- y[2] = f267 - f266;
- f270 = f247 + f134;
- f271 = MUL_C(COEF_CONST((-0.8700688593994936)), f247);
- f272 = MUL_C(COEF_CONST(0.9924795345987100), f270);
- f273 = MUL_C(COEF_CONST(1.1148902097979263), f134);
- y[58] = f271 + f272;
- y[4] = f273 - f272;
- f276 = f249 + f136;
- f277 = MUL_C(COEF_CONST((-0.8143157536286398)), f249);
- f278 = MUL_C(COEF_CONST(0.9852776423889412), f276);
- f279 = MUL_C(COEF_CONST(1.1562395311492426), f136);
- y[56] = f277 + f278;
- y[6] = f279 - f278;
- f282 = f251 + f138;
- f283 = MUL_C(COEF_CONST((-0.7566008898816587)), f251);
- f284 = MUL_C(COEF_CONST(0.9757021300385286), f282);
- f285 = MUL_C(COEF_CONST(1.1948033701953984), f138);
- y[54] = f283 + f284;
- y[8] = f285 - f284;
- f288 = f140 - f253;
- f289 = MUL_C(COEF_CONST((-0.6970633083205414)), f253);
- f290 = MUL_C(COEF_CONST(0.9637760657954398), f288);
- f291 = MUL_C(COEF_CONST(1.2304888232703384), f140);
- y[52] = f290 - f289;
- y[10] = f291 - f290;
- f294 = f255 + f142;
- f295 = MUL_C(COEF_CONST((-0.6358464401941451)), f255);
- f296 = MUL_C(COEF_CONST(0.9495281805930367), f294);
- f297 = MUL_C(COEF_CONST(1.2632099209919283), f142);
- y[50] = f295 + f296;
- y[12] = f297 - f296;
- f300 = f144 - f257;
- f301 = MUL_C(COEF_CONST((-0.5730977622997506)), f257);
- f302 = MUL_C(COEF_CONST(0.9329927988347389), f300);
- f303 = MUL_C(COEF_CONST(1.2928878353697271), f144);
- y[48] = f302 - f301;
- y[14] = f303 - f302;
- f306 = f256 + f143;
- f307 = MUL_C(COEF_CONST((-0.5089684416985408)), f256);
- f308 = MUL_C(COEF_CONST(0.9142097557035307), f306);
- f309 = MUL_C(COEF_CONST(1.3194510697085207), f143);
- y[46] = f307 + f308;
- y[16] = f309 - f308;
- f312 = f254 + f141;
- f313 = MUL_C(COEF_CONST((-0.4436129715409087)), f254);
- f314 = MUL_C(COEF_CONST(0.8932243011955153), f312);
- f315 = MUL_C(COEF_CONST(1.3428356308501219), f141);
- y[44] = f313 + f314;
- y[18] = f315 - f314;
- f318 = f252 + f139;
- f319 = MUL_C(COEF_CONST((-0.3771887988789273)), f252);
- f320 = MUL_C(COEF_CONST(0.8700869911087114), f318);
- f321 = MUL_C(COEF_CONST(1.3629851833384954), f139);
- y[42] = f319 + f320;
- y[20] = f321 - f320;
- f324 = f250 + f137;
- f325 = MUL_C(COEF_CONST((-0.3098559453626097)), f250);
- f326 = MUL_C(COEF_CONST(0.8448535652497070), f324);
- f327 = MUL_C(COEF_CONST(1.3798511851368043), f137);
- y[40] = f325 + f326;
- y[22] = f327 - f326;
- f330 = f248 + f135;
- f331 = MUL_C(COEF_CONST((-0.2417766217337384)), f248);
- f332 = MUL_C(COEF_CONST(0.8175848131515837), f330);
- f333 = MUL_C(COEF_CONST(1.3933930045694289), f135);
- y[38] = f331 + f332;
- y[24] = f333 - f332;
- f336 = f246 + f133;
- f337 = MUL_C(COEF_CONST((-0.1731148370459794)), f246);
- f338 = MUL_C(COEF_CONST(0.7883464276266062), f336);
- f339 = MUL_C(COEF_CONST(1.4035780182072330), f133);
- y[36] = f337 + f338;
- y[26] = f339 - f338;
- f342 = f244 + f131;
- f343 = MUL_C(COEF_CONST((-0.1040360035527077)), f244);
- f344 = MUL_C(COEF_CONST(0.7572088465064845), f342);
- f345 = MUL_C(COEF_CONST(1.4103816894602612), f131);
- y[34] = f343 + f344;
- y[28] = f345 - f344;
- f348 = f242 + f129;
- f349 = MUL_C(COEF_CONST((-0.0347065382144000)), f242);
- f350 = MUL_C(COEF_CONST(0.7242470829514669), f348);
- f351 = MUL_C(COEF_CONST(1.4137876276885337), f129);
- y[32] = f349 + f350;
- y[30] = f351 - f350;
- f354 = t2[1] - t2[63];
- f355 = t2[1] + t2[63];
- f356 = t2[3] - t2[61];
- f357 = t2[3] + t2[61];
- f358 = t2[5] - t2[59];
- f359 = t2[5] + t2[59];
- f360 = t2[7] - t2[57];
- f361 = t2[7] + t2[57];
- f362 = t2[9] - t2[55];
- f363 = t2[9] + t2[55];
- f364 = t2[11] - t2[53];
- f365 = t2[11] + t2[53];
- f366 = t2[13] - t2[51];
- f367 = t2[13] + t2[51];
- f368 = t2[15] - t2[49];
- f369 = t2[15] + t2[49];
- f370 = t2[17] - t2[47];
- f371 = t2[17] + t2[47];
- f372 = t2[19] - t2[45];
- f373 = t2[19] + t2[45];
- f374 = t2[21] - t2[43];
- f375 = t2[21] + t2[43];
- f376 = t2[23] - t2[41];
- f377 = t2[23] + t2[41];
- f378 = t2[25] - t2[39];
- f379 = t2[25] + t2[39];
- f380 = t2[27] - t2[37];
- f381 = t2[27] + t2[37];
- f382 = t2[29] - t2[35];
- f383 = t2[29] + t2[35];
- f384 = t2[31] - t2[33];
- f385 = t2[31] + t2[33];
- f386 = f369 + f371;
- f387 = f371 - f369;
- f388 = MUL_C(COEF_CONST(0.7071067811865476), f387);
- f389 = MUL_C(COEF_CONST(0.7071067811865476), f386);
- f390 = f363 + f377;
- f391 = f363 - f377;
- f392 = MUL_C(COEF_CONST(0.7071067811865476), f391);
- f393 = MUL_C(COEF_CONST(0.7071067811865476), f390);
- f394 = f367 + f373;
- f395 = f367 - f373;
- f396 = MUL_C(COEF_CONST(0.7071067811865476), f395);
- f397 = MUL_C(COEF_CONST(0.7071067811865476), f394);
- f398 = f365 + f375;
- f399 = f375 - f365;
- f400 = MUL_C(COEF_CONST(0.7071067811865476), f399);
- f401 = MUL_C(COEF_CONST(0.7071067811865476), f398);
- f402 = f355 - f388;
- f403 = f355 + f388;
- f404 = f389 - f385;
- f405 = f385 + f389;
- f406 = f361 + f392;
- f407 = f392 - f361;
- f408 = f379 - f393;
- f409 = f379 + f393;
- f410 = f357 + f396;
- f411 = f396 - f357;
- f412 = f383 - f397;
- f413 = f383 + f397;
- f414 = f359 - f400;
- f415 = f359 + f400;
- f416 = f401 - f381;
- f417 = f381 + f401;
- f418 = f409 + f407;
- f419 = MUL_C(COEF_CONST((-0.5411961001461969)), f409);
- f420 = MUL_C(COEF_CONST(0.9238795325112867), f418);
- f421 = MUL_C(COEF_CONST(1.3065629648763766), f407);
- f422 = f419 + f420;
- f423 = f421 - f420;
- f424 = f408 - f406;
- f425 = MUL_C(COEF_CONST(1.3065629648763770), f408);
- f426 = MUL_C(COEF_CONST((-0.3826834323650904)), f424);
- f427 = MUL_C(COEF_CONST(0.5411961001461961), f406);
- f428 = f425 + f426;
- f429 = f426 + f427;
- f430 = f415 - f417;
- f431 = MUL_C(COEF_CONST((-0.5411961001461969)), f417);
- f432 = MUL_C(COEF_CONST(0.9238795325112867), f430);
- f433 = MUL_C(COEF_CONST(1.3065629648763766), f415);
- f434 = f432 - f431;
- f435 = f433 - f432;
- f436 = f416 + f414;
- f437 = MUL_C(COEF_CONST(1.3065629648763770), f416);
- f438 = MUL_C(COEF_CONST((-0.3826834323650904)), f436);
- f439 = MUL_C(COEF_CONST(0.5411961001461961), f414);
- f440 = f437 + f438;
- f441 = f439 - f438;
- f442 = f403 - f422;
- f443 = f403 + f422;
- f444 = f405 + f423;
- f445 = f423 - f405;
- f446 = f402 - f428;
- f447 = f402 + f428;
- f448 = f404 + f429;
- f449 = f404 - f429;
- f450 = f411 - f434;
- f451 = f411 + f434;
- f452 = f413 - f435;
- f453 = f413 + f435;
- f454 = f410 + f440;
- f455 = f440 - f410;
- f456 = f412 - f441;
- f457 = f412 + f441;
- f458 = f453 + f451;
- f459 = MUL_C(COEF_CONST((-0.7856949583871021)), f453);
- f460 = MUL_C(COEF_CONST(0.9807852804032304), f458);
- f461 = MUL_C(COEF_CONST(1.1758756024193588), f451);
- f462 = f459 + f460;
- f463 = f461 - f460;
- f464 = f457 + f455;
- f465 = MUL_C(COEF_CONST(0.2758993792829431), f457);
- f466 = MUL_C(COEF_CONST(0.5555702330196022), f464);
- f467 = MUL_C(COEF_CONST(1.3870398453221475), f455);
- f468 = f465 + f466;
- f469 = f467 - f466;
- f470 = f452 + f450;
- f471 = MUL_C(COEF_CONST(1.1758756024193591), f452);
- f472 = MUL_C(COEF_CONST((-0.1950903220161287)), f470);
- f473 = MUL_C(COEF_CONST(0.7856949583871016), f450);
- f474 = f471 + f472;
- f475 = f473 - f472;
- f476 = f456 - f454;
- f477 = MUL_C(COEF_CONST(1.3870398453221473), f456);
- f478 = MUL_C(COEF_CONST((-0.8314696123025455)), f476);
- f479 = MUL_C(COEF_CONST((-0.2758993792829436)), f454);
- f480 = f477 + f478;
- f481 = f478 + f479;
- f482 = f443 - f462;
- f483 = f443 + f462;
- f484 = f445 - f463;
- f485 = f445 + f463;
- f486 = f447 - f468;
- f487 = f447 + f468;
- f488 = f449 - f469;
- f489 = f449 + f469;
- f490 = f442 - f474;
- f491 = f442 + f474;
- f492 = f444 + f475;
- f493 = f475 - f444;
- f494 = f446 - f480;
- f495 = f446 + f480;
- f496 = f448 + f481;
- f497 = f448 - f481;
- f498 = f485 + f483;
- f499 = MUL_C(COEF_CONST((-0.9497277818777543)), f485);
- f500 = MUL_C(COEF_CONST(0.9987954562051724), f498);
- f501 = MUL_C(COEF_CONST(1.0478631305325905), f483);
- y[61] = f499 + f500;
- y[1] = f501 - f500;
- f504 = f489 + f487;
- f505 = MUL_C(COEF_CONST((-0.7270510732912801)), f489);
- f506 = MUL_C(COEF_CONST(0.9700312531945440), f504);
- f507 = MUL_C(COEF_CONST(1.2130114330978079), f487);
- y[53] = f505 + f506;
- y[9] = f507 - f506;
- f510 = f493 + f491;
- f511 = MUL_C(COEF_CONST((-0.4764341996931611)), f493);
- f512 = MUL_C(COEF_CONST(0.9039892931234433), f510);
- f513 = MUL_C(COEF_CONST(1.3315443865537255), f491);
- y[45] = f511 + f512;
- y[17] = f513 - f512;
- f516 = f497 + f495;
- f517 = MUL_C(COEF_CONST((-0.2075082269882114)), f497);
- f518 = MUL_C(COEF_CONST(0.8032075314806448), f516);
- f519 = MUL_C(COEF_CONST(1.3989068359730783), f495);
- y[37] = f517 + f518;
- y[25] = f519 - f518;
- f522 = f484 + f482;
- f523 = MUL_C(COEF_CONST(0.0693921705079408), f484);
- f524 = MUL_C(COEF_CONST(0.6715589548470183), f522);
- f525 = MUL_C(COEF_CONST(1.4125100802019774), f482);
- y[29] = f523 + f524;
- y[33] = f525 - f524;
- f528 = f488 + f486;
- f529 = MUL_C(COEF_CONST(0.3436258658070505), f488);
- f530 = MUL_C(COEF_CONST(0.5141027441932217), f528);
- f531 = MUL_C(COEF_CONST(1.3718313541934939), f486);
- y[21] = f529 + f530;
- y[41] = f531 - f530;
- f534 = f490 - f492;
- f535 = MUL_C(COEF_CONST(0.6046542117908007), f492);
- f536 = MUL_C(COEF_CONST(0.3368898533922201), f534);
- f537 = MUL_C(COEF_CONST(1.2784339185752409), f490);
- y[13] = f536 - f535;
- y[49] = f537 - f536;
- f540 = f496 + f494;
- f541 = MUL_C(COEF_CONST(0.8424460355094192), f496);
- f542 = MUL_C(COEF_CONST(0.1467304744553618), f540);
- f543 = MUL_C(COEF_CONST(1.1359069844201428), f494);
- y[5] = f541 + f542;
- y[57] = f543 - f542;
- f546 = f354 + f384;
- f547 = f354 - f384;
- f548 = f356 + f382;
- f549 = f382 - f356;
- f550 = f358 + f380;
- f551 = f358 - f380;
- f552 = f360 + f378;
- f553 = f378 - f360;
- f554 = f362 + f376;
- f555 = f362 - f376;
- f556 = f364 + f374;
- f557 = f374 - f364;
- f558 = f366 + f372;
- f559 = f366 - f372;
- f560 = f368 + f370;
- f561 = f370 - f368;
- f562 = f547 - f561;
- f563 = f547 + f561;
- f564 = f549 - f559;
- f565 = f549 + f559;
- f566 = f551 - f557;
- f567 = f551 + f557;
- f568 = f553 - f555;
- f569 = f553 + f555;
- f570 = f563 - f569;
- f571 = f563 + f569;
- f572 = f565 - f567;
- f573 = f565 + f567;
- f574 = f571 - f573;
- y[63] = f571 + f573;
- y[31] = MUL_C(COEF_CONST(0.7071067811865476), f574);
- f577 = f570 + f572;
- f578 = MUL_C(COEF_CONST(1.3065629648763766), f570);
- f579 = MUL_C(COEF_CONST((-0.9238795325112866)), f577);
- f580 = MUL_C(COEF_CONST((-0.5411961001461967)), f572);
- y[15] = f578 + f579;
- y[47] = f580 - f579;
- f583 = f564 + f562;
- f584 = f566 + f564;
- f585 = f568 + f566;
- f586 = MUL_C(COEF_CONST(0.7071067811865476), f584);
- f587 = f562 - f586;
- f588 = f562 + f586;
- f589 = f583 + f585;
- f590 = MUL_C(COEF_CONST(1.3065629648763766), f583);
- f591 = MUL_C(COEF_CONST((-0.9238795325112866)), f589);
- f592 = MUL_C(COEF_CONST((-0.5411961001461967)), f585);
- f593 = f590 + f591;
- f594 = f592 - f591;
- f595 = f588 - f594;
- f596 = f588 + f594;
- f597 = f587 - f593;
- f598 = f587 + f593;
- y[55] = MUL_C(COEF_CONST(0.5097955791041592), f596);
- y[39] = MUL_C(COEF_CONST(0.6013448869350453), f598);
- y[23] = MUL_C(COEF_CONST(0.8999762231364156), f597);
- y[7] = MUL_C(COEF_CONST(2.5629154477415055), f595);
- f603 = MUL_C(COEF_CONST(0.5024192861881557), f546);
- f604 = MUL_C(COEF_CONST(0.5224986149396889), f548);
- f605 = MUL_C(COEF_CONST(0.5669440348163577), f550);
- f606 = MUL_C(COEF_CONST(0.6468217833599901), f552);
- f607 = MUL_C(COEF_CONST(0.7881546234512502), f554);
- f608 = MUL_C(COEF_CONST(1.0606776859903471), f556);
- f609 = MUL_C(COEF_CONST(1.7224470982383342), f558);
- f610 = MUL_C(COEF_CONST(5.1011486186891553), f560);
- f611 = f603 + f610;
- f612 = f603 - f610;
- f613 = f604 + f609;
- f614 = f609 - f604;
- f615 = f605 + f608;
- f616 = f605 - f608;
- f617 = f606 + f607;
- f618 = f607 - f606;
- f619 = f612 - f618;
- f620 = f612 + f618;
- f621 = f614 - f616;
- f622 = f614 + f616;
- f623 = f620 - f622;
- f624 = f620 + f622;
- f625 = MUL_C(COEF_CONST(0.7071067811865476), f623);
- f626 = f619 + f621;
- f627 = MUL_C(COEF_CONST(1.3065629648763766), f619);
- f628 = MUL_C(COEF_CONST((-0.9238795325112866)), f626);
- f629 = MUL_C(COEF_CONST((-0.5411961001461967)), f621);
- f630 = f627 + f628;
- f631 = f629 - f628;
- f632 = f611 - f613;
- f633 = f615 - f613;
- f634 = f615 - f617;
- f635 = MUL_C(COEF_CONST(0.7071067811865476), f633);
- f636 = f611 - f635;
- f637 = f611 + f635;
- f638 = f632 + f634;
- f639 = MUL_C(COEF_CONST(1.3065629648763766), f632);
- f640 = MUL_C(COEF_CONST((-0.9238795325112866)), f638);
- f641 = MUL_C(COEF_CONST((-0.5411961001461967)), f634);
- f642 = f639 + f640;
- f643 = f641 - f640;
- f644 = f637 - f643;
- f645 = f637 + f643;
- f646 = f636 - f642;
- f647 = f636 + f642;
- f648 = MUL_C(COEF_CONST(0.5097955791041592), f645);
- f649 = MUL_C(COEF_CONST(0.6013448869350453), f647);
- f650 = MUL_C(COEF_CONST(0.8999762231364156), f646);
- y[3] = MUL_C(COEF_CONST(2.5629154477415055), f644);
- y[59] = f624 + f648;
- y[51] = f648 + f631;
- y[43] = f631 + f649;
- y[35] = f649 + f625;
- y[27] = f625 + f650;
- y[19] = f650 + f630;
- y[11] = f630 + y[3];
+
+ // Stage 3 of 32 point FFT decimation in frequency
+ // 2*4*2=16 multiplications
+ // 4*4*2+6*4*2=10*8=80 additions
+ for (i = 0; i < n; i += 8)
+ {
+ i2 = i+4;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // out[i1] = point1 + point2
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // out[i2] = point1 - point2
+ Real[i2] = point1_real - point2_real;
+ Imag[i2] = point1_imag - point2_imag;
+ }
+ w_real = w_array_real[4]; // = sqrt(2)/2
+ // w_imag = -w_real; // = w_array_imag[4]; // = -sqrt(2)/2
+ for (i = 1; i < n; i += 8)
+ {
+ i2 = i+4;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // temp1 = x[i] - x[i2]
+ point1_real -= point2_real;
+ point1_imag -= point2_imag;
+
+ // x[i1] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = (x[i] - x[i2]) * w
+ Real[i2] = MUL_F(point1_real+point1_imag, w_real);
+ Imag[i2] = MUL_F(point1_imag-point1_real, w_real);
+ }
+ for (i = 2; i < n; i += 8)
+ {
+ i2 = i+4;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // x[i] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = (x[i] - x[i2]) * (-i)
+ Real[i2] = point1_imag - point2_imag;
+ Imag[i2] = point2_real - point1_real;
+ }
+ w_real = w_array_real[12]; // = -sqrt(2)/2
+ // w_imag = w_real; // = w_array_imag[12]; // = -sqrt(2)/2
+ for (i = 3; i < n; i += 8)
+ {
+ i2 = i+4;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // temp1 = x[i] - x[i2]
+ point1_real -= point2_real;
+ point1_imag -= point2_imag;
+
+ // x[i1] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = (x[i] - x[i2]) * w
+ Real[i2] = MUL_F(point1_real-point1_imag, w_real);
+ Imag[i2] = MUL_F(point1_real+point1_imag, w_real);
+ }
+
+
+ // Stage 4 of 32 point FFT decimation in frequency (no multiplications)
+ // 16*4=64 additions
+ for (i = 0; i < n; i += 4)
+ {
+ i2 = i+2;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // x[i1] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = x[i] - x[i2]
+ Real[i2] = point1_real - point2_real;
+ Imag[i2] = point1_imag - point2_imag;
+ }
+ for (i = 1; i < n; i += 4)
+ {
+ i2 = i+2;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // x[i] = x[i] + x[i2]
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // x[i2] = (x[i] - x[i2]) * (-i)
+ Real[i2] = point1_imag - point2_imag;
+ Imag[i2] = point2_real - point1_real;
+ }
+
+ // Stage 5 of 32 point FFT decimation in frequency (no multiplications)
+ // 16*4=64 additions
+ for (i = 0; i < n; i += 2)
+ {
+ i2 = i+1;
+ point1_real = Real[i];
+ point1_imag = Imag[i];
+
+ point2_real = Real[i2];
+ point2_imag = Imag[i2];
+
+ // out[i1] = point1 + point2
+ Real[i] += point2_real;
+ Imag[i] += point2_imag;
+
+ // out[i2] = point1 - point2
+ Real[i2] = point1_real - point2_real;
+ Imag[i2] = point1_imag - point2_imag;
+ }
+
+#ifdef REORDER_IN_FFT
+ FFTReorder(Real, Imag);
+#endif // #ifdef REORDER_IN_FFT
}
+#undef n
+#undef log2n
-#else
+static const real_t dct4_64_tab[] = {
+ COEF_CONST(0.999924719333649), COEF_CONST(0.998118102550507),
+ COEF_CONST(0.993906974792480), COEF_CONST(0.987301409244537),
+ COEF_CONST(0.978317379951477), COEF_CONST(0.966976463794708),
+ COEF_CONST(0.953306019306183), COEF_CONST(0.937339007854462),
+ COEF_CONST(0.919113874435425), COEF_CONST(0.898674488067627),
+ COEF_CONST(0.876070082187653), COEF_CONST(0.851355195045471),
+ COEF_CONST(0.824589252471924), COEF_CONST(0.795836925506592),
+ COEF_CONST(0.765167236328125), COEF_CONST(0.732654273509979),
+ COEF_CONST(0.698376238346100), COEF_CONST(0.662415742874146),
+ COEF_CONST(0.624859452247620), COEF_CONST(0.585797846317291),
+ COEF_CONST(0.545324981212616), COEF_CONST(0.503538429737091),
+ COEF_CONST(0.460538715124130), COEF_CONST(0.416429549455643),
+ COEF_CONST(0.371317148208618), COEF_CONST(0.325310230255127),
+ COEF_CONST(0.278519600629807), COEF_CONST(0.231058135628700),
+ COEF_CONST(0.183039888739586), COEF_CONST(0.134580686688423),
+ COEF_CONST(0.085797272622585), COEF_CONST(0.036807164549828),
+ COEF_CONST(-1.012196302413940), COEF_CONST(-1.059438824653626),
+ COEF_CONST(-1.104129195213318), COEF_CONST(-1.146159529685974),
+ COEF_CONST(-1.185428738594055), COEF_CONST(-1.221842169761658),
+ COEF_CONST(-1.255311965942383), COEF_CONST(-1.285757660865784),
+ COEF_CONST(-1.313105940818787), COEF_CONST(-1.337290763854981),
+ COEF_CONST(-1.358253836631775), COEF_CONST(-1.375944852828980),
+ COEF_CONST(-1.390321016311646), COEF_CONST(-1.401347875595093),
+ COEF_CONST(-1.408998727798462), COEF_CONST(-1.413255214691162),
+ COEF_CONST(-1.414107084274292), COEF_CONST(-1.411552190780640),
+ COEF_CONST(-1.405596733093262), COEF_CONST(-1.396255016326904),
+ COEF_CONST(-1.383549690246582), COEF_CONST(-1.367511272430420),
+ COEF_CONST(-1.348178386688232), COEF_CONST(-1.325597524642944),
+ COEF_CONST(-1.299823284149170), COEF_CONST(-1.270917654037476),
+ COEF_CONST(-1.238950133323669), COEF_CONST(-1.203998088836670),
+ COEF_CONST(-1.166145324707031), COEF_CONST(-1.125483393669128),
+ COEF_CONST(-1.082109928131104), COEF_CONST(-1.036129593849182),
+ COEF_CONST(-0.987653195858002), COEF_CONST(-0.936797380447388),
+ COEF_CONST(-0.883684754371643), COEF_CONST(-0.828443288803101),
+ COEF_CONST(-0.771206021308899), COEF_CONST(-0.712110757827759),
+ COEF_CONST(-0.651300072669983), COEF_CONST(-0.588920354843140),
+ COEF_CONST(-0.525121808052063), COEF_CONST(-0.460058242082596),
+ COEF_CONST(-0.393886327743530), COEF_CONST(-0.326765477657318),
+ COEF_CONST(-0.258857429027557), COEF_CONST(-0.190325915813446),
+ COEF_CONST(-0.121335685253143), COEF_CONST(-0.052053272724152),
+ COEF_CONST(0.017354607582092), COEF_CONST(0.086720645427704),
+ COEF_CONST(0.155877828598022), COEF_CONST(0.224659323692322),
+ COEF_CONST(0.292899727821350), COEF_CONST(0.360434412956238),
+ COEF_CONST(0.427100926637650), COEF_CONST(0.492738455533981),
+ COEF_CONST(0.557188928127289), COEF_CONST(0.620297133922577),
+ COEF_CONST(0.681910991668701), COEF_CONST(0.741881847381592),
+ COEF_CONST(0.800065577030182), COEF_CONST(0.856321990489960),
+ COEF_CONST(0.910515367984772), COEF_CONST(0.962515234947205),
+ COEF_CONST(1.000000000000000), COEF_CONST(0.998795449733734),
+ COEF_CONST(0.995184719562531), COEF_CONST(0.989176511764526),
+ COEF_CONST(0.980785250663757), COEF_CONST(0.970031261444092),
+ COEF_CONST(0.956940352916718), COEF_CONST(0.941544055938721),
+ COEF_CONST(0.923879504203796), COEF_CONST(0.903989315032959),
+ COEF_CONST(0.881921231746674), COEF_CONST(0.857728600502014),
+ COEF_CONST(0.831469595432281), COEF_CONST(0.803207516670227),
+ COEF_CONST(0.773010432720184), COEF_CONST(0.740951120853424),
+ COEF_CONST(0.707106769084930), COEF_CONST(0.671558916568756),
+ COEF_CONST(0.634393274784088), COEF_CONST(0.595699310302734),
+ COEF_CONST(0.555570185184479), COEF_CONST(0.514102697372437),
+ COEF_CONST(0.471396654844284), COEF_CONST(0.427555114030838),
+ COEF_CONST(0.382683426141739), COEF_CONST(0.336889833211899),
+ COEF_CONST(0.290284633636475), COEF_CONST(0.242980122566223),
+ COEF_CONST(0.195090234279633), COEF_CONST(0.146730497479439),
+ COEF_CONST(0.098017133772373), COEF_CONST(0.049067649990320),
+ COEF_CONST(-1.000000000000000), COEF_CONST(-1.047863125801086),
+ COEF_CONST(-1.093201875686646), COEF_CONST(-1.135906934738159),
+ COEF_CONST(-1.175875544548035), COEF_CONST(-1.213011503219605),
+ COEF_CONST(-1.247225046157837), COEF_CONST(-1.278433918952942),
+ COEF_CONST(-1.306562900543213), COEF_CONST(-1.331544399261475),
+ COEF_CONST(-1.353317975997925), COEF_CONST(-1.371831417083740),
+ COEF_CONST(-1.387039899826050), COEF_CONST(-1.398906826972961),
+ COEF_CONST(-1.407403707504273), COEF_CONST(-1.412510156631470),
+ COEF_CONST(0), COEF_CONST(-1.412510156631470),
+ COEF_CONST(-1.407403707504273), COEF_CONST(-1.398906826972961),
+ COEF_CONST(-1.387039899826050), COEF_CONST(-1.371831417083740),
+ COEF_CONST(-1.353317975997925), COEF_CONST(-1.331544399261475),
+ COEF_CONST(-1.306562900543213), COEF_CONST(-1.278433918952942),
+ COEF_CONST(-1.247225046157837), COEF_CONST(-1.213011384010315),
+ COEF_CONST(-1.175875544548035), COEF_CONST(-1.135907053947449),
+ COEF_CONST(-1.093201875686646), COEF_CONST(-1.047863125801086),
+ COEF_CONST(-1.000000000000000), COEF_CONST(-0.949727773666382),
+ COEF_CONST(-0.897167563438416), COEF_CONST(-0.842446029186249),
+ COEF_CONST(-0.785694956779480), COEF_CONST(-0.727051079273224),
+ COEF_CONST(-0.666655659675598), COEF_CONST(-0.604654192924500),
+ COEF_CONST(-0.541196048259735), COEF_CONST(-0.476434230804443),
+ COEF_CONST(-0.410524487495422), COEF_CONST(-0.343625843524933),
+ COEF_CONST(-0.275899350643158), COEF_CONST(-0.207508206367493),
+ COEF_CONST(-0.138617098331451), COEF_CONST(-0.069392144680023),
+ COEF_CONST(0), COEF_CONST(0.069392263889313),
+ COEF_CONST(0.138617157936096), COEF_CONST(0.207508206367493),
+ COEF_CONST(0.275899469852448), COEF_CONST(0.343625962734222),
+ COEF_CONST(0.410524636507034), COEF_CONST(0.476434201002121),
+ COEF_CONST(0.541196107864380), COEF_CONST(0.604654192924500),
+ COEF_CONST(0.666655719280243), COEF_CONST(0.727051138877869),
+ COEF_CONST(0.785695075988770), COEF_CONST(0.842446029186249),
+ COEF_CONST(0.897167563438416), COEF_CONST(0.949727773666382)
+};
-void DCT4_64(real_t *y, real_t *x)
+/* size 64 only! */
+void dct4_kernel(real_t * in_real, real_t * in_imag, real_t * out_real, real_t * out_imag)
{
- int16_t i0;
- ALIGN static real_t t2[64];
+ // Tables with bit reverse values for 5 bits, bit reverse of i at i-th position
+ 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 };
+ uint16_t i, i_rev;
+
+ /* Step 2: modulate */
+ // 3*32=96 multiplications
+ // 3*32=96 additions
+ for (i = 0; i < 32; i++)
+ {
+ real_t x_re, x_im, tmp;
+ x_re = in_real[i];
+ x_im = in_imag[i];
+ tmp = MUL_C(x_re + x_im, dct4_64_tab[i]);
+ in_real[i] = MUL_C(x_im, dct4_64_tab[i + 64]) + tmp;
+ in_imag[i] = MUL_C(x_re, dct4_64_tab[i + 32]) + tmp;
+ }
+
+ /* Step 3: FFT, but with output in bit reverse order */
+ fft_dif(in_real, in_imag);
+
+ /* Step 4: modulate + bitreverse reordering */
+ // 3*31+2=95 multiplications
+ // 3*31+2=95 additions
+ for (i = 0; i < 16; i++)
+ {
+ real_t x_re, x_im, tmp;
+ i_rev = bit_rev_tab[i];
+ x_re = in_real[i_rev];
+ x_im = in_imag[i_rev];
- t2[0] = x[0];
- for (i0=0; i0<31; i0++)
+ tmp = MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
+ out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
+ out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
+ }
+ // i = 16, i_rev = 1 = rev(16);
+ out_imag[16] = MUL_C(in_imag[1] - in_real[1], dct4_64_tab[16 + 3*32]);
+ out_real[16] = MUL_C(in_real[1] + in_imag[1], dct4_64_tab[16 + 3*32]);
+ for (i = 17; i < 32; i++)
{
- t2[2*i0+1] = x[2*i0+1] - x[2*i0+2];
- t2[2*i0+2] = x[2*i0+1] + x[2*i0+2];
+ real_t x_re, x_im, tmp;
+ i_rev = bit_rev_tab[i];
+ x_re = in_real[i_rev];
+ x_im = in_imag[i_rev];
+ tmp = MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]);
+ out_real[i] = MUL_C(x_im, dct4_64_tab[i + 5*32]) + tmp;
+ out_imag[i] = MUL_C(x_re, dct4_64_tab[i + 4*32]) + tmp;
}
- t2[63] = x[63];
- DCT4_64_kernel(y, t2);
}
-void DCT4_64_kernel(real_t *y, real_t *t2)
+void DST4_32(real_t *y, real_t *x)
{
- real_t f2, f3, f4, f5, f6, f7, f8;
- real_t f9, f10, f11, f12, f13, f14, f15;
- real_t f16, f17, f18, f19, f20, f21, f22;
- real_t f23, f24, f25, f26, f27, f28, f29;
- real_t f30, f31, f32, f33, f34, f35, f36;
- real_t f37, f38, f39, f40, f41, f42, f43;
- real_t f44, f45, f46, f47, f48, f49, f50;
- real_t f51, f52, f53, f54, f55, f56, f57;
- real_t f58, f59, f60, f61, f62, f63, f64;
- real_t f65, f66, f67, f68, f69, f70, f71;
- real_t f72, f73, f74, f75, f76, f77, f78;
- real_t f79, f80, f81, f82, f83, f84, f85;
- real_t f86, f87, f88, f89, f90, f91, f92;
- real_t f93, f94, f95, f96, f97, f98, f99;
- real_t f100, f101, f102, f103, f104, f105, f106;
- real_t f107, f108, f109, f110, f111, f112, f113;
- real_t f114, f115, f116, f117, f118, f119, f120;
- real_t f121, f122, f123, f124, f125, f126, f127;
- real_t f128, f129, f130, f131, f132, f133, f134;
- real_t f135, f136, f137, f138, f139, f140, f141;
- real_t f142, f143, f144, f145, f146, f147, f148;
- real_t f149, f150, f151, f152, f153, f154, f155;
- real_t f156, f157, f158, f159, f160, f161, f162;
- real_t f163, f164, f165, f166, f167, f168, f169;
- real_t f170, f171, f172, f173, f174, f175, f176;
- real_t f177, f178, f179, f180, f181, f182, f183;
- real_t f184, f185, f186, f187, f188, f189, f190;
- real_t f191, f192, f193, f194, f195, f196, f197;
- real_t f198, f199, f200, f201, f202, f203, f204;
- real_t f205, f206, f207, f208, f209, f210, f211;
- real_t f212, f213, f214, f215, f216, f217, f218;
- real_t f219, f220, f221, f222, f223, f224, f225;
- real_t f226, f227, f228, f229, f230, f231, f232;
- real_t f233, f234, f235, f236, f237, f238, f239;
- real_t f240, f241, f242, f243, f244, f245, f246;
- real_t f247, f248, f249, f250, f251, f252, f253;
- real_t f254, f255, f256, f257, f258, f259, f260;
- real_t f261, f262, f263, f264, f265, f266, f267;
- real_t f268, f269, f270, f271, f272, f273, f274;
- real_t f275, f276, f277, f278, f279, f280, f281;
- real_t f282, f283, f284, f285, f286, f287, f288;
- real_t f289, f290, f291, f292, f293, f294, f295;
- real_t f296, f297, f298, f299, f300, f301, f302;
- real_t f303, f304, f305, f306, f307, f308, f309;
- real_t f310, f311, f312, f313, f314, f315, f316;
- real_t f317, f318, f319, f320, f321, f322, f323;
- real_t f324, f325, f326, f327, f328, f329, f330;
- real_t f331, f332, f333, f334, f335, f336, f337;
- real_t f338, f339, f340, f341, f342, f343, f344;
- real_t f345, f346, f347, f348, f349, f350, f351;
- real_t f352, f353, f354, f355, f356, f357, f358;
- real_t f359, f360, f361, f362, f363, f364, f365;
- real_t f366, f367, f368, f369, f370, f371, f372;
- real_t f373, f374, f375, f376, f377, f378, f379;
- real_t f380, f381, f382, f383, f384, f385, f386;
- real_t f387, f388, f389, f390, f391, f392, f393;
- real_t f394, f395, f396, f397, f398, f399, f400;
- real_t f401, f402, f403, f404, f405, f406, f407;
- real_t f408, f409, f410, f411, f412, f413, f414;
- real_t f415, f416, f417, f418, f419, f420, f421;
- real_t f422, f423, f424, f425, f426, f427, f428;
- real_t f429, f430, f431, f432, f433, f434, f435;
- real_t f436, f437, f438, f439, f440, f441, f442;
- real_t f443, f444, f445, f446, f447, f448, f449;
- real_t f450, f451, f452, f453, f454, f455, f456;
- real_t f457, f458, f459, f460, f461, f462, f463;
- real_t f464, f465, f466, f467, f468, f469, f470;
- real_t f471, f472, f473, f474, f475, f476, f477;
- real_t f478, f479, f480, f481, f482, f483, f484;
- real_t f485, f486, f487, f488, f489, f490, f491;
- real_t f492, f493, f494, f495, f496, f497, f498;
- real_t f499, f500, f501, f502, f503, f504, f505;
- real_t f506, f507, f508, f509, f510, f511, f512;
- real_t f513, f514, f515, f516, f517, f518, f519;
- real_t f520, f521, f522, f523, f524, f525, f526;
- real_t f527, f528, f529, f530, f531, f532, f533;
- real_t f534, f535, f536, f537, f538, f539, f540;
- real_t f541, f542, f543, f544, f545, f546, f547;
- real_t f548, f549, f550, f551, f552, f553, f554;
- real_t f555, f556, f557, f558, f559, f560, f561;
- real_t f562, f563, f564, f565, f566, f567, f568;
- real_t f569, f570, f571, f572, f573, f574, f575;
- real_t f576, f577, f578, f579, f580, f581, f582;
- real_t f583, f584, f585, f586, f587, f588, f589;
- real_t f590, f591, f592, f593, f594, f595, f596;
- real_t f597, f598, f599, f600, f601, f602, f603;
- real_t f604, f605, f606, f607, f608, f609, f610;
- real_t f611, f612, f613, f614, f615, f618, f619;
- real_t f620, f621, f624, f625, f626, f627, f630;
- real_t f631, f632, f633, f636, f637, f638, f639;
- real_t f642, f643, f644, f645, f648, f649, f650;
- real_t f651, f654, f655, f656, f657, f660, f661;
- real_t f662, f663, f666, f667, f668, f669, f672;
- real_t f673, f674, f675, f678, f679, f680, f681;
- real_t f684, f685, f686, f687, f690, f691, f692;
- real_t f693, f696, f697, f698, f699, f702, f703;
- real_t f704, f705, f708, f709, f710, f711, f714;
- real_t f715, f716, f717, f720, f721, f722, f723;
- real_t f726, f727, f728, f729, f732, f733, f734;
- real_t f735, f738, f739, f740, f741, f744, f745;
- real_t f746, f747, f750, f751, f752, f753, f756;
- real_t f757, f758, f759, f762, f763, f764, f765;
- real_t f768, f769, f770, f771, f774, f775, f776;
- real_t f777, f780, f781, f782, f783, f786, f787;
- real_t f788, f789, f792, f793, f794, f795, f798;
- real_t f799, f800, f801;
-
- f2 = 0.7071067811865476 * t2[32];
- f3 = t2[0] - f2;
- f4 = t2[0] + f2;
- f5 = t2[16] + t2[48];
- f6 = 1.3065629648763766 * t2[16];
- f7 = (-0.9238795325112866) * f5;
- f8 = (-0.5411961001461967) * t2[48];
- f9 = f6 + f7;
- f10 = f8 - f7;
- f11 = f4 - f10;
- f12 = f4 + f10;
- f13 = f3 - f9;
- f14 = f3 + f9;
- f15 = t2[8] + t2[56];
- f16 = 1.1758756024193588 * t2[8];
- f17 = (-0.9807852804032304) * f15;
- f18 = (-0.7856949583871021) * t2[56];
- f19 = f16 + f17;
- f20 = f18 - f17;
- f21 = t2[24] + t2[40];
- f22 = 1.3870398453221473 * t2[24];
- f23 = (-0.8314696123025455) * f21;
- f24 = (-0.2758993792829436) * t2[40];
- f25 = f22 + f23;
- f26 = f24 - f23;
- f27 = f20 - f26;
- f28 = f20 + f26;
- f29 = 0.7071067811865476 * f27;
- f30 = f19 - f25;
- f31 = f19 + f25;
- f32 = 0.7071067811865476 * f31;
- f33 = f29 - f32;
- f34 = f29 + f32;
- f35 = f12 - f28;
- f36 = f12 + f28;
- f37 = f14 - f34;
- f38 = f14 + f34;
- f39 = f13 - f33;
- f40 = f13 + f33;
- f41 = f11 - f30;
- f42 = f11 + f30;
- f43 = t2[4] + t2[60];
- f44 = 1.0932018670017569 * t2[4];
- f45 = (-0.9951847266721969) * f43;
- f46 = (-0.8971675863426368) * t2[60];
- f47 = f44 + f45;
- f48 = f46 - f45;
- f49 = t2[12] + t2[52];
- f50 = 1.2472250129866711 * t2[12];
- f51 = (-0.9569403357322089) * f49;
- f52 = (-0.6666556584777469) * t2[52];
- f53 = f50 + f51;
- f54 = f52 - f51;
- f55 = t2[20] + t2[44];
- f56 = 1.3533180011743526 * t2[20];
- f57 = (-0.8819212643483551) * f55;
- f58 = (-0.4105245275223575) * t2[44];
- f59 = f56 + f57;
- f60 = f58 - f57;
- f61 = t2[28] + t2[36];
- f62 = 1.4074037375263826 * t2[28];
- f63 = (-0.7730104533627369) * f61;
- f64 = (-0.1386171691990913) * t2[36];
- f65 = f62 + f63;
- f66 = f64 - f63;
- f67 = f48 - f66;
- f68 = f48 + f66;
- f69 = f54 - f60;
- f70 = f54 + f60;
- f71 = f68 - f70;
- f72 = f68 + f70;
- f73 = 0.7071067811865476 * f71;
- f74 = f67 + f69;
- f75 = 1.3065629648763766 * f67;
- f76 = (-0.9238795325112866) * f74;
- f77 = (-0.5411961001461967) * f69;
- f78 = f75 + f76;
- f79 = f77 - f76;
- f80 = f47 - f65;
- f81 = f47 + f65;
- f82 = f53 - f59;
- f83 = f53 + f59;
- f84 = f81 + f83;
- f85 = 1.3065629648763770 * f81;
- f86 = (-0.3826834323650904) * f84;
- f87 = 0.5411961001461961 * f83;
- f88 = f85 + f86;
- f89 = f87 - f86;
- f90 = f80 - f82;
- f91 = f80 + f82;
- f92 = 0.7071067811865476 * f91;
- f93 = f79 - f89;
- f94 = f79 + f89;
- f95 = f73 - f92;
- f96 = f73 + f92;
- f97 = f78 - f88;
- f98 = f78 + f88;
- f99 = f36 - f72;
- f100 = f36 + f72;
- f101 = f38 - f94;
- f102 = f38 + f94;
- f103 = f40 - f93;
- f104 = f40 + f93;
- f105 = f42 - f96;
- f106 = f42 + f96;
- f107 = f41 - f95;
- f108 = f41 + f95;
- f109 = f39 - f98;
- f110 = f39 + f98;
- f111 = f37 - f97;
- f112 = f37 + f97;
- f113 = f35 - f90;
- f114 = f35 + f90;
- f115 = t2[2] + t2[62];
- f116 = 1.0478631305325901 * t2[2];
- f117 = (-0.9987954562051724) * f115;
- f118 = (-0.9497277818777548) * t2[62];
- f119 = f116 + f117;
- f120 = f118 - f117;
- f121 = t2[10] + t2[54];
- f122 = 1.2130114330978077 * t2[10];
- f123 = (-0.9700312531945440) * f121;
- f124 = (-0.7270510732912803) * t2[54];
- f125 = f122 + f123;
+ real_t f0, f1, f2, f3, f4, f5, f6, f7, f8, f9;
+ real_t f10, f11, f12, f13, f14, f15, f16, f17, f18, f19;
+ real_t f20, f21, f22, f23, f24, f25, f26, f27, f28, f29;
+ real_t f30, f31, f32, f33, f34, f35, f36, f37, f38, f39;
+ real_t f40, f41, f42, f43, f44, f45, f46, f47, f48, f49;
+ real_t f50, f51, f52, f53, f54, f55, f56, f57, f58, f59;
+ real_t f60, f61, f62, f63, f64, f65, f66, f67, f68, f69;
+ real_t f70, f71, f72, f73, f74, f75, f76, f77, f78, f79;
+ real_t f80, f81, f82, f83, f84, f85, f86, f87, f88, f89;
+ real_t f90, f91, f92, f93, f94, f95, f96, f97, f98, f99;
+ real_t f100, f101, f102, f103, f104, f105, f106, f107, f108, f109;
+ real_t f110, f111, f112, f113, f114, f115, f116, f117, f118, f119;
+ real_t f120, f121, f122, f123, f124, f125, f126, f127, f128, f129;
+ real_t f130, f131, f132, f133, f134, f135, f136, f137, f138, f139;
+ real_t f140, f141, f142, f143, f144, f145, f146, f147, f148, f149;
+ real_t f150, f151, f152, f153, f154, f155, f156, f157, f158, f159;
+ real_t f160, f161, f162, f163, f164, f165, f166, f167, f168, f169;
+ real_t f170, f171, f172, f173, f174, f175, f176, f177, f178, f179;
+ real_t f180, f181, f182, f183, f184, f185, f186, f187, f188, f189;
+ real_t f190, f191, f192, f193, f194, f195, f196, f197, f198, f199;
+ real_t f200, f201, f202, f203, f204, f205, f206, f207, f208, f209;
+ real_t f210, f211, f212, f213, f214, f215, f216, f217, f218, f219;
+ real_t f220, f221, f222, f223, f224, f225, f226, f227, f228, f229;
+ real_t f230, f231, f232, f233, f234, f235, f236, f237, f238, f239;
+ real_t f240, f241, f242, f243, f244, f245, f246, f247, f248, f249;
+ real_t f250, f251, f252, f253, f254, f255, f256, f257, f258, f259;
+ real_t f260, f261, f262, f263, f264, f265, f266, f267, f268, f269;
+ real_t f270, f271, f272, f273, f274, f275, f276, f277, f278, f279;
+ real_t f280, f281, f282, f283, f284, f285, f286, f287, f288, f289;
+ real_t f290, f291, f292, f293, f294, f295, f296, f297, f298, f299;
+ real_t f300, f301, f302, f303, f304, f305, f306, f307, f308, f309;
+ real_t f310, f311, f312, f313, f314, f315, f316, f317, f318, f319;
+ real_t f320, f321, f322, f323, f324, f325, f326, f327, f328, f329;
+ real_t f330, f331, f332, f333, f334, f335;
+
+ f0 = x[0] - x[1];
+ f1 = x[2] - x[1];
+ f2 = x[2] - x[3];
+ f3 = x[4] - x[3];
+ f4 = x[4] - x[5];
+ f5 = x[6] - x[5];
+ f6 = x[6] - x[7];
+ f7 = x[8] - x[7];
+ f8 = x[8] - x[9];
+ f9 = x[10] - x[9];
+ f10 = x[10] - x[11];
+ f11 = x[12] - x[11];
+ f12 = x[12] - x[13];
+ f13 = x[14] - x[13];
+ f14 = x[14] - x[15];
+ f15 = x[16] - x[15];
+ f16 = x[16] - x[17];
+ f17 = x[18] - x[17];
+ f18 = x[18] - x[19];
+ f19 = x[20] - x[19];
+ f20 = x[20] - x[21];
+ f21 = x[22] - x[21];
+ f22 = x[22] - x[23];
+ f23 = x[24] - x[23];
+ f24 = x[24] - x[25];
+ f25 = x[26] - x[25];
+ f26 = x[26] - x[27];
+ f27 = x[28] - x[27];
+ f28 = x[28] - x[29];
+ f29 = x[30] - x[29];
+ f30 = x[30] - x[31];
+ f31 = MUL_F(FRAC_CONST(0.7071067811865476), f15);
+ f32 = x[0] - f31;
+ f33 = x[0] + f31;
+ f34 = f7 + f23;
+ f35 = MUL_C(COEF_CONST(1.3065629648763766), f7);
+ f36 = MUL_F(FRAC_CONST(-0.9238795325112866), f34);
+ f37 = MUL_F(FRAC_CONST(-0.5411961001461967), f23);
+ f38 = f35 + f36;
+ f39 = f37 - f36;
+ f40 = f33 - f39;
+ f41 = f33 + f39;
+ f42 = f32 - f38;
+ f43 = f32 + f38;
+ f44 = f11 - f19;
+ f45 = f11 + f19;
+ f46 = MUL_F(FRAC_CONST(0.7071067811865476), f45);
+ f47 = f3 - f46;
+ f48 = f3 + f46;
+ f49 = MUL_F(FRAC_CONST(0.7071067811865476), f44);
+ f50 = f49 - f27;
+ f51 = f49 + f27;
+ f52 = f51 + f48;
+ f53 = MUL_F(FRAC_CONST(-0.7856949583871021), f51);
+ f54 = MUL_F(FRAC_CONST(0.9807852804032304), f52);
+ f55 = MUL_C(COEF_CONST(1.1758756024193588), f48);
+ f56 = f53 + f54;
+ f57 = f55 - f54;
+ f58 = f50 + f47;
+ f59 = MUL_F(FRAC_CONST(-0.2758993792829430), f50);
+ f60 = MUL_F(FRAC_CONST(0.8314696123025452), f58);
+ f61 = MUL_C(COEF_CONST(1.3870398453221475), f47);
+ f62 = f59 + f60;
+ f63 = f61 - f60;
+ f64 = f41 - f56;
+ f65 = f41 + f56;
+ f66 = f43 - f62;
+ f67 = f43 + f62;
+ f68 = f42 - f63;
+ f69 = f42 + f63;
+ f70 = f40 - f57;
+ f71 = f40 + f57;
+ f72 = f5 - f9;
+ f73 = f5 + f9;
+ f74 = f13 - f17;
+ f75 = f13 + f17;
+ f76 = f21 - f25;
+ f77 = f21 + f25;
+ f78 = MUL_F(FRAC_CONST(0.7071067811865476), f75);
+ f79 = f1 - f78;
+ f80 = f1 + f78;
+ f81 = f73 + f77;
+ f82 = MUL_C(COEF_CONST(1.3065629648763766), f73);
+ f83 = MUL_F(FRAC_CONST(-0.9238795325112866), f81);
+ f84 = MUL_F(FRAC_CONST(-0.5411961001461967), f77);
+ f85 = f82 + f83;
+ f86 = f84 - f83;
+ f87 = f80 - f86;
+ f88 = f80 + f86;
+ f89 = f79 - f85;
+ f90 = f79 + f85;
+ f91 = MUL_F(FRAC_CONST(0.7071067811865476), f74);
+ f92 = f29 - f91;
+ f93 = f29 + f91;
+ f94 = f76 + f72;
+ f95 = MUL_C(COEF_CONST(1.3065629648763766), f76);
+ f96 = MUL_F(FRAC_CONST(-0.9238795325112866), f94);
+ f97 = MUL_F(FRAC_CONST(-0.5411961001461967), f72);
+ f98 = f95 + f96;
+ f99 = f97 - f96;
+ f100 = f93 - f99;
+ f101 = f93 + f99;
+ f102 = f92 - f98;
+ f103 = f92 + f98;
+ f104 = f101 + f88;
+ f105 = MUL_F(FRAC_CONST(-0.8971675863426361), f101);
+ f106 = MUL_F(FRAC_CONST(0.9951847266721968), f104);
+ f107 = MUL_C(COEF_CONST(1.0932018670017576), f88);
+ f108 = f105 + f106;
+ f109 = f107 - f106;
+ f110 = f90 - f103;
+ f111 = MUL_F(FRAC_CONST(-0.6666556584777466), f103);
+ f112 = MUL_F(FRAC_CONST(0.9569403357322089), f110);
+ f113 = MUL_C(COEF_CONST(1.2472250129866713), f90);
+ f114 = f112 - f111;
+ f115 = f113 - f112;
+ f116 = f102 + f89;
+ f117 = MUL_F(FRAC_CONST(-0.4105245275223571), f102);
+ f118 = MUL_F(FRAC_CONST(0.8819212643483549), f116);
+ f119 = MUL_C(COEF_CONST(1.3533180011743529), f89);
+ f120 = f117 + f118;
+ f121 = f119 - f118;
+ f122 = f87 - f100;
+ f123 = MUL_F(FRAC_CONST(-0.1386171691990915), f100);
+ f124 = MUL_F(FRAC_CONST(0.7730104533627370), f122);
+ f125 = MUL_C(COEF_CONST(1.4074037375263826), f87);
f126 = f124 - f123;
- f127 = t2[18] + t2[46];
- f128 = 1.3315443865537255 * t2[18];
- f129 = (-0.9039892931234433) * f127;
- f130 = (-0.4764341996931612) * t2[46];
- f131 = f128 + f129;
- f132 = f130 - f129;
- f133 = t2[26] + t2[38];
- f134 = 1.3989068359730781 * t2[26];
- f135 = (-0.8032075314806453) * f133;
- f136 = (-0.2075082269882124) * t2[38];
- f137 = f134 + f135;
- f138 = f136 - f135;
- f139 = t2[34] + t2[30];
- f140 = 1.4125100802019777 * t2[34];
- f141 = (-0.6715589548470187) * f139;
- f142 = 0.0693921705079402 * t2[30];
- f143 = f140 + f141;
- f144 = f142 - f141;
- f145 = t2[42] + t2[22];
- f146 = 1.3718313541934939 * t2[42];
- f147 = (-0.5141027441932219) * f145;
- f148 = 0.3436258658070501 * t2[22];
- f149 = f146 + f147;
- f150 = f148 - f147;
- f151 = t2[50] + t2[14];
- f152 = 1.2784339185752409 * t2[50];
- f153 = (-0.3368898533922200) * f151;
- f154 = 0.6046542117908008 * t2[14];
- f155 = f152 + f153;
- f156 = f154 - f153;
- f157 = t2[58] + t2[6];
- f158 = 1.1359069844201433 * t2[58];
- f159 = (-0.1467304744553624) * f157;
- f160 = 0.8424460355094185 * t2[6];
- f161 = f158 + f159;
- f162 = f160 - f159;
- f163 = f120 - f144;
- f164 = f120 + f144;
- f165 = f119 - f143;
- f166 = f119 + f143;
- f167 = f126 - f150;
- f168 = f126 + f150;
- f169 = f125 - f149;
- f170 = f125 + f149;
- f171 = f132 - f156;
- f172 = f132 + f156;
- f173 = f131 - f155;
- f174 = f131 + f155;
- f175 = f138 - f162;
- f176 = f138 + f162;
- f177 = f137 - f161;
- f178 = f137 + f161;
- f179 = f163 + f165;
- f180 = 1.1758756024193588 * f163;
- f181 = (-0.9807852804032304) * f179;
- f182 = (-0.7856949583871021) * f165;
- f183 = f180 + f181;
- f184 = f182 - f181;
- f185 = f167 + f169;
- f186 = 1.3870398453221475 * f167;
- f187 = (-0.5555702330196022) * f185;
- f188 = 0.2758993792829431 * f169;
- f189 = f186 + f187;
- f190 = f188 - f187;
- f191 = f171 + f173;
- f192 = 0.7856949583871022 * f171;
- f193 = 0.1950903220161283 * f191;
- f194 = 1.1758756024193586 * f173;
- f195 = f192 + f193;
- f196 = f194 - f193;
- f197 = f175 + f177;
- f198 = (-0.2758993792829430) * f175;
- f199 = 0.8314696123025452 * f197;
- f200 = 1.3870398453221475 * f177;
- f201 = f198 + f199;
- f202 = f200 - f199;
- f203 = f164 - f172;
- f204 = f164 + f172;
- f205 = f166 - f174;
- f206 = f166 + f174;
- f207 = f168 - f176;
- f208 = f168 + f176;
- f209 = f170 - f178;
- f210 = f170 + f178;
- f211 = f184 - f196;
- f212 = f184 + f196;
- f213 = f183 - f195;
- f214 = f183 + f195;
- f215 = f190 - f202;
- f216 = f190 + f202;
- f217 = f189 - f201;
- f218 = f189 + f201;
- f219 = f203 + f205;
- f220 = 1.3065629648763766 * f203;
- f221 = (-0.9238795325112866) * f219;
- f222 = (-0.5411961001461967) * f205;
- f223 = f220 + f221;
- f224 = f222 - f221;
- f225 = f207 + f209;
- f226 = 0.5411961001461969 * f207;
- f227 = 0.3826834323650898 * f225;
- f228 = 1.3065629648763766 * f209;
- f229 = f226 + f227;
- f230 = f228 - f227;
- f231 = f211 + f213;
- f232 = 1.3065629648763766 * f211;
- f233 = (-0.9238795325112866) * f231;
- f234 = (-0.5411961001461967) * f213;
- f235 = f232 + f233;
- f236 = f234 - f233;
- f237 = f215 + f217;
- f238 = 0.5411961001461969 * f215;
- f239 = 0.3826834323650898 * f237;
- f240 = 1.3065629648763766 * f217;
- f241 = f238 + f239;
- f242 = f240 - f239;
- f243 = f204 - f208;
- f244 = f204 + f208;
- f245 = f206 - f210;
- f246 = f206 + f210;
- f247 = f224 - f230;
- f248 = f224 + f230;
- f249 = f223 - f229;
- f250 = f223 + f229;
- f251 = f212 - f216;
- f252 = f212 + f216;
- f253 = f214 - f218;
- f254 = f214 + f218;
- f255 = f236 - f242;
- f256 = f236 + f242;
- f257 = f235 - f241;
- f258 = f235 + f241;
- f259 = f243 - f245;
- f260 = f243 + f245;
- f261 = 0.7071067811865474 * f259;
- f262 = 0.7071067811865474 * f260;
- f263 = f247 - f249;
- f264 = f247 + f249;
- f265 = 0.7071067811865474 * f263;
- f266 = 0.7071067811865474 * f264;
- f267 = f251 - f253;
- f268 = f251 + f253;
- f269 = 0.7071067811865474 * f267;
- f270 = 0.7071067811865474 * f268;
- f271 = f255 - f257;
- f272 = f255 + f257;
- f273 = 0.7071067811865474 * f271;
- f274 = 0.7071067811865474 * f272;
- f275 = f100 - f244;
- f276 = f100 + f244;
- f277 = f102 - f252;
- f278 = f102 + f252;
- f279 = f104 - f256;
- f280 = f104 + f256;
- f281 = f106 - f248;
- f282 = f106 + f248;
- f283 = f108 - f266;
- f284 = f108 + f266;
- f285 = f110 - f274;
- f286 = f110 + f274;
- f287 = f112 - f270;
- f288 = f112 + f270;
- f289 = f114 - f262;
- f290 = f114 + f262;
- f291 = f113 - f261;
- f292 = f113 + f261;
- f293 = f111 - f269;
- f294 = f111 + f269;
- f295 = f109 - f273;
- f296 = f109 + f273;
- f297 = f107 - f265;
- f298 = f107 + f265;
- f299 = f105 - f250;
- f300 = f105 + f250;
- f301 = f103 - f258;
- f302 = f103 + f258;
- f303 = f101 - f254;
- f304 = f101 + f254;
- f305 = f99 - f246;
- f306 = f99 + f246;
- f307 = t2[1] - t2[61];
- f308 = 1.0478631305325901 * t2[1];
- f309 = (-0.9987954562051724) * f307;
- f310 = (-0.9497277818777548) * t2[61];
- f311 = f308 + f309;
- f312 = f309 + f310;
- f313 = t2[9] - t2[53];
- f314 = 1.2130114330978077 * t2[9];
- f315 = (-0.9700312531945440) * f313;
- f316 = (-0.7270510732912803) * t2[53];
- f317 = f314 + f315;
- f318 = f315 + f316;
- f319 = t2[17] - t2[45];
- f320 = 1.3315443865537255 * t2[17];
- f321 = (-0.9039892931234433) * f319;
- f322 = (-0.4764341996931612) * t2[45];
- f323 = f320 + f321;
- f324 = f321 + f322;
- f325 = t2[25] - t2[37];
- f326 = 1.3989068359730781 * t2[25];
- f327 = (-0.8032075314806453) * f325;
- f328 = (-0.2075082269882124) * t2[37];
- f329 = f326 + f327;
- f330 = f327 + f328;
- f331 = t2[33] - t2[29];
- f332 = 1.4125100802019777 * t2[33];
- f333 = (-0.6715589548470187) * f331;
- f334 = 0.0693921705079402 * t2[29];
- f335 = f332 + f333;
- f336 = f333 + f334;
- f337 = t2[41] - t2[21];
- f338 = 1.3718313541934939 * t2[41];
- f339 = (-0.5141027441932219) * f337;
- f340 = 0.3436258658070501 * t2[21];
- f341 = f338 + f339;
- f342 = f339 + f340;
- f343 = t2[49] - t2[13];
- f344 = 1.2784339185752409 * t2[49];
- f345 = (-0.3368898533922200) * f343;
- f346 = 0.6046542117908008 * t2[13];
- f347 = f344 + f345;
- f348 = f345 + f346;
- f349 = t2[57] - t2[5];
- f350 = 1.1359069844201433 * t2[57];
- f351 = (-0.1467304744553624) * f349;
- f352 = 0.8424460355094185 * t2[5];
- f353 = f350 + f351;
- f354 = f351 + f352;
- f355 = f336 - f312;
- f356 = f312 + f336;
- f357 = f311 - f335;
- f358 = f311 + f335;
- f359 = f342 - f318;
- f360 = f318 + f342;
- f361 = f317 - f341;
- f362 = f317 + f341;
- f363 = f348 - f324;
- f364 = f324 + f348;
- f365 = f323 - f347;
- f366 = f323 + f347;
- f367 = f354 - f330;
- f368 = f330 + f354;
- f369 = f329 - f353;
- f370 = f329 + f353;
- f371 = f355 + f357;
- f372 = 1.1758756024193588 * f355;
- f373 = (-0.9807852804032304) * f371;
- f374 = (-0.7856949583871021) * f357;
- f375 = f372 + f373;
- f376 = f374 - f373;
- f377 = f359 + f361;
- f378 = 1.3870398453221475 * f359;
- f379 = (-0.5555702330196022) * f377;
- f380 = 0.2758993792829431 * f361;
- f381 = f378 + f379;
- f382 = f380 - f379;
- f383 = f363 + f365;
- f384 = 0.7856949583871022 * f363;
- f385 = 0.1950903220161283 * f383;
- f386 = 1.1758756024193586 * f365;
- f387 = f384 + f385;
- f388 = f386 - f385;
- f389 = f367 + f369;
- f390 = (-0.2758993792829430) * f367;
- f391 = 0.8314696123025452 * f389;
- f392 = 1.3870398453221475 * f369;
- f393 = f390 + f391;
- f394 = f392 - f391;
- f395 = f364 - f356;
- f396 = f356 + f364;
- f397 = f358 - f366;
- f398 = f358 + f366;
- f399 = f368 - f360;
- f400 = f360 + f368;
- f401 = f362 - f370;
- f402 = f362 + f370;
- f403 = f376 - f388;
- f404 = f376 + f388;
- f405 = f375 - f387;
- f406 = f375 + f387;
- f407 = f382 - f394;
- f408 = f382 + f394;
- f409 = f381 - f393;
- f410 = f381 + f393;
- f411 = f395 + f397;
- f412 = 1.3065629648763766 * f395;
- f413 = (-0.9238795325112866) * f411;
- f414 = (-0.5411961001461967) * f397;
- f415 = f412 + f413;
- f416 = f414 - f413;
- f417 = f399 + f401;
- f418 = 0.5411961001461969 * f399;
- f419 = 0.3826834323650898 * f417;
- f420 = 1.3065629648763766 * f401;
- f421 = f418 + f419;
- f422 = f420 - f419;
- f423 = f403 + f405;
- f424 = 1.3065629648763766 * f403;
- f425 = (-0.9238795325112866) * f423;
- f426 = (-0.5411961001461967) * f405;
- f427 = f424 + f425;
- f428 = f426 - f425;
- f429 = f407 + f409;
- f430 = 0.5411961001461969 * f407;
- f431 = 0.3826834323650898 * f429;
- f432 = 1.3065629648763766 * f409;
- f433 = f430 + f431;
- f434 = f432 - f431;
- f435 = f400 - f396;
- f436 = f396 + f400;
- f437 = f398 - f402;
- f438 = f398 + f402;
- f439 = f416 - f422;
- f440 = f416 + f422;
- f441 = f415 - f421;
- f442 = f415 + f421;
- f443 = f404 - f408;
- f444 = f404 + f408;
- f445 = f406 - f410;
- f446 = f406 + f410;
- f447 = f428 - f434;
- f448 = f428 + f434;
- f449 = f427 - f433;
- f450 = f427 + f433;
- f451 = f435 - f437;
- f452 = f435 + f437;
- f453 = 0.7071067811865474 * f451;
- f454 = 0.7071067811865474 * f452;
- f455 = f439 - f441;
- f456 = f439 + f441;
- f457 = 0.7071067811865474 * f455;
- f458 = 0.7071067811865474 * f456;
- f459 = f443 - f445;
- f460 = f443 + f445;
- f461 = 0.7071067811865474 * f459;
- f462 = 0.7071067811865474 * f460;
- f463 = f447 - f449;
- f464 = f447 + f449;
- f465 = 0.7071067811865474 * f463;
- f466 = 0.7071067811865474 * f464;
- f467 = 0.7071067811865476 * t2[31];
- f468 = t2[63] - f467;
- f469 = t2[63] + f467;
- f470 = t2[47] + t2[15];
- f471 = 1.3065629648763766 * t2[47];
- f472 = (-0.9238795325112866) * f470;
- f473 = (-0.5411961001461967) * t2[15];
- f474 = f471 + f472;
- f475 = f473 - f472;
- f476 = f469 - f475;
- f477 = f469 + f475;
- f478 = f468 - f474;
- f479 = f468 + f474;
- f480 = t2[55] + t2[7];
- f481 = 1.1758756024193588 * t2[55];
- f482 = (-0.9807852804032304) * f480;
- f483 = (-0.7856949583871021) * t2[7];
- f484 = f481 + f482;
- f485 = f483 - f482;
- f486 = t2[39] + t2[23];
- f487 = 1.3870398453221473 * t2[39];
- f488 = (-0.8314696123025455) * f486;
- f489 = (-0.2758993792829436) * t2[23];
- f490 = f487 + f488;
- f491 = f489 - f488;
- f492 = f485 - f491;
- f493 = f485 + f491;
- f494 = 0.7071067811865476 * f492;
- f495 = f484 - f490;
- f496 = f484 + f490;
- f497 = 0.7071067811865476 * f496;
- f498 = f494 - f497;
- f499 = f494 + f497;
- f500 = f477 - f493;
- f501 = f477 + f493;
- f502 = f479 - f499;
- f503 = f479 + f499;
- f504 = f478 - f498;
- f505 = f478 + f498;
- f506 = f476 - f495;
- f507 = f476 + f495;
- f508 = t2[59] + t2[3];
- f509 = 1.0932018670017569 * t2[59];
- f510 = (-0.9951847266721969) * f508;
- f511 = (-0.8971675863426368) * t2[3];
- f512 = f509 + f510;
- f513 = f511 - f510;
- f514 = t2[51] + t2[11];
- f515 = 1.2472250129866711 * t2[51];
- f516 = (-0.9569403357322089) * f514;
- f517 = (-0.6666556584777469) * t2[11];
- f518 = f515 + f516;
- f519 = f517 - f516;
- f520 = t2[43] + t2[19];
- f521 = 1.3533180011743526 * t2[43];
- f522 = (-0.8819212643483551) * f520;
- f523 = (-0.4105245275223575) * t2[19];
- f524 = f521 + f522;
- f525 = f523 - f522;
- f526 = t2[35] + t2[27];
- f527 = 1.4074037375263826 * t2[35];
- f528 = (-0.7730104533627369) * f526;
- f529 = (-0.1386171691990913) * t2[27];
- f530 = f527 + f528;
- f531 = f529 - f528;
- f532 = f513 - f531;
- f533 = f513 + f531;
- f534 = f519 - f525;
- f535 = f519 + f525;
- f536 = f533 - f535;
- f537 = f533 + f535;
- f538 = 0.7071067811865476 * f536;
- f539 = f532 + f534;
- f540 = 1.3065629648763766 * f532;
- f541 = (-0.9238795325112866) * f539;
- f542 = (-0.5411961001461967) * f534;
- f543 = f540 + f541;
- f544 = f542 - f541;
- f545 = f512 - f530;
- f546 = f512 + f530;
- f547 = f518 - f524;
- f548 = f518 + f524;
- f549 = f546 + f548;
- f550 = 1.3065629648763770 * f546;
- f551 = (-0.3826834323650904) * f549;
- f552 = 0.5411961001461961 * f548;
- f553 = f550 + f551;
- f554 = f552 - f551;
- f555 = f545 - f547;
- f556 = f545 + f547;
- f557 = 0.7071067811865476 * f556;
- f558 = f544 - f554;
- f559 = f544 + f554;
- f560 = f538 - f557;
- f561 = f538 + f557;
- f562 = f543 - f553;
- f563 = f543 + f553;
- f564 = f501 - f537;
- f565 = f501 + f537;
- f566 = f503 - f559;
- f567 = f503 + f559;
- f568 = f505 - f558;
- f569 = f505 + f558;
- f570 = f507 - f561;
- f571 = f507 + f561;
- f572 = f506 - f560;
- f573 = f506 + f560;
- f574 = f504 - f563;
- f575 = f504 + f563;
- f576 = f502 - f562;
- f577 = f502 + f562;
- f578 = f500 - f555;
- f579 = f500 + f555;
- f580 = f438 - f565;
- f581 = f438 + f565;
- f582 = f446 + f567;
- f583 = f446 - f567;
- f584 = f450 - f569;
- f585 = f450 + f569;
- f586 = f442 + f571;
- f587 = f442 - f571;
- f588 = f457 - f573;
- f589 = f457 + f573;
- f590 = f465 + f575;
- f591 = f465 - f575;
- f592 = f461 - f577;
- f593 = f461 + f577;
- f594 = f453 + f579;
- f595 = f453 - f579;
- f596 = f454 - f578;
- f597 = f454 + f578;
- f598 = f462 + f576;
- f599 = f462 - f576;
- f600 = f466 - f574;
- f601 = f466 + f574;
- f602 = f458 + f572;
- f603 = f458 - f572;
- f604 = f440 - f570;
- f605 = f440 + f570;
- f606 = f448 + f568;
- f607 = f448 - f568;
- f608 = f444 - f566;
- f609 = f444 + f566;
- f610 = f564 - f436;
- f611 = f436 + f564;
- f612 = f581 + f276;
- f613 = (-0.9876531635534246) * f581;
- f614 = 0.9999247018391445 * f612;
- f615 = 1.0121962401248645 * f276;
- y[0] = f613 + f614;
- y[63] = f615 - f614;
- f618 = f583 + f278;
- f619 = (-0.9625151616469906) * f583;
- f620 = 0.9993223845883495 * f618;
- f621 = 1.0361296075297086 * f278;
- y[1] = f619 + f620;
- y[62] = f621 - f620;
- f624 = f585 + f280;
- f625 = (-0.9367973765979405) * f585;
- f626 = 0.9981181129001492 * f624;
- f627 = 1.0594388492023579 * f280;
- y[2] = f625 + f626;
- y[61] = f627 - f626;
- f630 = f587 + f282;
- f631 = (-0.9105152998383381) * f587;
- f632 = 0.9963126121827780 * f630;
- f633 = 1.0821099245272179 * f282;
- y[3] = f631 + f632;
- y[60] = f633 - f632;
- f636 = f589 + f284;
- f637 = (-0.8836847627084729) * f589;
- f638 = 0.9939069700023561 * f636;
- f639 = 1.1041291772962392 * f284;
- y[4] = f637 + f638;
- y[59] = f639 - f638;
- f642 = f591 + f286;
- f643 = (-0.8563219269206538) * f591;
- f644 = 0.9909026354277800 * f642;
- f645 = 1.1254833439349063 * f286;
- y[5] = f643 + f644;
- y[58] = f645 - f644;
- f648 = f593 + f288;
- f649 = (-0.8284432748239970) * f593;
- f650 = 0.9873014181578584 * f648;
- f651 = 1.1461595614917197 * f288;
- y[6] = f649 + f650;
- y[57] = f651 - f650;
- f654 = f595 + f290;
- f655 = (-0.8000655994760753) * f595;
- f656 = 0.9831054874312163 * f654;
- f657 = 1.1661453753863573 * f290;
- y[7] = f655 + f656;
- y[56] = f657 - f656;
- f660 = f597 + f292;
- f661 = (-0.7712059945274091) * f597;
- f662 = 0.9783173707196277 * f660;
- f663 = 1.1854287469118463 * f292;
- y[8] = f661 + f662;
- y[55] = f663 - f662;
- f666 = f599 + f294;
- f667 = (-0.7418818439248888) * f599;
- f668 = 0.9729399522055601 * f666;
- f669 = 1.2039980604862313 * f294;
- y[9] = f667 + f668;
- y[54] = f669 - f668;
- f672 = f601 + f296;
- f673 = (-0.7121108114403374) * f601;
- f674 = 0.9669764710448521 * f672;
- f675 = 1.2218421306493668 * f296;
- y[10] = f673 + f674;
- y[53] = f675 - f674;
- f678 = f603 + f298;
- f679 = (-0.6819108300305128) * f603;
- f680 = 0.9604305194155658 * f678;
- f681 = 1.2389502088006188 * f298;
- y[11] = f679 + f680;
- y[52] = f681 - f680;
- f684 = f605 + f300;
- f685 = (-0.6513000910349656) * f605;
- f686 = 0.9533060403541938 * f684;
- f687 = 1.2553119896734219 * f300;
- y[12] = f685 + f686;
- y[51] = f687 - f686;
- f690 = f607 + f302;
- f691 = (-0.6202970332182582) * f607;
- f692 = 0.9456073253805213 * f690;
- f693 = 1.2709176175427843 * f302;
- y[13] = f691 + f692;
- y[50] = f693 - f692;
- f696 = f609 + f304;
- f697 = (-0.5889203316631404) * f609;
- f698 = 0.9373390119125750 * f696;
- f699 = 1.2857576921620095 * f304;
- y[14] = f697 + f698;
- y[49] = f699 - f698;
- f702 = f306 - f611;
- f703 = (-0.5571888865213779) * f611;
- f704 = 0.9285060804732155 * f702;
- f705 = 1.2998232744250531 * f306;
- y[15] = f704 - f703;
- y[48] = f705 - f704;
- f708 = f610 + f305;
- f709 = (-0.5251218116290097) * f610;
- f710 = 0.9191138516900578 * f708;
- f711 = 1.3131058917511058 * f305;
- y[16] = f709 + f710;
- y[47] = f711 - f710;
- f714 = f608 + f303;
- f715 = (-0.4927384229928850) * f608;
- f716 = 0.9091679830905223 * f714;
- f717 = 1.3255975431881595 * f303;
- y[17] = f715 + f716;
- y[46] = f717 - f716;
- f720 = f606 + f301;
- f721 = (-0.4600582271554261) * f606;
- f722 = 0.8986744656939538 * f720;
- f723 = 1.3372907042324815 * f301;
- y[18] = f721 + f722;
- y[45] = f723 - f722;
- f726 = f604 + f299;
- f727 = (-0.4271009094446139) * f604;
- f728 = 0.8876396204028539 * f726;
- f729 = 1.3481783313610940 * f299;
- y[19] = f727 + f728;
- y[44] = f729 - f728;
- f732 = f602 + f297;
- f733 = (-0.3938863221162838) * f602;
- f734 = 0.8760700941954066 * f732;
- f735 = 1.3582538662745294 * f297;
- y[20] = f733 + f734;
- y[43] = f735 - f734;
- f738 = f600 + f295;
- f739 = (-0.3604344723958691) * f600;
- f740 = 0.8639728561215867 * f738;
- f741 = 1.3675112398473042 * f295;
- y[21] = f739 + f740;
- y[42] = f741 - f740;
- f744 = f598 + f293;
- f745 = (-0.3267655104267964) * f598;
- f746 = 0.8513551931052652 * f744;
- f747 = 1.3759448757837340 * f293;
- y[22] = f745 + f746;
- y[41] = f747 - f746;
- f750 = f596 + f291;
- f751 = (-0.2928997171327915) * f596;
- f752 = 0.8382247055548380 * f750;
- f753 = 1.3835496939768843 * f291;
- y[23] = f751 + f752;
- y[40] = f753 - f752;
- f756 = f594 + f289;
- f757 = (-0.2588574920014121) * f594;
- f758 = 0.8245893027850253 * f756;
- f759 = 1.3903211135686386 * f289;
- y[24] = f757 + f758;
- y[39] = f759 - f758;
- f762 = f592 + f287;
- f763 = (-0.2246593407961559) * f592;
- f764 = 0.8104571982525948 * f762;
- f765 = 1.3962550557090336 * f287;
- y[25] = f763 + f764;
- y[38] = f765 - f764;
- f768 = f590 + f285;
- f769 = (-0.1903258632045579) * f590;
- f770 = 0.7958369046088835 * f768;
- f771 = 1.4013479460132090 * f285;
- y[26] = f769 + f770;
- y[37] = f771 - f770;
- f774 = f588 + f283;
- f775 = (-0.1558777404297079) * f588;
- f776 = 0.7807372285720944 * f774;
- f777 = 1.4055967167144807 * f283;
- y[27] = f775 + f776;
- y[36] = f777 - f776;
- f780 = f586 + f281;
- f781 = (-0.1213357227326675) * f586;
- f782 = 0.7651672656224590 * f780;
- f783 = 1.4089988085122505 * f281;
- y[28] = f781 + f782;
- y[35] = f783 - f782;
- f786 = f584 + f279;
- f787 = (-0.0867206169332875) * f584;
- f788 = 0.7491363945234593 * f786;
- f789 = 1.4115521721136310 * f279;
- y[29] = f787 + f788;
- y[34] = f789 - f788;
- f792 = f582 + f277;
- f793 = (-0.0520532738769597) * f582;
- f794 = 0.7326542716724128 * f792;
- f795 = 1.4132552694678659 * f277;
- y[30] = f793 + f794;
- y[33] = f795 - f794;
- f798 = f580 + f275;
- f799 = (-0.0173545758748457) * f580;
- f800 = 0.7157308252838186 * f798;
- f801 = 1.4141070746927915 * f275;
- y[31] = f799 + f800;
- y[32] = f801 - f800;
+ f127 = f125 - f124;
+ f128 = f65 - f108;
+ f129 = f65 + f108;
+ f130 = f67 - f114;
+ f131 = f67 + f114;
+ f132 = f69 - f120;
+ f133 = f69 + f120;
+ f134 = f71 - f126;
+ f135 = f71 + f126;
+ f136 = f70 - f127;
+ f137 = f70 + f127;
+ f138 = f68 - f121;
+ f139 = f68 + f121;
+ f140 = f66 - f115;
+ f141 = f66 + f115;
+ f142 = f64 - f109;
+ f143 = f64 + f109;
+ f144 = f0 + f30;
+ f145 = MUL_C(COEF_CONST(1.0478631305325901), f0);
+ f146 = MUL_F(FRAC_CONST(-0.9987954562051724), f144);
+ f147 = MUL_F(FRAC_CONST(-0.9497277818777548), f30);
+ f148 = f145 + f146;
+ f149 = f147 - f146;
+ f150 = f4 + f26;
+ f151 = MUL_F(FRAC_CONST(1.2130114330978077), f4);
+ f152 = MUL_F(FRAC_CONST(-0.9700312531945440), f150);
+ f153 = MUL_F(FRAC_CONST(-0.7270510732912803), f26);
+ f154 = f151 + f152;
+ f155 = f153 - f152;
+ f156 = f8 + f22;
+ f157 = MUL_C(COEF_CONST(1.3315443865537255), f8);
+ f158 = MUL_F(FRAC_CONST(-0.9039892931234433), f156);
+ f159 = MUL_F(FRAC_CONST(-0.4764341996931612), f22);
+ f160 = f157 + f158;
+ f161 = f159 - f158;
+ f162 = f12 + f18;
+ f163 = MUL_C(COEF_CONST(1.3989068359730781), f12);
+ f164 = MUL_F(FRAC_CONST(-0.8032075314806453), f162);
+ f165 = MUL_F(FRAC_CONST(-0.2075082269882124), f18);
+ f166 = f163 + f164;
+ f167 = f165 - f164;
+ f168 = f16 + f14;
+ f169 = MUL_C(COEF_CONST(1.4125100802019777), f16);
+ f170 = MUL_F(FRAC_CONST(-0.6715589548470187), f168);
+ f171 = MUL_F(FRAC_CONST(0.0693921705079402), f14);
+ f172 = f169 + f170;
+ f173 = f171 - f170;
+ f174 = f20 + f10;
+ f175 = MUL_C(COEF_CONST(1.3718313541934939), f20);
+ f176 = MUL_F(FRAC_CONST(-0.5141027441932219), f174);
+ f177 = MUL_F(FRAC_CONST(0.3436258658070501), f10);
+ f178 = f175 + f176;
+ f179 = f177 - f176;
+ f180 = f24 + f6;
+ f181 = MUL_C(COEF_CONST(1.2784339185752409), f24);
+ f182 = MUL_F(FRAC_CONST(-0.3368898533922200), f180);
+ f183 = MUL_F(FRAC_CONST(0.6046542117908008), f6);
+ f184 = f181 + f182;
+ f185 = f183 - f182;
+ f186 = f28 + f2;
+ f187 = MUL_C(COEF_CONST(1.1359069844201433), f28);
+ f188 = MUL_F(FRAC_CONST(-0.1467304744553624), f186);
+ f189 = MUL_F(FRAC_CONST(0.8424460355094185), f2);
+ f190 = f187 + f188;
+ f191 = f189 - f188;
+ f192 = f149 - f173;
+ f193 = f149 + f173;
+ f194 = f148 - f172;
+ f195 = f148 + f172;
+ f196 = f155 - f179;
+ f197 = f155 + f179;
+ f198 = f154 - f178;
+ f199 = f154 + f178;
+ f200 = f161 - f185;
+ f201 = f161 + f185;
+ f202 = f160 - f184;
+ f203 = f160 + f184;
+ f204 = f167 - f191;
+ f205 = f167 + f191;
+ f206 = f166 - f190;
+ f207 = f166 + f190;
+ f208 = f192 + f194;
+ f209 = MUL_C(COEF_CONST(1.1758756024193588), f192);
+ f210 = MUL_F(FRAC_CONST(-0.9807852804032304), f208);
+ f211 = MUL_F(FRAC_CONST(-0.7856949583871021), f194);
+ f212 = f209 + f210;
+ f213 = f211 - f210;
+ f214 = f196 + f198;
+ f215 = MUL_C(COEF_CONST(1.3870398453221475), f196);
+ f216 = MUL_F(FRAC_CONST(-0.5555702330196022), f214);
+ f217 = MUL_F(FRAC_CONST(0.2758993792829431), f198);
+ f218 = f215 + f216;
+ f219 = f217 - f216;
+ f220 = f200 + f202;
+ f221 = MUL_F(FRAC_CONST(0.7856949583871022), f200);
+ f222 = MUL_F(FRAC_CONST(0.1950903220161283), f220);
+ f223 = MUL_C(COEF_CONST(1.1758756024193586), f202);
+ f224 = f221 + f222;
+ f225 = f223 - f222;
+ f226 = f204 + f206;
+ f227 = MUL_F(FRAC_CONST(-0.2758993792829430), f204);
+ f228 = MUL_F(FRAC_CONST(0.8314696123025452), f226);
+ f229 = MUL_C(COEF_CONST(1.3870398453221475), f206);
+ f230 = f227 + f228;
+ f231 = f229 - f228;
+ f232 = f193 - f201;
+ f233 = f193 + f201;
+ f234 = f195 - f203;
+ f235 = f195 + f203;
+ f236 = f197 - f205;
+ f237 = f197 + f205;
+ f238 = f199 - f207;
+ f239 = f199 + f207;
+ f240 = f213 - f225;
+ f241 = f213 + f225;
+ f242 = f212 - f224;
+ f243 = f212 + f224;
+ f244 = f219 - f231;
+ f245 = f219 + f231;
+ f246 = f218 - f230;
+ f247 = f218 + f230;
+ f248 = f232 + f234;
+ f249 = MUL_C(COEF_CONST(1.3065629648763766), f232);
+ f250 = MUL_F(FRAC_CONST(-0.9238795325112866), f248);
+ f251 = MUL_F(FRAC_CONST(-0.5411961001461967), f234);
+ f252 = f249 + f250;
+ f253 = f251 - f250;
+ f254 = f236 + f238;
+ f255 = MUL_F(FRAC_CONST(0.5411961001461969), f236);
+ f256 = MUL_F(FRAC_CONST(0.3826834323650898), f254);
+ f257 = MUL_C(COEF_CONST(1.3065629648763766), f238);
+ f258 = f255 + f256;
+ f259 = f257 - f256;
+ f260 = f240 + f242;
+ f261 = MUL_C(COEF_CONST(1.3065629648763766), f240);
+ f262 = MUL_F(FRAC_CONST(-0.9238795325112866), f260);
+ f263 = MUL_F(FRAC_CONST(-0.5411961001461967), f242);
+ f264 = f261 + f262;
+ f265 = f263 - f262;
+ f266 = f244 + f246;
+ f267 = MUL_F(FRAC_CONST(0.5411961001461969), f244);
+ f268 = MUL_F(FRAC_CONST(0.3826834323650898), f266);
+ f269 = MUL_C(COEF_CONST(1.3065629648763766), f246);
+ f270 = f267 + f268;
+ f271 = f269 - f268;
+ f272 = f233 - f237;
+ f273 = f233 + f237;
+ f274 = f235 - f239;
+ f275 = f235 + f239;
+ f276 = f253 - f259;
+ f277 = f253 + f259;
+ f278 = f252 - f258;
+ f279 = f252 + f258;
+ f280 = f241 - f245;
+ f281 = f241 + f245;
+ f282 = f243 - f247;
+ f283 = f243 + f247;
+ f284 = f265 - f271;
+ f285 = f265 + f271;
+ f286 = f264 - f270;
+ f287 = f264 + f270;
+ f288 = f272 - f274;
+ f289 = f272 + f274;
+ f290 = MUL_F(FRAC_CONST(0.7071067811865474), f288);
+ f291 = MUL_F(FRAC_CONST(0.7071067811865474), f289);
+ f292 = f276 - f278;
+ f293 = f276 + f278;
+ f294 = MUL_F(FRAC_CONST(0.7071067811865474), f292);
+ f295 = MUL_F(FRAC_CONST(0.7071067811865474), f293);
+ f296 = f280 - f282;
+ f297 = f280 + f282;
+ f298 = MUL_F(FRAC_CONST(0.7071067811865474), f296);
+ f299 = MUL_F(FRAC_CONST(0.7071067811865474), f297);
+ f300 = f284 - f286;
+ f301 = f284 + f286;
+ f302 = MUL_F(FRAC_CONST(0.7071067811865474), f300);
+ f303 = MUL_F(FRAC_CONST(0.7071067811865474), f301);
+ f304 = f129 - f273;
+ f305 = f129 + f273;
+ f306 = f131 - f281;
+ f307 = f131 + f281;
+ f308 = f133 - f285;
+ f309 = f133 + f285;
+ f310 = f135 - f277;
+ f311 = f135 + f277;
+ f312 = f137 - f295;
+ f313 = f137 + f295;
+ f314 = f139 - f303;
+ f315 = f139 + f303;
+ f316 = f141 - f299;
+ f317 = f141 + f299;
+ f318 = f143 - f291;
+ f319 = f143 + f291;
+ f320 = f142 - f290;
+ f321 = f142 + f290;
+ f322 = f140 - f298;
+ f323 = f140 + f298;
+ f324 = f138 - f302;
+ f325 = f138 + f302;
+ f326 = f136 - f294;
+ f327 = f136 + f294;
+ f328 = f134 - f279;
+ f329 = f134 + f279;
+ f330 = f132 - f287;
+ f331 = f132 + f287;
+ f332 = f130 - f283;
+ f333 = f130 + f283;
+ f334 = f128 - f275;
+ f335 = f128 + f275;
+ y[31] = MUL_F(FRAC_CONST(0.5001506360206510), f305);
+ y[30] = MUL_F(FRAC_CONST(0.5013584524464084), f307);
+ y[29] = MUL_F(FRAC_CONST(0.5037887256810443), f309);
+ y[28] = MUL_F(FRAC_CONST(0.5074711720725553), f311);
+ y[27] = MUL_F(FRAC_CONST(0.5124514794082247), f313);
+ y[26] = MUL_F(FRAC_CONST(0.5187927131053328), f315);
+ y[25] = MUL_F(FRAC_CONST(0.5265773151542700), f317);
+ y[24] = MUL_F(FRAC_CONST(0.5359098169079920), f319);
+ y[23] = MUL_F(FRAC_CONST(0.5469204379855088), f321);
+ y[22] = MUL_F(FRAC_CONST(0.5597698129470802), f323);
+ y[21] = MUL_F(FRAC_CONST(0.5746551840326600), f325);
+ y[20] = MUL_F(FRAC_CONST(0.5918185358574165), f327);
+ y[19] = MUL_F(FRAC_CONST(0.6115573478825099), f329);
+ y[18] = MUL_F(FRAC_CONST(0.6342389366884031), f331);
+ y[17] = MUL_F(FRAC_CONST(0.6603198078137061), f333);
+ y[16] = MUL_F(FRAC_CONST(0.6903721282002123), f335);
+ y[15] = MUL_F(FRAC_CONST(0.7251205223771985), f334);
+ y[14] = MUL_F(FRAC_CONST(0.7654941649730891), f332);
+ y[13] = MUL_F(FRAC_CONST(0.8127020908144905), f330);
+ y[12] = MUL_F(FRAC_CONST(0.8683447152233481), f328);
+ y[11] = MUL_F(FRAC_CONST(0.9345835970364075), f326);
+ y[10] = MUL_C(COEF_CONST(1.0144082649970547), f324);
+ y[9] = MUL_C(COEF_CONST(1.1120716205797176), f322);
+ y[8] = MUL_C(COEF_CONST(1.2338327379765710), f320);
+ y[7] = MUL_C(COEF_CONST(1.3892939586328277), f318);
+ y[6] = MUL_C(COEF_CONST(1.5939722833856311), f316);
+ y[5] = MUL_C(COEF_CONST(1.8746759800084078), f314);
+ y[4] = MUL_C(COEF_CONST(2.2820500680051619), f312);
+ y[3] = MUL_C(COEF_CONST(2.9246284281582162), f310);
+ y[2] = MUL_C(COEF_CONST(4.0846110781292477), f308);
+ y[1] = MUL_C(COEF_CONST(6.7967507116736332), f306);
+ y[0] = MUL_R(REAL_CONST(20.3738781672314530), f304);
}
#endif
#endif
-