/******************************************************************************

    wavfilt --- SSKFバンクによる8帯域分割と非線形量子化

      version 3.50                           by とご(電脳わ〜るど:DW0243)

    02/19/1995                                           "table.c"

    この非線形量子化においては聴覚の強度変化の感度がわりあい鈍いことを利用し
  ています。65536段階の強度をむりやり256段階まで階調を落としてサイズを半分に
  しているわけですが、後述のとおり量子化テーブルはまだ不完全です。個々の値は
  計算して出ないことはないのですが、高速化のためにテーブル化したわけです。

    音響情報を８帯域に周波数帯域分割して、各帯域毎に用意した量子化テーブルを
  用いて非線形量子化を行います。テーブルは以下の数値配列で構成されており、現
  在16ビットデータに対してのみ作用させています。なおサンプリングレートは44100
  Hzを想定していますので、ほかのサンプリングレートでの録音に耐えるかどうかは
  現在分かりません。

    なお量子化が粗すぎる帯域があるようで、高音域に歪みを生じてしまいます。シ
  ステムソフトウェアCDのmusi.wav,semi.wavにはそれが顕著に出ます。これを抑止す
  るためには量子化の程度を緩める必要があるのですが、今のところはそのままです。
  それよりもこのテーブルを外部ファイル化するかプログラム内部に持つかあるいは
  変換データに付属させるかを現在悩んでいるところです(笑)。サンプリングレート
  を44100Hzに限定している現段階を維持するか11025,22050Hzにも対応させるかで随
  分プログラムが異なってきますので(^^;)

 *****************************************************************************/

#include <limits.h>

int first_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,-43019,-41962,
  -40905,-39848,-38791,-37734,-36677,-35620,-34563,-33506,

  -32449,-31392,-30335,-29278,-28221,-27164,-26107,-25050,
  -23993,-22936,-21879,-20822,-19765,-18708,-17651,-16594,
  -15537,-14480,-13423,-12366,-11309,-10252,-9917,-9582,
  -9247,-8912,-8577,-8242,-7907,-7572,-7237,-6902,
  -6567,-6232,-5897,-5562,-5227,-4892,-4557,-4222,
  -3887,-3552,-3217,-3095,-2973,-2851,-2729,-2607,
  -2485,-2363,-2141,-2019,-1897,-1775,-1653,-1531,
  -1409,-1287,-1165,-1043,-995,-947,-899,-851,
  -803,-755,-707,-659,-611,-563,-515,-467,
  -419,-371,-323,-303,-283,-263,-243,-223,
  -203,-183,-163,-143,-123,-103,-94,-85,
  -76,-67,-58,-49,-40,-31,-26,-21,
  -16,-11,-8,-5,-3,-2,-1,0,
  1,2,4,7,10,15,20,25,
  30,39,48,57,66,75,84,93,
  102,122,142,162,182,202,222,242,
  262,282,302,322,370,418,466,514,
  562,610,658,706,754,802,850,898,
  946,994,1042,1164,1286,1408,1530,1652,
  1774,1896,2018,2140,2262,2484,2606,2728,
  2850,2972,3094,3216,3551,3886,4221,4556,
  4881,5226,5561,5896,6231,6566,6901,7236,
  7571,7906,8241,8576,8911,9246,9581,9916,
  10251,11308,12365,13422,14479,15536,16593,17650,
  18707,19764,20821,21878,22935,23992,25049,26106,
  27163,28220,29277,30334,31391,32448,33505,34562,

  35619,36676,37733,38790,39847,40904,41961,43018,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int first_band_decode[255] = {
  -43547,-43547,-43547,-43547,-43547,-43547,-43547,-43547,
  -43547,-43547,-43547,-43547,-43547,-43547,-42490,-41433,
  -40376,-39319,-38262,-37205,-36148,-35091,-34034,-32977,
  -31920,-30863,-29806,-28749,-27692,-26635,-25578,-24521,
  -23464,-22407,-21350,-20293,-19236,-18179,-17122,-16065,
  -15008,-13951,-12894,-11837,-10780,-10084,-9749,-9414,
  -9079,-8744,-8409,-8074,-7739,-7404,-7069,-6734,
  -6399,-6064,-5729,-5384,-5059,-4724,-4389,-4054,
  -3719,-3384,-3178,-3056,-2934,-2812,-2690,-2568,
  -2446,-2324,-2202,-2080,-1958,-1836,-1714,-1592,
  -1470,-1348,-1226,-1104,-1018,-970,-922,-874,
  -826,-778,-730,-682,-634,-586,-538,-490,
  -442,-394,-346,-313,-293,-273,-253,-233,
  -213,-193,-173,-153,-133,-113,-98,-89,
  -80,-71,-62,-53,-44,-35,-28,-23,
  -18,-13,-9,-6,-3,-2,-1,0,
  1,2,3,6,9,13,18,23,
  28,35,44,53,62,71,80,89,
  98,113,133,153,173,193,213,233,
  253,273,293,313,346,394,442,490,
  538,586,634,682,730,778,826,874,
  922,970,1018,1104,1226,1348,1470,1592,
  1714,1836,1958,2080,2202,2324,2446,2568,
  2690,2812,2934,3056,3178,3384,3719,4054,
  4389,4724,5059,5384,5729,6064,6399,6734,
  7069,7404,7739,8074,8409,8744,9078,9414,
  9749,10084,10780,11837,12894,13951,15008,16065,
  17122,18179,19236,20293,21350,22407,23464,24521,
  25578,26635,27692,28749,29806,30863,31920,32977,
  34034,35091,36148,37205,38262,39319,40376,41433,
  42490,43547,43547,43547,43547,43547,43547,43547,
  43547,43547,43547,43547,43547,43547,43547
};

