1 /* 2 * Copyright 2024 NXP 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #define ABS_ERROR_THRESH_Q15 ((int16_t)2) 8 #define VEC_LENGTH 256 9 10 static const int16_t in_a[VEC_LENGTH] = { 11 0x0EB1, 0xD7DA, 0xDFC2, 0x2DDA, 0xAEB8, 0x1A8C, 0x34D0, 0xC949, 12 0x19FF, 0x1AFC, 0xD67E, 0x2639, 0x1546, 0xF32D, 0x2A82, 0xB79E, 13 0x1317, 0xEAF2, 0xCBD9, 0xC454, 0x42FD, 0xBB89, 0x9B4F, 0xCE5C, 14 0x09A1, 0xDFC2, 0xD780, 0x2B2C, 0x0FDB, 0xC69C, 0x5D9B, 0xBC82, 15 0x2794, 0xC287, 0x152B, 0xDA69, 0x2BE1, 0xE9BB, 0xD5EE, 0xC7C4, 16 0xBCDA, 0xC828, 0x19B1, 0x5F41, 0x5146, 0x00F0, 0xDEF6, 0x2A44, 17 0xCD0A, 0xE918, 0xF4D0, 0xD863, 0x241F, 0xE030, 0x26F3, 0x1ACB, 18 0x245C, 0x047C, 0x9433, 0x2BF5, 0x2F0F, 0x40E5, 0xC00D, 0x849C, 19 0x215D, 0xDE1B, 0x264A, 0x311D, 0x0C88, 0x1028, 0x2D8F, 0xCE0E, 20 0x1B43, 0x5529, 0x2914, 0xE215, 0x0C95, 0xF727, 0xDF21, 0xD12E, 21 0xBF74, 0xBFB5, 0xC4B0, 0xCDBB, 0xE3D0, 0xFAF9, 0x2579, 0xE9F5, 22 0xE00D, 0xE3B7, 0x2FE5, 0xE7A2, 0xE72C, 0x4C12, 0x156E, 0x03A9, 23 0xE767, 0x14B9, 0x8F36, 0x54D3, 0xF8CF, 0xC5F2, 0xE3E2, 0x3EEB, 24 0x054A, 0x6482, 0x013C, 0xFF6D, 0x078F, 0xA20A, 0xEF63, 0xCBAB, 25 0xC222, 0xA967, 0x3F6B, 0xFAFE, 0x1498, 0xF9D3, 0xC2C3, 0xCD2C, 26 0x1B37, 0xA9E8, 0xF8A4, 0xD3A6, 0xD238, 0x55EC, 0xF7FA, 0x007C, 27 0xC1BF, 0x161F, 0x8000, 0x273D, 0xEEC7, 0xFDDA, 0xD41C, 0x51C4, 28 0x1697, 0x3C98, 0x2E62, 0xC85D, 0x01FF, 0xC356, 0xBCC5, 0xF6C0, 29 0xC2FB, 0x1CC0, 0xC736, 0xED5C, 0x1B3C, 0xCEDC, 0xDC71, 0xD699, 30 0x895A, 0xF44E, 0xFEAB, 0xB470, 0xE176, 0xC915, 0x23AD, 0xDBDE, 31 0x2579, 0xB028, 0xF293, 0xF1D3, 0x2BE9, 0x3FE0, 0x5143, 0x8BB5, 32 0xD9A9, 0xC304, 0x5BE4, 0xBD39, 0xF24A, 0xC721, 0xE044, 0xE5EB, 33 0x3015, 0x22EB, 0x0FC5, 0xF766, 0xCAEC, 0x356E, 0xF105, 0xE3F6, 34 0xC69B, 0xC858, 0x1EF3, 0xD29A, 0xF220, 0x156B, 0x0625, 0xD1BA, 35 0x0DF9, 0x6A80, 0xECF5, 0xBBC4, 0xE8B3, 0x1DBD, 0x27ED, 0x43D5, 36 0x38E0, 0x0942, 0x0DB3, 0x93F4, 0xF640, 0xBC17, 0xFB75, 0xB565, 37 0x39FD, 0x037E, 0x533F, 0x3981, 0x2FC2, 0xA54D, 0x2DAC, 0x403B, 38 0xD1AC, 0x2397, 0x06C3, 0xDD46, 0x9F4C, 0xF716, 0xD4F2, 0xFEEA, 39 0xCE26, 0xF1C9, 0x376E, 0x2D6C, 0x1DA1, 0x1ADF, 0x2DB9, 0x1E02, 40 0xFA30, 0x0633, 0x4356, 0x06F1, 0x0751, 0x2881, 0x1D47, 0x2D8C, 41 0xA430, 0xB60E, 0x9CBD, 0xF925, 0xF90C, 0x235A, 0xDAAC, 0x3B2B, 42 0x112A, 0x8F09, 0x00B9, 0xB234, 0xA386, 0xD619, 0x20AA, 0x5063}; 43 44 static const int16_t in_b[VEC_LENGTH] = { 45 0xF977, 0xF484, 0xB38D, 0xC049, 0x127F, 0xEE0D, 0x5183, 0x1CFF, 46 0x2EC8, 0x7FFF, 0x44B4, 0xD9AD, 0x4410, 0x27AA, 0x0313, 0xC597, 47 0xA23C, 0xFCF7, 0xF6CA, 0x0540, 0x3DD7, 0x4BA0, 0xCB04, 0x4650, 48 0x5117, 0x0F7A, 0x16B7, 0x0052, 0x04F6, 0xCBB2, 0xD270, 0xFCD5, 49 0xDFF0, 0x389E, 0x2413, 0xD405, 0x08F1, 0xF872, 0xABD2, 0x13D4, 50 0x86AB, 0xDECA, 0xEFE1, 0x04D6, 0x2F20, 0xE4F2, 0x74C9, 0xFAFF, 51 0x1E5B, 0x4BBC, 0xE50F, 0x26A3, 0xF12F, 0x9774, 0x0465, 0x0FE1, 52 0xB3DD, 0xFF6A, 0x2B48, 0xD882, 0xD6B7, 0x077A, 0xE7AC, 0x94B7, 53 0x03BB, 0x2E0B, 0xEE40, 0xED35, 0xEC88, 0x3365, 0x60B5, 0x249E, 54 0x03B7, 0xCCB7, 0xB6E0, 0xB83B, 0xEB34, 0xEC7F, 0xEC20, 0x037F, 55 0x29F7, 0x9EE0, 0x0079, 0xF08C, 0xE025, 0xE064, 0xF44A, 0x28BF, 56 0xDB1A, 0x11F0, 0xFF16, 0x5896, 0x01D3, 0x2546, 0x0D96, 0xE7A4, 57 0xFBAF, 0xC158, 0x1BD0, 0x1349, 0x0F56, 0x3C3A, 0x0971, 0x0144, 58 0x0103, 0xD605, 0x5F13, 0xD660, 0x56D8, 0x281A, 0xCB9C, 0xF087, 59 0x0DF1, 0xE910, 0x00A3, 0xDB1F, 0xEF24, 0xCB3C, 0xFDC3, 0x33BF, 60 0xC071, 0x2387, 0x1D00, 0xFCAB, 0xDEAF, 0xD8BE, 0x50D2, 0xA530, 61 0x3BED, 0x33D0, 0xC7B0, 0x8906, 0x1389, 0x5832, 0x12A8, 0xCD6B, 62 0x3FB1, 0x2AF3, 0x1438, 0x230A, 0x1D37, 0xDBE5, 0xC794, 0xCF49, 63 0xBD1F, 0x0352, 0xDDEF, 0xF71B, 0xF034, 0x69E3, 0xE115, 0xD0FB, 64 0x14C9, 0xF522, 0xDF36, 0xE814, 0xE306, 0x2CE3, 0xDB81, 0x6658, 65 0x02D7, 0x1E97, 0xBA82, 0xEE1A, 0x5C73, 0x2956, 0xBC37, 0xF3FA, 66 0xD52D, 0xFE74, 0xA370, 0xE439, 0x007A, 0x0138, 0xF675, 0xDAB6, 67 0xFB95, 0xE5D5, 0xF490, 0xF4FD, 0x0BD8, 0x58FF, 0xE5FA, 0x1DC2, 68 0x0DB3, 0xD10F, 0x006F, 0xC3FA, 0xE69E, 0xFF03, 0x01C4, 0x2F8A, 69 0xE336, 0x05F5, 0xD870, 0xDF1E, 0x532B, 0x2F9B, 0xED67, 0xB192, 70 0xF663, 0xC955, 0xD832, 0xCB4F, 0x060B, 0x136A, 0x3EC8, 0xCBF4, 71 0xF509, 0x480F, 0x22B4, 0xE9D0, 0x3610, 0x35F0, 0xD66A, 0xC10A, 72 0x3476, 0x0C80, 0x002B, 0xEF29, 0x02A2, 0x8E39, 0xED70, 0x0D5D, 73 0x8AF0, 0x1793, 0x1CD9, 0xE7A7, 0x45C4, 0x422D, 0xCF10, 0x3A84, 74 0xF767, 0xC650, 0xF766, 0xCAA0, 0x2688, 0x1341, 0x3C45, 0x492B, 75 0x01EE, 0x156F, 0x0862, 0x28AF, 0x42C1, 0xE27E, 0x0164, 0x8BC3, 76 0x678D, 0xEECA, 0xCAF7, 0xE0AD, 0x15EB, 0x9059, 0xCAB6, 0xFE6E}; 77 78 static const int16_t ref_add[VEC_LENGTH] = { 79 0x0827, 0xCC5E, 0x934F, 0xEE23, 0xC137, 0x0899, 0x7FFF, 0xE647, 80 0x48C7, 0x7FFF, 0x1B32, 0xFFE7, 0x5956, 0x1AD7, 0x2D96, 0x8000, 81 0xB553, 0xE7E9, 0xC2A3, 0xC994, 0x7FFF, 0x072A, 0x8000, 0x14AC, 82 0x5AB8, 0xEF3B, 0xEE37, 0x2B7E, 0x14D1, 0x924E, 0x300B, 0xB957, 83 0x0784, 0xFB26, 0x393E, 0xAE6E, 0x34D3, 0xE22D, 0x81C0, 0xDB98, 84 0x8000, 0xA6F2, 0x0992, 0x6417, 0x7FFF, 0xE5E2, 0x53BF, 0x2543, 85 0xEB65, 0x34D3, 0xD9DF, 0xFF06, 0x154E, 0x8000, 0x2B58, 0x2AAC, 86 0xD839, 0x03E6, 0xBF7B, 0x0477, 0x05C7, 0x485F, 0xA7B9, 0x8000, 87 0x2518, 0x0C26, 0x148A, 0x1E53, 0xF910, 0x438D, 0x7FFF, 0xF2AD, 88 0x1EFA, 0x21E0, 0xDFF5, 0x9A50, 0xF7C9, 0xE3A5, 0xCB41, 0xD4AD, 89 0xE96C, 0x8000, 0xC529, 0xBE46, 0xC3F5, 0xDB5D, 0x19C2, 0x12B5, 90 0xBB27, 0xF5A7, 0x2EFA, 0x4038, 0xE8FF, 0x7159, 0x2304, 0xEB4D, 91 0xE317, 0xD611, 0xAB06, 0x681C, 0x0825, 0x022B, 0xED53, 0x402F, 92 0x064D, 0x3A86, 0x6050, 0xD5CD, 0x5E68, 0xCA23, 0xBAFF, 0xBC32, 93 0xD013, 0x9277, 0x400E, 0xD61D, 0x03BC, 0xC50F, 0xC086, 0x00EB, 94 0xDBA8, 0xCD6F, 0x15A4, 0xD051, 0xB0E7, 0x2EAA, 0x48CC, 0xA5AC, 95 0xFDAC, 0x49EF, 0x8000, 0xB044, 0x0250, 0x560C, 0xE6C4, 0x1F2F, 96 0x5648, 0x678B, 0x429A, 0xEB67, 0x1F37, 0x9F3B, 0x8458, 0xC609, 97 0x801A, 0x2012, 0xA525, 0xE477, 0x0B71, 0x38BF, 0xBD86, 0xA794, 98 0x9E23, 0xE970, 0xDDE1, 0x9C84, 0xC47B, 0xF5F8, 0xFF2E, 0x4237, 99 0x2851, 0xCEBF, 0xAD15, 0xDFED, 0x7FFF, 0x6936, 0x0D7A, 0x8000, 100 0xAED7, 0xC178, 0xFF54, 0xA172, 0xF2C4, 0xC859, 0xD6B9, 0xC0A1, 101 0x2BAA, 0x08C0, 0x0455, 0xEC63, 0xD6C4, 0x7FFF, 0xD6FF, 0x01B8, 102 0xD44E, 0x9968, 0x1F62, 0x9693, 0xD8BE, 0x146E, 0x07E9, 0x0143, 103 0xF12F, 0x7075, 0xC565, 0x9AE2, 0x3BDE, 0x4D58, 0x1554, 0xF567, 104 0x2F43, 0xD297, 0xE5E5, 0x8000, 0xFC4B, 0xCF81, 0x3A3C, 0x8158, 105 0x2F06, 0x4B8E, 0x75F2, 0x2351, 0x65D3, 0xDB3E, 0x0417, 0x0145, 106 0x0623, 0x3017, 0x06EE, 0xCC6F, 0xA1ED, 0x854F, 0xC262, 0x0C47, 107 0x8000, 0x095C, 0x5447, 0x1513, 0x6365, 0x5D0C, 0xFCC9, 0x5886, 108 0xF197, 0xCC83, 0x3ABC, 0xD191, 0x2DD9, 0x3BC2, 0x598C, 0x76B7, 109 0xA61E, 0xCB7E, 0xA51F, 0x21D4, 0x3BCD, 0x05D8, 0xDC10, 0xC6EE, 110 0x78B7, 0x8000, 0xCBB0, 0x92E1, 0xB971, 0x8000, 0xEB5F, 0x4ED1}; 111 112 static const int64_t ref_power_16[] = {44135408683}; 113 114 #define FFT_LENGTH 512 115 116 int32_t fft_in[FFT_LENGTH * 2]; 117 int32_t fft_out[FFT_LENGTH * 2]; 118 119 #define IIR_LENGTH 1024 120 121 static const int32_t iir_in[IIR_LENGTH] = { 122 1073741824, 1073721611, 1073660973, 1073559912, 1073418433, 123 1073236539, 1073014240, 1072751541, 1072448454, 1072104991, 124 1071721163, 1071296985, 1070832474, 1070327646, 1069782521, 125 1069197120, 1068571463, 1067905576, 1067199483, 1066453210, 126 1065666786, 1064840240, 1063973603, 1063066908, 1062120190, 127 1061133483, 1060106826, 1059040255, 1057933813, 1056787540, 128 1055601479, 1054375676, 1053110176, 1051805027, 1050460278, 129 1049075980, 1047652185, 1046188947, 1044686319, 1043144360, 130 1041563128, 1039942681, 1038283080, 1036584389, 1034846672, 131 1033069992, 1031254419, 1029400019, 1027506863, 1025575021, 132 1023604568, 1021595576, 1019548122, 1017462282, 1015338136, 133 1013175762, 1010975244, 1008736662, 1006460102, 1004145650, 134 1001793392, 999403417, 996975815, 994510677, 992008097, 135 989468168, 986890986, 984276648, 981625253, 978936900, 136 976211691, 973449728, 970651115, 967815958, 964944363, 137 962036438, 959092294, 956112040, 953095789, 950043654, 138 946955751, 943832195, 940673105, 937478599, 934248797, 139 930983821, 927683795, 924348841, 920979087, 917574658, 140 914135683, 910662291, 907154613, 903612782, 900036930, 141 896427192, 892783704, 889106603, 885396028, 881652118, 142 877875015, 874064860, 870221797, 866345970, 862437526, 143 858496612, 854523376, 850517968, 846480538, 842411239, 144 838310223, 834177646, 830013662, 825818428, 821592103, 145 817334846, 813046816, 808728176, 804379087, 799999714, 146 795590221, 791150775, 786681543, 782182692, 777654393, 147 773096815, 768510131, 763894513, 759250135, 754577171, 148 749875798, 745146192, 740388532, 735602997, 730789767, 149 725949023, 721080948, 716185724, 711263536, 706314570, 150 701339011, 696337047, 691308867, 686254659, 681174614, 151 676068923, 670937779, 665781374, 660599903, 655393561, 152 650162543, 644907047, 639627271, 634323413, 628995673, 153 623644252, 618269352, 612871173, 607449921, 602005798, 154 596539010, 591049763, 585538263, 580004717, 574449335, 155 568872326, 563273898, 557654264, 552013634, 546352221, 156 540670239, 534967900, 529245420, 523503015, 517740900, 157 511959292, 506158409, 500338470, 494499693, 488642298, 158 482766507, 476872539, 470960618, 465030965, 459083804, 159 453119359, 447137854, 441139515, 435124566, 429093236, 160 423045751, 416982338, 410903226, 404808644, 398698821, 161 392573987, 386434373, 380280210, 374111730, 367929164, 162 361732746, 355522709, 349299287, 343062714, 336813225, 163 330551055, 324276440, 317989617, 311690821, 305380290, 164 299058261, 292724974, 286380665, 280025574, 273659941, 165 267284004, 260898005, 254502182, 248096778, 241682033, 166 235258189, 228825487, 222384171, 215934481, 209476662, 167 203010957, 196537608, 190056859, 183568955, 177074140, 168 170572658, 164064754, 157550673, 151030660, 144504961, 169 137973822, 131437487, 124896205, 118350220, 111799779, 170 105245129, 98686517, 92124189, 85558393, 78989376, 171 72417384, 65842666, 59265470, 52686041, 46104630, 172 39521482, 32936847, 26350971, 19764104, 13176492, 173 6588384, 28, -6588327, -13176434, -19764046, 174 -26350914, -32936789, -39521425, -46104572, -52685984, 175 -59265412, -65842609, -72417327, -78989318, -85558336, 176 -92124132, -98686460, -105245072, -111799722, -118350163, 177 -124896148, -131437430, -137973764, -144504904, -151030603, 178 -157550616, -164064697, -170572601, -177074083, -183568898, 179 -190056802, -196537551, -203010900, -209476606, -215934425, 180 -222384114, -228825431, -235258133, -241681977, -248096722, 181 -254502126, -260897949, -267283949, -273659885, -280025519, 182 -286380610, -292724918, -299058206, -305380235, -311690766, 183 -317989562, -324276386, -330551001, -336813171, -343062660, 184 -349299233, -355522655, -361732692, -367929110, -374111676, 185 -380280156, -386434319, -392573933, -398698767, -404808591, 186 -410903173, -416982285, -423045698, -429093183, -435124514, 187 -441139462, -447137802, -453119307, -459083752, -465030913, 188 -470960566, -476872488, -482766455, -488642247, -494499642, 189 -500338419, -506158358, -511959241, -517740849, -523502964, 190 -529245370, -534967850, -540670189, -546352172, -552013585, 191 -557654215, -563273849, -568872277, -574449287, -580004669, 192 -585538214, -591049714, -596538962, -602005750, -607449873, 193 -612871126, -618269305, -623644206, -628995627, -634323367, 194 -639627225, -644907001, -650162497, -655393515, -660599858, 195 -665781329, -670937734, -676068879, -681174570, -686254615, 196 -691308823, -696337004, -701338968, -706314527, -711263493, 197 -716185681, -721080905, -725948981, -730789725, -735602955, 198 -740388491, -745146151, -749875757, -754577130, -759250094, 199 -763894473, -768510091, -773096775, -777654353, -782182653, 200 -786681504, -791150736, -795590183, -799999676, -804379049, 201 -808728138, -813046778, -817334808, -821592066, -825818391, 202 -830013625, -834177609, -838310187, -842411203, -846480503, 203 -850517933, -854523341, -858496578, -862437492, -866345936, 204 -870221763, -874064826, -877874981, -881652085, -885395995, 205 -889106571, -892783672, -896427160, -900036898, -903612751, 206 -907154582, -910662260, -914135653, -917574628, -920979057, 207 -924348812, -927683766, -930983793, -934248769, -937478571, 208 -940673077, -943832168, -946955724, -950043627, -953095762, 209 -956112014, -959092268, -962036413, -964944338, -967815933, 210 -970651091, -973449704, -976211667, -978936877, -981625230, 211 -984276625, -986890963, -989468145, -992008075, -994510655, 212 -996975793, -999403395, -1001793371, -1004145629, -1006460082, 213 -1008736642, -1010975224, -1013175743, -1015338117, -1017462264, 214 -1019548104, -1021595558, -1023604550, -1025575004, -1027506846, 215 -1029400002, -1031254403, -1033069977, -1034846656, -1036584374, 216 -1038283066, -1039942666, -1041563114, -1043144347, -1044686306, 217 -1046188934, -1047652173, -1049075968, -1050460266, -1051805016, 218 -1053110165, -1054375665, -1055601469, -1056787530, -1057933803, 219 -1059040246, -1060106816, -1061133474, -1062120182, -1063066900, 220 -1063973595, -1064840232, -1065666778, -1066453203, -1067199476, 221 -1067905570, -1068571458, -1069197114, -1069782516, -1070327641, 222 -1070832469, -1071296981, -1071721159, -1072104987, -1072448452, 223 -1072751539, -1073014237, -1073236538, -1073418431, -1073559911, 224 -1073660972, -1073721610, -1073741823, -1073721611, -1073660973, 225 -1073559913, -1073418434, -1073236541, -1073014242, -1072751544, 226 -1072448457, -1072104994, -1071721166, -1071296989, -1070832478, 227 -1070327651, -1069782526, -1069197125, -1068571469, -1067905582, 228 -1067199489, -1066453216, -1065666793, -1064840247, -1063973611, 229 -1063066917, -1062120198, -1061133492, -1060106835, -1059040265, 230 -1057933823, -1056787550, -1055601490, -1054375687, -1053110187, 231 -1051805039, -1050460290, -1049075993, -1047652198, -1046188959, 232 -1044686333, -1043144374, -1041563142, -1039942695, -1038283095, 233 -1036584404, -1034846687, -1033070008, -1031254435, -1029400035, 234 -1027506879, -1025575038, -1023604585, -1021595594, -1019548140, 235 -1017462301, -1015338155, -1013175781, -1010975263, -1008736682, 236 -1006460122, -1004145670, -1001793412, -999403438, -996975836, 237 -994510699, -992008119, -989468190, -986891009, -984276671, 238 -981625277, -978936924, -976211715, -973449753, -970651140, 239 -967815983, -964944388, -962036464, -959092320, -956112066, 240 -953095815, -950043681, -946955778, -943832223, -940673133, 241 -937478627, -934248825, -930983850, -927683824, -924348871, 242 -920979116, -917574688, -914135713, -910662321, -907154644, 243 -903612813, -900036961, -896427223, -892783736, -889106635, 244 -885396060, -881652151, -877875048, -874064893, -870221830, 245 -866346004, -862437561, -858496647, -854523411, -850518003, 246 -846480574, -842411274, -838310259, -834177682, -830013698, 247 -825818465, -821592140, -817334883, -813046854, -808728213, 248 -804379125, -799999752, -795590260, -791150814, -786681582, 249 -782182732, -777654433, -773096855, -768510171, -763894553, 250 -759250175, -754577212, -749875839, -745146234, -740388574, 251 -735603039, -730789809, -725949066, -721080991, -716185767, 252 -711263580, -706314613, -701339055, -696337091, -691308911, 253 -686254703, -681174659, -676068968, -670937824, -665781419, 254 -660599948, -655393606, -650162589, -644907093, -639627317, 255 -634323460, -628995720, -623644299, -618269399, -612871220, 256 -607449968, -602005845, -596539058, -591049811, -585538311, 257 -580004766, -574449384, -568872374, -563273947, -557654313, 258 -552013683, -546352271, -540670288, -534967950, -529245470, 259 -523503065, -517740950, -511959342, -506158460, -500338521, 260 -494499744, -488642350, -482766558, -476872591, -470960670, 261 -465031017, -459083856, -453119411, -447137906, -441139567, 262 -435124619, -429093289, -423045804, -416982391, -410903279, 263 -404808697, -398698874, -392574041, -386434427, -380280264, 264 -374111784, -367929218, -361732801, -355522764, -349299342, 265 -343062769, -336813280, -330551110, -324276495, -317989672, 266 -311690876, -305380345, -299058317, -292725029, -286380721, 267 -280025630, -273659997, -267284060, -260898060, -254502238, 268 -248096834, -241682089, -235258245, -228825544, -222384227, 269 -215934538, -209476719, -203011013, -196537664, -190056916, 270 -183569012, -177074196, -170572714, -164064810, -157550729, 271 -151030717, -144505018, -137973879, -131437545, -124896262, 272 -118350277, -111799837, -105245187, -98686574, -92124247, 273 -85558450, -78989433, -72417442, -65842724, -59265527, 274 -52686099, -46104687, -39521540, -32936904, -26351029, 275 -19764161, -13176549, -6588442, -86, 6588269, 276 13176377, 19763989, 26350856, 32936732, 39521367, 277 46104515, 52685927, 59265355, 65842551, 72417269, 278 78989261, 85558278, 92124075, 98686402, 105245015, 279 111799665, 118350106, 124896091, 131437373, 137973707, 280 144504847, 151030546, 157550559, 164064640, 170572544, 281 177074026, 183568842, 190056746, 196537494, 203010844, 282 209476550, 215934369, 222384058, 228825375, 235258077, 283 241681921, 248096666, 254502070, 260897893, 267283893, 284 273659830, 280025463, 286380554, 292724863, 299058151, 285 305380179, 311690711, 317989507, 324276331, 330550946, 286 336813116, 343062605, 349299179, 355522601, 361732638, 287 367929056, 374111622, 380280102, 386434266, 392573880, 288 398698714, 404808537, 410903120, 416982232, 423045645, 289 429093131, 435124461, 441139410, 447137749, 453119255, 290 459083700, 465030861, 470960514, 476872436, 482766404, 291 488642196, 494499591, 500338368, 506158307, 511959191, 292 517740799, 523502914, 529245320, 534967800, 540670139, 293 546352122, 552013535, 557654165, 563273800, 568872228, 294 574449238, 580004620, 585538166, 591049666, 596538914, 295 602005702, 607449826, 612871079, 618269257, 623644159, 296 628995580, 634323320, 639627179, 644906955, 650162451, 297 655393469, 660599812, 665781284, 670937689, 676068834, 298 681174525, 686254571, 691308779, 696336960, 701338924, 299 706314483, 711263450, 716185638, 721080863, 725948939, 300 730789683, 735602914, 740388449, 745146109, 749875715, 301 754577089, 759250053, 763894432, 768510051, 773096736, 302 777654314, 782182613, 786681465, 791150698, 795590144, 303 799999637, 804379011, 808728100, 813046741, 817334771, 304 821592029, 825818355, 830013589, 834177573, 838310151, 305 842411167, 846480467, 850517898, 854523307, 858496543, 306 862437458, 866345902, 870221729, 874064793, 877874948, 307 881652052, 885395963, 889106538, 892783640, 896427128, 308 900036867, 903612719, 907154552, 910662230, 914135622, 309 917574598, 920979028, 924348783, 927683737, 930983764, 310 934248740, 937478543, 940673049, 943832140, 946955696, 311 950043600, 953095736, 956111987, 959092242, 962036387, 312 964944313, 967815908, 970651066, 973449680, 976211643, 313 978936853, 981625207, 984276602, 986890941, 989468123, 314 992008053, 994510634, 996975772, 999403374, 1001793350, 315 1004145609, 1006460062, 1008736623, 1010975205, 1013175724, 316 1015338098, 1017462246, 1019548086, 1021595541, 1023604533, 317 1025574987, 1027506829, 1029399986, 1031254387, 1033069961, 318 1034846641, 1036584359, 1038283051, 1039942652, 1041563100, 319 1043144333, 1044686293, 1046188921, 1047652160, 1049075956, 320 1050460255, 1051805004, 1053110154, 1054375654, 1055601458, 321 1056787520, 1057933793, 1059040236, 1060106807, 1061133466, 322 1062120173, 1063066892, 1063973588, 1064840225, 1065666771, 323 1066453196, 1067199470, 1067905564, 1068571452, 1069197109, 324 1069782511, 1070327637, 1070832465, 1071296977, 1071721156, 325 1072104984, 1072448449, 1072751536, 1073014235, 1073236536, 326 1073418430, 1073559910, 1073660971, 1073721610}; 327 328 static int32_t iir_out[IIR_LENGTH] = {}; 329 330 #define IIR_M 5 331 332 static const int32_t coef_sos[IIR_M * 5] = {526133493, 848256040, 633507676, 333 236223201, 96636764, 0, 334 515396075, 654982512, 762356695, 335 204010946, 214748364, 762356695, 336 547608330, 987842478, 493921239, 337 891205713, 869730877, 998579896, 338 794568949, 0, 633507676, 339 858993459, 386547056, 848256040, 340 1063004405}; 341 342 static const int16_t coef_g[IIR_M] = {16384, 8192, 4096, 2048, 1024}; 343 static const int64_t ref_power_32[] = {17179951315}; 344 345 /* Value of MU and rightShift are arbitrary just for testing */ 346 #define MU 100 347 #define RSH 31 348 #define FIR_LENGTH 64 349 #define FIR_M 64 350 351 static int32_t fir_err[FIR_LENGTH] = {}; 352 static const int32_t fir_coef_ref[FIR_M] = { 353 0, 52686013, 105245101, 157550644, 209476634, 260897977, 354 311690793, 361732719, 410903200, 459083778, 506158384, 552013609, 355 596538986, 639627248, 681174592, 721080927, 759250114, 795590202, 356 830013643, 862437509, 892783688, 920979072, 946955737, 970651103, 357 992008086, 1010975234, 1027506854, 1041563121, 1053110171, 1062120186, 358 1068571460, 1072448453, 1073741823, 1072448456, 1068571466, 1062120194, 359 1053110182, 1041563135, 1027506871, 1010975253, 992008108, 970651128, 360 946955764, 920979102, 892783720, 862437544, 830013680, 795590241, 361 759250155, 721080969, 681174636, 639627294, 596539034, 552013659, 362 506158434, 459083830, 410903253, 361732773, 311690848, 260898033, 363 209476691, 157550701, 105245158, 52686070}; 364 365 static const int32_t fir_in_ref[FIR_LENGTH] = { 366 2784, 52687975, 105245127, 157551129, 209480572, 260899599, 367 311690864, 361732998, 410904911, 459085677, 506162152, 552013733, 368 596539132, 639630371, 681178382, 721082228, 759252428, 795593181, 369 830014978, 862438380, 892787610, 920979899, 946958840, 970653120, 370 992011496, 1010976065, 1027509675, 1041565392, 1053112620, 1062121586, 371 1068572784, 1072451133, 1073743011, 1072450743, 1068572751, 1062121479, 372 1053112929, 1041563681, 1027509789, 1010979047, 992010538, 970651799, 373 946958915, 920979653, 892787363, 862441108, 830016340, 795592792, 374 759252140, 721081076, 681177636, 639628174, 596540644, 552013841, 375 506160429, 459083884, 410905774, 361733050, 311692285, 260901927, 376 209478927, 157554346, 105247954, 52687892}; 377 378 static const int32_t fir_ref_ref[FIR_LENGTH + FIR_M] = { 379 0, 52686013, 105245101, 157550644, 209476634, 380 260897977, 311690793, 361732719, 410903200, 459083778, 381 506158384, 552013609, 596538986, 639627248, 681174592, 382 721080927, 759250114, 795590202, 830013643, 862437509, 383 892783688, 920979072, 946955737, 970651103, 992008086, 384 1010975234, 1027506854, 1041563121, 1053110171, 1062120186, 385 1068571460, 1072448453, 1073741823, 1072448456, 1068571466, 386 1062120194, 1053110182, 1041563135, 1027506871, 1010975253, 387 992008108, 970651128, 946955764, 920979102, 892783720, 388 862437544, 830013680, 795590241, 759250155, 721080969, 389 681174636, 639627294, 596539034, 552013659, 506158434, 390 459083830, 410903253, 361732773, 311690848, 260898033, 391 209476691, 157550701, 105245158, 52686070, 57, 392 -52685955, -105245043, -157550587, -209476578, -260897921, 393 -311690738, -361732665, -410903146, -459083726, -506158333, 394 -552013560, -596538938, -639627202, -681174547, -721080884, 395 -759250074, -795590163, -830013607, -862437475, -892783656, 396 -920979042, -946955710, -970651079, -992008064, -1010975214, 397 -1027506838, -1041563107, -1053110159, -1062120177, -1068571455, 398 -1072448450, -1073741823, -1072448459, -1068571472, -1062120203, 399 -1053110193, -1041563149, -1027506888, -1010975273, -992008130, 400 -970651152, -946955791, -920979131, -892783752, -862437578, 401 -830013716, -795590279, -759250196, -721081012, -681174681, 402 -639627340, -596539082, -552013708, -506158485, -459083882, 403 -410903306, -361732828, -311690903, -260898088, -209476747, 404 -157550758, -105245215, -52686128}; 405