changeset 41:37e39cad5838

libgsmefr/*.tab: import from ETSI code
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 24 Nov 2022 22:58:29 +0000
parents 0f1fe48bdb46
children ba044871c9dd
files libgsmefr/grid.tab libgsmefr/inv_sqrt.tab libgsmefr/lag_wind.tab libgsmefr/log2.tab libgsmefr/lsp_lsf.tab libgsmefr/pow2.tab libgsmefr/q_plsf_5.tab libgsmefr/window2.tab
diffstat 8 files changed, 1210 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/grid.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,26 @@
+/*-------------------------------------------------------------*
+ *  Table for az_lsf()                                         *
+ *                                                             *
+ * grid[0] = 1.0;                                              *
+ * grid[grid_points+1] = -1.0;                                 *
+ * for (i = 1; i < grid_points; i++)                           *
+ *   grid[i] = cos((6.283185307*i)/(2.0*grid_points));         *
+ *                                                             *
+ *-------------------------------------------------------------*/
+
+#define grid_points 60
+
+static const Word16 grid[grid_points + 1] =
+{
+    32760, 32723, 32588, 32364, 32051, 31651,
+    31164, 30591, 29935, 29196, 28377, 27481,
+    26509, 25465, 24351, 23170, 21926, 20621,
+    19260, 17846, 16384, 14876, 13327, 11743,
+    10125, 8480, 6812, 5126, 3425, 1714,
+    0, -1714, -3425, -5126, -6812, -8480,
+    -10125, -11743, -13327, -14876, -16384, -17846,
+    -19260, -20621, -21926, -23170, -24351, -25465,
+    -26509, -27481, -28377, -29196, -29935, -30591,
+    -31164, -31651, -32051, -32364, -32588, -32723,
+    -32760
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/inv_sqrt.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,13 @@
+/*-----------------------------------------------------*
+ | Table for routine Inv_sqrt().                       |
+ -----------------------------------------------------*/
+
+static const Word16 table[49] =
+{
+
+    32767, 31790, 30894, 30070, 29309, 28602, 27945, 27330, 26755, 26214,
+    25705, 25225, 24770, 24339, 23930, 23541, 23170, 22817, 22479, 22155,
+    21845, 21548, 21263, 20988, 20724, 20470, 20225, 19988, 19760, 19539,
+    19326, 19119, 18919, 18725, 18536, 18354, 18176, 18004, 17837, 17674,
+    17515, 17361, 17211, 17064, 16921, 16782, 16646, 16514, 16384
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/lag_wind.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,46 @@
+/*-----------------------------------------------------*
+ | Table of lag_window for autocorrelation.            |
+ | noise floor = 1.0001   = (0.9999  on r[1] ..r[10])  |
+ | Bandwitdh expansion = 60 Hz                         |
+ |                                                     |
+ |                                                     |
+ | lag_wind[0] =  1.00000000    (not stored)           |
+ | lag_wind[1] =  0.99879038                           |
+ | lag_wind[2] =  0.99546897                           |
+ | lag_wind[3] =  0.98995781                           |
+ | lag_wind[4] =  0.98229337                           |
+ | lag_wind[5] =  0.97252619                           |
+ | lag_wind[6] =  0.96072036                           |
+ | lag_wind[7] =  0.94695264                           |
+ | lag_wind[8] =  0.93131179                           |
+ | lag_wind[9] =  0.91389757                           |
+ | lag_wind[10]=  0.89481968                           |
+ -----------------------------------------------------*/
+
+static const Word16 lag_h[10] =
+{
+    32728,
+    32619,
+    32438,
+    32187,
+    31867,
+    31480,
+    31029,
+    30517,
+    29946,
+    29321
+};
+
+static const Word16 lag_l[10] =
+{
+    11904,
+    17280,
+    30720,
+    25856,
+    24192,
+    28992,
+    24384,
+    7360,
+    19520,
+    14784
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/log2.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,11 @@
+/*-----------------------------------------------------*
+ | Table for routine Log2().                           |
+ -----------------------------------------------------*/
+
+static const Word16 table[33] =
+{
+    0, 1455, 2866, 4236, 5568, 6863, 8124, 9352, 10549, 11716,
+    12855, 13967, 15054, 16117, 17156, 18172, 19167, 20142, 21097, 22033,
+    22951, 23852, 24735, 25603, 26455, 27291, 28113, 28922, 29716, 30497,
+    31266, 32023, 32767
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/lsp_lsf.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,34 @@
+/*-----------------------------------------------------*
+ | Tables for function Lsf_lsp() and Lsp_lsf()         |
+  -----------------------------------------------------*/
+
+/* table of cos(x) */
+
+static const Word16 table[65] =
+{
+    32767, 32729, 32610, 32413, 32138, 31786, 31357, 30853,
+    30274, 29622, 28899, 28106, 27246, 26320, 25330, 24279,
+    23170, 22006, 20788, 19520, 18205, 16846, 15447, 14010,
+    12540, 11039, 9512, 7962, 6393, 4808, 3212, 1608,
+    0, -1608, -3212, -4808, -6393, -7962, -9512, -11039,
+    -12540, -14010, -15447, -16846, -18205, -19520, -20788, -22006,
+    -23170, -24279, -25330, -26320, -27246, -28106, -28899, -29622,
+    -30274, -30853, -31357, -31786, -32138, -32413, -32610, -32729,
+    (Word16) 0x8000
+};
+
+/* 0x8000 = -32768 (used to silence the compiler) */
+
+/* slope used to compute y = acos(x) */
+
+static const Word16 slope[64] =
+{
+    -26887, -8812, -5323, -3813, -2979, -2444, -2081, -1811,
+    -1608, -1450, -1322, -1219, -1132, -1059, -998, -946,
+    -901, -861, -827, -797, -772, -750, -730, -713,
+    -699, -687, -677, -668, -662, -657, -654, -652,
+    -652, -654, -657, -662, -668, -677, -687, -699,
+    -713, -730, -750, -772, -797, -827, -861, -901,
+    -946, -998, -1059, -1132, -1219, -1322, -1450, -1608,
+    -1811, -2081, -2444, -2979, -3813, -5323, -8812, -26887
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/pow2.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,11 @@
+/*-----------------------------------------------------*
+ | Table for routine Pow2().                           |
+ -----------------------------------------------------*/
+
+static const Word16 table[33] =
+{
+    16384, 16743, 17109, 17484, 17867, 18258, 18658, 19066, 19484, 19911,
+    20347, 20792, 21247, 21713, 22188, 22674, 23170, 23678, 24196, 24726,
+    25268, 25821, 26386, 26964, 27554, 28158, 28774, 29405, 30048, 30706,
+    31379, 32066, 32767
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/q_plsf_5.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,1010 @@
+/*--------------------------------------------------------------------------*
+* Quantization tables for split_MQ of 2 sets of LSFs in a 20 ms frame.     *
+* See "q_plsf_5.c"                                                         *
+*--------------------------------------------------------------------------*/
+
+/* LSF means ->normalize frequency domain */
+
+static const Word16 mean_lsf[10] =
+{
+    1384,
+    2077,
+    3420,
+    5108,
+    6742,
+    8122,
+    9863,
+    11092,
+    12714,
+    13701
+};
+
+#ifndef D_HOMING
+
+#define DICO1_SIZE  128
+#define DICO2_SIZE  256
+#define DICO3_SIZE  256
+#define DICO4_SIZE  256
+#define DICO5_SIZE  64
+
+static const Word16 dico1_lsf[DICO1_SIZE * 4] =
+{
+    -451, -1065, -529, -1305,
+    -450, -756, -497, -863,
+    -384, -619, -413, -669,
+    -317, -538, -331, -556,
+    -414, -508, -424, -378,
+    -274, -324, -434, -614,
+    -226, -500, -232, -514,
+    -263, -377, -298, -410,
+    -151, -710, -174, -818,
+    -149, -412, -156, -429,
+    -288, -462, -186, -203,
+    -170, -302, -191, -321,
+    -131, -147, -297, -395,
+    -228, -214, -245, -192,
+    -67, -316, -71, -327,
+    -104, -205, -94, -183,
+    -143, -38, -193, -95,
+    16, -76, -124, -248,
+    23, -237, 24, -244,
+    18, -136, 44, -111,
+    -33, -24, -25, 0,
+    149, 19, 23, -143,
+    158, -169, 174, -181,
+    133, -55, 165, -26,
+    111, 84, 98, 75,
+    87, 183, -115, -11,
+    -8, 130, 11, 170,
+    254, 77, 205, 17,
+    183, 112, 262, 194,
+    202, 287, 95, 189,
+    -42, -105, 234, 179,
+    39, 186, 163, 345,
+    332, 199, 299, 161,
+    -54, 285, -78, 281,
+    -133, 141, -182, 111,
+    249, 341, 271, 364,
+    93, 403, 75, 391,
+    92, 510, -138, 220,
+    -185, -29, -34, 361,
+    -115, 320, 3, 554,
+    99, 286, 218, 591,
+    -245, 406, -268, 453,
+    0, 580, 25, 606,
+    275, 532, 148, 450,
+    -73, 739, -285, 518,
+    -288, 94, -203, 674,
+    -140, -74, 205, 714,
+    -114, 299, 176, 923,
+    182, 557, 240, 705,
+    -16, 513, 485, 593,
+    293, 384, 451, 617,
+    -38, 50, 563, 529,
+    303, 209, 459, 363,
+    433, 452, 450, 454,
+    367, 606, 477, 741,
+    432, 353, 368, 267,
+    361, 716, 273, 583,
+    453, 166, 510, 172,
+    201, 629, 274, 191,
+    568, 639, 302, 298,
+    634, 387, 643, 350,
+    587, 560, 612, 565,
+    600, 788, 487, 672,
+    512, 1015, 321, 333,
+    357, 854, -125, 413,
+    474, 712, 17, -151,
+    564, 285, 270, -241,
+    971, 889, 489, 220,
+    510, 896, 549, 924,
+    327, 825, 290, 911,
+    540, 1108, 158, 805,
+    199, 957, 511, 730,
+    100, 874, 13, 791,
+    435, 632, 676, 972,
+    249, 900, 467, 1218,
+    781, 1074, 585, 785,
+    -23, 669, 267, 1043,
+    619, 1084, 615, 1145,
+    622, 905, 916, 1049,
+    80, 331, 584, 1075,
+    89, 639, 988, 961,
+    770, 720, 798, 699,
+    492, 447, 899, 627,
+    271, 1188, 725, 1333,
+    87, 603, 832, 1603,
+    616, 1127, 890, 1505,
+    1000, 1156, 866, 1009,
+    995, 827, 1149, 858,
+    817, 1450, 773, 1320,
+    500, 1389, 312, 1153,
+    -20, 1084, 64, 1283,
+    2, 1172, 399, 1869,
+    514, 1706, 502, 1636,
+    886, 1522, 416, 600,
+    1131, 1350, 1275, 1390,
+    889, 1795, 914, 1766,
+    227, 1183, 1250, 1826,
+    505, 1854, 919, 2353,
+    -199, 431, 152, 1735,
+    -213, -28, 392, 1334,
+    -153, -52, 978, 1151,
+    -323, -400, 813, 1703,
+    -136, 84, 1449, 2015,
+    -331, -143, -137, 1192,
+    -256, 534, -157, 1031,
+    -307, -439, 542, 731,
+    -329, -420, -97, 616,
+    -362, -168, -322, 366,
+    -247, -110, -211, 89,
+    -196, -309, 20, 59,
+    -364, -463, -286, 89,
+    -336, 175, -432, 141,
+    -379, -190, -434, -196,
+    -79, 150, -278, -227,
+    -280, 166, -555, -422,
+    -155, 541, -366, 54,
+    -29, -83, -301, -774,
+    186, 628, -397, -264,
+    242, 293, -197, -585,
+    124, 410, 53, -133,
+    10, 340, -570, -1065,
+    65, -446, 68, -493,
+    383, 937, -357, -711,
+    -359, -250, -677, -1068,
+    292, -26, 363, 6,
+    607, 1313, -127, -10,
+    1513, 1886, 713, 972,
+    1469, 2181, 1443, 2016
+};
+
+static const Word16 dico2_lsf[DICO2_SIZE * 4] =
+{
+    -1631, -1600, -1796, -2290,
+    -1027, -1770, -1100, -2025,
+    -1277, -1388, -1367, -1534,
+    -947, -1461, -972, -1524,
+    -999, -1222, -1020, -1172,
+    -815, -987, -992, -1371,
+    -1216, -1006, -1289, -1094,
+    -744, -1268, -755, -1293,
+    -862, -923, -905, -984,
+    -678, -1051, -685, -1050,
+    -1087, -985, -1062, -679,
+    -989, -641, -1127, -976,
+    -762, -654, -890, -806,
+    -833, -1091, -706, -629,
+    -621, -806, -640, -812,
+    -775, -634, -779, -543,
+    -996, -565, -1075, -580,
+    -546, -611, -572, -619,
+    -760, -290, -879, -526,
+    -823, -462, -795, -253,
+    -553, -415, -589, -439,
+    -533, -340, -692, -935,
+    -505, -772, -702, -1131,
+    -263, -306, -971, -483,
+    -445, -74, -555, -548,
+    -614, -129, -693, -234,
+    -396, -246, -475, -250,
+    -265, -404, -376, -514,
+    -417, -510, -300, -313,
+    -334, -664, -463, -814,
+    -386, -704, -337, -615,
+    -234, -201, -233, -239,
+    -167, -567, -203, -619,
+    -147, -415, -115, -352,
+    -166, -750, -171, -761,
+    -270, -879, -264, -903,
+    -367, -744, 43, -475,
+    14, -653, 43, -670,
+    11, -448, -59, -521,
+    -126, -119, -155, -613,
+    -42, -863, -27, -931,
+    136, -483, 183, -468,
+    55, -298, 55, -304,
+    313, -609, 313, -720,
+    322, -167, 100, -541,
+    -3, -119, -111, -187,
+    233, -236, 260, -234,
+    26, -165, 134, -45,
+    -40, -549, 360, -203,
+    378, -388, 450, -383,
+    275, 20, 182, -103,
+    246, -111, 431, 37,
+    462, -146, 487, -157,
+    -284, -59, 503, -184,
+    24, 53, -3, 54,
+    122, 259, 333, 66,
+    484, 104, 436, 68,
+    195, 116, 190, 206,
+    269, -9, 482, 352,
+    382, 285, 399, 277,
+    452, 256, 69, 186,
+    13, 297, -13, 259,
+    -95, 30, 56, 394,
+    196, 425, 205, 456,
+    281, 577, 15, 191,
+    375, 290, 407, 576,
+    -56, 227, 544, 405,
+    0, 549, -92, 528,
+    -229, 351, -245, 338,
+    -362, 435, 167, 527,
+    -75, 302, 91, 824,
+    129, 599, 496, 679,
+    186, 749, 153, 737,
+    -281, 600, -348, 615,
+    -236, 769, 41, 881,
+    38, 890, -220, 841,
+    -357, 883, -393, 903,
+    -634, 474, -444, 850,
+    -175, 678, -493, 242,
+    -519, 785, -714, 582,
+    -541, 366, -543, 434,
+    -597, 500, -765, 222,
+    -702, 917, -743, 962,
+    -869, 501, -899, 548,
+    -379, 200, -435, 157,
+    -819, 214, -861, 157,
+    -614, 40, -632, 94,
+    -883, -54, -741, 516,
+    -501, 298, -614, -171,
+    -870, -161, -865, -23,
+    -818, 93, -1015, -267,
+    -662, -359, -549, 2,
+    -442, -121, -377, 0,
+    -227, 33, -414, -126,
+    -129, 212, -934, 34,
+    -1082, -282, -1119, -268,
+    -710, -825, -420, -191,
+    -1076, -928, -917, -93,
+    -628, -358, 97, 7,
+    -206, -393, -101, 24,
+    -203, 38, -168, 83,
+    -599, -423, -279, 426,
+    -700, 118, -75, 206,
+    -981, -673, -680, 417,
+    -367, 37, -279, 474,
+    -129, -318, 319, 296,
+    -626, -39, 343, 602,
+    -696, -39, -303, 940,
+    104, 233, -380, 137,
+    -36, 269, -75, -214,
+    120, 43, -529, -477,
+    459, 164, -202, -229,
+    -49, -167, 609, 792,
+    98, -220, 915, 148,
+    293, 283, 869, 91,
+    575, 394, 326, -78,
+    717, 67, 365, -323,
+    616, -36, 731, 27,
+    619, 238, 632, 273,
+    448, 99, 801, 476,
+    869, 273, 685, 64,
+    789, 72, 1021, 217,
+    793, 459, 734, 360,
+    646, 480, 360, 322,
+    429, 464, 638, 430,
+    756, 363, 1000, 404,
+    683, 528, 602, 615,
+    655, 413, 946, 687,
+    937, 602, 904, 604,
+    555, 737, 786, 662,
+    467, 654, 362, 589,
+    929, 710, 498, 478,
+    415, 420, 693, 883,
+    813, 683, 781, 925,
+    913, 939, 726, 732,
+    491, 853, 531, 948,
+    734, 963, 315, 808,
+    761, 755, 1144, 760,
+    655, 1076, 826, 1057,
+    1091, 838, 1003, 808,
+    1047, 1133, 659, 1101,
+    992, 1050, 1074, 1075,
+    971, 694, 1226, 1054,
+    571, 841, 884, 1404,
+    1379, 1096, 1080, 861,
+    1231, 735, 1284, 760,
+    1272, 991, 1367, 1053,
+    1257, 700, 1050, 534,
+    988, 453, 1264, 599,
+    1140, 679, 1621, 815,
+    1384, 521, 1317, 393,
+    1564, 805, 1448, 686,
+    1068, 648, 875, 307,
+    1083, 361, 1047, 317,
+    1417, 964, 675, 571,
+    1152, 79, 1114, -47,
+    1530, 311, 1721, 314,
+    1166, 689, 514, -94,
+    349, 282, 1412, 328,
+    1025, 487, -65, 57,
+    805, 970, 36, 62,
+    769, -263, 791, -346,
+    637, 699, -137, 620,
+    534, 541, -735, 194,
+    711, 300, -268, -863,
+    926, 769, -708, -428,
+    506, 174, -892, -630,
+    435, 547, -1435, -258,
+    621, 471, -1018, -1368,
+    -393, 521, -920, -686,
+    -25, 20, -982, -1156,
+    340, 9, -1558, -1135,
+    -352, 48, -1579, -402,
+    -887, 6, -1156, -888,
+    -548, -352, -1643, -1168,
+    -159, 610, -2024, -963,
+    -225, 193, -1656, -1960,
+    -245, -493, -964, -1680,
+    -936, -635, -1299, -1744,
+    -1388, -604, -1540, -835,
+    -1397, -135, -1588, -290,
+    -1670, -712, -2011, -1632,
+    -1663, -27, -2258, -811,
+    -1157, 184, -1265, 189,
+    -1367, 586, -2011, 201,
+    -790, 712, -1210, 3,
+    -1033, 808, -1251, 830,
+    -111, 635, -1636, 447,
+    -463, -949, -445, -928,
+    -504, -1162, -501, -1211,
+    144, -351, -372, -1052,
+    -283, -1059, -279, -1123,
+    -575, -1438, -587, -1614,
+    -935, -984, 229, 690,
+    -921, -719, -403, 1362,
+    -685, -465, 874, 397,
+    -509, -46, 317, 1334,
+    -485, 456, 813, 439,
+    -411, 339, 898, 1067,
+    -425, 46, 1441, 497,
+    -909, -800, 1465, 1046,
+    -254, -321, 1430, 1165,
+    68, 350, 1034, 666,
+    370, 11, 1311, 790,
+    143, 232, 1041, 1562,
+    -114, 663, 1616, 1078,
+    454, 579, 1275, 1040,
+    -76, 909, 752, 1067,
+    153, 512, 348, 1214,
+    614, 385, 1843, 808,
+    269, 1034, 203, 1086,
+    652, 1017, 1783, 1130,
+    429, 1327, 387, 1384,
+    -49, 1183, -72, 1215,
+    -416, 1001, 544, 1749,
+    -352, 1223, -502, 1199,
+    -589, 569, -227, 1630,
+    -142, 1578, -230, 1715,
+    -714, 1288, -838, 1398,
+    1131, 1357, -208, 1232,
+    437, 965, -929, 818,
+    811, 1410, 859, 1507,
+    164, 1212, 1387, 1793,
+    484, 1874, 456, 2063,
+    996, 1170, 1326, 1402,
+    1316, 1360, 1135, 1262,
+    1234, 1618, 1361, 1768,
+    1421, 1227, 1584, 1347,
+    854, 672, 1685, 1566,
+    1139, 1270, 2016, 1825,
+    1773, 1581, 1532, 1460,
+    1487, 946, 1659, 1021,
+    1744, 1212, 1392, 977,
+    1772, 1161, 1826, 1164,
+    1718, 1429, 1973, 1591,
+    1185, 864, 2132, 1061,
+    1799, 814, 1838, 757,
+    2104, 1315, 2054, 1258,
+    2113, 915, 2331, 930,
+    1467, 1147, 2590, 1439,
+    2245, 1744, 2090, 1620,
+    2358, 1454, 2666, 1506,
+    1876, 1837, 2070, 1975,
+    1739, 1577, 682, 1289,
+    1584, 2045, 1454, 2098,
+    2498, 2004, 2711, 2066,
+    726, 1588, 2756, 2336,
+    228, 847, 2456, 1659,
+    36, 301, 1942, 1957,
+    -446, -96, 2154, 1396,
+    1533, 1101, 14, 608,
+    -923, -732, 1383, 1982,
+    1345, 952, -680, 321,
+    1281, 1268, -1594, 365,
+    941, 946, -1737, -822,
+    2374, 2787, 1821, 2788
+};
+
+static const Word16 dico3_lsf[DICO3_SIZE * 4] =
+{
+    -1812, -2275, -1879, -2537,
+    -1640, -1848, -1695, -2004,
+    -1220, -1912, -1221, -2106,
+    -1559, -1588, -1573, -1556,
+    -1195, -1615, -1224, -1727,
+    -1359, -1151, -1616, -1948,
+    -1274, -1391, -1305, -1403,
+    -1607, -1179, -1676, -1311,
+    -1443, -1478, -1367, -898,
+    -1256, -1059, -1331, -1134,
+    -982, -1133, -1149, -1504,
+    -1080, -1308, -1020, -1183,
+    -980, -1486, -967, -1495,
+    -988, -922, -1047, -1077,
+    -838, -1179, -858, -1222,
+    -1131, -1041, -1064, -767,
+    -872, -1157, -701, -880,
+    -706, -906, -774, -1016,
+    -578, -1080, -801, -1478,
+    -591, -1111, -592, -1146,
+    -713, -1388, -640, -1376,
+    -597, -1059, -416, -903,
+    -686, -832, -661, -708,
+    -444, -868, -490, -921,
+    -374, -776, -619, -1170,
+    -585, -549, -769, -795,
+    -435, -659, -530, -741,
+    -498, -837, -357, -597,
+    -279, -871, -243, -887,
+    -282, -665, -280, -667,
+    -165, -560, -394, -903,
+    -362, -410, -448, -583,
+    -409, -574, -313, -357,
+    -637, -548, -570, -436,
+    -896, -504, -382, -757,
+    -58, -481, -165, -618,
+    -191, -374, -234, -382,
+    -222, -683, -25, -480,
+    -418, -359, -730, -353,
+    -324, -157, -432, -322,
+    -394, -303, -284, -104,
+    -601, -289, -556, -196,
+    -588, -150, -659, -608,
+    -473, -24, -68, -448,
+    -474, -8, -506, -45,
+    -748, -184, -844, -252,
+    -901, -91, -584, -97,
+    -652, 138, -764, -131,
+    -678, -12, -670, 165,
+    -259, -3, -840, -107,
+    -909, 37, -992, 44,
+    -854, -415, -839, 13,
+    -1001, -271, -1026, -309,
+    -798, -478, -832, -488,
+    -943, 168, -1112, -387,
+    -1185, -101, -1183, -40,
+    -941, -316, -1030, -770,
+    -1044, -625, -1081, -538,
+    -1224, -299, -1312, -436,
+    -1197, -663, -1167, -161,
+    -1216, -690, -1237, -831,
+    -1432, -720, -1403, -493,
+    -898, -740, -922, -801,
+    -1102, -402, -1579, -964,
+    -1061, -638, -1269, -1438,
+    -1499, -934, -1502, -895,
+    -1598, -564, -1723, -717,
+    -606, -597, -1166, -1085,
+    -1369, -468, -1946, -1493,
+    -1838, -953, -1932, -931,
+    -1499, -188, -1635, -421,
+    -1457, -338, -1448, -22,
+    -1942, -422, -2006, -249,
+    -496, -114, -1910, -755,
+    -1289, 174, -1451, -109,
+    -482, -257, -1221, -508,
+    -1617, 151, -1694, 208,
+    -654, 107, -1651, 29,
+    -1141, 279, -1215, 306,
+    -1228, -506, -730, -175,
+    -1236, -101, -969, 551,
+    -870, 278, -823, 315,
+    -563, 376, -1051, 228,
+    -507, 280, -599, 281,
+    -758, 253, -305, 379,
+    -755, -134, -611, 660,
+    -824, 536, -817, 646,
+    -413, 49, -341, 177,
+    -453, 526, -482, 589,
+    -71, 339, -657, 264,
+    -244, 295, -237, 315,
+    -387, 569, -506, -9,
+    -377, 14, -160, 661,
+    -216, 40, -308, -46,
+    95, 214, -242, 167,
+    -86, 192, -56, 27,
+    -76, 31, 36, 309,
+    -106, -182, -113, 74,
+    -441, -22, 23, 139,
+    81, -11, 44, 15,
+    -87, -137, -118, -207,
+    -158, -58, 272, -92,
+    -156, -441, 8, -136,
+    128, -221, 101, -218,
+    40, -197, -76, -456,
+    9, -445, 33, -423,
+    226, 60, 73, -222,
+    156, -399, 280, -318,
+    245, -341, 166, -499,
+    339, -190, 327, -219,
+    325, -137, -89, -596,
+    100, -627, 144, -677,
+    487, 28, 252, -391,
+    214, -41, 282, -28,
+    99, -286, 331, 49,
+    459, -388, 565, -369,
+    436, 28, 336, -9,
+    397, -167, 618, 34,
+    596, -17, 561, -140,
+    299, 79, 522, 125,
+    203, 2, 244, 288,
+    255, 211, 175, 82,
+    596, 187, 517, 108,
+    381, 255, 365, 297,
+    497, 352, 327, -82,
+    25, 210, 371, 245,
+    261, 3, 545, 449,
+    140, 294, 44, 295,
+    212, 347, 244, 494,
+    331, 528, 201, 307,
+    349, 411, 613, 284,
+    614, 413, 464, 322,
+    624, 397, 97, 200,
+    -160, 384, 149, 362,
+    495, 525, 269, 585,
+    33, 491, -121, 433,
+    427, 611, 498, 516,
+    171, 443, 497, 666,
+    440, 275, 566, 575,
+    146, 639, 155, 670,
+    -33, 173, 212, 696,
+    -166, 601, -191, 695,
+    -489, 503, 175, 742,
+    214, 476, 372, 1083,
+    578, 530, 586, 777,
+    425, 874, 315, 841,
+    374, 848, -165, 565,
+    35, 991, -39, 1062,
+    329, 712, 786, 840,
+    645, 795, 661, 676,
+    571, 918, 632, 1079,
+    673, 817, 318, 388,
+    874, 1012, 564, 848,
+    880, 620, 557, 479,
+    671, 453, 692, 468,
+    840, 642, 844, 645,
+    506, 428, 897, 567,
+    837, 387, 962, 499,
+    691, 561, 939, 926,
+    783, 296, 790, 268,
+    1028, 530, 874, 329,
+    548, 143, 675, 291,
+    503, 66, 1041, 359,
+    786, 97, 805, 33,
+    837, 470, 511, 49,
+    1092, 327, 1174, 323,
+    3, 242, 872, 474,
+    689, 429, 1329, 678,
+    1042, 620, 1109, 664,
+    321, 193, 889, 950,
+    1153, 874, 893, 635,
+    877, 862, 948, 913,
+    1293, 665, 1320, 639,
+    997, 793, 1402, 1030,
+    1176, 1012, 1110, 959,
+    1410, 925, 1403, 915,
+    543, 862, 1116, 1222,
+    835, 1190, 835, 1190,
+    959, 1148, 1147, 1376,
+    1300, 1193, 1415, 1231,
+    1335, 1341, 746, 1092,
+    1711, 1283, 1389, 1073,
+    1334, 1566, 1153, 1475,
+    1645, 1137, 1825, 1220,
+    1056, 1382, 1521, 1730,
+    1632, 1545, 1620, 1542,
+    855, 1596, 865, 1667,
+    693, 885, 1716, 1519,
+    1167, 1296, 2209, 1760,
+    1952, 1493, 2020, 1482,
+    1534, 1866, 1694, 2008,
+    1566, 748, 1761, 825,
+    294, 1392, 1084, 2058,
+    621, 1315, 365, 1287,
+    198, 1028, 488, 1408,
+    249, 403, 1014, 1561,
+    324, 363, 1645, 1044,
+    193, 367, 2034, 1859,
+    -251, 579, 750, 994,
+    -243, 30, 1325, 879,
+    -28, -169, 624, 917,
+    -453, 159, 186, 1370,
+    -614, 6, 537, 392,
+    -94, -291, 781, 229,
+    -128, -298, 245, 491,
+    -701, -648, 972, 789,
+    -501, -640, 178, 255,
+    -365, -390, -255, 317,
+    -958, -294, -191, 228,
+    -775, -447, 157, -237,
+    -657, -720, -407, 92,
+    -117, -611, 334, -230,
+    -679, -1084, -144, -317,
+    -901, -861, -738, -360,
+    -85, -727, -90, -787,
+    100, -22, -391, -263,
+    -56, -73, -337, -754,
+    5, -189, -706, -624,
+    89, -344, -135, -1113,
+    -353, -237, -684, -1135,
+    -275, -1102, -269, -1203,
+    152, 145, -722, -1232,
+    49, 80, -1248, -776,
+    -248, 391, -732, -547,
+    469, 218, -255, -864,
+    69, 366, -166, -485,
+    -688, 191, -1212, -1196,
+    -170, -169, -1308, -1631,
+    321, 470, -1419, -1243,
+    -64, 272, -1361, -248,
+    492, 565, -721, -609,
+    195, 485, -573, -133,
+    427, 202, -171, -118,
+    199, 575, 2, -31,
+    694, 755, -1366, -39,
+    552, 557, -489, 271,
+    680, 537, 13, -453,
+    855, 954, -133, -52,
+    -81, 738, -1169, 637,
+    1055, 1059, -95, 676,
+    1259, 1081, 489, 305,
+    -449, 954, -534, 996,
+    -969, 866, -1058, 1059,
+    -1294, 618, -1416, 617,
+    -458, 1366, -159, 1821,
+    -774, -528, -14, 1110,
+    -1202, -901, -772, 433,
+    -1256, -1255, -1011, -302,
+    -602, -585, -759, -1618,
+    -760, -1549, -840, -1921,
+    -816, -539, -1769, -2235,
+    -227, -36, -2034, -1831,
+    -2107, -1126, -2471, -1816,
+    -1470, 252, -2701, -415,
+    -571, -467, 1509, 1554,
+    2180, 1975, 2326, 2020
+};
+
+static const Word16 dico4_lsf[DICO4_SIZE * 4] =
+{
+    -1857, -1681, -1857, -1755,
+    -2056, -1150, -2134, -1654,
+    -1619, -1099, -1704, -1131,
+    -1345, -1608, -1359, -1638,
+    -1338, -1293, -1325, -1265,
+    -1664, -1649, -1487, -851,
+    -1346, -1832, -1413, -2188,
+    -1282, -681, -1785, -1649,
+    -966, -1082, -1183, -1676,
+    -1054, -1073, -1142, -1158,
+    -1207, -744, -1274, -997,
+    -934, -1383, -927, -1416,
+    -1010, -1305, -783, -955,
+    -1049, -900, -993, -817,
+    -737, -823, -972, -1189,
+    -738, -1094, -738, -1154,
+    -784, -801, -810, -786,
+    -892, -520, -1000, -818,
+    -644, -965, -577, -882,
+    -541, -694, -671, -917,
+    -595, -642, -646, -615,
+    -956, -621, -925, -515,
+    -727, -483, -815, -485,
+    -840, -578, -440, -713,
+    -578, -325, -657, -670,
+    -386, -570, -441, -666,
+    -514, -787, -392, -529,
+    -522, -453, -487, -423,
+    -616, -585, -617, -157,
+    -662, -268, -680, -348,
+    -322, -323, -632, -444,
+    -304, -430, -332, -458,
+    -277, -468, -659, -793,
+    -319, -636, -227, -554,
+    -373, -347, -334, -210,
+    -456, -192, -530, -242,
+    -216, -198, -366, -370,
+    -338, -161, -409, -748,
+    -107, -380, -294, -643,
+    -223, -665, -234, -741,
+    -141, -496, -130, -510,
+    -139, -327, -172, -305,
+    -306, -580, -164, -263,
+    -262, -172, -67, -402,
+    31, -366, -10, -436,
+    -86, -527, 71, -377,
+    -22, -609, -12, -678,
+    -67, -319, 63, -191,
+    35, -181, -39, -242,
+    126, -167, -140, -544,
+    155, -297, 174, -297,
+    38, -8, 117, -380,
+    197, -452, 240, -522,
+    223, -103, 110, -187,
+    87, -155, 169, -47,
+    157, 26, -83, -100,
+    128, 80, 209, -62,
+    6, 7, 22, 5,
+    318, -20, 248, -45,
+    -200, -63, 156, -69,
+    250, -183, 369, -126,
+    -113, -76, -142, -122,
+    -64, -254, -31, 35,
+    -177, -71, -7, 171,
+    93, 27, 108, 212,
+    -330, -209, -123, -70,
+    -279, 95, -96, 20,
+    -188, -61, -314, 87,
+    -300, -78, -354, -134,
+    11, 122, -140, 122,
+    -275, 152, -293, 140,
+    -82, 138, -321, -111,
+    -480, -156, -359, 76,
+    -254, -40, -635, -96,
+    -522, 79, -507, 8,
+    -268, 303, -539, 68,
+    -446, 61, -522, 306,
+    111, 189, -435, 122,
+    -379, 166, -571, -398,
+    -632, -74, -747, -95,
+    -455, 194, -952, 83,
+    -798, 192, -755, 192,
+    -781, -162, -619, 234,
+    -663, -297, -488, -109,
+    -964, -132, -838, -68,
+    -843, 58, -1112, -86,
+    -805, -299, -944, -253,
+    -778, -50, -965, -549,
+    -352, -98, -992, -343,
+    -1117, -315, -1117, -307,
+    -1155, -374, -637, -230,
+    -1166, -43, -1299, -100,
+    -925, -393, -1274, -600,
+    -689, -130, -1479, -312,
+    -1321, -254, -1464, -442,
+    -1292, -613, -1261, -503,
+    -1501, -368, -1322, 26,
+    -1432, -66, -1743, -161,
+    -1644, -467, -1760, -548,
+    -1393, -568, -1556, -871,
+    -1495, -1034, -1387, -571,
+    -1917, -528, -1783, -123,
+    -1897, -231, -2054, -323,
+    -2052, -906, -1976, -567,
+    -1917, -620, -2047, -989,
+    -1077, -370, -2031, -704,
+    -2355, -749, -2740, -1089,
+    -1909, 159, -2012, 248,
+    -626, -123, -2339, -962,
+    -669, -408, -1379, -1174,
+    -452, -364, -1044, -735,
+    -132, 183, -1620, -752,
+    -547, -307, -777, -1261,
+    -98, 41, -880, -1091,
+    -257, 97, -1602, -1833,
+    31, -26, -644, -561,
+    -180, -546, -385, -1095,
+    -410, -802, -414, -827,
+    -457, -970, -490, -1109,
+    -215, -916, -144, -937,
+    -493, -1269, -517, -1507,
+    181, 101, -332, -889,
+    -836, -937, -559, -429,
+    -629, -547, -183, -337,
+    -545, -82, -250, -286,
+    5, -132, -348, -252,
+    -293, -472, -158, 100,
+    -29, 197, -236, -424,
+    -861, -213, -140, -7,
+    -427, -443, 187, -97,
+    -684, -736, -293, 258,
+    -368, -152, -150, 392,
+    -609, 175, -142, 299,
+    -138, 152, -119, 329,
+    -486, -52, 293, 198,
+    -183, 117, 175, 331,
+    -58, -274, 231, 300,
+    -288, 330, -305, 372,
+    -111, 409, -9, 423,
+    83, 256, 67, 367,
+    -19, 248, 91, 113,
+    -35, 406, -191, 154,
+    238, 296, 5, 197,
+    141, 221, 313, 198,
+    211, 421, 244, 334,
+    88, 426, -243, 454,
+    202, 552, -5, 403,
+    291, 185, 219, 301,
+    251, 138, 128, 69,
+    197, 288, -140, -61,
+    188, 361, 197, 598,
+    442, 273, 290, 143,
+    472, 482, 157, 370,
+    415, 321, 372, 385,
+    402, 552, 155, 24,
+    550, 263, -11, 21,
+    360, 227, 147, -254,
+    424, 97, 366, -13,
+    375, 141, 449, 232,
+    396, 507, 474, 272,
+    701, 324, 362, -47,
+    587, 148, 543, 69,
+    400, -51, 561, 59,
+    220, -10, 352, 147,
+    206, 211, 653, 185,
+    563, 297, 565, 284,
+    594, 121, 766, 192,
+    398, 118, 642, 434,
+    233, 264, 481, 467,
+    129, -165, 699, 239,
+    90, 26, 342, 474,
+    -55, 27, 388, 94,
+    -172, 0, 725, 379,
+    -60, 337, 370, 465,
+    95, 319, 806, 595,
+    78, 260, 497, 851,
+    210, 560, 458, 574,
+    -464, 202, 497, 625,
+    -202, 152, 48, 712,
+    -20, 566, 100, 715,
+    455, 468, 411, 605,
+    319, 646, 195, 615,
+    401, 538, 680, 739,
+    201, 667, 434, 954,
+    454, 425, 646, 491,
+    606, 681, 416, 508,
+    497, 822, 426, 815,
+    660, 647, 628, 716,
+    697, 466, 618, 457,
+    685, 460, 365, 309,
+    721, 567, 836, 601,
+    609, 300, 825, 459,
+    943, 687, 681, 533,
+    915, 598, 591, 243,
+    876, 451, 874, 420,
+    786, 317, 732, 220,
+    922, 317, 1108, 367,
+    531, 466, 1028, 649,
+    1053, 615, 1034, 553,
+    829, 602, 1021, 799,
+    927, 803, 878, 763,
+    799, 496, 1373, 773,
+    585, 770, 803, 930,
+    1099, 793, 1222, 862,
+    1209, 895, 1025, 727,
+    772, 845, 1172, 1115,
+    867, 1021, 830, 1013,
+    841, 910, 506, 703,
+    1239, 1077, 620, 819,
+    1196, 1083, 1155, 1081,
+    1142, 907, 1547, 1121,
+    1309, 648, 1343, 612,
+    1484, 988, 1479, 937,
+    985, 1328, 955, 1341,
+    429, 910, 841, 1338,
+    564, 1179, 412, 1156,
+    1427, 1320, 1434, 1330,
+    640, 760, 1726, 1410,
+    190, 555, 1073, 1005,
+    426, 257, 839, 980,
+    235, 231, 1520, 1167,
+    109, 293, 1014, 1569,
+    305, 142, 1148, 539,
+    -291, -108, 1213, 972,
+    22, -216, 667, 828,
+    -482, 438, 453, 1431,
+    -581, -422, 789, 387,
+    -358, -454, 174, 780,
+    -36, -372, 390, -134,
+    -629, 160, -306, 751,
+    -1258, -331, 177, 522,
+    -248, 574, -251, 639,
+    -531, 407, -596, 394,
+    -419, 789, -617, 801,
+    -986, 399, -857, 727,
+    -7, 518, -703, 310,
+    -1143, -24, -1002, 287,
+    -960, 363, -1299, 312,
+    -1534, 245, -1557, 305,
+    28, 153, -859, -175,
+    -33, 332, -1398, -154,
+    212, 410, -593, -197,
+    -1092, -704, -904, -65,
+    282, 367, -918, -686,
+    345, 93, -258, -357,
+    696, 644, -693, -28,
+    448, 493, -273, 193,
+    527, 546, -243, -513,
+    384, -136, 273, -353,
+    512, -142, 537, -198,
+    941, 750, 83, 248,
+    578, 861, -56, 592,
+    842, 44, 892, 24,
+    33, 890, -16, 982,
+    831, 1398, 1535, 1898,
+    1716, 1376, 1948, 1465
+};
+
+static const Word16 dico5_lsf[DICO5_SIZE * 4] =
+{
+    -1002, -929, -1096, -1203,
+    -641, -931, -604, -961,
+    -779, -673, -835, -788,
+    -416, -664, -458, -766,
+    -652, -521, -662, -495,
+    -1023, -509, -1023, -428,
+    -444, -552, -368, -449,
+    -479, -211, -1054, -903,
+    -316, -249, -569, -591,
+    -569, -275, -541, -191,
+    -716, -188, -842, -264,
+    -333, -248, -318, -228,
+    -275, 1, -567, -228,
+    -115, -221, -238, -374,
+    -197, -507, -222, -579,
+    -258, -432, -61, -244,
+    -345, 2, -338, 39,
+    -215, -169, -58, 0,
+    -56, -6, -203, -131,
+    1, -186, -5, -211,
+    6, -380, 11, -418,
+    -116, 131, -134, 113,
+    89, -4, 71, -2,
+    -19, -192, 262, 24,
+    189, 151, -133, -109,
+    186, -153, 166, -219,
+    37, 139, 193, 171,
+    337, 124, 158, -61,
+    141, 226, -13, 190,
+    231, 34, 354, 109,
+    316, 201, 244, 164,
+    330, -85, 390, -84,
+    254, 327, 257, 335,
+    491, 147, 476, 105,
+    54, 77, 437, 370,
+    421, 314, 449, 342,
+    329, 126, 673, 292,
+    571, 388, 243, 193,
+    653, 320, 621, 280,
+    194, 380, 517, 581,
+    45, 323, 111, 422,
+    489, 395, 734, 534,
+    622, 546, 486, 502,
+    318, 572, 189, 550,
+    385, 422, -157, 153,
+    -125, 382, -197, 386,
+    -263, 334, 228, 697,
+    -188, 1, 51, 297,
+    -507, 213, -376, 397,
+    -24, 255, -547, 89,
+    -502, -94, 387, 179,
+    -620, 68, -684, 112,
+    -642, -350, -260, 172,
+    -438, -324, 264, 648,
+    -964, -4, -1121, 7,
+    -134, 134, -1133, -306,
+    143, 96, -420, -497,
+    -1221, -350, -1527, -685,
+    -161, 72, 873, 691,
+    732, 283, 921, 353,
+    334, 475, 1095, 821,
+    864, 524, 843, 497,
+    714, 711, 788, 750,
+    1076, 714, 1204, 753
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/window2.tab	Thu Nov 24 22:58:29 2022 +0000
@@ -0,0 +1,59 @@
+/* Hamming_cos window for LPC analysis.           */
+
+static const Word16 window_232_8[L_WINDOW] =
+{
+    2621, 2623, 2627, 2634, 2644, 2656, 2671, 2689, 2710, 2734,
+    2760, 2789, 2821, 2855, 2893, 2933, 2975, 3021, 3069, 3120,
+    3173, 3229, 3288, 3350, 3414, 3481, 3550, 3622, 3697, 3774,
+    3853, 3936, 4021, 4108, 4198, 4290, 4385, 4482, 4582, 4684,
+    4788, 4895, 5004, 5116, 5230, 5346, 5464, 5585, 5708, 5833,
+    5960, 6090, 6221, 6355, 6491, 6629, 6769, 6910, 7054, 7200,
+    7348, 7498, 7649, 7803, 7958, 8115, 8274, 8434, 8597, 8761,
+    8926, 9093, 9262, 9432, 9604, 9778, 9952, 10129, 10306, 10485,
+    10665, 10847, 11030, 11214, 11399, 11586, 11773, 11962, 12152, 12342,
+    12534, 12727, 12920, 13115, 13310, 13506, 13703, 13901, 14099, 14298,
+    14497, 14698, 14898, 15100, 15301, 15504, 15706, 15909, 16112, 16316,
+    16520, 16724, 16928, 17132, 17337, 17541, 17746, 17950, 18155, 18359,
+    18564, 18768, 18972, 19175, 19379, 19582, 19785, 19987, 20189, 20390,
+    20591, 20792, 20992, 21191, 21390, 21588, 21785, 21981, 22177, 22372,
+    22566, 22759, 22951, 23143, 23333, 23522, 23710, 23897, 24083, 24268,
+    24451, 24633, 24814, 24994, 25172, 25349, 25525, 25699, 25871, 26042,
+    26212, 26380, 26546, 26711, 26874, 27035, 27195, 27353, 27509, 27664,
+    27816, 27967, 28115, 28262, 28407, 28550, 28691, 28830, 28967, 29102,
+    29234, 29365, 29493, 29619, 29743, 29865, 29985, 30102, 30217, 30330,
+    30440, 30548, 30654, 30757, 30858, 30956, 31052, 31146, 31237, 31326,
+    31412, 31495, 31576, 31655, 31730, 31804, 31874, 31942, 32008, 32071,
+    32131, 32188, 32243, 32295, 32345, 32392, 32436, 32477, 32516, 32552,
+    32585, 32615, 32643, 32668, 32690, 32709, 32726, 32740, 32751, 32759,
+    32765, 32767, 32767, 32097, 30112, 26895, 22576, 17333, 11380, 4962
+};
+
+/* Hamming-cosine window for LPC analysis.           */
+
+static const Word16 window_160_80[L_WINDOW] =
+{
+    2621, 2624, 2633, 2648, 2668, 2695, 2727, 2765, 2809, 2859,
+    2915, 2976, 3043, 3116, 3194, 3279, 3368, 3464, 3565, 3671,
+    3783, 3900, 4023, 4151, 4285, 4423, 4567, 4716, 4870, 5029,
+    5193, 5362, 5535, 5714, 5897, 6084, 6277, 6473, 6674, 6880,
+    7089, 7303, 7521, 7742, 7968, 8197, 8430, 8667, 8907, 9151,
+    9398, 9648, 9902, 10158, 10417, 10680, 10945, 11212, 11482, 11755,
+    12030, 12307, 12586, 12867, 13150, 13435, 13722, 14010, 14299, 14590,
+    14882, 15175, 15469, 15764, 16060, 16356, 16653, 16950, 17248, 17546,
+    17844, 18141, 18439, 18736, 19033, 19330, 19625, 19920, 20214, 20507,
+    20799, 21090, 21380, 21668, 21954, 22239, 22522, 22803, 23083, 23360,
+    23635, 23907, 24177, 24445, 24710, 24972, 25231, 25488, 25741, 25991,
+    26238, 26482, 26722, 26959, 27192, 27422, 27647, 27869, 28087, 28300,
+    28510, 28715, 28916, 29113, 29305, 29493, 29676, 29854, 30028, 30197,
+    30361, 30519, 30673, 30822, 30966, 31105, 31238, 31366, 31489, 31606,
+    31718, 31825, 31926, 32021, 32111, 32195, 32273, 32346, 32413, 32475,
+    32530, 32580, 32624, 32662, 32695, 32721, 32742, 32756, 32765, 32767,
+    32767, 32756, 32720, 32661, 32578, 32471, 32341, 32188, 32012, 31813,
+    31592, 31349, 31084, 30798, 30492, 30165, 29818, 29453, 29068, 28666,
+    28247, 27810, 27358, 26891, 26408, 25913, 25404, 24883, 24350, 23807,
+    23255, 22693, 22124, 21548, 20965, 20378, 19786, 19191, 18593, 17994,
+    17395, 16796, 16199, 15604, 15012, 14424, 13842, 13265, 12696, 12135,
+    11582, 11039, 10507, 9986, 9477, 8981, 8499, 8031, 7579, 7143,
+    6723, 6321, 5937, 5571, 5225, 4898, 4591, 4305, 4041, 3798,
+    3577, 3378, 3202, 3048, 2918, 2812, 2729, 2669, 2633, 2621
+};