int second_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,-43019,-41962,
  -40905,-39848,-38791,-37734,-36677,-35620,-34563,-33506,

  -32449,-31392,-30335,-29278,-28221,-27164,-26107,-25050,
  -23993,-22936,-21879,-20822,-19765,-18708,-17651,-16594,
  -15537,-14480,-13423,-12366,-11309,-10252,-9917,-9582,
  -9247,-8912,-8577,-8242,-7907,-7572,-7237,-6902,
  -6567,-6232,-5897,-5562,-5227,-4892,-4557,-4222,
  -3887,-3552,-3217,-3095,-2973,-2851,-2729,-2607,
  -2485,-2363,-2141,-2019,-1897,-1775,-1653,-1531,
  -1409,-1287,-1165,-1043,-995,-947,-899,-851,
  -803,-755,-707,-659,-611,-563,-515,-467,
  -419,-371,-323,-303,-283,-263,-243,-223,
  -203,-183,-163,-143,-123,-103,-94,-85,
  -76,-67,-58,-49,-40,-31,-26,-21,
  -16,-11,-8,-5,-3,-2,-1,0,
  1,2,4,7,10,15,20,25,
  30,39,48,57,66,75,84,93,
  102,122,142,162,182,202,222,242,
  262,282,302,322,370,418,466,514,
  562,610,658,706,754,802,850,898,
  946,994,1042,1164,1286,1408,1530,1652,
  1774,1896,2018,2140,2262,2484,2606,2728,
  2850,2972,3094,3216,3551,3886,4221,4556,
  4881,5226,5561,5896,6231,6566,6901,7236,
  7571,7906,8241,8576,8911,9246,9581,9916,
  10251,11308,12365,13422,14479,15536,16593,17650,
  18707,19764,20821,21878,22935,23992,25049,26106,
  27163,28220,29277,30334,31391,32448,33505,34562,

  35619,36676,37733,38790,39847,40904,41961,43018,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int second_band_decode[255] = {
  -43547,-43547,-43547,-43547,-43547,-43547,-43547,-43547,
  -43547,-43547,-43547,-43547,-43547,-43547,-42490,-41433,
  -40376,-39319,-38262,-37205,-36148,-35091,-34034,-32977,
  -31920,-30863,-29806,-28749,-27692,-26635,-25578,-24521,
  -23464,-22407,-21350,-20293,-19236,-18179,-17122,-16065,
  -15008,-13951,-12894,-11837,-10780,-10084,-9749,-9414,
  -9079,-8744,-8409,-8074,-7739,-7404,-7069,-6734,
  -6399,-6064,-5729,-5384,-5059,-4724,-4389,-4054,
  -3719,-3384,-3178,-3056,-2934,-2812,-2690,-2568,
  -2446,-2324,-2202,-2080,-1958,-1836,-1714,-1592,
  -1470,-1348,-1226,-1104,-1018,-970,-922,-874,
  -826,-778,-730,-682,-634,-586,-538,-490,
  -442,-394,-346,-313,-293,-273,-253,-233,
  -213,-193,-173,-153,-133,-113,-98,-89,
  -80,-71,-62,-53,-44,-35,-28,-23,
  -18,-13,-9,-6,-3,-2,-1,0,
  1,2,3,6,9,13,18,23,
  28,35,44,53,62,71,80,89,
  98,113,133,153,173,193,213,233,
  253,273,293,313,346,394,442,490,
  538,586,634,682,730,778,826,874,
  922,970,1018,1104,1226,1348,1470,1592,
  1714,1836,1958,2080,2202,2324,2446,2568,
  2690,2812,2934,3056,3178,3384,3719,4054,
  4389,4724,5059,5384,5729,6064,6399,6734,
  7069,7404,7739,8074,8409,8744,9078,9414,
  9749,10084,10780,11837,12894,13951,15008,16065,
  17122,18179,19236,20293,21350,22407,23464,24521,
  25578,26635,27692,28749,29806,30863,31920,32977,
  34034,35091,36148,37205,38262,39319,40376,41433,
  42490,43547,43547,43547,43547,43547,43547,43547,
  43547,43547,43547,43547,43547,43547,43547
};

