www.pudn.com > G.723.1_c.rar > TAB_LBC.C


/* 
    ITU-T G.723 Speech Coder   ANSI-C Source Code Version 5.0 
    copyright (c) 1995, AudioCodes, DSP Group, France Telecom, 
    Universite de Sherbrooke.  All rights reserved. 
*/ 
 
 
#include "typedef.h" 
#include "cst_lbc.h" 
#include "tab_lbc.h" 
 
/* 
** 
** File:        tab_lbc.c 
** 
** Description: Tables used for G.723 encoding and decoding 
**   
** Tables:      HammingWindowTable[180] 
** 
**              LPC Computation and Filtering 
** 
**                  BinomialWindowTable[10] 
**                  BandExpTable[10] 
** 
**              LSP calculation and quantization 
** 
**                  CosineTable[512] 
**                  LspDcTable[10] 
**                  BandInfoTable[3][2] 
**                  Band0Tb8[256*3] 
**                  Band1Tb8[256*3] 
**                  Band2Tb8[256*4] 
**                  BandQntTable[3] 
** 
**              Perceptual Filtering and Post Filtering 
** 
 
**                  PerFiltZeroTable[10] 
**                  PerFiltPoleTable[10] 
**                  PostFiltZeroTable[10] 
**                  PostFiltPoleTable[10] 
**                  LpfConstTable[2] (pitch postfilter) 
** 
**              ACELP or MP-MLQ 
** 
**                  Nb_puls[4] (MP-MLQ) 
**                  FcbkGainTable[24] (ACELP and MP-MLQ) 
**                  MaxPosTable[4]  (MP-MLQ), Word32 
**                  CombinatorialTable[6][30](MP-MLQ),Word32 
**                  epsi170[170] (ACELP) 
**                  gain170[170] (ACELP) 
** 
**              Pitch Prediction 
** 
**                  AcbkGainTable085[85*20] 
**                  AcbkGainTable170[170*20] 
**                  AcbkGainTablePtr[2] 
** 
**              Taming procedure 
** 
**                  tabgain170[170] 
**                  tabgain85[85] 
** 
**              Comfort Noise Generation 
** 
**                  fact[4] 
**                  L_bseg[3], Word32 
**                  base[3] 
** 
** 
**              All tables are Word16 unless separately denoted 
*/ 
 
/* 
**  HammingWindowTable: 
** 
**  Hamming Window coefficients scaled by 32768 (Q15). 
** 
*/ 
 
Word16   HammingWindowTable[LpcFrame] = { 
    2621 , 
    2631 , 
    2659 , 
    2705 , 
    2770 , 
    2853 , 
    2955 , 
    3074 , 
    3212 , 
    3367 , 
    3541 , 
    3731 , 
    3939 , 
    4164 , 
    4405 , 
    4663 , 
    4937 , 
    5226 , 
    5531 , 
    5851 , 
    6186 , 
    6534 , 
    6897 , 
    7273 , 
    7661 , 
    8062 , 
    8475 , 
    8899 , 
    9334 , 
    9780 , 
   10235 , 
   10699 , 
   11172 , 
   11653 , 
   12141 , 
   12636 , 
   13138 , 
   13645 , 
   14157 , 
   14673 , 
   15193 , 
   15716 , 
   16242 , 
   16769 , 
   17298 , 
   17827 , 
   18356 , 
   18884 , 
   19411 , 
   19935 , 
   20457 , 
   20975 , 
   21489 , 
   21999 , 
   22503 , 
   23002 , 
   23494 , 
   23978 , 
   24455 , 
   24924 , 
   25384 , 
   25834 , 
   26274 , 
   26704 , 
   27122 , 
   27529 , 
   27924 , 
   28306 , 
   28675 , 
   29031 , 
   29373 , 
   29700 , 
   30012 , 
   30310 , 
   30592 , 
   30857 , 
   31107 , 
   31340 , 
   31557 , 
   31756 , 
   31938 , 
   32102 , 
   32249 , 
   32377 , 
   32488 , 
   32580 , 
   32654 , 
   32710 , 
   32747 , 
   32766 , 
   32766 , 
   32747 , 
   32710 , 
   32654 , 
   32580 , 
   32488 , 
   32377 , 
   32249 , 
   32102 , 
   31938 , 
   31756 , 
   31557 , 
   31340 , 
   31107 , 
   30857 , 
   30592 , 
   30310 , 
   30012 , 
   29700 , 
   29373 , 
   29031 , 
   28675 , 
   28306 , 
   27924 , 
   27529 , 
   27122 , 
   26704 , 
   26274 , 
   25834 , 
   25384 , 
   24924 , 
   24455 , 
   23978 , 
   23494 , 
   23002 , 
   22503 , 
   21999 , 
   21489 , 
   20975 , 
   20457 , 
   19935 , 
   19411 , 
   18884 , 
   18356 , 
   17827 , 
   17298 , 
   16769 , 
   16242 , 
   15716 , 
   15193 , 
   14673 , 
   14157 , 
   13645 , 
   13138 , 
   12636 , 
   12141 , 
   11653 , 
   11172 , 
   10699 , 
   10235 , 
    9780 , 
    9334 , 
    8899 , 
    8475 , 
    8062 , 
    7661 , 
    7273 , 
    6897 , 
    6534 , 
    6186 , 
    5851 , 
    5531 , 
    5226 , 
    4937 , 
    4663 , 
    4405 , 
    4164 , 
    3939 , 
    3731 , 
    3541 , 
    3367 , 
    3212 , 
    3074 , 
    2955 , 
    2853 , 
    2770 , 
    2705 , 
    2659 , 
    2631 , 
    2621 , 
   } ; 
 
/* 
**  BinomialWindowTable: 
** 
**  Purpose: 
**     Binomial Window coefficients used to weight the autocorrelation before 
**     Levinson-Durbin in the LPC coefficient calculation.   
** 
**     Table Structure: 
**     Coefficients are scaled by 32768 (Q15). 
** 
*/ 
 
Word16   BinomialWindowTable[LpcOrder] = { 
     32749 , 
     32695 , 
     32604 , 
     32477 , 
     32315 , 
     32118 , 
     31887 , 
     31622 , 
     31324 , 
     30995 , 
   } ; 
 
/* 
**  BandExpTable: 
** 
**  Purpose: 
**      Do bandwidth expansion on the LPC coefficients by scaling the 
**      poles of the LPC synthesis filter by a factor of 0.994 
 
** 
**  Table Structure: 
**      Table values correspond to (0.994) to the power of x, 
**      where x = [0,..,10]. 
**      These values are scaled by 32768 (Q15). 
** 
*/ 
 
Word16   BandExpTable[LpcOrder] = { 
     32571 ,   
     32376 , 
     32182 , 
     31989 , 
     31797 , 
     31606 , 
     31416 , 
     31228 , 
     31040 , 
     30854 , 
   } ; 
    
/* 
**  CosineTable: 
** 
**  Purpose: 
**      Used to evaluate polynomial for LSP-LPC conversion 
** 
**  Table Structure: 
**      Contains one period of a cosine wave.  Amplitude has been 
**      scaled to go between 0 and 16384 instead of 0 and 1. 
** 
*/ 
 
Word16   CosineTable[CosineTableSize] = { 
 16384 , 
 16383 , 
 16379 , 
 16373 , 
 16364 , 
 16353 , 
 16340 , 
 16324 , 
 16305 , 
 16284 , 
 16261 , 
 16235 , 
 16207 , 
 16176 , 
 16143 , 
 16107 , 
 16069 , 
 16029 , 
 15986 , 
 15941 , 
 15893 , 
 15843 , 
 15791 , 
 15736 , 
 15679 , 
 15619 , 
 15557 , 
 15493 , 
 15426 , 
 15357 , 
 15286 , 
 15213 , 
 15137 , 
 15059 , 
 14978 , 
 14896 , 
 14811 , 
 14724 , 
 14635 , 
 14543 , 
 14449 , 
 14354 , 
 14256 , 
 14155 , 
 14053 , 
 13949 , 
 13842 , 
 13733 , 
 13623 , 
 13510 , 
 13395 , 
 13279 , 
 13160 , 
 13039 , 
 12916 , 
 12792 , 
 12665 , 
 12537 , 
 12406 , 
 12274 , 
 12140 , 
 12004 , 
 11866 , 
 11727 , 
 11585 , 
 11442 , 
 11297 , 
 11151 , 
 11003 , 
 10853 , 
 10702 , 
 10549 , 
 10394 , 
 10238 , 
 10080 , 
 9921  , 
 9760  , 
 9598  , 
 9434  , 
 9269  , 
 9102  , 
 8935  , 
 8765  , 
 8595  , 
 8423  , 
 8250  , 
 8076  , 
 7900  , 
 7723  , 
 7545  , 
 7366  , 
 7186  , 
 7005  , 
 6823  , 
 6639  , 
 6455  , 
 6270  , 
 6084  , 
 5897  , 
 5708  , 
 5520  , 
 5330  , 
 5139  , 
 4948  , 
 4756  , 
 4563  , 
 4370  , 
 4176  , 
 3981  , 
 3786  , 
 3590  , 
 3393  , 
 3196  , 
 2999  , 
 2801  , 
 2603  , 
 2404  , 
 2205  , 
 2006  , 
 1806  , 
 1606  , 
 1406  , 
 1205  , 
 1005  , 
 804   , 
 603   , 
 402   , 
 201   , 
 0     , 
 -201  , 
 -402  , 
 -603  , 
 -804  , 
 -1005 , 
 -1205 , 
 -1406 , 
 -1606 , 
 -1806 , 
 -2006 , 
 -2205 , 
 -2404 , 
 -2603 , 
 -2801 , 
 -2999 , 
 -3196 , 
 -3393 , 
 -3590 , 
 -3786 , 
 -3981 , 
 -4176 , 
 -4370 , 
 -4563 , 
 -4756 , 
 -4948 , 
 -5139 , 
 -5330 , 
 -5520 , 
 -5708 , 
 -5897 , 
 -6084 , 
 -6270 , 
 -6455 , 
 -6639 , 
 -6823 , 
 -7005 , 
 -7186 , 
 -7366 , 
 -7545 , 
 -7723 , 
 -7900 , 
 -8076 , 
 -8250 , 
 -8423 , 
 -8595 , 
 -8765 , 
 -8935 , 
 -9102 , 
 -9269 , 
 -9434 , 
 -9598 , 
 -9760 , 
 -9921 , 
 -10080, 
 -10238, 
 -10394, 
 -10549, 
 -10702, 
 -10853, 
 -11003, 
 -11151, 
 -11297, 
 -11442, 
 -11585, 
 -11727, 
 -11866, 
 -12004, 
 -12140, 
 -12274, 
 -12406, 
 -12537, 
 -12665, 
 -12792, 
 -12916, 
 -13039, 
 -13160, 
 -13279, 
 -13395, 
 -13510, 
 -13623, 
 -13733, 
 -13842, 
 -13949, 
 -14053, 
 -14155, 
 -14256, 
 -14354, 
 -14449, 
 -14543, 
 -14635, 
 -14724, 
 -14811, 
 -14896, 
 -14978, 
 -15059, 
 -15137, 
 -15213, 
 -15286, 
 -15357, 
 -15426, 
 -15493, 
 -15557, 
 -15619, 
 -15679, 
 -15736, 
 -15791, 
 -15843, 
 -15893, 
 -15941, 
 -15986, 
 -16029, 
 -16069, 
 -16107, 
 -16143, 
 -16176, 
 -16207, 
 -16235, 
 -16261, 
 -16284, 
 -16305, 
 -16324, 
 -16340, 
 -16353, 
 -16364, 
 -16373, 
 -16379, 
 -16383, 
 -16384, 
 -16383, 
 -16379, 
 -16373, 
 -16364, 
 -16353, 
 -16340, 
 -16324, 
 -16305, 
 -16284, 
 -16261, 
 -16235, 
 -16207, 
 -16176, 
 -16143, 
 -16107, 
 -16069, 
 -16029, 
 -15986, 
 -15941, 
 -15893, 
 -15843, 
 -15791, 
 -15736, 
 -15679, 
 -15619, 
 -15557, 
 -15493, 
 -15426, 
 -15357, 
 -15286, 
 -15213, 
 -15137, 
 -15059, 
 -14978, 
 -14896, 
 -14811, 
 -14724, 
 -14635, 
 -14543, 
 -14449, 
 -14354, 
 -14256, 
 -14155, 
 -14053, 
 -13949, 
 -13842, 
 -13733, 
 -13623, 
 -13510, 
 -13395, 
 -13279, 
 -13160, 
 -13039, 
 -12916, 
 -12792, 
 -12665, 
 -12537, 
 -12406, 
 -12274, 
 -12140, 
 -12004, 
 -11866, 
 -11727, 
 -11585, 
 -11442, 
 -11297, 
 -11151, 
 -11003, 
 -10853, 
 -10702, 
 -10549, 
 -10394, 
 -10238, 
 -10080, 
 -9921 , 
 -9760 , 
 -9598 , 
 -9434 , 
 -9269 , 
 -9102 , 
 -8935 , 
 -8765 , 
 -8595 , 
 -8423 , 
 -8250 , 
 -8076 , 
 -7900 , 
 -7723 , 
 -7545 , 
 -7366 , 
 -7186 , 
 -7005 , 
 -6823 , 
 -6639 , 
 -6455 , 
 -6270 , 
 -6084 , 
 -5897 , 
 -5708 , 
 -5520 , 
 -5330 , 
 -5139 , 
 -4948 , 
 -4756 , 
 -4563 , 
 -4370 , 
 -4176 , 
 -3981 , 
 -3786 , 
 -3590 , 
 -3393 , 
 -3196 , 
 -2999 , 
 -2801 , 
 -2603 , 
 -2404 , 
 -2205 , 
 -2006 , 
 -1806 , 
 -1606 , 
 -1406 , 
 -1205 , 
 -1005 , 
 -804  , 
 -603  , 
 -402  , 
 -201  , 
 0     , 
 201   , 
 402   , 
 603   , 
 804   , 
 1005  , 
 1205  , 
 1406  , 
 1606  , 
 1806  , 
 2006  , 
 2205  , 
 2404  , 
 2603  , 
 2801  , 
 2999  , 
 3196  , 
 3393  , 
 3590  , 
 3786  , 
 3981  , 
 4176  , 
 4370  , 
 4563  , 
 4756  , 
 4948  , 
 5139  , 
 5330  , 
 5520  , 
 5708  , 
 5897  , 
 6084  , 
 6270  , 
 6455  , 
 6639  , 
 6823  , 
 7005  , 
 7186  , 
 7366  , 
 7545  , 
 7723  , 
 7900  , 
 8076  , 
 8250  , 
 8423  , 
 8595  , 
 8765  , 
 8935  , 
 9102  , 
 9269  , 
 9434  , 
 9598  , 
 9760  , 
 9921  , 
 10080 , 
 10238 , 
 10394 , 
 10549 , 
 10702 , 
 10853 , 
 11003 , 
 11151 , 
 11297 , 
 11442 , 
 11585 , 
 11727 , 
 11866 , 
 12004 , 
 12140 , 
 12274 , 
 12406 , 
 12537 , 
 12665 , 
 12792 , 
 12916 , 
 13039 , 
 13160 , 
 13279 , 
 13395 , 
 13510 , 
 13623 , 
 13733 , 
 13842 , 
 13949 , 
 14053 , 
 14155 , 
 14256 , 
 14354 , 
 14449 , 
 14543 , 
 14635 , 
 14724 , 
 14811 , 
 14896 , 
 14978 , 
 15059 , 
 15137 , 
 15213 , 
 15286 , 
 15357 , 
 15426 , 
 15493 , 
 15557 , 
 15619 , 
 15679 , 
 15736 , 
 15791 , 
 15843 , 
 15893 , 
 15941 , 
 15986 , 
 16029 , 
 16069 , 
 16107 , 
 16143 , 
 16176 , 
 16207 , 
 16235 , 
 16261 , 
 16284 , 
 16305 , 
 16324 , 
 16340 , 
 16353 , 
 16364 , 
 16373 , 
 16379 , 
 16383 , 
   } ; 
 
