00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 typedef struct
00018 {
00019 int16_t cosine;
00020 int16_t minus_sine;
00021 } cos_msin_t;
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 static const int16_t dct_core_s[10][10] =
00035 {
00036 { 29400, 28676, 27246, 25145, 22425, 19153, 15409, 11286, 6885, 2314},
00037 { 28676, 22425, 11286, -2314, -15409, -25145, -29400, -27246, -19153, -6885},
00038 { 27246, 11286, -11286, -27246, -27246, -11286, 11286, 27246, 27246, 11286},
00039 { 25145, -2314, -27246, -22425, 6885, 28676, 19153, -11286, -29400, -15409},
00040 { 22425, -15409, -27246, 6885, 29400, 2314, -28676, -11286, 25145, 19153},
00041 { 19153, -25145, -11286, 28676, 2314, -29400, 6885, 27246, -15409, -22425},
00042 { 15409, -29400, 11286, 19153, -28676, 6885, 22425, -27246, 2314, 25145},
00043 { 11286, -27246, 27246, -11286, -11286, 27246, -27246, 11286, 11286, -27246},
00044 { 6885, -19153, 27246, -29400, 25145, -15409, 2314, 11286, -22425, 28676},
00045 { 2314, -6885, 11286, -15409, 19153, -22425, 25145, -27246, 28676, -29400}
00046 };
00047
00048 static const int16_t syn_bias_7khz[DCT_LENGTH] =
00049 {
00050 -4, 4, -5, -2, 0, -4, 6, 2, -2, -4,
00051 -3, 3, 0, 0, -2, 4, 0, 0, 3, -6,
00052 8, 5, 4, 5, -8, 0, -2, 0, 0, -3,
00053 3, 0, 0, 0, 1, -1, -2, 0, 0, 2,
00054 -2, -5, -2, 3, 2, -1, -1, -6, 3, 1,
00055 -7, 4, 4, 0, 1, 4, 1, 0, 1, -5,
00056 -1, 1, -6, 0, -1, -1, 3, 0, -2, 1,
00057 2, -4, 0, 9, 0, -3, 1, 1, 1, 0,
00058 -3, -2, -1, -4, -2, 0, 5, 2, -3, 5,
00059 0, -2, 4, 4, 0, -6, -4, 2, 0, 0,
00060 0, -1, -1, -2, 0, 6, 1, 0, 0, -1,
00061 0, -4, -1, 0, -4, 1, -1, -5, 0, 1,
00062 2, 4, 0, -8, -4, 0, -2, -2, 2, 5,
00063 -3, -1, 1, -4, 0, 0, 0, -1, -3, 0,
00064 -5, -4, 0, -2, 0, 7, 1, 0, 5, -2,
00065 -1, 2, 2, -2, 3, 7, -3, 4, 1, -4,
00066 0, 0, 3, -7, -5, 0, 0, 4, 0, -2,
00067 -1, 0, -5, 0, 2, 0, 11, 5, -1, 0,
00068 2, 2, -2, -2, 5, 4, -3, 1, 0, -2,
00069 1, 3, 2, 0, 1, 0, 0, 0, 5, 6,
00070 -2, -1, 0, 2, 3, 2, 0, -3, 4, 5,
00071 0, -1, 0, 3, 1, -2, -3, -2, -1, 2,
00072 -1, -1, -2, -7, 4, 6, -5, -6, -3, -4,
00073 0, 2, -5, -2, 3, 0, 0, 0, 2, -2,
00074 -4, 3, 3, 1, 0, 0, 4, -1, 8, 13,
00075 1, 2, 0, 2, 0, -1, 4, -3, 1, 0,
00076 -1, 3, 0, 0, -5, 0, 6, 2, 4, 5,
00077 2, -1, -1, 3, 6, 1, 1, 2, -4, 0,
00078 -1, -6, -2, -2, 2, 1, 2, 6, 2, 0,
00079 -2, -2, 0, -1, 2, 0, 0, 3, -2, 1,
00080 3, 1, 2, -1, -2, 2, 2, -4, 0, 0,
00081 -3, 0, -4, -3, 6, 7, 2, 2, 0, -3
00082 };
00083
00084 static const int16_t dither[DCT_LENGTH] =
00085 {
00086 1, 0, 0, 0, 1, 0, 0, 1, 1, 1,
00087 1, 0, 0, 0, 1, 1, 1, 1, 1, 0,
00088 0, 1, 1, 1, 0, 1, 1, 0, 0, 0,
00089 1, 0, 0, 1, 0, 1, 0, 0, 1, 0,
00090 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,
00091 1, 1, 1, 1, 1, 0, 0, 1, 0, 0,
00092 0, 0, 1, 0, 0, 0, 1, 0, 0, 1,
00093 1, 1, 1, 1, 1, 0, 1, 0, 0, 1,
00094 1, 0, 0, 1, 0, 0, 0, 1, 0, 1,
00095 0, 0, 1, 1, 0, 1, 0, 1, 1, 1,
00096 1, 0, 0, 0, 0, 1, 1, 1, 1, 1,
00097 0, 0, 0, 1, 0, 1, 0, 0, 0, 1,
00098 1, 1, 0, 0, 1, 1, 1, 1, 1, 0,
00099 0, 1, 1, 1, 1, 0, 1, 1, 1, 0,
00100 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
00101 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,
00102 1, 1, 0, 1, 0, 0, 1, 0, 0, 1,
00103 0, 0, 0, 1, 1, 0, 0, 1, 1, 1,
00104 1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
00105 1, 0, 0, 1, 1, 0, 1, 1, 0, 0,
00106 1, 1, 1, 0, 1, 1, 0, 1, 0, 1,
00107 0, 0, 1, 1, 1, 1, 1, 1, 0, 1,
00108 0, 1, 1, 1, 1, 0, 1, 1, 1, 0,
00109 1, 1, 1, 0, 1, 1, 1, 0, 1, 0,
00110 1, 1, 0, 0, 1, 0, 0, 1, 0, 1,
00111 0, 1, 1, 0, 1, 0, 1, 0, 1, 1,
00112 1, 0, 1, 0, 1, 0, 1, 1, 1, 1,
00113 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,
00114 1, 0, 0, 0, 1, 0, 0, 1, 0, 1,
00115 1, 0, 1, 1, 0, 0, 1, 1, 0, 1,
00116 1, 0, 1, 1, 1, 1, 1, 1, 0, 1,
00117 1, 1, 1, 0, 1, 0, 0, 0, 1, 0
00118 };
00119
00120 static const int16_t max_dither[MAX_DCT_LENGTH] =
00121 {
00122 1, 0, 1, 0, 1, 1, 0, 1, 0, 1,
00123 1, 1, 0, 0, 0, 0, 0, 1, 1, 1,
00124 1, 1, 1, 0, 1, 1, 0, 0, 0, 1,
00125 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
00126 1, 1, 1, 0, 1, 0, 1, 1, 1, 1,
00127 0, 1, 0, 1, 1, 1, 1, 1, 1, 0,
00128 1, 0, 1, 1, 0, 1, 0, 0, 0, 1,
00129 0, 1, 1, 1, 1, 1, 0, 1, 1, 0,
00130 0, 0, 1, 1, 0, 0, 0, 1, 1, 1,
00131 1, 0, 1, 1, 1, 1, 1, 0, 0, 0,
00132 1, 0, 1, 0, 1, 0, 0, 0, 1, 1,
00133 0, 1, 1, 1, 1, 1, 1, 0, 1, 0,
00134 0, 0, 1, 0, 1, 0, 0, 0, 1, 0,
00135 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,
00136 1, 0, 0, 1, 0, 1, 0, 0, 0, 1,
00137 0, 1, 0, 0, 1, 1, 1, 1, 0, 1,
00138 1, 0, 0, 0, 1, 1, 0, 1, 0, 1,
00139 0, 1, 0, 1, 0, 1, 1, 1, 0, 1,
00140 1, 0, 0, 1, 1, 1, 1, 0, 1, 1,
00141 1, 1, 1, 0, 1, 1, 0, 0, 0, 0,
00142 1, 0, 1, 0, 0, 0, 0, 1, 1, 0,
00143 1, 1, 0, 0, 0, 0, 1, 0, 0, 1,
00144 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
00145 0, 0, 1, 1, 1, 0, 1, 1, 1, 0,
00146 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
00147 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,
00148 0, 0, 1, 1, 0, 1, 0, 1, 0, 1,
00149 0, 0, 1, 1, 1, 1, 1, 1, 0, 1,
00150 0, 1, 1, 1, 0, 1, 0, 1, 0, 0,
00151 0, 1, 0, 1, 1, 0, 0, 0, 1, 0,
00152 1, 1, 0, 0, 1, 1, 1, 1, 0, 0,
00153 0, 0, 1, 1, 1, 1, 0, 0, 1, 1,
00154 1, 1, 1, 0, 1, 0, 0, 0, 1, 0,
00155 0, 1, 1, 1, 0, 1, 0, 1, 0, 0,
00156 1, 1, 0, 1, 0, 1, 1, 0, 0, 0,
00157 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,
00158 0, 0, 1, 1, 1, 1, 1, 1, 0, 1,
00159 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
00160 0, 1, 0, 1, 0, 1, 1, 0, 1, 0,
00161 1, 1, 1, 0, 0, 1, 1, 0, 0, 1,
00162 0, 1, 0, 0, 0, 1, 1, 0, 0, 1,
00163 0, 0, 1, 1, 0, 1, 0, 1, 0, 1,
00164 1, 1, 0, 1, 0, 0, 1, 1, 0, 0,
00165 1, 0, 1, 0, 1, 0, 0, 1, 0, 0,
00166 0, 1, 0, 1, 1, 1, 1, 1, 1, 0,
00167 0, 1, 1, 0, 0, 0, 1, 1, 1, 0,
00168 1, 1, 1, 0, 1, 1, 1, 0, 0, 0,
00169 0, 0, 1, 0, 0, 1, 0, 0, 0, 1,
00170 0, 0, 0, 1, 1, 0, 0, 1, 0, 1,
00171 1, 1, 1, 1, 0, 0, 1, 0, 1, 0,
00172 0, 1, 0, 1, 1, 1, 1, 1, 1, 0,
00173 0, 0, 1, 0, 1, 0, 0, 1, 0, 1,
00174 1, 0, 1, 0, 1, 1, 0, 0, 1, 1,
00175 1, 1, 1, 0, 1, 0, 0, 1, 1, 1,
00176 0, 1, 0, 1, 0, 1, 0, 0, 0, 1,
00177 1, 0, 0, 1, 0, 0, 1, 1, 0, 1,
00178 1, 0, 1, 0, 1, 1, 0, 0, 1, 1,
00179 0, 0, 0, 1, 0, 1, 1, 1, 0, 0,
00180 1, 0, 1, 0, 1, 1, 0, 0, 0, 1,
00181 1, 0, 1, 0, 0, 1, 1, 1, 0, 1,
00182 0, 0, 1, 1, 1, 1, 1, 0, 0, 0,
00183 0, 1, 0, 1, 0, 0, 1, 0, 1, 0,
00184 0, 1, 1, 1, 1, 0, 0, 0, 1, 0,
00185 0, 1, 0, 1, 0, 1, 0, 0, 0, 0
00186 };
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202 static const cos_msin_t s_cos_msin_2[DCT_LENGTH_DIV_32] =
00203 {
00204 {18413, -723},
00205 {18299, -2166},
00206 {18073, -3595},
00207 {17735, -5002},
00208 {17288, -6378},
00209 {16734, -7715},
00210 {16077, -9004},
00211 {15321, -10237},
00212 {14471, -11408},
00213 {13531, -12508}
00214 };
00215
00216 static const cos_msin_t s_cos_msin_4[DCT_LENGTH_DIV_16] =
00217 {
00218 {18423, -362},
00219 {18395, -1085},
00220 {18338, -1806},
00221 {18253, -2525},
00222 {18140, -3239},
00223 {17999, -3949},
00224 {17830, -4653},
00225 {17634, -5349},
00226 {17410, -6037},
00227 {17159, -6716},
00228 {16883, -7385},
00229 {16580, -8042},
00230 {16251, -8686},
00231 {15898, -9318},
00232 {15520, -9935},
00233 {15118, -10536},
00234 {14692, -11122},
00235 {14244, -11690},
00236 {13774, -12240},
00237 {13283, -12772}
00238 };
00239
00240 static const cos_msin_t s_cos_msin_8[DCT_LENGTH_DIV_8] =
00241 {
00242 {18426, -181},
00243 {18419, -543},
00244 {18405, -904},
00245 {18384, -1265},
00246 {18355, -1626},
00247 {18320, -1986},
00248 {18277, -2345},
00249 {18228, -2704},
00250 {18171, -3061},
00251 {18107, -3417},
00252 {18037, -3772},
00253 {17959, -4126},
00254 {17875, -4477},
00255 {17783, -4827},
00256 {17685, -5176},
00257 {17580, -5522},
00258 {17468, -5866},
00259 {17350, -6208},
00260 {17225, -6547},
00261 {17093, -6884},
00262 {16954, -7219},
00263 {16809, -7550},
00264 {16658, -7879},
00265 {16500, -8204},
00266 {16336, -8526},
00267 {16165, -8846},
00268 {15988, -9161},
00269 {15805, -9473},
00270 {15616, -9782},
00271 {15421, -10087},
00272 {15220, -10387},
00273 {15013, -10684},
00274 {14801, -10977},
00275 {14582, -11265},
00276 {14358, -11550},
00277 {14129, -11829},
00278 {13894, -12104},
00279 {13654, -12375},
00280 {13408, -12641},
00281 {13157, -12901}
00282 };
00283
00284 static const cos_msin_t s_cos_msin_16[DCT_LENGTH_DIV_4] =
00285 {
00286 {18427, -90},
00287 {18425, -271},
00288 {18421, -452},
00289 {18416, -633},
00290 {18409, -814},
00291 {18400, -995},
00292 {18389, -1175},
00293 {18377, -1356},
00294 {18363, -1536},
00295 {18347, -1716},
00296 {18329, -1896},
00297 {18310, -2076},
00298 {18288, -2256},
00299 {18265, -2435},
00300 {18241, -2614},
00301 {18214, -2793},
00302 {18186, -2972},
00303 {18156, -3150},
00304 {18124, -3328},
00305 {18090, -3506},
00306 {18055, -3684},
00307 {18018, -3861},
00308 {17979, -4037},
00309 {17939, -4214},
00310 {17897, -4390},
00311 {17853, -4565},
00312 {17807, -4740},
00313 {17760, -4915},
00314 {17710, -5089},
00315 {17660, -5262},
00316 {17607, -5436},
00317 {17553, -5608},
00318 {17497, -5780},
00319 {17439, -5952},
00320 {17380, -6123},
00321 {17319, -6293},
00322 {17257, -6463},
00323 {17192, -6632},
00324 {17126, -6800},
00325 {17059, -6968},
00326 {16990, -7135},
00327 {16919, -7302},
00328 {16846, -7467},
00329 {16772, -7632},
00330 {16696, -7797},
00331 {16619, -7960},
00332 {16540, -8123},
00333 {16459, -8285},
00334 {16377, -8446},
00335 {16294, -8607},
00336 {16208, -8766},
00337 {16121, -8925},
00338 {16033, -9083},
00339 {15943, -9240},
00340 {15852, -9396},
00341 {15759, -9551},
00342 {15664, -9705},
00343 {15568, -9858},
00344 {15471, -10011},
00345 {15372, -10162},
00346 {15271, -10313},
00347 {15169, -10462},
00348 {15066, -10610},
00349 {14961, -10758},
00350 {14854, -10904},
00351 {14747, -11049},
00352 {14637, -11194},
00353 {14527, -11337},
00354 {14415, -11479},
00355 {14301, -11620},
00356 {14187, -11760},
00357 {14071, -11898},
00358 {13953, -12036},
00359 {13834, -12172},
00360 {13714, -12308},
00361 {13593, -12442},
00362 {13470, -12575},
00363 {13346, -12706},
00364 {13220, -12837},
00365 {13094, -12966}
00366 };
00367
00368 static const cos_msin_t s_cos_msin_32[DCT_LENGTH_DIV_2] =
00369 {
00370 {18427, -45},
00371 {18427, -136},
00372 {18426, -226},
00373 {18424, -317},
00374 {18423, -407},
00375 {18420, -497},
00376 {18418, -588},
00377 {18415, -678},
00378 {18411, -769},
00379 {18407, -859},
00380 {18403, -949},
00381 {18398, -1040},
00382 {18392, -1130},
00383 {18387, -1220},
00384 {18380, -1310},
00385 {18374, -1401},
00386 {18367, -1491},
00387 {18359, -1581},
00388 {18351, -1671},
00389 {18343, -1761},
00390 {18334, -1851},
00391 {18324, -1941},
00392 {18315, -2031},
00393 {18305, -2121},
00394 {18294, -2211},
00395 {18283, -2301},
00396 {18271, -2390},
00397 {18259, -2480},
00398 {18247, -2570},
00399 {18234, -2659},
00400 {18221, -2749},
00401 {18207, -2838},
00402 {18193, -2927},
00403 {18178, -3017},
00404 {18163, -3106},
00405 {18148, -3195},
00406 {18132, -3284},
00407 {18116, -3373},
00408 {18099, -3462},
00409 {18082, -3551},
00410 {18064, -3639},
00411 {18046, -3728},
00412 {18027, -3816},
00413 {18009, -3905},
00414 {17989, -3993},
00415 {17969, -4081},
00416 {17949, -4170},
00417 {17928, -4258},
00418 {17907, -4346},
00419 {17886, -4434},
00420 {17864, -4521},
00421 {17841, -4609},
00422 {17818, -4696},
00423 {17795, -4784},
00424 {17772, -4871},
00425 {17747, -4958},
00426 {17723, -5045},
00427 {17698, -5132},
00428 {17672, -5219},
00429 {17647, -5306},
00430 {17620, -5392},
00431 {17594, -5479},
00432 {17567, -5565},
00433 {17539, -5651},
00434 {17511, -5737},
00435 {17483, -5823},
00436 {17454, -5909},
00437 {17425, -5994},
00438 {17395, -6080},
00439 {17365, -6165},
00440 {17335, -6250},
00441 {17304, -6335},
00442 {17272, -6420},
00443 {17241, -6505},
00444 {17208, -6590},
00445 {17176, -6674},
00446 {17143, -6758},
00447 {17110, -6842},
00448 {17076, -6926},
00449 {17042, -7010},
00450 {17007, -7093},
00451 {16972, -7177},
00452 {16937, -7260},
00453 {16901, -7343},
00454 {16864, -7426},
00455 {16828, -7509},
00456 {16791, -7591},
00457 {16753, -7674},
00458 {16715, -7756},
00459 {16677, -7838},
00460 {16638, -7919},
00461 {16599, -8001},
00462 {16560, -8082},
00463 {16520, -8164},
00464 {16480, -8245},
00465 {16439, -8325},
00466 {16398, -8406},
00467 {16357, -8486},
00468 {16315, -8567},
00469 {16272, -8647},
00470 {16230, -8726},
00471 {16187, -8806},
00472 {16143, -8885},
00473 {16100, -8964},
00474 {16055, -9043},
00475 {16011, -9122},
00476 {15966, -9200},
00477 {15920, -9279},
00478 {15875, -9357},
00479 {15829, -9435},
00480 {15782, -9512},
00481 {15735, -9589},
00482 {15688, -9667},
00483 {15640, -9744},
00484 {15592, -9820},
00485 {15544, -9897},
00486 {15495, -9973},
00487 {15446, -10049},
00488 {15396, -10124},
00489 {15347, -10200},
00490 {15296, -10275},
00491 {15246, -10350},
00492 {15195, -10425},
00493 {15143, -10499},
00494 {15092, -10573},
00495 {15040, -10647},
00496 {14987, -10721},
00497 {14934, -10794},
00498 {14881, -10868},
00499 {14828, -10941},
00500 {14774, -11013},
00501 {14719, -11086},
00502 {14665, -11158},
00503 {14610, -11230},
00504 {14555, -11301},
00505 {14499, -11372},
00506 {14443, -11444},
00507 {14387, -11514},
00508 {14330, -11585},
00509 {14273, -11655},
00510 {14216, -11725},
00511 {14158, -11795},
00512 {14100, -11864},
00513 {14041, -11933},
00514 {13983, -12002},
00515 {13924, -12070},
00516 {13864, -12138},
00517 {13804, -12206},
00518 {13744, -12274},
00519 {13684, -12341},
00520 {13623, -12408},
00521 {13562, -12475},
00522 {13501, -12541},
00523 {13439, -12608},
00524 {13377, -12673},
00525 {13314, -12739},
00526 {13252, -12804},
00527 {13189, -12869},
00528 {13125, -12934},
00529 {13062, -12998}
00530 };
00531
00532 static const cos_msin_t s_cos_msin_64[DCT_LENGTH] =
00533 {
00534 {18426, -21},
00535 {18426, -66},
00536 {18426, -110},
00537 {18426, -154},
00538 {18425, -198},
00539 {18425, -242},
00540 {18424, -286},
00541 {18424, -331},
00542 {18423, -374},
00543 {18421, -419},
00544 {18421, -463},
00545 {18419, -507},
00546 {18418, -552},
00547 {18417, -595},
00548 {18415, -639},
00549 {18414, -684},
00550 {18412, -728},
00551 {18410, -772},
00552 {18408, -816},
00553 {18406, -860},
00554 {18404, -904},
00555 {18402, -949},
00556 {18400, -992},
00557 {18397, -1037},
00558 {18394, -1081},
00559 {18392, -1125},
00560 {18389, -1169},
00561 {18387, -1213},
00562 {18384, -1257},
00563 {18380, -1301},
00564 {18378, -1345},
00565 {18374, -1389},
00566 {18371, -1433},
00567 {18367, -1477},
00568 {18364, -1521},
00569 {18360, -1566},
00570 {18356, -1609},
00571 {18352, -1653},
00572 {18348, -1697},
00573 {18344, -1742},
00574 {18339, -1785},
00575 {18335, -1829},
00576 {18331, -1873},
00577 {18326, -1917},
00578 {18322, -1961},
00579 {18317, -2005},
00580 {18312, -2049},
00581 {18307, -2092},
00582 {18302, -2137},
00583 {18297, -2180},
00584 {18292, -2224},
00585 {18286, -2268},
00586 {18281, -2312},
00587 {18275, -2356},
00588 {18270, -2399},
00589 {18264, -2443},
00590 {18258, -2487},
00591 {18252, -2531},
00592 {18246, -2574},
00593 {18240, -2618},
00594 {18233, -2662},
00595 {18227, -2706},
00596 {18220, -2749},
00597 {18214, -2793},
00598 {18207, -2836},
00599 {18200, -2880},
00600 {18193, -2924},
00601 {18186, -2967},
00602 {18179, -3011},
00603 {18172, -3055},
00604 {18164, -3098},
00605 {18157, -3142},
00606 {18149, -3185},
00607 {18141, -3229},
00608 {18134, -3272},
00609 {18126, -3316},
00610 {18118, -3359},
00611 {18109, -3403},
00612 {18101, -3446},
00613 {18094, -3489},
00614 {18085, -3533},
00615 {18076, -3576},
00616 {18068, -3619},
00617 {18059, -3663},
00618 {18050, -3706},
00619 {18041, -3749},
00620 {18032, -3792},
00621 {18023, -3836},
00622 {18014, -3879},
00623 {18005, -3922},
00624 {17995, -3965},
00625 {17986, -4008},
00626 {17975, -4051},
00627 {17966, -4094},
00628 {17956, -4138},
00629 {17946, -4180},
00630 {17936, -4224},
00631 {17926, -4266},
00632 {17916, -4309},
00633 {17905, -4353},
00634 {17895, -4395},
00635 {17884, -4438},
00636 {17874, -4481},
00637 {17863, -4524},
00638 {17852, -4567},
00639 {17841, -4609},
00640 {17830, -4652},
00641 {17819, -4695},
00642 {17807, -4738},
00643 {17796, -4780},
00644 {17784, -4823},
00645 {17772, -4865},
00646 {17761, -4908},
00647 {17749, -4951},
00648 {17738, -4993},
00649 {17725, -5036},
00650 {17713, -5078},
00651 {17701, -5121},
00652 {17689, -5163},
00653 {17676, -5205},
00654 {17664, -5248},
00655 {17651, -5290},
00656 {17638, -5333},
00657 {17626, -5375},
00658 {17613, -5417},
00659 {17599, -5459},
00660 {17586, -5501},
00661 {17573, -5544},
00662 {17560, -5586},
00663 {17546, -5627},
00664 {17533, -5670},
00665 {17519, -5712},
00666 {17505, -5753},
00667 {17492, -5795},
00668 {17478, -5837},
00669 {17464, -5879},
00670 {17450, -5921},
00671 {17435, -5963},
00672 {17421, -6005},
00673 {17406, -6046},
00674 {17392, -6088},
00675 {17377, -6130},
00676 {17363, -6172},
00677 {17348, -6213},
00678 {17333, -6254},
00679 {17318, -6296},
00680 {17303, -6338},
00681 {17288, -6379},
00682 {17272, -6420},
00683 {17257, -6462},
00684 {17241, -6503},
00685 {17225, -6545},
00686 {17210, -6586},
00687 {17194, -6627},
00688 {17178, -6668},
00689 {17162, -6709},
00690 {17145, -6750},
00691 {17130, -6791},
00692 {17113, -6832},
00693 {17097, -6874},
00694 {17080, -6915},
00695 {17064, -6956},
00696 {17047, -6996},
00697 {17030, -7037},
00698 {17013, -7078},
00699 {16996, -7119},
00700 {16979, -7159},
00701 {16962, -7200},
00702 {16945, -7241},
00703 {16927, -7281},
00704 {16910, -7322},
00705 {16892, -7362},
00706 {16874, -7403},
00707 {16856, -7444},
00708 {16838, -7484},
00709 {16821, -7524},
00710 {16802, -7564},
00711 {16784, -7605},
00712 {16766, -7645},
00713 {16748, -7685},
00714 {16729, -7725},
00715 {16711, -7765},
00716 {16692, -7805},
00717 {16674, -7845},
00718 {16654, -7885},
00719 {16635, -7925},
00720 {16616, -7964},
00721 {16597, -8004},
00722 {16578, -8044},
00723 {16559, -8084},
00724 {16539, -8124},
00725 {16520, -8164},
00726 {16500, -8203},
00727 {16480, -8242},
00728 {16461, -8282},
00729 {16441, -8322},
00730 {16421, -8361},
00731 {16401, -8400},
00732 {16380, -8440},
00733 {16360, -8479},
00734 {16340, -8518},
00735 {16319, -8557},
00736 {16299, -8597},
00737 {16278, -8635},
00738 {16257, -8674},
00739 {16237, -8713},
00740 {16215, -8752},
00741 {16195, -8791},
00742 {16173, -8829},
00743 {16152, -8868},
00744 {16131, -8907},
00745 {16110, -8946},
00746 {16088, -8985},
00747 {16067, -9023},
00748 {16045, -9061},
00749 {16023, -9100},
00750 {16001, -9138},
00751 {15979, -9176},
00752 {15957, -9215},
00753 {15935, -9253},
00754 {15913, -9291},
00755 {15891, -9329},
00756 {15868, -9367},
00757 {15846, -9405},
00758 {15823, -9443},
00759 {15800, -9481},
00760 {15778, -9519},
00761 {15755, -9557},
00762 {15732, -9595},
00763 {15709, -9632},
00764 {15686, -9670},
00765 {15662, -9708},
00766 {15639, -9745},
00767 {15615, -9782},
00768 {15592, -9820},
00769 {15569, -9857},
00770 {15544, -9894},
00771 {15521, -9932},
00772 {15497, -9969},
00773 {15473, -10006},
00774 {15449, -10043},
00775 {15425, -10080},
00776 {15401, -10117},
00777 {15377, -10154},
00778 {15352, -10191},
00779 {15327, -10227},
00780 {15303, -10264},
00781 {15278, -10301},
00782 {15254, -10337},
00783 {15229, -10374},
00784 {15204, -10411},
00785 {15180, -10447},
00786 {15154, -10483},
00787 {15129, -10519},
00788 {15104, -10556},
00789 {15078, -10592},
00790 {15053, -10628},
00791 {15027, -10664},
00792 {15002, -10700},
00793 {14976, -10736},
00794 {14950, -10772},
00795 {14924, -10808},
00796 {14898, -10844},
00797 {14872, -10879},
00798 {14846, -10915},
00799 {14820, -10950},
00800 {14794, -10985},
00801 {14767, -11021},
00802 {14741, -11056},
00803 {14714, -11092},
00804 {14687, -11127},
00805 {14661, -11162},
00806 {14635, -11197},
00807 {14607, -11232},
00808 {14581, -11267},
00809 {14554, -11302},
00810 {14526, -11337},
00811 {14499, -11372},
00812 {14472, -11407},
00813 {14444, -11441},
00814 {14417, -11476},
00815 {14389, -11511},
00816 {14362, -11545},
00817 {14334, -11579},
00818 {14306, -11614},
00819 {14278, -11648},
00820 {14251, -11682},
00821 {14222, -11716},
00822 {14194, -11750},
00823 {14166, -11784},
00824 {14137, -11818},
00825 {14109, -11852},
00826 {14081, -11886},
00827 {14053, -11919},
00828 {14023, -11953},
00829 {13995, -11987},
00830 {13966, -12020},
00831 {13937, -12054},
00832 {13909, -12087},
00833 {13879, -12120},
00834 {13851, -12153},
00835 {13821, -12187},
00836 {13792, -12220},
00837 {13763, -12253},
00838 {13733, -12286},
00839 {13704, -12319},
00840 {13674, -12351},
00841 {13645, -12385},
00842 {13615, -12417},
00843 {13585, -12450},
00844 {13555, -12482},
00845 {13525, -12514},
00846 {13495, -12546},
00847 {13465, -12579},
00848 {13435, -12611},
00849 {13405, -12644},
00850 {13374, -12676},
00851 {13345, -12708},
00852 {13314, -12739},
00853 {13283, -12772}
00854 };
00855
00856 static const cos_msin_t *s_cos_msin_table[] =
00857 {
00858 s_cos_msin_2,
00859 s_cos_msin_4,
00860 s_cos_msin_8,
00861 s_cos_msin_16,
00862 s_cos_msin_32,
00863 s_cos_msin_64
00864 };
00865
00866