int third_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,-65536,-32768,-32449,

  -17865,-17352,-16839,-16326,-13813,-15300,-14787,-14274,
  -13761,-13248,-12735,-12222,-11709,-11196,-10683,-10170,
  -9657,-9144,-8631,-8118,-7605,-7092,-6579,-6066,
  -5553,-5410,-5267,-5124,-4981,-4838,-4695,-4552,
  -4409,-4266,-4123,-3980,-3837,-3694,-3551,-3408,
  -3265,-3122,-2979,-2836,-2693,-2550,-2407,-2264,
  -2121,-1978,-1835,-1775,-1715,-1655,-1595,-1535,
  -1475,-1415,-1355,-1295,-1235,-1175,-1115,-1055,
  -995,-935,-875,-815,-755,-695,-635,-575,
  -547,-519,-491,-463,-435,-407,-379,-351,
  -323,-295,-267,-239,-211,-183,-172,-161,
  -150,-139,-128,-117,-106,-95,-84,-72,
  -61,-55,-49,-43,-37,-31,-25,-19,
  -16,-13,-10,-7,-5,-3,-2,1,
  2,4,6,9,12,15,18,24,
  30,36,42,48,54,60,71,83,
  94,105,116,127,138,149,160,171,
  182,210,238,266,294,322,350,378,
  406,434,462,490,518,546,574,634,
  694,754,814,874,934,994,1054,1114,
  1174,1234,1294,1354,1414,1474,1534,1594,
  1654,1714,1774,1834,1977,2120,2263,2406,
  2549,2692,2835,2978,3121,3264,3407,3550,
  3693,3836,3979,4122,4265,4408,4551,4694,
  4837,4980,5123,5266,5409,5552,6065,6578,
  7091,7604,8117,8630,9143,9656,10169,10682,
  11195,11708,12221,12734,13247,13760,14273,14786,
  15299,15812,16325,16838,17351,17864,18377,32767,

  65535,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int third_band_decode[255] = {
  -18634,-18634,-18634,-18634,-18634,-18634,-18634,-18634,
  -18121,-17608,-17095,-16582,-16067,-15556,-15043,-14530,
  -14017,-13504,-12991,-12478,-11965,-11452,-10939,-14530,
  -14017,-13504,-12991,-12478,-11965,-11452,-10939,-10416,
  -9913,-9400,-8887,-8374,-7861,-7348,-6835,-6322,
  -5809,-5481,-5338,-5195,-5052,-4909,-4766,-4623,
  -4480,-4337,-4194,-4051,-3908,-3765,-3622,-3479,
  -3336,-3193,-3050,-2907,-2764,-2621,-2478,-2335,
  -2192,-2049,-1906,-1805,-1745,-1685,-1625,-1565,
  -1505,-1445,-1385,-1325,-1265,-1205,-1145,-1085,
  -1025,-965,-905,-845,-785,-725,-665,-605,
  -561,-533,-505,-477,-449,-421,-393,-365,
  -337,-309,-281,-253,-225,-197,-177,-166,
  -155,-144,-133,-122,-111,-100,-89,-77,
  -66,-57,-51,-45,-39,-33,-27,-21,
  -17,-14,-11,-8,-5,-3,-2,0,
  2,3,5,8,11,14,17,21,
  27,33,39,45,51,57,66,77,
  89,100,111,122,133,144,155,166,
  177,197,225,253,281,309,337,365,
  393,421,449,477,505,533,561,605,
  665,725,785,845,905,965,1025,1085,
  1145,1205,1265,1325,1385,1445,1505,1565,
  1625,1685,1745,1805,1906,2049,2192,2335,
  2478,2621,2764,2907,3050,3193,3336,3479,
  3622,3765,3908,4051,4194,4337,4480,4623,
  4766,4909,5052,5195,5338,5481,5809,6322,
  6835,7348,7861,8374,8887,9400,9913,10416,
  10939,11452,11965,12478,12991,13504,14017,14530,
  15043,15556,16067,16582,17095,17608,18121,18634,
  18634,18634,18634,18634,18634,18634,18634,18634,
  18634,18634,18634,18634,18634,18634,18634
};