/* 
**  LspDcTable: LSP long term Dc component 
** 
*/ 
 
Word16   LspDcTable[LpcOrder] = { 
   0x0c3b , 
   0x1271 , 
   0x1e0a , 
   0x2a36 , 
   0x3630 , 
   0x406f , 
   0x4d28 , 
   0x56f4 , 
   0x638c , 
   0x6c46 , 
   } ; 
 
/* 
**  BandInfoTable: 
** 
**  Purpose: 
**      Used to index in arrays. Called by LSP sub vector  
**      quantization routines. 
** 
**  Table Structure: 
**      The unquantized LSP vector, quantized LSP vector, and residual 
**      LSP error vector are each divided into three subvectors.   
**              The table format is as follows: 
** 
**      1st pair corresponds to subvector 0 
**      2nd pair corresponds to subvector 1 
**      3rd pair corresponds to subvector 2 
** 
**      The 1st slot in each pair is used to index the location of  
**      the vector in a 10-element array.  For example, for subvector 
**      1, dimensions [0,..,2] get automatically mapped to array 
**      location [3,..,5], and for subvector 3, dimensions 
**      [0,..,3] automatically get mapped to array location [6,..,9]. 
** 
**      The 2nd slot in each pair corresponds to the dimension of 
**      the subvector 
*/ 
 
Word16   BandInfoTable[LspQntBands][2] = { 
   { 0,3}, 
   { 3,3}, 
   { 6,4} 
   } ; 
 
/* 
**  Band0Tb8: 
** 
**  Purpose: 
**      Vector Quantize the first 3-vector of the 10 LSP parameters. 
** 
**  Table Structure: 
**      8 bit, 256 entry table. 
*/ 
 
Word16   Band0Tb8[LspCbSize*3] = { 
      0,      0,      0, 
   -270,  -1372,  -1032, 
   -541,  -1650,  -1382, 
   -723,  -2011,  -2213, 
   -941,  -1122,  -1942, 
   -780,  -1145,  -2454, 
   -884,  -1309,  -1373, 
  -1051,  -1523,  -1766, 
  -1083,  -1622,  -2300, 
   -777,  -1377,  -2147, 
   -935,  -1467,  -2763, 
   -802,  -1327,  -3471, 
   -935,  -1959,  -3999, 
   -240,    -89,    222, 
   -661,   -257,   -160, 
   -994,   -466,   -419, 
   -188,   -164,   -278, 
   -342,   -512,   -415, 
   -607,   -511,   -797, 
     16,     19,   -716, 
    374,    425,   -972, 
   -346,    245,   -282, 
   -265,    506,   -754, 
   -620,   -147,   1955, 
   -742,   -860,   2597, 
   -150,   -352,   2704, 
    305,    880,   1954, 
    123,    731,   2766, 
   -348,    765,   3327, 
    618,    221,   3258, 
   -178,    -47,   4219, 
    393,   1304,   3842, 
    698,   1702,   4801, 
     63,   -584,   1229, 
   -215,   -732,   1704, 
    172,   -335,   1909, 
     -2,    216,   1797, 
    353,    127,   2205, 
  -1208,    188,     11, 
   -513,    -75,   -683, 
   -973,    222,   -646, 
   -616,   -843,   -388, 
   -950,  -1113,   -359, 
  -1431,   -623,   -705, 
  -1398,  -1063,   -178, 
    -45,   -461,     35, 
     -9,   -657,   -216, 
    127,  -1078,     95, 
   -950,  -1156,    584, 
  -1480,  -1494,    449, 
   -120,   -705,    516, 
   -368,   -961,    727, 
   -378,   -526,    973, 
   -793,   -614,    676, 
   -801,   -755,   1287, 
  -1476,   -340,   1636, 
   -505,  -1254,   1543, 
  -1243,  -1622,   1532, 
   -776,  -1477,   -655, 
  -1151,  -1296,   -823, 
  -1153,  -1672,  -1124, 
  -1291,  -2003,  -1702, 
   -622,  -1283,     57, 
   -471,  -1611,    509, 
  -1060,  -1570,   -139, 
   -873,  -2156,   -536, 
  -1716,  -2021,   -364, 
  -2150,  -3218,  -1291, 
  -1248,  -1945,  -2904, 
  -1215,  -2633,  -2855, 
    167,   -244,     84, 
    349,   -412,   -217, 
    -40,   -352,    632, 
    227,   -529,    405, 
     68,   -383,   -443, 
    167,   -558,   -706, 
   -275,   -854,    -14, 
   -351,  -1089,   -449, 
    341,    -72,   -289, 
    603,   -106,   -474, 
    322,   -219,   -649, 
    179,   -317,   -998, 
    450,   -291,   -996, 
    555,    195,   -525, 
    784,    272,   -831, 
   -148,   -384,   -849, 
     82,   -536,  -1357, 
    238,   -172,  -1354, 
    422,   -268,  -1841, 
    297,   -737,  -2079, 
   -111,   -801,   -598, 
      1,   -668,   -984, 
   -131,   -818,  -1299, 
   -329,   -521,  -1310, 
   -151,   -778,  -1834, 
    -93,   -352,  -1746, 
   -568,   -640,  -1821, 
   -509,   -941,  -2183, 
    464,   -815,  -1250, 
     79,  -1133,  -1597, 
   -184,  -1353,  -2123, 
   -196,   -410,  -2427, 
   -192,   -833,  -2810, 
   -259,  -1382,  -3045, 
   -217,      4,  -1166, 
   -800,   -325,  -1219, 
   -363,   -830,   -898, 
   -661,  -1134,   -960, 
   -386,   -980,  -1501, 
   -627,  -1159,  -1722, 
   -903,   -829,   -855, 
   -685,   -829,  -1313, 
  -1065,   -959,  -1405, 
    441,     25,   -847, 
    655,    -27,  -1181, 
   1159,   -110,   -705, 
    856,    253,  -1671, 
    415,    404,     -1, 
    322,    903,   -398, 
    670,    499,   -292, 
    803,    591,   -610, 
   1144,    591,   -814, 
    717,    183,    393, 
    857,    381,    106, 
    609,     62,    -27, 
    792,    198,   -325, 
    735,    805,     88, 
   1142,    812,     78, 
   1028,    366,   -292, 
   1309,    743,   -237, 
   1615,    589,    -79, 
   1010,    639,   -243, 
    999,    964,   -311, 
   1500,   1137,   -615, 
    988,    357,    646, 
   1227,    667,    683, 
   1164,   1565,    894, 
   1392,   2015,    477, 
   1138,    533,    250, 
   1437,    896,    391, 
   1765,   1118,     99, 
   1112,   1090,    802, 
   1596,    846,   1134, 
    937,   1161,    279, 
   1719,   1254,    683, 
   1338,   1086,     35, 
   1419,   1324,    428, 
   1428,   1524,     40, 
   2108,   1594,     89, 
   1015,    544,   1222, 
   1121,    925,   1263, 
   1030,   1318,   1485, 
   1295,    789,   1817, 
   1323,   1272,   1909, 
   1724,   1237,   1803, 
   1797,   1689,    858, 
   2149,   1367,   1301, 
   2302,   1867,    761, 
   2863,   2351,   1053, 
     52,    163,    -76, 
    230,    309,   -492, 
    -71,    619,     39, 
   -218,    856,    499, 
   -654,    736,   -207, 
   -535,   1259,    155, 
   -480,   1476,    643, 
    262,   1081,    102, 
    309,   1592,   -182, 
    627,   1629,    534, 
    337,    643,    456, 
    758,    670,    713, 
    202,   1126,    658, 
    612,   1131,    666, 
    686,   1223,   1136, 
   -131,    377,    525, 
     42,    708,    907, 
     87,   1488,   1035, 
    432,   2117,    904, 
    137,    981,   1332, 
   -447,   1014,   1136, 
   -839,   1793,   1246, 
   -559,    297,    198, 
   -850,    685,    446, 
  -1273,    632,    826, 
   -401,   -544,    173, 
   -753,   -793,    144, 
   -436,     -9,    772, 
   -115,   -243,   1310, 
   -670,   -269,    374, 
  -1027,    -13,    639, 
   -887,    -81,   1137, 
  -1277,   -455,    158, 
  -1411,   -720,    736, 
    172,     88,    403, 
    386,    255,    756, 
   -500,    522,    910, 
   -958,    659,   1388, 
   -395,    301,   1344, 
   -356,    768,   1813, 
   -613,    841,   2419, 
    445,   -122,    252, 
    629,    -87,    723, 
    283,   -253,    870, 
    456,   -116,   1381, 
    757,    180,   1059, 
    532,    408,   1509, 
    947,    288,   1806, 
   1325,    994,   2524, 
    892,   1219,   3023, 
   1397,   1596,   3406, 
   1143,   1552,   2546, 
   1850,   1433,   2710, 
    -10,    134,   1002, 
    154,    499,   1323, 
    508,    792,   1117, 
    509,   1340,   1616, 
    762,    862,   1608, 
    787,    740,   2320, 
    794,   1727,   1283, 
    465,   2108,   1660, 
   -120,   1451,   1613, 
   -386,   2016,   2169, 
    891,   1225,   2050, 
    456,   1480,   2185, 
   1493,   1283,   1209, 
   1397,   1636,   1518, 
   1776,   1738,   1552, 
   1572,   1698,   2141, 
   1389,   2126,   1271, 
   1959,   2413,   1119, 
   1365,   2892,   1505, 
   2206,   1971,   1623, 
   2076,   1950,   2280, 
   1717,   2291,   1867, 
   2366,   2515,   1953, 
   2865,   2838,   2522, 
   2535,   3465,   2011, 
   3381,   4127,   2638, 
    836,   2667,   2289, 
   1761,   2773,   2337, 
   1415,   3325,   2911, 
   2354,   3138,   3126, 
   2659,   4192,   4010, 
   1048,   1786,   1818, 
   1242,   2111,   2240, 
   1512,   2079,   2780, 
   1573,   2491,   3138, 
   2230,   2377,   2782, 
    416,   1773,   2704, 
    725,   2336,   3297, 
   1252,   2373,   3978, 
   2094,   2268,   3568, 
   2011,   2712,   4528, 
   1341,   3507,   3876, 
   1216,   3919,   4922, 
   1693,   4793,   6012, 
   } ; 
 
 
 
/* 
**  Band1Tb8: 
** 
**  Purpose: 
**      Vector Quantize the second 3-vector of the 10 LSP parameters. 
** 
**  Table Structure: 
**      8 bit, 256 entry table. 
*/ 
 