int fourth_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,-65536,-32768,

  -13536,-12651,-11766,-10881,-9996,-9111,-8226,-7341,
  -6456,-5571,-4686,-3801,-3488,-3175,-2862,-2549,
  -2236,-1923,-1610,-1297,-1188,-1079,-970,-861,
  -752,-643,-534,-425,-385,-345,-305,-265,
  -225,-185,-145,-128,-111,-94,-77,-60,
  -43,-34,-25,-16,-10,-5,-4,3,
  4,9,15,24,33,42,59,76,
  93,110,127,144,184,224,264,304,
  344,384,424,533,642,751,860,969,
  1078,1187,1296,1609,1922,2235,2548,2861,
  3174,3487,3800,4685,5570,6455,7340,8225,
  9110,9995,10880,11765,12650,13535,32767,65535,

  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int fourth_band_decode[255] = {
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13093,-12208,-11323,-10438,-9553,-8668,-7783,
  -6898,-6013,-5128,-4243,-3644,-3331,-3018,-2705,
  -2392,-2079,-1766,-1453,-1242,-1133,-1024,-915,
  -806,-697,-588,-479,-405,-365,-325,-285,
  -245,-205,-165,-136,-119,-102,-85,-68,
  -51,-38,-29,-20,-12,-7,-4,0,
  4,7,12,20,29,38,51,68,
  85,102,119,136,165,205,245,285,
  325,365,405,479,588,697,806,915,
  1024,1133,1242,1453,1766,2079,2392,2705,
  3018,3331,3644,4243,5128,6013,6898,7783,
  8668,9553,10438,11323,12208,13093,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978
};