Word16   Band1Tb8[LspCbSize*3] = { 
      0,      0,      0, 
  -2114,  -1302,     76, 
  -2652,  -1278,  -1368, 
  -2847,   -828,   -349, 
  -3812,  -2190,   -349, 
  -3946,   -364,   -449, 
  -2725,  -4492,  -3607, 
  -3495,  -4764,  -1744, 
    -51,   -756,     84, 
   -153,  -1191,    504, 
    108,  -1418,   1167, 
   -835,   -896,    390, 
   -569,  -1702,     87, 
  -1151,  -1818,    933, 
  -1826,  -2547,    411, 
  -1842,  -1818,   1451, 
  -2438,  -1611,    781, 
  -2747,  -2477,   1311, 
   -940,   1252,    477, 
  -1629,   1688,    602, 
  -1202,    617,    280, 
  -1737,    393,    580, 
  -1528,   1077,   1199, 
  -2165,   -161,   1408, 
  -2504,  -1087,   2371, 
  -3458,   -175,   1395, 
  -1397,    -98,   -843, 
  -2252,   -177,  -1149, 
  -1489,   -726,  -1283, 
  -1558,   -265,  -1744, 
  -1867,   -821,  -1897, 
  -2062,  -1516,  -2340, 
  -2595,  -1142,  -2861, 
    170,     46,   -819, 
   -193,   -204,  -1151, 
    326,   -196,  -1532, 
    780,    329,   -816, 
    201,    369,  -1243, 
    650,   -209,  -1060, 
   1144,    -15,  -1216, 
   1203,   -259,  -1867, 
   -890,   -564,  -1430, 
   -638,   -852,  -1921, 
    177,   -739,  -1358, 
   -261,   -526,  -1666, 
    206,   -407,  -2255, 
    338,   -526,   -822, 
    421,  -1095,  -1009, 
    765,   -607,  -1408, 
    825,  -1295,  -2004, 
    357,   -905,  -1815, 
    -58,  -1248,  -1588, 
   -596,  -1436,  -2046, 
    -73,  -1159,  -2116, 
   -115,  -1382,  -2581, 
   -160,  -1723,  -1952, 
     -6,  -2196,  -2954, 
   -649,  -1705,  -2603, 
   -617,  -1453,  -3282, 
   -949,  -2019,  -3102, 
   -812,   1544,   1937, 
  -1854,    574,   2000, 
  -1463,   1140,   2649, 
  -2683,   1748,   1452, 
  -2486,   2241,   2523, 
    783,   1910,   1435, 
    581,   2682,   1376, 
    236,   2197,   1885, 
   -453,   2943,   2057, 
   -682,   2178,   2565, 
  -1342,   3201,   3328, 
   -288,   -184,    262, 
    121,   -149,   -183, 
    758,   -412,    206, 
   1038,   -204,    853, 
   1577,   -457,    700, 
    937,   -640,   -567, 
   1508,   -528,  -1024, 
   -225,   -527,   -427, 
   -564,  -1095,   -332, 
   -742,   -353,   -186, 
  -1288,   -459,     84, 
  -1853,   -484,   -274, 
  -1554,   -731,    825, 
  -2425,   -234,    382, 
  -1722,    293,   -271, 
  -2515,    425,   -564, 
  -2599,    818,    464, 
   -358,    118,   -375, 
   -613,    198,   -874, 
   -690,    683,   -324, 
  -1352,   1155,   -168, 
  -1093,    129,   -324, 
  -1184,    611,   -858, 
    433,    386,   -372, 
   -120,    486,   -634, 
    234,    851,   -631, 
    602,    128,     46, 
   1099,    410,    159, 
    715,   -145,   -424, 
   1198,    -85,   -593, 
   1390,    367,   -358, 
   1683,    362,   -964, 
   1711,    622,     45, 
   2033,    833,   -383, 
   2890,    549,   -506, 
      7,    401,     52, 
     72,    811,    415, 
    566,    668,     41, 
    467,   1218,    130, 
     68,    957,   -187, 
    -25,   1649,   -103, 
   -661,    260,    214, 
   -925,    -94,    612, 
   -321,   -422,    965, 
   -788,   -672,   1783, 
    400,   -673,    779, 
    741,   -595,   1635, 
   -161,    307,    657, 
   -382,    836,    871, 
   -814,    400,   1223, 
    364,    606,   1247, 
     57,     75,   1571, 
    151,    471,   2287, 
    -81,   1021,   1502, 
    227,   1470,   1097, 
    658,   1275,   1653, 
    664,   1478,   2377, 
    263,   -127,    444, 
    264,     89,    969, 
    794,    171,    576, 
    821,    186,   1226, 
    404,    462,    517, 
    339,    918,    794, 
   1280,   1423,    196, 
   1453,   2019,    365, 
   1615,   1481,    672, 
   2394,   1708,    508, 
    806,   1238,    573, 
    713,   1158,   1078, 
   1285,   1436,   1232, 
   1790,   1188,   1141, 
    765,    643,    864, 
   1032,    797,   1279, 
    900,    563,   1827, 
   1514,    673,   2312, 
   1544,   1129,   3240, 
   1469,   1050,   1594, 
   1945,   1318,   1988, 
   2397,   2026,   2060, 
   3538,   2057,   2620, 
   1249,   -118,     74, 
   1727,    194,    421, 
   2078,    -50,   -463, 
    970,    688,   -432, 
   1149,    952,   -110, 
   1254,   1275,   -651, 
   1386,    929,    401, 
   1960,   1167,    232, 
    407,   -752,   -243, 
    859,  -1118,    172, 
   -227,   -860,   -992, 
   -796,  -1175,  -1380, 
      8,  -1282,   -388, 
    353,  -1781,  -1037, 
   -732,   -397,   -807, 
   -853,    -28,  -1342, 
  -1229,  -1207,  -1959, 
  -1015,  -1125,  -2543, 
  -1452,  -1791,  -2725, 
  -1891,  -2416,  -3269, 
   -918,  -1629,   -783, 
   -580,  -2155,   -698, 
  -1097,  -2364,    -96, 
  -1387,  -1513,      7, 
  -1588,  -2076,   -664, 
  -1473,  -2740,   -784, 
  -2378,  -3149,    -56, 
  -2856,  -2092,   -169, 
  -3391,  -3708,    316, 
  -1176,   -890,   -614, 
  -1944,  -1061,   -800, 
   -299,  -1517,  -1000, 
   -640,  -1850,  -1526, 
  -1454,  -1536,  -1233, 
  -1890,  -1955,  -1756, 
  -1086,  -1921,  -2122, 
   -750,  -2325,  -2260, 
  -1325,  -2413,  -2673, 
  -1114,  -2542,  -3459, 
  -1341,  -2901,  -3963, 
  -1160,  -2226,  -1393, 
  -1001,  -2772,  -1573, 
  -1594,  -2641,  -1978, 
  -1534,  -3046,  -2624, 
  -2224,  -2196,   -675, 
  -2807,  -3054,  -1102, 
  -2008,  -2840,  -1186, 
  -1980,  -3332,  -1695, 
  -1715,  -3562,   -505, 
  -2527,  -4000,  -1887, 
  -2333,  -2734,  -2296, 
  -3440,  -2401,  -3211, 
  -2008,  -3528,  -3337, 
  -2247,  -3291,  -4510, 
   -475,    949,    155, 
   -149,   1365,    545, 
   -757,   1644,   1083, 
   -217,   2053,   1353, 
  -1433,   2301,   1462, 
    495,   1661,    529, 
     10,   2037,    740, 
   2082,   1898,    978, 
   2831,   2294,    911, 
    842,    793,    420, 
   1223,   1023,    863, 
   1237,    451,    780, 
   1744,    708,    822, 
   1533,    284,   1384, 
   2135,    609,   1538, 
   2305,    626,    540, 
   2368,   1187,    955, 
   2586,   1255,     -7, 
   3116,   1131,    726, 
   3431,   1730,    428, 
   2734,   1648,   1307, 
   2988,   1231,   2010, 
   3523,   2024,   1488, 
   1034,   1657,    871, 
   1206,   2163,   1036, 
   1807,   2372,   1233, 
   1808,   1769,   1493, 
   1573,   2332,   1779, 
   1216,   1609,   1866, 
   1480,   1898,   2513, 
    465,   2708,   2776, 
    771,   3638,   3338, 
   1869,   2599,   2623, 
   2825,   2745,   2468, 
   2638,   2439,   1585, 
   2094,   2970,   1308, 
   2022,   3057,   1999, 
   3428,   2912,   1816, 
   4536,   2974,   2129, 
   1046,   2563,   2086, 
   1363,   3562,   2318, 
   2511,   1891,   2984, 
   1866,   2306,   3986, 
   3272,   2924,   3682, 
   3146,   3564,   2272, 
   3592,   3968,   2822, 
   2431,   3369,   3069, 
   1931,   4709,   3090, 
   2629,   4220,   3986, 
   4639,   4056,   3664, 
   4035,   5334,   4912, 
   } ; 
 
 
/* 
**  Band2Tb8: 
** 
**  Purpose: 
**      Vector Quantize the last 4-vector of the 10 LSP parameters. 
** 
**  Table Structure: 
**      8 bit, 256 entry table. 
*/ 
 
Word16   Band2Tb8[LspCbSize*4] = { 
      0,      0,      0,      0, 
    601,    512,   -542,    334, 
    428,   1087,   -484,   -132, 
    652,    622,   -391,   -572, 
    378,    799,    141,   -860, 
   1040,    409,    112,   -554, 
   1123,    670,    -75,   -847, 
   1421,    494,   -315,  -1095, 
    787,   1001,    114,   -460, 
    988,   1672,    216,   -681, 
   1007,   1241,   -132,  -1247, 
   1073,    399,    186,     -5, 
   1262,    193,   -694,   -129, 
    325,    196,     51,   -641, 
    861,    -59,    350,   -458, 
   1261,    567,    586,   -346, 
   1532,    885,    210,   -517, 
   2027,    937,    113,   -792, 
   1383,   1064,    334,     38, 
   1964,   1468,    459,    133, 
   2062,   1186,    -98,   -121, 
   2577,   1445,    506,   -373, 
   2310,   1682,     -2,   -960, 
   2876,   1939,    765,    138, 
   3581,   2360,    649,   -414, 
    219,    176,   -398,   -309, 
    434,    -78,   -435,   -880, 
   -344,    301,    265,   -552, 
   -915,    470,    657,   -380, 
    419,   -432,   -163,   -453, 
    351,   -953,      8,   -562, 
    789,    -43,     20,   -958, 
    302,   -594,   -352,  -1159, 
   1040,    108,   -668,   -924, 
   1333,    210,  -1217,  -1663, 
    483,    589,   -350,  -1140, 
   1003,    824,   -802,  -1184, 
    745,     58,   -589,  -1443, 
    346,    247,   -915,  -1683, 
    270,    796,   -720,  -2043, 
   1208,    722,   -222,   -193, 
   1486,   1180,   -412,   -672, 
   1722,    179,    -69,   -521, 
   2047,    860,   -666,  -1410, 
   -146,    222,   -281,   -805, 
   -189,     90,   -114,  -1307, 
   -152,   1086,   -241,   -764, 
   -439,    733,   -601,  -1302, 
   -833,   -167,   -351,   -601, 
   -856,   -422,   -411,  -1059, 
   -747,   -355,   -582,  -1644, 
   -837,    210,   -916,  -1144, 
  -1800,     32,   -878,  -1687, 
    -48,    -23,  -1146,     52, 
   -350,   -409,  -1656,   -364, 
    265,   -728,   -858,   -577, 
    458,   -247,  -1141,   -997, 
    691,   -407,  -1988,  -1161, 
    -66,   -104,   -705,  -1249, 
   -431,    -93,  -1191,  -1844, 
    203,   -732,  -1000,  -1693, 
     10,   -832,  -1846,  -1819, 
    493,   -128,  -1436,  -1768, 
    488,   -311,  -1730,  -2540, 
   -653,   -532,  -1150,  -1172, 
  -1086,   -289,  -1706,  -1533, 
   -699,  -1205,  -1216,  -1766, 
  -1032,  -1481,  -2074,  -1523, 
   -721,  -1220,  -2277,  -2600, 
     12,   -539,  -1484,  -1131, 
    -40,   -911,  -2106,   -441, 
   -471,   -484,  -2267,  -1549, 
   -141,   -988,  -3006,  -1721, 
  -1545,  -2102,   -583,    342, 
  -1383,  -2772,   -386,    -13, 
  -2118,  -2589,  -1205,     72, 
  -2147,  -3231,   -965,    390, 
  -2949,  -3300,   -621,    637, 
  -3907,  -4138,   -865,    803, 
  -1287,   -845,   -375,   -548, 
  -1416,  -1169,   -487,  -1277, 
  -1400,  -1690,  -1027,   -418, 
  -2018,  -1909,  -1188,  -1260, 
  -1418,  -2222,  -2029,   -128, 
  -2067,  -2998,  -2693,   -310, 
   -950,  -1028,  -1538,    185, 
  -1616,   -915,  -2205,   -549, 
     19,   -821,  -1145,    352, 
    184,  -1175,  -1356,   -627, 
   -547,  -1088,  -1661,   -911, 
   -216,  -1502,  -2197,   -948, 
   -795,  -1306,  -2374,   -451, 
   -924,  -1889,  -2796,   -680, 
   -600,  -1614,  -3609,   -885, 
  -2392,  -2528,    319,    303, 
  -2908,  -2095,   -310,    573, 
  -3460,  -2141,     49,   -113, 
  -2231,   -448,    675,   -146, 
  -2805,   -532,   1231,    479, 
  -2684,   -486,   -200,    611, 
  -3525,   -971,   -198,    704, 
  -3707,    173,    349,    254, 
  -4734,  -1447,    -34,    880, 
    777,   -512,    114,    -10, 
   1250,    -66,    442,     -5, 
    604,    613,    452,   -352, 
   1224,    777,    675,  -1014, 
  -1372,    -79,  -1208,   -238, 
  -2389,    -17,  -1157,   -818, 
  -1504,   -673,  -1133,  -1060, 
  -1984,   -799,  -2005,  -1973, 
  -2037,   -798,  -1068,   -105, 
  -3190,   -899,  -1817,   -194, 
   -156,   -886,    394,   -318, 
   -258,  -1283,    551,    202, 
   -536,  -1729,    910,    331, 
   -847,  -1109,    795,   -163, 
  -1171,  -1128,    715,    519, 
  -1080,  -1319,   1685,    668, 
  -1000,  -1921,     96,    211, 
  -1487,  -2148,    831,    174, 
  -1139,   -374,    414,     -4, 
  -1517,  -1383,    396,   -352, 
  -1012,    439,    -59,   -967, 
  -1812,    706,   -440,  -1030, 
  -1971,   -329,    -34,   -827, 
  -2472,  -1588,   -151,   -606, 
  -2161,    374,   -281,     76, 
  -3012,    231,    -15,   -690, 
   1104,    566,    721,    209, 
   1685,    564,    383,     98, 
   1898,    750,    792,    -97, 
    556,    -64,    561,    -93, 
    876,    162,    913,    -22, 
    961,    675,   1296,    140, 
    756,   -396,    851,    544, 
    360,   -303,   1341,    396, 
    878,    -22,   1464,    863, 
   -309,   -273,    642,   -129, 
   -686,    -82,    842,    454, 
     -5,    -47,   1069,    998, 
    -94,    967,   1277,    298, 
   -489,    385,   1473,    746, 
   -369,   -717,   1333,    242, 
    281,   -993,   1726,    924, 
    464,    601,   1575,   1376, 
   -250,    206,   2339,   1175, 
   -438,    377,   -597,   -285, 
  -1020,    787,   -790,   -287, 
   -458,   -410,    215,    295, 
   -589,   -860,   -121,    797, 
  -1175,    122,   -437,    466, 
  -1480,   -121,    367,    924, 
    234,    323,    770,   -555, 
    145,     30,    996,     26, 
     66,    849,     93,   -145, 
   -117,   1261,    474,   -399, 
  -1495,   1051,    218,   -506, 
  -1390,    694,    994,     88, 
    616,      7,     78,    304, 
   1060,     52,    -62,    835, 
    833,    454,    649,   1359, 
   -770,    464,     47,     93, 
   -574,   1199,    -39,    379, 
    114,    -98,    488,    485, 
    727,    244,    606,    696, 
    -76,    455,    671,    546, 
   -565,    -13,    145,    819, 
   -376,    569,    448,   1128, 
    218,    122,    265,   1167, 
    230,    738,    932,   1003, 
    138,    477,     36,    450, 
    404,    787,    -73,   1000, 
    497,   1259,    387,   1231, 
     17,    207,    195,    -79, 
    562,    358,     53,   -158, 
    493,    387,    478,    189, 
    678,    831,    640,    558, 
   -197,    523,    613,     57, 
    429,    894,    769,    111, 
     67,   1174,    568,    511, 
   1242,    824,    251,    840, 
   1419,   1074,    864,    481, 
    924,   1474,    669,    724, 
   1539,   1879,    654,   1590, 
    445,    337,   1111,    541, 
    472,   1421,   1264,   1094, 
    794,    735,   1103,    668, 
   1055,    863,   1192,   1020, 
    778,   1105,    806,   1798, 
   1052,   1527,   1587,   2151, 
    881,   1552,   1265,    391, 
    726,    872,   1812,    601, 
   1469,    280,   1008,    616, 
   1403,    577,   1803,   1244, 
   1650,   1314,   1148,   1072, 
   1297,   1669,   1911,   1026, 
   2093,   1044,   2115,   1189, 
   1644,   1961,   2587,   1512, 
     25,   -315,     -9,   -106, 
    290,   -339,    428,   -444, 
    -68,   -783,    735,    772, 
    245,   -555,    468,     47, 
    334,   -895,    814,    146, 
    235,    368,   -964,   -959, 
   -203,    315,  -1566,  -1217, 
    801,     17,   -276,   -354, 
    894,   -495,   -789,   -635, 
    716,    291,  -1189,   -357, 
    560,   -260,   -733,     -2, 
    679,   -508,  -1429,    211, 
    -51,    -62,   -428,    557, 
    322,   -638,   -211,    614, 
   -878,  -1057,    -84,    -71, 
   -388,  -1415,   -167,   -318, 
   -754,  -1574,    214,   -539, 
  -1419,  -2004,    -92,   -787, 
    -47,   -856,   -347,   -255, 
     23,  -1211,   -173,    320, 
   -658,   -487,   -893,    353, 
   -783,  -1587,   -584,    507, 
  -1420,   -859,   -378,    441, 
  -2095,  -1491,   -137,    439, 
   -321,  -1450,  -1288,    -12, 
   -359,  -2113,   -553,     -8, 
   -831,  -1918,  -1561,     32, 
  -1014,  -2487,  -1359,   -939, 
   -475,   -311,   -169,   -236, 
   -907,   -426,    276,   -611, 
    -96,   -400,     50,   -710, 
   -426,  -1022,    -10,   -985, 
   -197,   -258,   -744,   -575, 
   -611,   -930,   -771,   -394, 
   -267,   -776,   -612,   -939, 
   -256,  -1346,   -802,  -1122, 
   -796,  -1570,   -825,   -754, 
    712,    876,    141,    227, 
    981,   1509,     85,    124, 
   1462,   1228,    979,    -39, 
   1734,    999,   1481,    440, 
   2293,   1116,    769,    440, 
   2504,   1480,   1241,    356, 
   2474,   1909,   1558,    810, 
    917,   1134,    607,   -134, 
    509,   1809,    781,   -123, 
   1712,   1506,    559,   -423, 
   2037,   2317,    726,   -155, 
   3031,   2676,   1203,    331, 
   3664,   3274,   1768,    531, 
   1610,   1839,    867,    183, 
   1774,   1972,   1538,     97, 
   1822,   2158,   1282,    659, 
   2222,   2758,   1818,    900, 
   3251,   2124,   1723,    996, 
   3633,   2336,   2408,   1453, 
   2923,   3517,   2567,   1318, 
   } ; 
 