int fifth_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,-65536,-32768,

  -13536,-12651,-11766,-10881,-9996,-9111,-8226,-7341,
  -6456,-5571,-4686,-3801,-3488,-3175,-2862,-2549,
  -2236,-1923,-1610,-1297,-1188,-1079,-970,-861,
  -752,-643,-534,-425,-385,-345,-305,-265,
  -225,-185,-145,-128,-111,-94,-77,-60,
  -43,-34,-25,-16,-10,-5,-4,3,
  4,9,15,24,33,42,59,76,
  93,110,127,144,184,224,264,304,
  344,384,424,533,642,751,860,969,
  1078,1187,1296,1609,1922,2235,2548,2861,
  3174,3487,3800,4685,5570,6455,7340,8225,
  9110,9995,10880,11765,12650,13535,32767,65535,

  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int fifth_band_decode[255] = {
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13978,-13978,-13978,-13978,-13978,-13978,-13978,-13978,
  -13093,-12208,-11323,-10438,-9553,-8668,-7783,
  -6898,-6013,-5128,-4243,-3644,-3331,-3018,-2705,
  -2392,-2079,-1766,-1453,-1242,-1133,-1024,-915,
  -806,-697,-588,-479,-405,-365,-325,-285,
  -245,-205,-165,-136,-119,-102,-85,-68,
  -51,-38,-29,-20,-12,-7,-4,0,
  4,7,12,20,29,38,51,68,
  85,102,119,136,165,205,245,285,
  325,365,405,479,588,697,806,915,
  1024,1133,1242,1453,1766,2079,2392,2705,
  3018,3331,3644,4243,5128,6013,6898,7783,
  8668,9553,10438,11323,12208,13093,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978,13978,
  13978,13978,13978,13978,13978,13978,13978
};

int sixth_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,-65536,-32768,-19561,-18331,-17061,

  -15811,-14561,-13311,-12061,-10811,-9561,-8311,-7061,
  -5811,-5370,-4929,-4488,-4047,-3606,-3165,-2724,
  -2283,-1842,-1687,-1532,-1377,-1222,-1067,-912,
  -757,-602,-545,-488,-431,-374,-317,-260,
  -203,-179,-156,-131,-107,-83,-59,-47,
  -35,-23,-15,-14,-8,-7,6,5,
  6,7,13,14,22,34,46,58,
  82,106,130,155,178,202,259,316,
  373,430,487,544,601,756,911,1066,
  1221,1376,1531,1686,1841,2282,2723,3164,
  3605,4046,4487,4928,5369,5810,7060,8310,
  9560,10810,12060,13310,14560,15810,17060,18310,

  19560,32767,65535,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int sixth_band_decode[255] = {
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-20185,-20185,
  -20185,-20185,-20185,-20185,-20185,-20185,-18935,-17685,
  -16435,-15185,-13935,-12685,-11435,-10185,-8935,-7685,
  -6435,-5590,-5149,-4708,-4267,-3826,-3385,-2944,
  -2503,-2062,-1764,-1609,-1454,-1299,-1144,-989,
  -834,-679,-573,-516,-459,-402,-345,-288,
  -231,-190,-166,-142,-118,-94,-70,-52,
  -40,-28,-18,-14,-10,-7,-6,0,
  6,7,10,14,18,28,40,52,
  70,94,118,142,166,190,231,288,
  345,402,459,516,573,679,834,989,
  1144,1299,1454,1609,1764,2062,2503,2944,
  3385,3826,4267,4708,5149,5590,6435,7685,
  8935,10185,11435,12685,13935,15185,16435,17685,
  18935,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185,20185,
  20185,20185,20185,20185,20185,20185,20185
};