/* 
**  BandQntTable: 
** 
**  Purpose: 
**      collects the three subvector tables. 
*/ 
 
 
Word16  *BandQntTable[LspQntBands] = { 
   Band0Tb8 , 
   Band1Tb8 , 
   Band2Tb8 , 
   } ; 
 
/* 
**  PerFiltZeroTable: 
** 
**  Purpose: 
**     Creates the FIR part of the formant perceptual weighting filter.  
**     Corresponds to gamma1 in section 2.8. 
** 
**  Table Structure: 
**     (0.9) to the x power, where x = [1,..,10] 
**     These values are scaled by 32768. 
*/ 
 
Word16   PerFiltZeroTable[LpcOrder] = { 
   29491 , 
   26542 , 
   23888 , 
   21499 , 
   19349 , 
   17414 , 
   15673 , 
   14106 , 
   12695 , 
   11425 , 
   } ; 
 
/* 
**  PerFiltPoleTable: 
** 
**  Purpose: 
**     Creates the IIR part of the formant perceptual weighting filter.  
**     Corresponds to gamma2 in section 2.8. 
** 
**  Table Structure: 
**     (0.5) to the x power, where x = [1,..,10] 
**     These values are scaled by 32768 
*/ 
 
Word16   PerFiltPoleTable[LpcOrder] = { 
   16384 , 
    8192 , 
    4096 , 
    2048 , 
    1024 , 
     512 , 
     256 , 
     128 , 
      64 , 
      32 , 
   } ; 
 
/* 
**  PostFiltZeroTable: 
** 
**  Purpose: 
**     Creates the FIR part of the formant postfilter.  Corresponds to 
**     lambda1 in section 3.8. 
** 
**  Table Structure: 
**     (0.65) to the x power, where x = [1,..,10] 
**     These values are scaled by 32768 
*/ 
 
Word16   PostFiltZeroTable[LpcOrder] = { 
  21299 , 
  13844 , 
   8999 , 
   5849 , 
   3802 , 
   2471 , 
   1606 , 
   1044 , 
    679 , 
    441 , 
   } ; 
 
/* 
**  PostFiltPoleTable: 
** 
**  Purpose: 
**     Creates the IIR part of the formant postfilter.  Corresponds to 
**     lambda2 in section 3.8. 
** 
**  Table Structure: 
**     (0.75) to the x power, where x = [1,..,10] 
**     These values are scaled by 32768 
*/ 
 
Word16   PostFiltPoleTable[LpcOrder] = { 
 24576 , 
 18432 , 
 13824 , 
 10368 , 
  7776 , 
  5832 , 
  4374 , 
  3281 , 
  2460 , 
  1845 , 
   } ; 
 
/* 
**  Nb_puls: 
** 
**  Purpose: 
**      Indexing 
** 
**  Table Structure: 
**      Table values are the number of non-zero pulses in the high-rate 
**      excitation (MP-MLQ), indexed by subframe number (0,..,3). 
*/ 
 
Word16   Nb_puls[4] = { 6,5,6,5}; 
 
/* 
**  FcbkGainTable: 
** 
**  Purpose: 
**      Logarithmic scalar quantizer in 24 steps of 3.2 dB each 
** 
**  Table Structure: 
**      Contains x where 20*log10(x) = 3.2*i,  i = 1,..,24 
*/ 
 
Word16   FcbkGainTable[NumOfGainLev] = { 
    1 , 
    2 , 
    3 , 
    4 , 
    6 , 
    9 , 
   13 , 
   18 , 
   26 , 
   38 , 
   55 , 
   80 , 
  115 , 
  166 , 
  240 , 
  348 , 
  502 , 
  726 , 
 1050 , 
 1517 , 
 2193 , 
 3170 , 
 4582 , 
 6623 , 
   } ; 
 
/* 
**  MaxPosTable: 
** 
**  Purpose: 
**      size of the high rate fixed excitation codebooks (MP-MLQ) 
** 
**  Table Structure: 
**      Table values are the number of codewords in the high rate fixed 
**      excitation codebook (MP-MLQ), indexed by subframe number (0,..,3). 
**      MaxPosTable[i] is the number of combinations of i elements among 30 
**      non-zero pulses in the high-rate 
*/ 
 
Word32   MaxPosTable[4] = { 
 0x00090f6fL , 
 0x00022caaL , 
 0x00090f6fL , 
 0x00022caaL , 
   } ; 
 
/* 
**  CombinatorialTable: 
** 
**  Purpose: 
**      used for the coding and the decoding of the pulses positions 
**      for the high-rate fixed excitation codebook 
** 
**  Table Structure: 
**      CombinatorialTable[i][j] is the number of combinations of 
**      (MaxPulsNum-1-i) elements among (SubFrLen-2-j) 
*/ 
 
Word32   CombinatorialTable[MaxPulseNum][SubFrLen/Sgrid] = { 
 { 118755L , 
  98280L , 
  80730L , 
  65780L , 
  53130L , 
  42504L , 
  33649L , 
  26334 , 
  20349 , 
  15504 , 
  11628 , 
   8568 , 
   6188 , 
   4368 , 
   3003 , 
   2002 , 
   1287 , 
    792 , 
    462 , 
    252 , 
    126 , 
     56 , 
     21 , 
      6 , 
      1 , 
      0 , 
      0 , 
      0 , 
      0 , 
     0 }, 
 
 { 23751 , 
  20475 , 
  17550 , 
  14950 , 
  12650 , 
  10626 , 
   8855 , 
   7315 , 
   5985 , 
   4845 , 
   3876 , 
   3060 , 
   2380 , 
   1820 , 
   1365 , 
   1001 , 
    715 , 
    495 , 
    330 , 
    210 , 
    126 , 
     70 , 
     35 , 
     15 , 
      5 , 
      1 , 
      0 , 
      0 , 
      0 , 
    0 } , 
 
  { 3654 , 
   3276 , 
   2925 , 
   2600 , 
   2300 , 
   2024 , 
   1771 , 
   1540 , 
   1330 , 
   1140 , 
    969 , 
    816 , 
    680 , 
    560 , 
    455 , 
    364 , 
    286 , 
    220 , 
    165 , 
    120 , 
     84 , 
     56 , 
     35 , 
     20 , 
     10 , 
      4 , 
      1 , 
      0 , 
      0 , 
    0 } , 
 
   {  406 , 
    378 , 
    351 , 
    325 , 
    300 , 
    276 , 
    253 , 
    231 , 
    210 , 
    190 , 
    171 , 
    153 , 
    136 , 
    120 , 
    105 , 
     91 , 
     78 , 
     66 , 
     55 , 
     45 , 
     36 , 
     28 , 
     21 , 
     15 , 
     10 , 
      6 , 
      3 , 
      1 , 
      0 , 
      0 } , 
 
   { 29 , 
     28 , 
     27 , 
     26 , 
     25 , 
     24 , 
     23 , 
     22 , 
     21 , 
     20 , 
     19 , 
     18 , 
     17 , 
     16 , 
     15 , 
     14 , 
     13 , 
     12 , 
     11 , 
     10 , 
      9 , 
      8 , 
      7 , 
      6 , 
      5 , 
      4 , 
      3 , 
      2 , 
      1 , 
    0  }, 
 
   {  1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
      1 , 
    1 } , 
   } ; 
 
/* 
**  AcbkGainTable085: 
** 
**  Purpose: 
**      Used to calculate the error expression in pitch prediction 
**      optimization (also described as an adaptive codebook approach) 
** 
**      Table Structure: 
**      The table is structured as 85 20-element vectors.  These 
**      vectors are structured as precalculated values in the error 
**      expression for the pitch predictor.  Gi is the gain value 
**      multiplying the signal delayed by a pitch period (+/- offset). 
**      In equation 41.2, Gi would be equivalent to bij. 
**       
**      1st 5 elements:   G1  G2  G3  G4  G5 in Q14 (i.e. scaled by 16384) 
**      2nd 5 elements:  -G1^2  -G2^2  -G3^2  -G4^2  -G5^2 
**           These are scaled down by 14 bits (factor of 16384) after 
**           being squared. 
**      Next 10 elements: These are the off-diagonal elements 
**           -G1*G2  -G1*G3  -G2*G3  -G1*G4  -G2*G4 
**           -G3*G4  -G1*G5  -G2*G5  -G3*G5  -G4*G5 
**           These are scaled down by 14 bits (factor of 16384) 
*/ 
 
Word16 AcbkGainTable085[85*20] = { 
     0,      0,      0,      0,      0,      0,      0,      0,  
     0,      0,      0,      0,      0,      0,      0,      0,  
     0,      0,      0,      0,    800,   1496,    167,   -256,  
  -338,    -39,   -136,     -1,     -4,     -6,    -73,     -8,  
   -15,     12,     23,      2,     16,     30,      3,     -5,  
  -462,   -686,    493,   2575,    311,    -13,    -28,    -14,  
  -404,     -5,    -19,     13,     20,     72,    107,    -77,  
     8,     13,     -9,    -48,   1483,    144,    784,    928, 
  1243,   -134,     -1,    -37,    -52,    -94,    -13,    -71,  
    -6,    -84,     -8,    -44,   -112,    -10,    -59,    -70,  
   -77,    275,   3522,   1056,  -1254,      0,     -4,   -757,  
   -68,    -95,      1,     16,    -59,      4,    -17,   -227,  
    -5,     21,    269,     80,   -125,    -40,   -264,    381,  
  5027,      0,      0,     -4,     -8,  -1542,      0,     -2,  
     0,      2,      0,      6,     38,     12,     81,   -117,  
   138,    332,   2215,   2574,   1339,     -1,     -6,   -299,  
  -404,   -109,     -2,    -18,    -44,    -21,    -52,   -348, 
   -11,    -27,   -181,   -210,   3685,   2883,   -887,    866,  
 -1639,   -828,   -507,    -48,    -45,   -164,   -648,    199,  
   156,   -194,   -152,     46,    368,    288,    -88,     86,  
  1396,   2146,   2235,    345,    942,   -118,   -281,   -305,  
    -7,    -54,   -182,   -190,   -292,    -29,    -45,    -47,  
   -80,   -123,   -128,    -19,     13,   4475,   3549,   -804,  
  -655,      0,  -1222,   -768,    -39,    -26,     -3,     -2,  
  -969,      0,    219,    174,      0,    179,    141,    -32,  
  -724,    254,    242,   6049,   2462,    -32,     -3,     -3,  
 -2233,   -370,     11,     10,     -3,    267,    -94,    -89,  
   108,    -38,    -36,   -909,    626,  -1713,   6121,   4561,  
 -1061,    -23,   -179,  -2287,  -1270,    -68,     65,   -233,  
   640,   -174,    477,  -1704,     40,   -111,    396,    295,  
  -350,   1391,   7985,    511,   -405,     -7,   -118,  -3892,  
   -15,    -10,     29,    170,   -678,     10,    -43,   -249,  
    -8,     34,    197,     12,   3144,   -529,    608,   2530,  
  3878,   -603,    -17,    -22,   -390,   -918,    101,   -116,  
    19,   -485,     81,    -93,   -744,    125,   -144,   -599,  
  2589,   -689,   3045,   5603,   -404,   -409,    -29,   -566,  
 -1916,    -10,    108,   -481,    128,   -885,    235,  -1041,  
    63,    -17,     75,    138,   3107,    513,   1374,  -3594,  
 -4922,   -589,    -16,   -115,   -788,  -1478,    -97,   -260,  
   -43,    681,    112,    301,    933,    154,    413,  -1079,  
  2468,   6010,   1107,   -390,   1961,   -372,  -2204,    -74,  
    -9,   -234,   -905,   -166,   -406,     58,    143,     26,  
  -295,   -719,   -132,     46,   4773,   2766,   2368,   4862,  
 -4044,  -1390,   -467,   -342,  -1443,   -998,   -806,   -690,  
  -399,  -1416,   -821,   -702,   1178,    682,    584,   1200,  
  1665,  -1879,   1443,   1701,   8562,   -169,   -215,   -127,  
  -176,  -4475,    190,   -146,    165,   -172,    195,   -149,  
  -870,    982,   -754,   -889,   2716,   9011,  -1007,    755,  
 -1785,   -450,  -4956,    -61,    -34,   -194,  -1493,    167,  
   554,   -125,   -415,     46,    296,    982,   -109,     82,  
 -2727,   7548,   1285,    938,   3420,   -453,  -3478,   -100,  
   -53,   -714,   1256,    213,   -592,    156,   -432,    -73,  
   569,  -1576,   -268,   -196,   3677,    882,   4050,   1202,  
  2323,   -825,    -47,  -1001,    -88,   -329,   -198,   -909,  
  -218,   -269,    -64,   -297,   -521,   -125,   -574,   -170,  
  2046,   -753,    122,  10102,    603,   -255,    -34,      0,  
 -6229,    -22,     94,    -15,      5,  -1261,    464,    -75,  
   -75,     27,     -4,   -372,    449,  -1815,  10690,   3870,  
  -527,    -12,   -201,  -6976,   -914,    -16,     49,   -293,  
  1184,   -106,    428,  -2525,     14,    -58,    344,    124,  
  -941,   2352,   5049,   3650,   2637,    -54,   -337,  -1556,  
  -813,   -424,    135,    290,   -725,    209,   -524,  -1125,  
   151,   -378,   -812,   -587,  -1879,    796,   3117,   9569,  
  -404,   -215,    -38,   -593,  -5589,     -9,     91,    357,  
  -151,   1097,   -464,  -1821,    -46,     19,     76,    236,  
 -1715,   2043,  -2096,   9946,   4001,   -179,   -254,   -268,  
 -6038,   -977,    213,   -219,    261,   1041,  -1240,   1272,  
   418,   -498,    511,  -2429,  -5772,   -618,  -3921,    284,  
 -3155,  -2033,    -23,   -938,     -4,   -607,   -218,  -1381,  
  -148,    100,     10,     68,  -1111,   -119,   -755,     54,  
   382,   4748,   8003,  -2064,   2198,     -8,  -1376,  -3909,  
  -260,   -294,   -110,   -186,  -2319,     48,    598,   1008,  
   -51,   -637,  -1073,    277,   -867,   3015,  11926,  -1675,  
   947,    -45,   -555,  -8681,   -171,    -54,    159,    631,  
 -2195,    -88,    308,   1219,     50,   -174,   -690,     96,  
 -4933,   -432,   6757,   3771,   1352,  -1485,    -11,  -2786,  
  -867,   -111,   -130,   2034,    178,   1135,     99,  -1555,  
   407,     35,   -557,   -311,    152,   9726,   4231,  -1928,  
  1490,     -1,  -5774,  -1092,   -226,   -135,    -90,    -39,  
 -2511,     17,   1144,    498,    -13,   -884,   -384,    175,  
  2512,    193,   9033,   5361,  -3148,   -385,     -2,  -4980,  
 -1754,   -605,    -29,  -1385,   -106,   -822,    -63,  -2956,  
   482,     37,   1735,   1030,   8464,   2844,     12,    549,  
  2132,  -4373,   -493,      0,    -18,   -277,  -1469,     -6,  
    -2,   -284,    -95,      0,  -1101,   -370,     -1,    -71,  
  2141,  -2602,   7166,   9046,  -1350,   -279,   -413,  -3134,  
 -4994,   -111,    340,   -936,   1138,  -1182,   1436,  -3957,  
   176,   -214,    590,    745,   -244,    278,  13307,   1227,  
  -161,     -3,     -4, -10808,    -91,     -1,      4,    198,  
  -226,     18,    -20,   -997,     -2,      2,    131,     12,  
 -1947,   8217,   6269,    917,  -2559,   -231,  -4121,  -2399,  
   -51,   -399,    976,    745,  -3144,    108,   -460,   -350,  
  -304,   1283,    979,    143,  -1810,   2061,  -2781,   6056,  
 10058,   -200,   -259,   -472,  -2238,  -6174,    227,   -307,  
   349,    669,   -761,   1028,   1111,  -1265,   1707,  -3717,  
  7827,   9161,  -3409,   2473,  -1510,  -3739,  -5122,   -709,  
  -373,   -139,  -4376,   1628,   1906,  -1181,  -1382,    514,  
   721,    844,   -314,    228,  -1430,   8313,   9541,  -2955,  
  1626,   -124,  -4218,  -5556,   -533,   -161,    725,    832,  
 -4841,   -257,   1499,   1721,    142,   -825,   -947,    293,  
  2819,  -4247,   5391,   8673,   2756,   -485,  -1101,  -1774,  
 -4591,   -463,    730,   -927,   1397,  -1492,   2248,  -2854,  
  -474,    714,   -907,  -1459,    141,  14552,    690,    257,  
  -112,     -1, -12926,    -29,     -4,      0,   -125,     -5,  
  -613,     -2,   -228,    -10,      0,     99,      4,      1,  
 11938,  -1859,   1806,   -962,   -884,  -8699,   -211,   -199,  
   -56,    -47,   1355,  -1316,    205,    701,   -109,    106,  
   644,   -100,     97,    -51,   3728,   1982,   2264,   4584,  
  3131,   -848,   -239,   -312,  -1282,   -598,   -451,   -515,  
  -273,  -1043,   -554,   -633,   -712,   -378,   -432,   -876,  
 -1181,    766,    720,  14303,   -216,    -85,    -35,    -31,  
-12486,     -2,     55,     51,    -33,   1031,   -668,   -628,  
   -15,     10,      9,    189,  -4385,   4826,  10112,   1569,  
  3388,  -1173,  -1421,  -6242,   -150,   -700,   1291,   2706,  
 -2979,    420,   -462,   -969,    906,   -998,  -2091,   -324,  
  -448,   1932,  15591,  -1842,    657,    -12,   -227, -14837,  
  -207,    -26,     52,    427,  -1838,    -50,    217,   1753,  
    18,    -77,   -626,     74,  -4141,   1844,   3962,   5517,  
  6220,  -1046,   -207,   -958,  -1858,  -2361,    466,   1001,  
  -446,   1394,   -621,  -1334,   1572,   -700,  -1504,  -2094,  
   729,  -2299,  14755,   3657,   -952,    -32,   -322, -13288,  
  -816,    -55,    102,   -656,   2071,   -162,    513,  -3294,  
    42,   -133,    857,    212,  -1385,   5801,  13339,  -3137,  
  1344,   -117,  -2054, -10861,   -600,   -110,    490,   1127,  
 -4723,   -265,   1111,   2554,    113,   -476,  -1094,    257,  
  4710,   9661,   1073,  -2467,   3274,  -1354,  -5697,    -70,  
  -371,   -654,  -2777,   -308,   -633,    709,   1455,    161,  
  -941,  -1930,   -214,    493,   1843,  -3624,  12422,   6898,  
 -1559,   -207,   -802,  -9419,  -2904,   -148,    407,  -1397,  
  2748,   -775,   1526,  -5230,    175,   -344,   1182,    656,  
  1433,   2394,   2507,   1380,   8780,   -125,   -349,   -383,  
  -116,  -4705,   -209,   -219,   -366,   -120,   -201,   -211,  
  -768,  -1283,  -1343,   -740,  -1712,  12915,   5883,  -2197,  
   991,   -179, -10181,  -2112,   -294,    -60,   1350,    615,  
 -4638,   -229,   1732,    789,    103,   -781,   -356,    133,  
 15072,   2158,  -1245,    910,   -496, -13865,   -284,    -94,  
   -50,    -15,  -1986,   1145,    164,   -837,   -119,     69,  
   456,     65,    -37,     27,   4655,   7319,   4916,    586,  
 -3381,  -1322,  -3270,  -1475,    -20,   -697,  -2079,  -1396,  
 -2196,   -166,   -261,   -175,    960,   1510,   1014,    120,  
  1191,  -2140,   5120,  13498,  -1418,    -86,   -279,  -1600,  
-11121,   -122,    155,   -372,    669,   -981,   1763,  -4218,  
   103,   -185,    443,   1168,  -1530,   -817,   8191,   9632,  
 -1452,   -143,    -40,  -4095,  -5663,   -128,    -76,    765,  
   408,    900,    480,  -4815,   -135,    -72,    726,    854,  
 -3236,    607,   1696,  -2106,  11485,   -639,    -22,   -175,  
  -270,  -8051,    119,    335,    -62,   -416,     78,    218,  
  2268,   -425,  -1189,   1476,   3203,  -1903,   -837,   9679,  
  7057,   -626,   -221,    -42,  -5718,  -3039,    372,    163,  
   -97,  -1892,   1124,    494,  -1380,    819,    360,  -4169,  
   213,   -655,  17015,    620,   -384,     -2,    -26, -17671,  
   -23,     -9,      8,   -221,    681,     -8,     24,   -644,  
     5,    -15,    399,     14,   5088,     35,  -3339,   3726,  
  8488,  -1580,      0,   -680,   -847,  -4397,    -10,   1037,  
     7,  -1157,     -8,    759,  -2636,    -18,   1730,  -1930,  
  -988,   1454,  -2688,  15039,   2682,    -59,   -129,   -441,  
-13805,   -439,     87,   -162,    238,    907,  -1335,   2467,  
   161,   -238,    440,  -2462,  -4865,  -2842,    -53,   5495,  
  6523,  -1445,   -493,      0,  -1843,  -2597,   -844,    -16,  
    -9,   1632,    953,     18,   1937,   1131,     21,  -2188,  
  3076,  15069,  -2914,   1810,   -971,   -577, -13860,   -518,  
  -200,    -57,  -2829,    547,   2680,   -339,  -1665,    322,  
   182,    893,   -172,    107,   1311,   5355,  11054,   2299,  
 -3654,   -105,  -1750,  -7458,   -322,   -814,   -428,   -885,  
 -3613,   -184,   -751,  -1551,    292,   1194,   2465,    512,  
  4035,   5619,   4618,   1815,   1912,   -994,  -1927,  -1301,  
  -201,   -223,  -1384,  -1137,  -1583,   -447,   -622,   -511,  
  -471,   -656,   -539,   -211,  -2131,   2754,  -4501,  12879,  
  7432,   -277,   -463,  -1236, -10124,  -3371,    358,   -585,  
   756,   1675,  -2165,   3538,    967,  -1249,   2042,  -5842,  
  5618,   -515,   3219,  -4149,   4857,  -1926,    -16,   -632,  
 -1050,  -1440,    176,  -1104,    101,   1422,   -130,    815,  
 -1666,    152,   -954,   1230,   1838,  -1709,   1139,  16867,  
   716,   -206,   -178,    -79, -17366,    -31,    191,   -127,  
   118,  -1892,   1759,  -1173,    -80,     74,    -49,   -737,  
  1978,  -3845,  10050,  11854,  -2492,   -238,   -902,  -6164,  
 -8576,   -379,    464,  -1213,   2358,  -1431,   2782,  -7271,  
   301,   -585,   1529,   1803,  -2600,  11246,  11289,  -3647,  
  1463,   -412,  -7720,  -7778,   -812,   -130,   1784,   1791,  
 -7749,   -578,   2504,   2513,    232,  -1004,  -1008,    325,  
  3442,    907,   2725,   8970,   3638,   -723,    -50,   -453,  
 -4911,   -808,   -190,   -572,   -150,  -1884,   -496,  -1492,  
  -764,   -201,   -605,  -1992,   -126,  17498,   3481,  -2003,  
  1090,      0, -18689,   -739,   -244,    -72,    135,     26,  
 -3717,    -15,   2139,    425,      8,  -1165,   -231,    133,  
 -1814,   1048,  -2164,   4070,  16272,   -200,    -67,   -285,  
 -1011, -16160,    116,   -239,    138,    450,   -260,    537,  
  1801,  -1041,   2149,  -4042,   9354,  12580,  -1883,    962,  
  -617,  -5341,  -9660,   -216,    -56,    -23,  -7183,   1075,  
  1446,   -549,   -738,    110,    352,    474,    -71,     36,  
  1708,   4199,   7387,   6335,   1003,   -178,  -1076,  -3330,  
 -2449,    -61,   -437,   -770,  -1893,   -660,  -1623,  -2856,  
  -104,   -257,   -452,   -388,  -2624,   5623,  17310,  -2353,  
   592,   -420,  -1930, -18288,   -338,    -21,    900,   2772,  
 -5941,   -376,    807,   2486,     94,   -203,   -625,     85,  
  1211,   -850,   1193,  -1926,  15992,    -89,    -44,    -86,  
  -226, -15609,     62,    -88,     61,    142,   -100,    140,  
 -1182,    830,  -1165,   1880,   3983,  -2054,  11506,    -19,  
  3622,   -968,   -257,  -8080,      0,   -801,    499,  -2797,  
  1442,      4,     -2,     13,   -880,    454,  -2544,      4,  
  -786,  -1354,  16092,   7246,  -1665,    -37,   -111, -15805,  
 -3205,   -169,    -65,    772,   1330,    348,    599,  -7117,  
   -80,   -137,   1636,    736,  -4316,   -511,   6674,  11665,  
  4633,  -1137,    -15,  -2719,  -8305,  -1310,   -134,   1758,  
   208,   3073,    364,  -4752,   1220,    144,  -1887,  -3299,  
  7912,   4557,   1937,   1885,   7037,  -3821,  -1267,   -229,  
  -216,  -3022,  -2200,   -935,   -538,   -910,   -524,   -222,  
 -3398,  -1957,   -832,   -809,   3434,   2967,   5867,   8196,  
  8766,   -720,   -537,  -2101,  -4100,  -4690,   -622,  -1230,  
 -1062,  -1718,  -1484,  -2935,  -1837,  -1588,  -3139,  -4385,  
  5881,   9176,   8119,   3934,   3355,  -2111,  -5139,  -4023,  
  -944,   -687,  -3294,  -2914,  -4547,  -1412,  -2203,  -1949,  
 -1204,  -1879,  -1662,   -805 }; 
 
/* 
**  AcbkGainTable170: 
** 
**  Purpose: 
**      Used to calculate the error expression in pitch prediction 
**      optimization (also expressed as an adaptive codebook approach) 
** 
**  Table Structure: 
**      The table is structured as 170 20-element vectors.  These 
**      vectors are structured as precalculated values in the error 
**      expression for the pitch 
**      predictor.  Gi is the gain value multiplying the signal 
**      delayed by a pitch period (+/- offset).  In equation 41.2, 
**      Gi would be equivalent to bij. 
** 
**      1st 5 elements:   G1  G2  G3  G4  G5 in Q14 (i.e. scaled by 16384) 
**      2nd 5 elements:  -G1^2  -G2^2  -G3^2  -G4^2  -G5^2 
**           These are scaled down by 14 bits (factor of 16384) after 
**           being squared. 
**      Next 10 elements: These are the off-diagonal elements 
**           -G1*G2  -G1*G3  -G2*G3  -G1*G4  -G2*G4 
**           -G3*G4  -G1*G5  -G2*G5  -G3*G5  -G4*G5 
**           These are scaled down by 14 bits (factor of 16384) 
*/ 
 