int seventh_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,-65536,-32768,-24626,-23053,-21480,

  -19907,-18334,-16761,-15188,-13615,-12042,-10469,-8896,
  -7323,-6768,-6213,-5658,-5103,-4548,-3993,-3438,
  -2883,-2328,-2134,-1940,-1746,-1552,-1358,-1164,
  -970,-776,-705,-634,-563,-492,-421,-350,
  -279,-208,-178,-148,-118,-88,-73,-58,
  -43,-28,-18,-10,-9,-8,-7,6,
  7,8,9,17,27,42,57,72,
  87,117,147,177,207,278,349,420,
  491,542,633,704,775,969,1163,1357,
  1551,1745,1939,2133,2327,2882,3437,3992,
  4547,5102,5657,6212,6767,7322,8895,10468,
  12041,13614,15187,16760,18333,19906,21479,23052,

  24625,32767,65535,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int seventh_band_decode[255] = {
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-25412,-25412,
  -25412,-25412,-25412,-25412,-25412,-25412,-23839,-22266,
  -20693,-19120,-17547,-15974,-14401,-12828,-11255,-9682,
  -8109,-7045,-6490,-5935,-5380,-4825,-4270,-3715,
  -3160,-2605,-2230,-2036,-1842,-1648,-1454,-1260,
  -1066,-872,-740,-669,-598,-527,-456,-385,
  -314,-243,-192,-162,-132,-102,-80,-65,
  -50,-35,-22,-14,-9,-8,-7,0,
  7,8,9,14,22,35,50,65,
  80,102,132,162,192,243,314,385,
  456,527,598,669,740,872,1066,1260,
  1454,1648,1842,2036,2230,2605,3160,3715,
  4270,4825,5380,5935,6490,7045,8109,9682,
  11255,12828,14401,15974,17547,19120,20693,22266,
  23839,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412,25412,
  25412,25412,25412,25412,25412,25412,25412
};

int eighth_band_encode[255] = {
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,INT_MIN,
  INT_MIN,INT_MIN,INT_MIN,-65536,-32768,-32023,-29801,-27579,

  -25357,-23135,-20913,-18691,-16469,-14247,-12025,-9803,
  -9019,-8235,-7451,-6667,-5883,-5099,-4315,-3531,
  -3257,-2983,-2709,-2435,-2161,-1887,-1613,-1339,
  -1065,-965,-865,-765,-665,-565,-465,-365,
  -324,-283,-242,-201,-160,-119,-99,-79,
  -59,-39,-26,-24,-14,-11,-10,9,
  10,13,23,25,38,58,78,98,
  118,159,200,241,282,323,364,464,
  564,664,764,864,964,1064,1338,1612,
  1886,2160,2434,2708,2982,3256,3530,4314,
  5098,5882,6666,7450,8234,9018,9802,12024,
  14246,16468,18690,20912,23134,25356,27578,29800,
  32022,32767,65535,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,

  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,
  INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX,INT_MAX
};

int eighth_band_decode[255] = {
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-32023,-32023,
  -32023,-32023,-32023,-32023,-32023,-32023,-30911,-28689,
  -26467,-24245,-22023,-19801,-17579,-15357,-13135,-10913,
  -9410,-8624,-7842,-7058,-6274,-5490,-4706,-3922,
  -3393,-3119,-2845,-2571,-2297,-2023,-1749,-1475,
  -1201,-1014,-914,-814,-714,-614,-514,-414,
  -344,-303,-262,-221,-180,-139,-108,-88,
  -68,-48,-32,-24,-18,-12,-10,0,
  10,12,18,24,32,48,68,88,
  108,139,180,221,262,303,344,414,
  514,614,714,814,914,1014,1201,1475,
  1749,2023,2297,2571,2845,3119,3393,3922,
  4706,5490,6274,7058,7842,8624,9410,10913,
  13135,15357,17579,19801,22023,24245,26467,28689,
  30911,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023,32023,
  32023,32023,32023,32023,32023,32023,32023
};