Word16 AcbkGainTable170[170*20] = { 
     0,      0,      0,      0,      0,      0,      0,      0,  
     0,      0,      0,      0,      0,      0,      0,      0,  
     0,      0,      0,      0,    776,    212,    715,    670,  
   809,    -36,     -2,    -31,    -27,    -39,    -10,    -33,  
    -9,    -31,     -8,    -29,    -38,    -10,    -35,    -33,  
  1296,   1316,   -168,   -320,   -815,   -102,   -105,     -1,  
    -6,    -40,   -104,     13,     13,     25,     25,     -3,  
    64,     65,     -8,    -15,   -589,    680,   2478,    308,  
  -596,    -21,    -28,   -375,     -5,    -21,     24,     89,  
  -102,     11,    -12,    -46,    -21,     24,     90,     11,  
  -735,   -487,     -5,   2948,    468,    -33,    -14,      0,  
  -530,    -13,    -21,      0,      0,    132,     87,      0,  
    21,     13,      0,    -84,   1042,   1730,   1068,    333,  
   626,    -66,   -182,    -69,     -6,    -23,   -110,    -67,  
  -112,    -21,    -35,    -21,    -39,    -66,    -40,    -12,  
   486,   -769,   4074,   2825,  -1107,    -14,    -36,  -1013,  
  -487,    -74,     22,   -120,    191,    -83,    132,   -702,  
    32,    -52,    275,    191,   1521,   -767,   -124,   4320, 
  1026,   -141,    -35,      0,  -1139,    -64,     71,     11,  
    -5,   -401,    202,     32,    -95,     48,      7,   -270,  
  2425,   1267,   3439,    -91,  -1166,   -359,    -98,   -722,  
     0,    -83,   -187,   -509,   -266,     13,      7,     19,  
   172,     90,    244,     -6,  -1251,    975,    173,   4039,  
  2005,    -95,    -58,     -1,   -996,   -245,     74,     13,  
   -10,    308,   -240,    -42,    153,   -119,    -21,   -494,  
  1820,    632,   1322,   2062,   1031,   -202,    -24,   -106,  
  -259,    -64,    -70,   -146,    -51,   -229,    -79,   -166,  
  -114,    -39,    -83,   -129,   -447,   4904,    244,   -315,  
 -2038,    -12,  -1467,     -3,     -6,   -253,    134,      6,  
   -73,     -8,     94,      4,    -55,    610,     30,    -39,  
  -208,  -1102,    463,   -448,   5653,     -2,    -74,    -13,  
   -12,  -1950,    -14,      5,     31,     -5,    -30,     12,  
    71,    380,   -159,    154,   4739,   2600,  -1864,    856,  
 -1554,  -1371,   -412,   -212,    -44,   -147,   -752,    539,  
   295,   -247,   -135,     97,    449,    246,   -176,     81,  
  1894,   3533,     35,    -26,   2145,   -219,   -762,      0,  
     0,   -280,   -408,     -4,     -7,      3,      5,      0, 
  -248,   -462,     -4,      3,  -2699,   1841,   4072,   2443,  
  1582,   -444,   -207,  -1012,   -364,   -152,    303,    670,  
  -457,    402,   -274,   -607,    260,   -177,   -393,   -236,  
  -844,   3358,   6106,  -1059,   -537,    -43,   -688,  -2275,  
   -68,    -17,    173,    314,  -1251,    -54,    217,    395,  
   -27,    110,    200,    -34,   1251,   1016,   3020,   2210,  
  1445,    -95,    -63,   -556,   -298,   -127,    -77,   -230,  
  -187,   -168,   -137,   -407,   -110,    -89,   -266,   -194,  
  2099,   2277,   4038,   3533,  -2870,   -269,   -316,   -995,  
  -762,   -503,   -291,   -517,   -561,   -452,   -491,   -871,  
   367,    399,    707,    619,    400,  -1114,   8516,   2422,  
 -1117,     -9,    -75,  -4426,   -358,    -76,     27,   -208,  
   579,    -59,    164,  -1259,     27,    -75,    580,    165,  
 -4398,  -2011,   3912,  -2407,   2258,  -1180,   -247,   -934,  
  -353,   -311,   -540,   1050,    480,   -646,   -295,    575,  
   606,    277,   -539,    331,   1767,  -1447,   4240,   6160,  
  -757,   -190,   -127,  -1097,  -2316,    -35,    156,   -457,  
   374,   -664,    544,  -1594,     81,    -66,    195,    284,  
  1594,  -1463,   1035,   6938,   1920,   -155,   -130,    -65, 
 -2938,   -225,    142,   -100,     92,   -675,    619,   -438,  
  -186,    171,   -121,   -813,   -562,   4716,   4085,   -591,  
  2421,    -19,  -1357,  -1018,    -21,   -357,    162,    140,  
 -1175,    -20,    170,    147,     83,   -696,   -603,     87,  
  1552,   8778,   -935,    354,  -1424,   -147,  -4703,    -53,  
    -7,   -123,   -831,     88,    501,    -33,   -189,     20,  
   134,    763,    -81,     30,   4831,  -4431,     41,  -1479,  
 -2976,  -1424,  -1198,      0,   -133,   -540,   1306,    -12,  
    11,    436,   -400,      3,    877,   -804,      7,   -268,  
  2090,   1192,   1006,   1645,   4853,   -266,    -86,    -61,  
  -165,  -1437,   -152,   -128,    -73,   -210,   -119,   -101,  
  -619,   -353,   -298,   -487,   2386,   5712,   1426,    -94,  
  1350,   -347,  -1991,   -124,      0,   -111,   -832,   -207,  
  -497,     13,     32,      8,   -196,   -470,   -117,      7,  
 -1349,   1091,   1659,   8891,    313,   -111,    -72,   -168,  
 -4825,     -5,     89,    136,   -110,    732,   -592,   -900,  
    25,    -20,    -31,   -170,   9980,    916,   -381,   -808,  
    88,  -6080,    -51,     -8,    -39,      0,   -558,    232,  
    21,    492,     45,    -18,    -53,     -4,      2,      4, 
  2338,  -1031,   -248,   3928,   6484,   -333,    -64,     -3,  
  -942,  -2566,    147,     35,    -15,   -560,    247,     59,  
  -925,    408,     98,  -1555,   6166,  -1240,   -337,   3672,  
 -1277,  -2320,    -93,     -6,   -823,    -99,    466,    126,  
   -25,  -1382,    278,     75,    480,    -96,    -26,    286,  
  4377,   -132,  -2588,   1701,   4865,  -1169,     -1,   -409,  
  -176,  -1444,     35,    691,    -20,   -454,     13,    268,  
 -1299,     39,    768,   -505,   2594,   3295,   3944,   1481,  
   682,   -410,   -662,   -949,   -133,    -28,   -521,   -624,  
  -793,   -234,   -297,   -356,   -108,   -137,   -164,    -61,  
  4151,    624,    815,   4485,   2229,  -1052,    -23,    -40,  
 -1228,   -303,   -158,   -206,    -31,  -1136,   -170,   -223,  
  -565,    -84,   -111,   -610,  -3575,   -361,   4924,   2791,  
  4698,   -780,     -7,  -1480,   -475,  -1347,    -78,   1074,  
   108,    609,     61,   -839,   1025,    103,  -1412,   -800,  
 -2518,   3791,   8623,    315,   2465,   -387,   -877,  -4538,  
    -6,   -370,    582,   1325,  -1995,     48,    -73,   -166,  
   378,   -570,  -1297,    -47,   -691,   2989,   9957,   -421,  
 -1142,    -29,   -545,  -6051,    -10,    -79,    126,    420, 
 -1817,    -17,     76,    256,    -48,    208,    694,    -29,  
 -1918,    104,  -3190,  -3410,  -4440,   -224,      0,   -621,  
  -709,  -1203,     12,   -373,     20,   -399,     21,   -664,  
  -519,     28,   -864,   -924,  -3359,  -1668,   1854,   6939,  
  1430,   -688,   -169,   -209,  -2939,   -124,   -341,    380,  
   188,   1422,    706,   -785,    293,    145,   -161,   -606,  
    42,   9706,   3164,   -952,    907,      0,  -5750,   -611,  
   -55,    -50,    -25,     -8,  -1874,      2,    564,    183,  
    -2,   -537,   -175,     52,   1607,    785,   2862,   4327,  
  3307,   -157,    -37,   -500,  -1143,   -667,    -77,   -280,  
  -137,   -424,   -207,   -756,   -324,   -158,   -577,   -873,  
  6801,   3416,   2227,   1682,  -3217,  -2823,   -712,   -302,  
  -172,   -631,  -1418,   -924,   -464,   -698,   -350,   -228,  
  1335,    670,    437,    330,   3459,   3898,    364,   7841,  
 -2640,   -730,   -927,     -8,  -3753,   -425,   -823,    -76,  
   -86,  -1655,  -1865,   -174,    557,    628,     58,   1263,  
 -5902,  -3458,  -2465,  -1886,   4334,  -2126,   -730,   -371,  
  -217,  -1146,  -1245,   -888,   -520,   -679,   -398,   -283,  
  1561,    915,    652,    499,  -3710,   1133,   7849,   3443, 
  -215,   -840,    -78,  -3760,   -723,     -2,    256,   1777,  
  -543,    779,   -238,  -1649,    -48,     14,    103,     45,  
  4132,   2828,      2,  -4212,  -4116,  -1042,   -488,      0,  
 -1083,  -1034,   -713,      0,      0,   1062,    727,      0,  
  1038,    710,      0,  -1058,   5875,   8496,  -1796,   1376,  
 -1786,  -2107,  -4406,   -197,   -115,   -194,  -3047,    644,  
   931,   -493,   -713,    150,    640,    926,   -195,    150,  
  3143,   3483,   3546,   -793,   4489,   -603,   -740,   -767,  
   -38,  -1230,   -668,   -680,   -754,    152,    168,    171,  
  -861,   -954,   -971,    217,   2845,   7965,   3695,  -5432,  
  3978,   -494,  -3873,   -833,  -1801,   -966,  -1383,   -641,  
 -1796,    943,   2641,   1225,   -691,  -1934,   -897,   1319,  
  1538,    150,   7139,   2049,   3097,   -144,     -1,  -3110,  
  -256,   -585,    -14,   -670,    -65,   -192,    -18,   -892,  
  -290,    -28,  -1349,   -387,    618,   7520,   4729,   -238,  
 -3373,    -23,  -3452,  -1365,     -3,   -694,   -283,   -178,  
 -2170,      8,    109,     68,    127,   1548,    973,    -49,  
  2965,  -3013,   7912,   7076,  -1997,   -536,   -554,  -3821,  
 -3056,   -243,    545,  -1431,   1455,  -1280,   1301,  -3417, 
   361,   -367,    964,    862,   2443,   -929,  -1113,   9677,  
  4138,   -364,    -52,    -75,  -5716,  -1045,    138,    166,  
   -63,  -1443,    549,    657,   -617,    234,    281,  -2444,  
  1966,   3309,  10085,  -3399,   2105,   -236,   -668,  -6207,  
  -705,   -270,   -397,  -1210,  -2037,    408,    686,   2092,  
  -252,   -425,  -1295,    436,   -112,  -1368,   8868,   4822,  
  2048,      0,   -114,  -4800,  -1419,   -256,     -9,     61,  
   740,     33,    402,  -2610,     14,    171,  -1108,   -602,  
 -2597,    438,  -1839,   6229,   7266,   -411,    -11,   -206,  
 -2368,  -3223,     69,   -291,     49,    987,   -166,    699,  
  1152,   -194,    816,  -2763,   3454,    553,   9127,   4946,  
 -5596,   -728,    -18,  -5084,  -1493,  -1911,   -116,  -1924,  
  -308,  -1042,   -166,  -2755,   1179,    188,   3117,   1689,  
  -532,   -663,  12262,   2495,  -1004,    -17,    -26,  -9177,  
  -380,    -61,    -21,    398,    496,     81,    101,  -1867,  
   -32,    -40,    751,    152,  -2100,   1317,  -1509,  11425,  
  2997,   -269,   -105,   -139,  -7967,   -548,    168,   -193,  
   121,   1464,   -918,   1052,    384,   -240,    276,  -2090,  
  1193,  -2697,  11259,   5373,   -763,    -86,   -444,  -7737, 
 -1762,    -35,    196,   -819,   1853,   -391,    884,  -3692,  
    55,   -125,    525,    250,   2405,   -471,  11079,    203,  
   782,   -353,    -13,  -7491,     -2,    -37,     69,  -1626,  
   318,    -29,      5,   -137,   -114,     22,   -529,     -9,  
 -1871,   5685,  11290,  -2662,   1353,   -213,  -1972,  -7780,  
  -432,   -111,    649,   1289,  -3917,   -304,    923,   1834,  
   154,   -469,   -932,    220,  -3768,   5927,  -3093,   5041,  
  5212,   -866,  -2144,   -584,  -1551,  -1658,   1363,   -711,  
  1119,   1159,  -1824,    951,   1198,  -1885,    984,  -1603,  
 -2546,   9502,   5969,  -2440,   1928,   -395,  -5511,  -2175,  
  -363,   -226,   1477,    927,  -3462,   -379,   1415,    889,  
   299,  -1118,   -702,    287,  -4963,   3568,   4592,   5508,  
  3451,  -1503,   -777,  -1287,  -1851,   -727,   1080,   1391,  
 -1000,   1668,  -1199,  -1543,   1045,   -751,   -967,  -1160,  
  1745,  -2586,   3983,  10899,  -1551,   -186,   -408,   -968,  
 -7250,   -146,    275,   -424,    628,  -1161,   1720,  -2649,  
   165,   -244,    377,   1032,    867,   -456,   -727,   3369,  
 11822,    -45,    -12,    -32,   -692,  -8531,     24,     38,  
   -20,   -178,     93,    149,   -625,    329,    525,  -2431, 
  7535,   2422,   1926,   1405,   1599,  -3466,   -358,   -226,  
  -120,   -156,  -1114,   -886,   -284,   -646,   -207,   -165,  
  -735,   -236,   -188,   -137,   1041,   -735,   -142,  13209,  
  1515,    -66,    -33,     -1, -10649,   -140,     46,      9,  
    -6,   -839,    593,    114,    -96,     68,     13,  -1222,  
  7950,   6745,  -1444,  -1008,   2721,  -3857,  -2777,   -127,  
   -62,   -452,  -3273,    700,    594,    489,    415,    -88,  
 -1320,  -1120,    239,    167,  -4754,  -1379,   4522,   -578,  
 -5733,  -1379,   -116,  -1248,    -20,  -2006,   -400,   1312,  
   380,   -167,    -48,    159,  -1663,   -482,   1582,   -202,  
  3220,   5978,   5923,   2430,  -2689,   -633,  -2181,  -2141,  
  -360,   -441,  -1175,  -1164,  -2161,   -477,   -886,   -878,  
   528,    981,    972,    398,    377,   1312,  13978,  -1470,  
   677,     -8,   -105, -11925,   -132,    -28,    -30,   -321,  
 -1119,     33,    117,   1254,    -15,    -54,   -577,     60,  
 -3435,   6770,    314,   -885,   5686,   -720,  -2797,     -6,  
   -47,  -1973,   1419,     65,   -129,   -185,    366,     16,  
  1192,  -2349,   -109,    307,   3171,   8774,  -2260,   2679,  
  3069,   -613,  -4699,   -312,   -438,   -575,  -1698,    437, 
  1210,   -518,  -1435,    369,   -594,  -1643,    423,   -501,  
  5557,   1509,   5407,   -125,  -7386,  -1884,   -139,  -1784,  
     0,  -3330,   -511,  -1834,   -498,     42,     11,     41,  
  2505,    680,   2438,    -56,  -2838,   2595,  13228,    271,  
  1793,   -491,   -411, -10680,     -4,   -196,    449,   2291,  
 -2095,     47,    -42,   -219,    310,   -284,  -1447,    -29,  
   664,   -278,  14966,    951,   -711,    -26,     -4, -13672,  
   -55,    -30,     11,   -606,    253,    -38,     16,   -869,  
    28,    -12,    650,     41,    808,   1770,   8658,   5863,  
 -1486,    -39,   -191,  -4576,  -2098,   -134,    -87,   -427,  
  -935,   -289,   -633,  -3098,     73,    160,    785,    531,  
  3063,   1539,   2000,   -542,   9576,   -572,   -144,   -244,  
   -17,  -5597,   -287,   -374,   -188,    101,     51,     66,  
 -1790,   -900,  -1169,    317,    514,  14083,   -323,    896,  
  -891,    -16, -12106,     -6,    -49,    -48,   -442,     10,  
   277,    -28,   -770,     17,     27,    766,    -17,     48,  
   892,    158,   5237,  11057,  -1603,    -48,     -1,  -1674,  
 -7462,   -156,     -8,   -285,    -50,   -602,   -106,  -3534,  
    87,     15,    512,   1082,  -1612,   2564,  -4296,  12526, 
  5710,   -158,   -401,  -1126,  -9576,  -1990,    252,   -422,  
   672,   1232,  -1960,   3284,    561,   -893,   1497,  -4365,  
  4889,  -6878,    612,   6109,   4753,  -1459,  -2887,    -22,  
 -2277,  -1379,   2052,   -182,    257,  -1823,   2564,   -228,  
 -1418,   1995,   -177,  -1772,   3053,   -506,   2403,   9625,  
  1322,   -569,    -15,   -352,  -5655,   -106,     94,   -448,  
    74,  -1794,    297,  -1412,   -246,     40,   -194,   -777,  
  -754,  12904,   4480,  -2113,   1471,    -34, -10163,  -1225,  
  -272,   -132,    594,    206,  -3529,    -97,   1664,    577,  
    67,  -1159,   -402,    189,   4255,   1476,   5055,   2393,  
  2912,  -1105,   -132,  -1559,   -349,   -517,   -383,  -1313,  
  -455,   -621,   -215,   -738,   -756,   -262,   -898,   -425,  
 -1371,    535,   1417,  14604,   -997,   -114,    -17,   -122,  
-13017,    -60,     44,    118,    -46,   1222,   -477,  -1263,  
   -83,     32,     86,    888,   5368,  -1744,   4083,  -1236,  
  3753,  -1758,   -185,  -1017,    -93,   -860,    571,  -1338,  
   434,    405,   -131,    308,  -1229,    399,   -935,    283,  
  1588,  -3097,  14415,   3699,  -1171,   -154,   -585, -12683,  
  -835,    -83,    300,  -1397,   2725,   -358,    699,  -3255, 
   113,   -221,   1030,    264,    212,   7989,   9471,  -3344,  
  2009,     -2,  -3895,  -5475,   -682,   -246,   -103,   -123,  
 -4618,     43,   1630,   1933,    -26,   -979,  -1161,    410,  
   856,   2294,   -627,   6930,   6929,    -44,   -321,    -24,  
 -2931,  -2930,   -119,     32,     87,   -362,   -970,    265,  
  -362,   -970,    265,  -2931,   2357,  -4187,   7162,   7683,  
  3371,   -339,  -1070,  -3131,  -3603,   -693,    602,  -1030,  
  1830,  -1105,   1963,  -3359,   -485,    861,  -1474,  -1581,  
   350,   4585,  14053,  -3819,   1218,     -7,  -1283, -12054,  
  -890,    -90,    -97,   -300,  -3933,     81,   1068,   3275,  
   -26,   -341,  -1045,    284,  -3248,   3531,    475,   2137,  
 11711,   -644,   -761,    -13,   -278,  -8372,    700,     94,  
  -102,    423,   -460,    -62,   2322,  -2524,   -340,  -1528,  
 -3017,   3852,   1725,   8440,   5257,   -555,   -905,   -181,  
 -4348,  -1686,    709,    317,   -405,   1554,  -1984,   -889,  
   968,  -1236,   -553,  -2708,   -909,   3196,  15512,  -2528,  
  1066,    -50,   -623, -14686,   -390,    -69,    177,    861,  
 -3026,   -140,    493,   2393,     59,   -208,  -1009,    164,  
   959,  -3370,   9617,   9545,  -1761,    -56,   -693,  -5645, 
 -5561,   -189,    197,   -563,   1978,   -558,   1963,  -5603,  
   103,   -362,   1034,   1026,   7575,  11796,  -4845,   3252,  
 -1703,  -3502,  -8493,  -1433,   -645,   -177,  -5454,   2240,  
  3488,  -1503,  -2341,    961,    787,   1226,   -503,    338,  
  6409,   1722,   1764,  -4191,   6015,  -2507,   -181,   -189,  
 -1072,  -2208,   -673,   -690,   -185,   1639,    440,    451,  
 -2353,   -632,   -647,   1538,  -2420,  12161,   5038,   1286,  
 -2098,   -357,  -9027,  -1549,   -100,   -268,   1796,    744,  
 -3740,    190,   -954,   -395,   -310,   1557,    645,    164,  
 -2232,  -1341,   7246,   9470,  -1977,   -304,   -109,  -3204,  
 -5474,   -238,   -182,    987,    593,   1290,    775,  -4188,  
  -269,   -161,    874,   1143,   1030,   7034,   4231,   1551,  
  3077,    -64,  -3019,  -1093,   -146,   -577,   -442,   -266,  
 -1816,    -97,   -666,   -400,   -193,  -1321,   -794,   -291,  
  5121,  11835,   -477,  -1749,   2298,  -1601,  -8549,    -13,  
  -186,   -322,  -3699,    149,    344,    546,   1264,    -50,  
  -718,  -1660,     66,    245,  -3328,   3827,   5921,   9976,  
 -1045,   -676,   -894,  -2140,  -6075,    -66,    777,   1203,  
 -1383,   2027,  -2330,  -3605,   -212,    244,    377,    636, 
  3813,   5718,  -4666,  -3412,   5674,   -887,  -1995,  -1329,  
  -710,  -1965,  -1331,   1086,   1628,    794,   1191,   -972,  
 -1320,  -1980,   1616,   1181,   1348,  -3672,  13154,   6938,  
 -1690,   -110,   -823, -10561,  -2938,   -174,    302,  -1082,  
  2948,   -570,   1555,  -5570,    139,   -379,   1357,    716,  
  2151,  -3586,   6949,  12131,  -1224,   -282,   -785,  -2947,  
 -8982,    -91,    470,   -912,   1521,  -1592,   2655,  -5145,  
   160,   -268,    519,    906,  -2889,   9647,  10276,  -2728,  
   995,   -509,  -5680,  -6445,   -454,    -60,   1701,   1812,  
 -6051,   -481,   1606,   1711,    175,   -586,   -624,    165,  
  6177,   2184,    555,   1985,   6589,  -2329,   -291,    -18,  
  -240,  -2650,   -823,   -209,    -74,   -748,   -264,    -67,  
 -2484,   -878,   -223,   -798,   -492,    391,  17166,   -681,  
   240,    -14,     -9, -17987,    -28,     -3,     11,    515,  
  -410,    -20,     16,    713,      7,     -5,   -252,     10,  
 12628,   5448,  -2630,   3011,  -2695,  -9733,  -1811,   -422,  
  -553,   -443,  -4199,   2027,    874,  -2321,  -1001,    483,  
  2077,    896,   -432,    495,  -3628,   -534,   3447,   7002,  
  6751,   -803,    -17,   -725,  -2992,  -2782,   -118,    763, 
   112,   1550,    228,  -1473,   1495,    220,  -1420,  -2885,  
 -5239,   5901,   8107,   3650,   4846,  -1675,  -2125,  -4012,  
  -813,  -1433,   1887,   2592,  -2920,   1167,  -1315,  -1806,  
  1550,  -1745,  -2398,  -1080,   6157,   6678,   4099,  -1074,  
  2348,  -2314,  -2722,  -1025,    -70,   -336,  -2509,  -1540,  
 -1670,    403,    437,    268,   -882,   -957,   -587,    153,  
  1079,  16099,    242,   -881,   1690,    -71, -15820,     -3,  
   -47,   -174,  -1060,    -16,   -238,     58,    865,     13,  
  -111,  -1661,    -25,     90,   -278,    227,  -1039,   1636,  
 16945,     -4,     -3,    -65,   -163, -17526,      3,    -17,  
    14,     27,    -22,    103,    287,   -234,   1074,  -1693,  
 15778,  -1454,    574,   -603,   -107, -15195,   -129,    -20,  
   -22,      0,   1400,   -553,     51,    581,    -53,     21,  
   103,     -9,      3,     -3,   2406,   -836,  13224,   7993,  
 -4266,   -353,    -42, -10673,  -3899,  -1111,    122,  -1942,  
   674,  -1174,    407,  -6451,    626,   -217,   3443,   2081,  
  3184,  14368,  -3336,   2255,  -1801,   -619, -12600,   -679,  
  -310,   -198,  -2793,    648,   2926,   -438,  -1977,    459,  
   350,   1580,   -366,    247,  -1698,  17076,   2504,   -539, 
  -646,   -176, -17798,   -382,    -17,    -25,   1770,    259,  
 -2610,    -55,    561,     82,    -67,    673,     98,    -21,  
  2375,   -797,  -2696,  14483,   5383,   -344,    -38,   -443,  
-12803,  -1769,    115,    391,   -131,  -2100,    705,   2384,  
  -780,    262,    886,  -4759,  -2691,   2554,  -4520,   9573,  
 10655,   -442,   -398,  -1247,  -5594,  -6930,    419,   -742,  
   704,   1572,  -1492,   2641,   1750,  -1661,   2939,  -6226,  
 -4332,  -4399,  -1657,   4880,   7375,  -1145,  -1181,   -167,  
 -1453,  -3319,  -1163,   -438,   -444,   1290,   1310,    493,  
  1950,   1980,    745,  -2196,  -3498,   7405,   9955,   2693,  
 -2971,   -746,  -3347,  -6049,   -442,   -538,   1581,   2125,  
 -4499,    575,  -1217,  -1636,   -634,   1342,   1805,    488,  
  6717,  -3792,   7739,   2798,   3489,  -2754,   -877,  -3655,  
  -477,   -743,   1554,  -3173,   1791,  -1147,    647,  -1321,  
 -1430,    807,  -1648,   -595,   5263,   9770,   3463,   1069,  
 -3971,  -1690,  -5826,   -732,    -69,   -962,  -3138,  -1112,  
 -2065,   -343,   -637,   -226,   1275,   2368,    839,    259,  
  1243,  -2634,  16772,   1871,    332,    -94,   -423, -17169,  
  -213,     -6,    199,  -1273,   2696,   -142,    300,  -1915, 
   -25,     53,   -339,    -37,   2691,   2836,   3105,   5711,  
  4817,   -442,   -491,   -588,  -1991,  -1416,   -465,   -510,  
  -537,   -938,   -988,  -1082,   -791,   -834,   -913,  -1679,  
  4366,   2944,   7210,   3627,   1161,  -1163,   -529,  -3172,  
  -803,    -82,   -784,  -1921,  -1295,   -966,   -651,  -1596,  
  -309,   -208,   -511,   -257,  13888,   3951,   -671,  -2305,  
  3354, -11773,   -953,    -27,   -324,   -686,  -3349,    569,  
   161,   1954,    556,    -94,  -2843,   -809,    137,    472,  
  7053,   5847,   2929,   8378,  -4794,  -3036,  -2086,   -523,  
 -4284,  -1403,  -2517,  -1261,  -1045,  -3607,  -2990,  -1498,  
  2064,   1711,    857,   2451,  -2191,  12838,   9182,  -3915,  
  1617,   -293, -10059,  -5146,   -935,   -159,   1717,   1228,  
 -7195,   -523,   3068,   2194,    216,  -1267,   -906,    386,  
 -4881,  13114,   5767,   -435,   4155,  -1454, -10498,  -2030,  
   -11,  -1054,   3907,   1718,  -4616,   -129,    348,    153,  
  1238,  -3326,  -1462,    110,   7843,  -1250,    210,   7106,  
 -5203,  -3754,    -95,     -2,  -3082,  -1652,    598,   -100,  
    16,  -3402,    542,    -91,   2491,   -397,     66,   2257,  
 -2463,   8168,  14551,  -3908,   1828,   -370,  -4072, -12923, 
  -932,   -204,   1228,   2188,  -7254,   -587,   1948,   3471,  
   274,   -911,  -1623,    436,  -1579,    347,   -272,  -2735,  
 16031,   -152,     -7,     -4,   -456, -15686,     33,    -26,  
     5,   -263,     58,    -45,   1545,   -340,    266,   2676,  
 -6327,   1328,   5093,  -5079,   7617,  -2443,   -107,  -1583,  
 -1574,  -3541,    513,   1967,   -413,  -1961,    411,   1578,  
  2941,   -617,  -2367,   2361,   3286,  -4509,  11306,  11025,  
 -2623,   -659,  -1241,  -7802,  -7419,   -420,    904,  -2267,  
  3112,  -2211,   3034,  -7608,    526,   -722,   1810,   1765,  
  5567,  17853,  -3754,   1166,   -519,  -1892, -19455,   -860,  
   -83,    -16,  -6067,   1275,   4090,   -396,  -1271,    267,  
   176,    566,   -119,     37,  -2136,   -424,  15292,   5108,  
 -1648,   -278,    -10, -14273,  -1593,   -165,    -55,   1993,  
   396,    666,    132,  -4768,   -214,    -42,   1538,    514,  
  2267,  -3297,   2549,  16563,   -791,   -313,   -663,   -396,  
-16745,    -38,    456,   -352,    513,  -2291,   3333,  -2576,  
   109,   -159,    123,    799,   3655,   1899,  -3364,   6279,  
 12510,   -815,   -220,   -690,  -2406,  -9552,   -423,    750,  
   390,  -1400,   -728,   1289,  -2791,  -1450,   2568,  -4794, 
  8052,   2285,  -6193,   5138,   6003,  -3957,   -318,  -2341,  
 -1611,  -2199,  -1123,   3044,    864,  -2525,   -716,   1942,  
 -2950,   -837,   2269,  -1882,   -386,  -2291,   7679,  15387,  
 -2723,     -9,   -320,  -3599, -14452,   -452,    -54,    181,  
  1074,    362,   2152,  -7212,    -64,   -380,   1276,   2557,  
  2777,  -1173,   3984,  13079,   2508,   -470,    -84,   -969,  
-10440,   -384,    198,   -675,    285,  -2217,    936,  -3180,  
  -425,    179,   -610,  -2002,  -1879,   1771,  -2684,  16705,  
  1833,   -215,   -191,   -439, -17032,   -205,    203,   -308,  
   290,   1916,  -1805,   2736,    210,   -198,    300,  -1869,  
  1052,   4495,  15519,   1467,  -4032,    -67,  -1233, -14700,  
  -131,   -992,   -288,   -997,  -4257,    -94,   -402,  -1389,  
   259,   1106,   3819,    361,   3010,   2544,   6969,   7559,  
  1996,   -553,   -395,  -2964,  -3487,   -243,   -467,  -1280,  
 -1082,  -1388,  -1174,  -3215,   -366,   -310,   -849,   -921,  
 -5209,  -1867,   8713,  10351,   1549,  -1656,   -212,  -4634,  
 -6540,   -146,   -593,   2770,    993,   3291,   1180,  -5505,  
   492,    176,   -824,   -979,  -4314,   8513,    913,   7547,  
 -2723,  -1135,  -4423,    -50,  -3476,   -452,   2241,    240, 
  -474,   1987,  -3921,   -420,   -717,   1415,    151,   1254,  
 12929,  -1219,   2448,   1757,   6303, -10204,    -90,   -365,  
  -188,  -2425,    962,  -1932,    182,  -1386,    130,   -262,  
 -4974,    469,   -941,   -676,   6465,   4132,   3167,   3160,  
  5697,  -2551,  -1042,   -612,   -609,  -1981,  -1630,  -1249,  
  -798,  -1247,   -797,   -611,  -2248,  -1437,  -1101,  -1099,  
 -3636,   4859,  18914,  -1335,    810,   -807,  -1441, -21836,  
  -108,    -40,   1078,   4198,  -5609,   -296,    396,   1541,  
   179,   -240,   -936,     66,   8844,   7864,    654,  -4063,  
 -5680,  -4774,  -3774,    -26,  -1007,  -1969,  -4245,   -353,  
  -314,   2193,   1950,    162,   3066,   2726,    226,  -1408,  
  1859,   2634,   9228,    996,   9464,   -211,   -423,  -5197,  
   -60,  -5467,   -299,  -1047,  -1483,   -113,   -160,   -561,  
 -1074,  -1521,  -5330,   -575,   2949,  12260,  10290,   -497,  
 -3943,   -530,  -9174,  -6463,    -15,   -949,  -2206,  -1852,  
 -7700,     89,    372,    312,    709,   2950,   2476,   -119,  
 -2903,   1552,  14867,   9970,   -496,   -514,   -147, -13491,  
 -6068,    -15,    275,   2634,  -1408,   1766,   -944,  -9047,  
   -87,     47,    450,    302,   3243,   8234,   7586,   3373, 
  2151,   -642,  -4138,  -3512,   -694,   -282,  -1630,  -1501,  
 -3812,   -667,  -1695,  -1561,   -425,  -1081,   -996,   -442,  
 -9631,     60,   3501,   5359,  10150,  -5662,      0,   -748,  
 -1752,  -6288,     35,   2058,    -12,   3150,    -19,  -1145,  
  5967,    -37,  -2169,  -3320,  -6874,  -2553,  -5446,  -2195,  
 -7841,  -2884,   -397,  -1810,   -294,  -3753,  -1071,  -2285,  
  -848,   -921,   -342,   -729,  -3290,  -1221,  -2606,  -1050,  
 -3413,  -1141,   4630,  13612,   7897,   -711,    -79,  -1308,  
-11310,  -3806,   -237,    964,    322,   2836,    948,  -3847,  
  1645,    550,  -2231,  -6561,   4410,  -5678,   8006,  -3992,  
  3811,  -1187,  -1968,  -3912,   -973,   -886,   1528,  -2155,  
  2775,   1074,  -1383,   1951,  -1025,   1321,  -1862,    928,  
  5659,  11535,   2203,   -452,   7169,  -1954,  -8121,   -296,  
   -12,  -3137,  -3984,   -761,  -1551,    156,    318,     60,  
 -2476,  -5048,   -964,    197,   2914,  -2914,   3485,  -3965,  
 13675,   -518,   -518,   -741,   -959, -11414,    518,   -620,  
   620,    705,   -705,    843,  -2433,   2432,  -2909,   3310,  
  7843,   1907,   1022,   8882,   7972,  -3755,   -222,    -63,  
 -4815,  -3879,   -913,   -489,   -119,  -4252,  -1034,   -554, 
 -3816,   -928,   -497,  -4322,  13807,   9531,   1436,   1612, 
  1779, -11636,  -5544,   -125,   -158,   -193,  -8032,  -1210, 
  -835,  -1358,   -938,   -141,  -1499,  -1035,   -156,   -175, 
 13620,  -5337,   5450,  -2263,   1723, -11322,  -1738,  -1813, 
  -312,   -181,   4436,  -4531,   1775,   1881,   -737,    752, 
 -1432,    561,   -573,    238,   5297,   8374,   8872,   7694, 
  6538,  -1712,  -4280,  -4804,  -3613,  -2609,  -2707,  -2868, 
 -4534,  -2487,  -3932,  -4166,  -2113,  -3341,  -3540,  -3070 }; 
 
/* 
**  AcbkGainTablePtr: 
** 
**  Purpose: 
**      Contains pointers to 85 and 170 element codebooks 
** 
*/ 
 
Word16  *AcbkGainTablePtr[2] = { 
   AcbkGainTable085 , 
   AcbkGainTable170 , 
   } ; 
 
 
/* 
**  LpfConstTable: 
** 
**  Purpose: 
**      Sets the postfilter gain weighting factor. 
** 
**  Table Structure: 
**      (0.1875 , 0.25) in Q15 ( i.e. scale by 32768 ). 
 
*/ 
 
Word16   LpfConstTable[2] = { 
   0x1800 , 
   0x2000 , 
   } ; 
 
 
/* 
**  epsi170: 
** 
**  Purpose: 
**      At the lower bitrate, the pitch contribution is added 
**      into the output vector of ACELP when the pitch period is 
**      less than 60 samples (one subframe). The pitch contribution 
**      is estimated by a 1 tap long term predictor (LTP) instead of 
**      the 5 tap LTP used in pitch prediction. The values in epsi170 
**      effectively choose one of the 5 vectors used in the 5 tap LTP. 
** 
**  Table Structure: 
**      The table is indexed by the index into the AcbkGainTable170 
**      table (determined in Find_Acbk). The value, 60, is used only 
**      as a place holder. They correspond to zeros in the gain170 
**      table, which is the coefficient of the 1 tap long term 
**      predictor (LTP).  The rest of the values range from -2 to +2. 
**      These values pick one vector among the 5 vectors centered one 
**      pitch period behind the current vector. (In contrast, the 5 
**      tap LTP uses all five vectors centered one pitch period back.) 
*/ 
Word16 epsi170[170] = { 
    60,      0,     60,      0,      1,      0,      0,      1,  
    -1,      1,      0,     -1,      2,     -2,      0,      1,  
     0,      0,     -1,      0,      0,      0,      1,      0,  
    -1,     -1,      1,     -1,      1,     -2,      1,     -1, 
    60,      0,      0,      1,      1,      0,      1,      1,  
    -1,      1,     -1,     -1,     -1,      0,     60,     -2,  
     0,      1,      0,     -1,      1,      1,      0,      1,  
     2,     -1,      0,      1,      0,      0,      0,     60,  
    -1,      1,      1,      2,     -1,      1,     -1,     60, 
    -1,      0,      1,      0,     -1,      0,      0,      0,  
     1,     -1,      0,      1,     -1,      0,     -1,      0,  
     1,     60,      0,      0,      1,      1,      0,      2,  
     1,      0,      1,     -2,      0,     -1,      1,      0,  
    -1,      1,      0,      0,      1,      0,      0,      0,  
    60,      1,      1,     -1,     -1,      2,     -2,      0, 
    -1,     -1,     60,      2,     60,      0,      0,     60,  
     0,      0,      0,     -2,     60,     -1,      0,     60, 
     0,      2,      0,      0,     -1,      0,      1,      2, 
    60,      1,      1,      1,      0,      0,     60,      0, 
    60,      0,      0,     60,     60,     -1,      0,      0, 
    60,     60,      1,      0,     60,      2,     60,     -2, 
    -2,      0 }; 
 
/* 
**  gain170: 
** 
**  Purpose: 
**      At the lower bitrate, the pitch contribution is added into 
**      the output vector of ACELP when the pitch period is less than 
**      60 samples (one subframe). The pitch contribution 
**      is estimated by a 1 tap long term predictor (LTP) instead of 
**      the 5 tap LTP used in pitch prediction. This table holds the 
**      coefficient for the one tap filter. 
** 
**  Table Structure: 
**      The table is indexed by the index into the AcbkGainTable170 
**      table (determined in Find_Acbk). The values are in Q12. 
*/ 
 
Word16 gain170[170] = { 
     0,   2489,      0,   5217,   6171,   3953,  10364,   9357, 
  8843,   9396,   5794,  10816,  11606,  12072,   8616,  12170, 
 14440,   7787,  13721,  18205,  14471,  15807,  15275,  13480, 
 18375,      0,  11194,  13010,  18836,  20354,  16233,      0, 
     0,  12130,  13385,  17834,  20875,  21996,      0,  18277, 
 21321,  13738,  19094,  20387,      0,  21008,      0,  22807, 
 15900,      0,  17989,  22259,  24395,  23138,  23948,  22997, 
 22604,  25942,  26246,  25321,  26423,  24061,  27247,      0, 
 25572,  23918,  25930,  26408,  19049,  27357,  24538,      0, 
 25093,  28549,      0,  22793,  25659,  29377,  30276,  26198, 
 22521,  28919,  27384,  30162,      0,  24237,  30062,  21763, 
 30917,      0,  31284,  29433,  26821,  28655,  31327,  30799, 
 31389,  32322,  31760,  31830,  26936,  31180,  30875,  27873, 
 30429,  31050,      0,  31912,  31611,  31565,  25557,  31357, 
     0,  29536,  28985,  26984,  31587,  30836,  31133,  30243, 
 30742,  32090,      0,  30902,      0,  30027,  29042,      0, 
 31756,  24553,  25636,  30501,      0,  29617,  30649,      0, 
 29274,  30415,  27480,  31213,  28147,  30600,  31652,  29068, 
     0,  28571,  28730,  31422,  28257,  24797,      0,      0, 
     0,  22105,  27852,      0,      0,  24214,  24642,  23305, 
     0,      0,  22883,  21601,      0,  25650,      0,  31253, 
 25144,  17998 }; 
 
/* 
**  tabgain170: 
** 
**  Purpose: 
**      In the taming procedure at the encoder the 170 5-taps LT filters 
**      are modelled as 1-tap filter. This table gives the gain 
**      value attributed to each filter as a worst case gain 
** 
**  Table Structure: 
**      The table is indexed by the index into the AcbkGainTable170 
**      table (determined in Find_Acbk). The values are in Q13. 
*/ 
Word16 tabgain170[170] = { 
  1024,   1591,   1678,   1891,   2120,   2399,   2966,   3049, 
  3185,   3317,   3433,   3523,   3729,   3779,   3789,   4262, 
  4450,   4469,   4713,   4944,   4950,   4980,   5010,   5032, 
  5299,   5389,   5389,   5389,   5646,   5701,   5733,   5765, 
  5997,   5997,   6150,   6211,   6336,   6360,   6415,   6415, 
  6430,   6440,   6461,   6461,   6512,   6601,   6787,   6872, 
  6931,   6972,   6984,   7056,   7056,   7105,   7117,   7123, 
  7136,   7161,   7167,   7180,   7180,   7262,   7308,   7334, 
  7334,   7387,   7407,   7434,   7441,   7441,   7481,   7536, 
  7564,   7592,   7685,   7714,   7758,   7772,   7794,   7802, 
  7817,   7839,   7869,   7885,   7907,   7946,   7992,   8039, 
  8063,   8087,   8087,   8167,   8184,   8200,   8200,   8241, 
  8266,   8283,   8308,   8308,   8334,   8376,   8402,   8463, 
  8516,   8524,   8533,   8641,   8669,   8696,   8752,   8761, 
  8799,   8828,   8943,   9112,   9122,   9133,   9153,   9288, 
  9299,   9373,   9384,   9384,   9405,   9416,   9471,   9503, 
  9559,   9581,   9660,   9660,   9718,   9799,   9823,   9846, 
  9846,   9930,  10039,  10164,  10227,  10291,  10436,  10503, 
 10516,  10530,  10598,  10611,  10625,  11040,  11070,  11100, 
 11115,  11315,  11331,  11804,  12100,  12263,  12263,  12300, 
 12337,  12431,  12800,  12962,  13065,  13496,  13815,  14100, 
 14198,  18409 }; 
 
/* 
**  tabgain85: 
** 
**  Purpose: 
**      In the taming procedure at the encoder the 85 5-taps LT filters 
**      are modelled as 1-tap filter. This table gives the gain 
**      value attributed to each filter as a worst case gain 
** 
**  Table Structure: 
**      The table is indexed by the index into the AcbkGainTable085 
**      table (determined in Find_Acbk). The values are in Q13. 
*/ 
Word16 tabgain85[85] = { 
  1024,   1308,   1906,   2291,   2511,   2736,   3298,   3489, 
  3531,   3844,   4360,   4541,   4684,   4813,   5069,   5528, 
  5577,   5713,   5923,   5958,   5958,   6064,   6132,   6331, 
  6370,   6527,   6533,   6575,   6633,   6671,   6832,   6832, 
  6972,   6996,   7199,   7205,   7414,   7529,   7543,   7543, 
  7692,   7758,   7839,   7839,   7869,   7992,   8000,   8016, 
  8055,   8079,   8119,   8208,   8250,   8266,   8291,   8300, 
  8325,   8402,   8445,   8605,   8623,   8687,   8752,   8837, 
  8847,   8973,   9002,   9012,   9184,   9593,   9672,   9752, 
  9846,   9978,  10139,  10202,  10317,  10476,  10598,  10598, 
 10695,  11425,  11670,  14629,  15255 }; 
 
/* 
**  fact   : 
**  L_bseg : 
**  base   : 
** 
**  Purpose: 
**      Quantization of the SID gain procedure 
**      table fact : 
**      for n = 0 :  used to quantize the excitation energy estimation 
**                   in Comp_Info() 
**                   fact(0) = 32768 / (2 * SubFrLen) 
** 
**      for n >= 1 : used for average energy calculation 
**                   fact(n) = fact_mul**2 * 32768 / n * Frame 
**      table L_bseg : for each segment of the pseudo-log quantizer, 
**                     gives the energy level corresponding to 
**                     the first value of the next segment 
**      table base : first code of each segment 
** 
*/ 
Word16 fact[4] = {273, 998, 499, 333}; 
Word32 L_bseg[3] = {2048L, 18432L, 231233L}; /* Bug fixed 24-09-96 */ 
Word16 base[3] = {0, 32, 96};