1 /*********************************************************************** 2 ** 3 ** ITU-T G.722.1 (2005-05) - Fixed point implementation for main body and Annex C 4 ** > Software Release 2.1 (2008-06) 5 ** (Simple repackaging; no change from 2005-05 Release 2.0 code) 6 ** 7 ** � 2004 Polycom, Inc. 8 ** 9 ** All rights reserved. 10 ** 11 ***********************************************************************/ 12 13 /*********************************************************************** 14 Filename: dct4_s.h 15 16 Purpose: Contains tables used by dct4_s.c 17 18 Design Notes: 19 20 ***********************************************************************/ 21 22 /*************************************************************************** 23 Include files 24 ***************************************************************************/ 25 26 typedef struct 27 { 28 Word16 cosine; 29 Word16 minus_sine; 30 } cos_msin_t; 31 32 /*************************************************************************** 33 The dct_core_s table was generated by the following code 34 35 for(i=0;i<10;++i) 36 { 37 for(k=0;k<10;++k) 38 { 39 dct_core_s[i][k]=(short) (FTOI(((.9*32768.)*cos(3.1415926*(k+0.5)*(i+0.5)/10.)))); 40 } 41 } 42 ***************************************************************************/ 43 Word16 dct_core_s[10][10] = { 44 { 29400, 28676, 27246, 25145, 22425, 19153, 15409, 11286, 6885, 2314 }, 45 { 28676, 22425, 11286, -2314, -15409, -25145, -29400, -27246, -19153, -6885 }, 46 { 27246, 11286, -11286, -27246, -27246, -11286, 11286, 27246, 27246, 11286 }, 47 { 25145, -2314, -27246, -22425, 6885, 28676, 19153, -11286, -29400, -15409 }, 48 { 22425, -15409, -27246, 6885, 29400, 2314, -28676, -11286, 25145, 19153 }, 49 { 19153, -25145, -11286, 28676, 2314, -29400, 6885, 27246, -15409, -22425 }, 50 { 15409, -29400, 11286, 19153, -28676, 6885, 22425, -27246, 2314, 25145 }, 51 { 11286, -27246, 27246, -11286, -11286, 27246, -27246, 11286, 11286, -27246 }, 52 { 6885, -19153, 27246, -29400, 25145, -15409, 2314, 11286, -22425, 28676 }, 53 { 2314, -6885, 11286, -15409, 19153, -22425, 25145, -27246, 28676, -29400 } 54 }; 55 56 Word16 syn_bias_7khz[DCT_LENGTH] = { 57 -4, 4, -5, -2, 0, -4, 6, 2, -2, -4, 58 -3, 3, 0, 0, -2, 4, 0, 0, 3, -6, 59 8, 5, 4, 5, -8, 0, -2, 0, 0, -3, 60 3, 0, 0, 0, 1, -1, -2, 0, 0, 2, 61 -2, -5, -2, 3, 2, -1, -1, -6, 3, 1, 62 -7, 4, 4, 0, 1, 4, 1, 0, 1, -5, 63 -1, 1, -6, 0, -1, -1, 3, 0, -2, 1, 64 2, -4, 0, 9, 0, -3, 1, 1, 1, 0, 65 -3, -2, -1, -4, -2, 0, 5, 2, -3, 5, 66 0, -2, 4, 4, 0, -6, -4, 2, 0, 0, 67 0, -1, -1, -2, 0, 6, 1, 0, 0, -1, 68 0, -4, -1, 0, -4, 1, -1, -5, 0, 1, 69 2, 4, 0, -8, -4, 0, -2, -2, 2, 5, 70 -3, -1, 1, -4, 0, 0, 0, -1, -3, 0, 71 -5, -4, 0, -2, 0, 7, 1, 0, 5, -2, 72 -1, 2, 2, -2, 3, 7, -3, 4, 1, -4, 73 0, 0, 3, -7, -5, 0, 0, 4, 0, -2, 74 -1, 0, -5, 0, 2, 0, 11, 5, -1, 0, 75 2, 2, -2, -2, 5, 4, -3, 1, 0, -2, 76 1, 3, 2, 0, 1, 0, 0, 0, 5, 6, 77 -2, -1, 0, 2, 3, 2, 0, -3, 4, 5, 78 0, -1, 0, 3, 1, -2, -3, -2, -1, 2, 79 -1, -1, -2, -7, 4, 6, -5, -6, -3, -4, 80 0, 2, -5, -2, 3, 0, 0, 0, 2, -2, 81 -4, 3, 3, 1, 0, 0, 4, -1, 8, 13, 82 1, 2, 0, 2, 0, -1, 4, -3, 1, 0, 83 -1, 3, 0, 0, -5, 0, 6, 2, 4, 5, 84 2, -1, -1, 3, 6, 1, 1, 2, -4, 0, 85 -1, -6, -2, -2, 2, 1, 2, 6, 2, 0, 86 -2, -2, 0, -1, 2, 0, 0, 3, -2, 1, 87 3, 1, 2, -1, -2, 2, 2, -4, 0, 0, 88 -3, 0, -4, -3, 6, 7, 2, 2, 0, -3}; 89 90 Word16 dither[DCT_LENGTH]= { 91 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 92 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 93 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 94 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 95 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 96 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 97 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 98 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 99 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 100 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 101 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 102 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 103 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 104 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 105 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 106 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 107 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 108 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 109 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 110 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 111 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 112 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 113 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 114 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 115 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 116 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 117 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 118 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 119 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 120 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 121 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 122 1, 1, 1, 0, 1, 0, 0, 0, 1, 0}; 123 124 Word16 max_dither[MAX_DCT_LENGTH]= { 125 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 126 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 127 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 128 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 129 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 130 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 131 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 132 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 133 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 134 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 135 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 136 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 137 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 138 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 139 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 140 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 141 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 142 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 143 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 144 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 145 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 146 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 147 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 148 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 149 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 150 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 151 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 152 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 153 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 154 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 155 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 156 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 157 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 158 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 159 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 160 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 161 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 162 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 163 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 164 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 165 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 166 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 167 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 168 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 169 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 170 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 171 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 172 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 173 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 174 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 175 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 176 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 177 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 178 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 179 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 180 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 181 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 182 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 183 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 184 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 185 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 186 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 187 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 188 0, 1, 0, 1, 0, 1, 0, 0, 0, 0 189 }; 190 191 192 /******************************************************************************** 193 The s_cos_min tables were generated by the following code: 194 double angle, scale; 195 int index; 196 197 for (index = 0;index < length;index++) 198 { 199 angle = scale * ((double)index + 0.5); 200 table[index].cosine = (short) (FTOI((18427)* cos(angle))); 201 table[index].minus_sine = (short) (FTOI((18427)*(-sin(angle)))); 202 } 203 204 205 ********************************************************************************/ 206 207 cos_msin_t s_cos_msin_2[DCT_LENGTH_DIV_32] = { 208 { 18413 , -723 } , 209 { 18299 , -2166 } , 210 { 18073 , -3595 } , 211 { 17735 , -5002 } , 212 { 17288 , -6378 } , 213 { 16734 , -7715 } , 214 { 16077 , -9004 } , 215 { 15321 , -10237 } , 216 { 14471 , -11408 } , 217 { 13531 , -12508 } 218 }; 219 cos_msin_t s_cos_msin_4[DCT_LENGTH_DIV_16] = { 220 { 18423 , -362 } , 221 { 18395 , -1085 } , 222 { 18338 , -1806 } , 223 { 18253 , -2525 } , 224 { 18140 , -3239 } , 225 { 17999 , -3949 } , 226 { 17830 , -4653 } , 227 { 17634 , -5349 } , 228 { 17410 , -6037 } , 229 { 17159 , -6716 } , 230 { 16883 , -7385 } , 231 { 16580 , -8042 } , 232 { 16251 , -8686 } , 233 { 15898 , -9318 } , 234 { 15520 , -9935 } , 235 { 15118 , -10536 } , 236 { 14692 , -11122 } , 237 { 14244 , -11690 } , 238 { 13774 , -12240 } , 239 { 13283 , -12772 } 240 }; 241 cos_msin_t s_cos_msin_8[DCT_LENGTH_DIV_8] = { 242 { 18426 , -181 } , 243 { 18419 , -543 } , 244 { 18405 , -904 } , 245 { 18384 , -1265 } , 246 { 18355 , -1626 } , 247 { 18320 , -1986 } , 248 { 18277 , -2345 } , 249 { 18228 , -2704 } , 250 { 18171 , -3061 } , 251 { 18107 , -3417 } , 252 { 18037 , -3772 } , 253 { 17959 , -4126 } , 254 { 17875 , -4477 } , 255 { 17783 , -4827 } , 256 { 17685 , -5176 } , 257 { 17580 , -5522 } , 258 { 17468 , -5866 } , 259 { 17350 , -6208 } , 260 { 17225 , -6547 } , 261 { 17093 , -6884 } , 262 { 16954 , -7219 } , 263 { 16809 , -7550 } , 264 { 16658 , -7879 } , 265 { 16500 , -8204 } , 266 { 16336 , -8526 } , 267 { 16165 , -8846 } , 268 { 15988 , -9161 } , 269 { 15805 , -9473 } , 270 { 15616 , -9782 } , 271 { 15421 , -10087 } , 272 { 15220 , -10387 } , 273 { 15013 , -10684 } , 274 { 14801 , -10977 } , 275 { 14582 , -11265 } , 276 { 14358 , -11550 } , 277 { 14129 , -11829 } , 278 { 13894 , -12104 } , 279 { 13654 , -12375 } , 280 { 13408 , -12641 } , 281 { 13157 , -12901 } 282 }; 283 cos_msin_t s_cos_msin_16[DCT_LENGTH_DIV_4] = { 284 { 18427 , -90 } , 285 { 18425 , -271 } , 286 { 18421 , -452 } , 287 { 18416 , -633 } , 288 { 18409 , -814 } , 289 { 18400 , -995 } , 290 { 18389 , -1175 } , 291 { 18377 , -1356 } , 292 { 18363 , -1536 } , 293 { 18347 , -1716 } , 294 { 18329 , -1896 } , 295 { 18310 , -2076 } , 296 { 18288 , -2256 } , 297 { 18265 , -2435 } , 298 { 18241 , -2614 } , 299 { 18214 , -2793 } , 300 { 18186 , -2972 } , 301 { 18156 , -3150 } , 302 { 18124 , -3328 } , 303 { 18090 , -3506 } , 304 { 18055 , -3684 } , 305 { 18018 , -3861 } , 306 { 17979 , -4037 } , 307 { 17939 , -4214 } , 308 { 17897 , -4390 } , 309 { 17853 , -4565 } , 310 { 17807 , -4740 } , 311 { 17760 , -4915 } , 312 { 17710 , -5089 } , 313 { 17660 , -5262 } , 314 { 17607 , -5436 } , 315 { 17553 , -5608 } , 316 { 17497 , -5780 } , 317 { 17439 , -5952 } , 318 { 17380 , -6123 } , 319 { 17319 , -6293 } , 320 { 17257 , -6463 } , 321 { 17192 , -6632 } , 322 { 17126 , -6800 } , 323 { 17059 , -6968 } , 324 { 16990 , -7135 } , 325 { 16919 , -7302 } , 326 { 16846 , -7467 } , 327 { 16772 , -7632 } , 328 { 16696 , -7797 } , 329 { 16619 , -7960 } , 330 { 16540 , -8123 } , 331 { 16459 , -8285 } , 332 { 16377 , -8446 } , 333 { 16294 , -8607 } , 334 { 16208 , -8766 } , 335 { 16121 , -8925 } , 336 { 16033 , -9083 } , 337 { 15943 , -9240 } , 338 { 15852 , -9396 } , 339 { 15759 , -9551 } , 340 { 15664 , -9705 } , 341 { 15568 , -9858 } , 342 { 15471 , -10011 } , 343 { 15372 , -10162 } , 344 { 15271 , -10313 } , 345 { 15169 , -10462 } , 346 { 15066 , -10610 } , 347 { 14961 , -10758 } , 348 { 14854 , -10904 } , 349 { 14747 , -11049 } , 350 { 14637 , -11194 } , 351 { 14527 , -11337 } , 352 { 14415 , -11479 } , 353 { 14301 , -11620 } , 354 { 14187 , -11760 } , 355 { 14071 , -11898 } , 356 { 13953 , -12036 } , 357 { 13834 , -12172 } , 358 { 13714 , -12308 } , 359 { 13593 , -12442 } , 360 { 13470 , -12575 } , 361 { 13346 , -12706 } , 362 { 13220 , -12837 } , 363 { 13094 , -12966 } 364 }; 365 cos_msin_t s_cos_msin_32[DCT_LENGTH_DIV_2] = { 366 { 18427 , -45 } , 367 { 18427 , -136 } , 368 { 18426 , -226 } , 369 { 18424 , -317 } , 370 { 18423 , -407 } , 371 { 18420 , -497 } , 372 { 18418 , -588 } , 373 { 18415 , -678 } , 374 { 18411 , -769 } , 375 { 18407 , -859 } , 376 { 18403 , -949 } , 377 { 18398 , -1040 } , 378 { 18392 , -1130 } , 379 { 18387 , -1220 } , 380 { 18380 , -1310 } , 381 { 18374 , -1401 } , 382 { 18367 , -1491 } , 383 { 18359 , -1581 } , 384 { 18351 , -1671 } , 385 { 18343 , -1761 } , 386 { 18334 , -1851 } , 387 { 18324 , -1941 } , 388 { 18315 , -2031 } , 389 { 18305 , -2121 } , 390 { 18294 , -2211 } , 391 { 18283 , -2301 } , 392 { 18271 , -2390 } , 393 { 18259 , -2480 } , 394 { 18247 , -2570 } , 395 { 18234 , -2659 } , 396 { 18221 , -2749 } , 397 { 18207 , -2838 } , 398 { 18193 , -2927 } , 399 { 18178 , -3017 } , 400 { 18163 , -3106 } , 401 { 18148 , -3195 } , 402 { 18132 , -3284 } , 403 { 18116 , -3373 } , 404 { 18099 , -3462 } , 405 { 18082 , -3551 } , 406 { 18064 , -3639 } , 407 { 18046 , -3728 } , 408 { 18027 , -3816 } , 409 { 18009 , -3905 } , 410 { 17989 , -3993 } , 411 { 17969 , -4081 } , 412 { 17949 , -4170 } , 413 { 17928 , -4258 } , 414 { 17907 , -4346 } , 415 { 17886 , -4434 } , 416 { 17864 , -4521 } , 417 { 17841 , -4609 } , 418 { 17818 , -4696 } , 419 { 17795 , -4784 } , 420 { 17772 , -4871 } , 421 { 17747 , -4958 } , 422 { 17723 , -5045 } , 423 { 17698 , -5132 } , 424 { 17672 , -5219 } , 425 { 17647 , -5306 } , 426 { 17620 , -5392 } , 427 { 17594 , -5479 } , 428 { 17567 , -5565 } , 429 { 17539 , -5651 } , 430 { 17511 , -5737 } , 431 { 17483 , -5823 } , 432 { 17454 , -5909 } , 433 { 17425 , -5994 } , 434 { 17395 , -6080 } , 435 { 17365 , -6165 } , 436 { 17335 , -6250 } , 437 { 17304 , -6335 } , 438 { 17272 , -6420 } , 439 { 17241 , -6505 } , 440 { 17208 , -6590 } , 441 { 17176 , -6674 } , 442 { 17143 , -6758 } , 443 { 17110 , -6842 } , 444 { 17076 , -6926 } , 445 { 17042 , -7010 } , 446 { 17007 , -7093 } , 447 { 16972 , -7177 } , 448 { 16937 , -7260 } , 449 { 16901 , -7343 } , 450 { 16864 , -7426 } , 451 { 16828 , -7509 } , 452 { 16791 , -7591 } , 453 { 16753 , -7674 } , 454 { 16715 , -7756 } , 455 { 16677 , -7838 } , 456 { 16638 , -7919 } , 457 { 16599 , -8001 } , 458 { 16560 , -8082 } , 459 { 16520 , -8164 } , 460 { 16480 , -8245 } , 461 { 16439 , -8325 } , 462 { 16398 , -8406 } , 463 { 16357 , -8486 } , 464 { 16315 , -8567 } , 465 { 16272 , -8647 } , 466 { 16230 , -8726 } , 467 { 16187 , -8806 } , 468 { 16143 , -8885 } , 469 { 16100 , -8964 } , 470 { 16055 , -9043 } , 471 { 16011 , -9122 } , 472 { 15966 , -9200 } , 473 { 15920 , -9279 } , 474 { 15875 , -9357 } , 475 { 15829 , -9435 } , 476 { 15782 , -9512 } , 477 { 15735 , -9589 } , 478 { 15688 , -9667 } , 479 { 15640 , -9744 } , 480 { 15592 , -9820 } , 481 { 15544 , -9897 } , 482 { 15495 , -9973 } , 483 { 15446 , -10049 } , 484 { 15396 , -10124 } , 485 { 15347 , -10200 } , 486 { 15296 , -10275 } , 487 { 15246 , -10350 } , 488 { 15195 , -10425 } , 489 { 15143 , -10499 } , 490 { 15092 , -10573 } , 491 { 15040 , -10647 } , 492 { 14987 , -10721 } , 493 { 14934 , -10794 } , 494 { 14881 , -10868 } , 495 { 14828 , -10941 } , 496 { 14774 , -11013 } , 497 { 14719 , -11086 } , 498 { 14665 , -11158 } , 499 { 14610 , -11230 } , 500 { 14555 , -11301 } , 501 { 14499 , -11372 } , 502 { 14443 , -11444 } , 503 { 14387 , -11514 } , 504 { 14330 , -11585 } , 505 { 14273 , -11655 } , 506 { 14216 , -11725 } , 507 { 14158 , -11795 } , 508 { 14100 , -11864 } , 509 { 14041 , -11933 } , 510 { 13983 , -12002 } , 511 { 13924 , -12070 } , 512 { 13864 , -12138 } , 513 { 13804 , -12206 } , 514 { 13744 , -12274 } , 515 { 13684 , -12341 } , 516 { 13623 , -12408 } , 517 { 13562 , -12475 } , 518 { 13501 , -12541 } , 519 { 13439 , -12608 } , 520 { 13377 , -12673 } , 521 { 13314 , -12739 } , 522 { 13252 , -12804 } , 523 { 13189 , -12869 } , 524 { 13125 , -12934 } , 525 { 13062 , -12998 } 526 }; 527 cos_msin_t s_cos_msin_64[DCT_LENGTH] = { 528 {18426, -21}, 529 {18426, -66}, 530 {18426, -110}, 531 {18426, -154}, 532 {18425, -198}, 533 {18425, -242}, 534 {18424, -286}, 535 {18424, -331}, 536 {18423, -374}, 537 {18421, -419}, 538 {18421, -463}, 539 {18419, -507}, 540 {18418, -552}, 541 {18417, -595}, 542 {18415, -639}, 543 {18414, -684}, 544 {18412, -728}, 545 {18410, -772}, 546 {18408, -816}, 547 {18406, -860}, 548 {18404, -904}, 549 {18402, -949}, 550 {18400, -992}, 551 {18397, -1037}, 552 {18394, -1081}, 553 {18392, -1125}, 554 {18389, -1169}, 555 {18387, -1213}, 556 {18384, -1257}, 557 {18380, -1301}, 558 {18378, -1345}, 559 {18374, -1389}, 560 {18371, -1433}, 561 {18367, -1477}, 562 {18364, -1521}, 563 {18360, -1566}, 564 {18356, -1609}, 565 {18352, -1653}, 566 {18348, -1697}, 567 {18344, -1742}, 568 {18339, -1785}, 569 {18335, -1829}, 570 {18331, -1873}, 571 {18326, -1917}, 572 {18322, -1961}, 573 {18317, -2005}, 574 {18312, -2049}, 575 {18307, -2092}, 576 {18302, -2137}, 577 {18297, -2180}, 578 {18292, -2224}, 579 {18286, -2268}, 580 {18281, -2312}, 581 {18275, -2356}, 582 {18270, -2399}, 583 {18264, -2443}, 584 {18258, -2487}, 585 {18252, -2531}, 586 {18246, -2574}, 587 {18240, -2618}, 588 {18233, -2662}, 589 {18227, -2706}, 590 {18220, -2749}, 591 {18214, -2793}, 592 {18207, -2836}, 593 {18200, -2880}, 594 {18193, -2924}, 595 {18186, -2967}, 596 {18179, -3011}, 597 {18172, -3055}, 598 {18164, -3098}, 599 {18157, -3142}, 600 {18149, -3185}, 601 {18141, -3229}, 602 {18134, -3272}, 603 {18126, -3316}, 604 {18118, -3359}, 605 {18109, -3403}, 606 {18101, -3446}, 607 {18094, -3489}, 608 {18085, -3533}, 609 {18076, -3576}, 610 {18068, -3619}, 611 {18059, -3663}, 612 {18050, -3706}, 613 {18041, -3749}, 614 {18032, -3792}, 615 {18023, -3836}, 616 {18014, -3879}, 617 {18005, -3922}, 618 {17995, -3965}, 619 {17986, -4008}, 620 {17975, -4051}, 621 {17966, -4094}, 622 {17956, -4138}, 623 {17946, -4180}, 624 {17936, -4224}, 625 {17926, -4266}, 626 {17916, -4309}, 627 {17905, -4353}, 628 {17895, -4395}, 629 {17884, -4438}, 630 {17874, -4481}, 631 {17863, -4524}, 632 {17852, -4567}, 633 {17841, -4609}, 634 {17830, -4652}, 635 {17819, -4695}, 636 {17807, -4738}, 637 {17796, -4780}, 638 {17784, -4823}, 639 {17772, -4865}, 640 {17761, -4908}, 641 {17749, -4951}, 642 {17738, -4993}, 643 {17725, -5036}, 644 {17713, -5078}, 645 {17701, -5121}, 646 {17689, -5163}, 647 {17676, -5205}, 648 {17664, -5248}, 649 {17651, -5290}, 650 {17638, -5333}, 651 {17626, -5375}, 652 {17613, -5417}, 653 {17599, -5459}, 654 {17586, -5501}, 655 {17573, -5544}, 656 {17560, -5586}, 657 {17546, -5627}, 658 {17533, -5670}, 659 {17519, -5712}, 660 {17505, -5753}, 661 {17492, -5795}, 662 {17478, -5837}, 663 {17464, -5879}, 664 {17450, -5921}, 665 {17435, -5963}, 666 {17421, -6005}, 667 {17406, -6046}, 668 {17392, -6088}, 669 {17377, -6130}, 670 {17363, -6172}, 671 {17348, -6213}, 672 {17333, -6254}, 673 {17318, -6296}, 674 {17303, -6338}, 675 {17288, -6379}, 676 {17272, -6420}, 677 {17257, -6462}, 678 {17241, -6503}, 679 {17225, -6545}, 680 {17210, -6586}, 681 {17194, -6627}, 682 {17178, -6668}, 683 {17162, -6709}, 684 {17145, -6750}, 685 {17130, -6791}, 686 {17113, -6832}, 687 {17097, -6874}, 688 {17080, -6915}, 689 {17064, -6956}, 690 {17047, -6996}, 691 {17030, -7037}, 692 {17013, -7078}, 693 {16996, -7119}, 694 {16979, -7159}, 695 {16962, -7200}, 696 {16945, -7241}, 697 {16927, -7281}, 698 {16910, -7322}, 699 {16892, -7362}, 700 {16874, -7403}, 701 {16856, -7444}, 702 {16838, -7484}, 703 {16821, -7524}, 704 {16802, -7564}, 705 {16784, -7605}, 706 {16766, -7645}, 707 {16748, -7685}, 708 {16729, -7725}, 709 {16711, -7765}, 710 {16692, -7805}, 711 {16674, -7845}, 712 {16654, -7885}, 713 {16635, -7925}, 714 {16616, -7964}, 715 {16597, -8004}, 716 {16578, -8044}, 717 {16559, -8084}, 718 {16539, -8124}, 719 {16520, -8164}, 720 {16500, -8203}, 721 {16480, -8242}, 722 {16461, -8282}, 723 {16441, -8322}, 724 {16421, -8361}, 725 {16401, -8400}, 726 {16380, -8440}, 727 {16360, -8479}, 728 {16340, -8518}, 729 {16319, -8557}, 730 {16299, -8597}, 731 {16278, -8635}, 732 {16257, -8674}, 733 {16237, -8713}, 734 {16215, -8752}, 735 {16195, -8791}, 736 {16173, -8829}, 737 {16152, -8868}, 738 {16131, -8907}, 739 {16110, -8946}, 740 {16088, -8985}, 741 {16067, -9023}, 742 {16045, -9061}, 743 {16023, -9100}, 744 {16001, -9138}, 745 {15979, -9176}, 746 {15957, -9215}, 747 {15935, -9253}, 748 {15913, -9291}, 749 {15891, -9329}, 750 {15868, -9367}, 751 {15846, -9405}, 752 {15823, -9443}, 753 {15800, -9481}, 754 {15778, -9519}, 755 {15755, -9557}, 756 {15732, -9595}, 757 {15709, -9632}, 758 {15686, -9670}, 759 {15662, -9708}, 760 {15639, -9745}, 761 {15615, -9782}, 762 {15592, -9820}, 763 {15569, -9857}, 764 {15544, -9894}, 765 {15521, -9932}, 766 {15497, -9969}, 767 {15473, -10006}, 768 {15449, -10043}, 769 {15425, -10080}, 770 {15401, -10117}, 771 {15377, -10154}, 772 {15352, -10191}, 773 {15327, -10227}, 774 {15303, -10264}, 775 {15278, -10301}, 776 {15254, -10337}, 777 {15229, -10374}, 778 {15204, -10411}, 779 {15180, -10447}, 780 {15154, -10483}, 781 {15129, -10519}, 782 {15104, -10556}, 783 {15078, -10592}, 784 {15053, -10628}, 785 {15027, -10664}, 786 {15002, -10700}, 787 {14976, -10736}, 788 {14950, -10772}, 789 {14924, -10808}, 790 {14898, -10844}, 791 {14872, -10879}, 792 {14846, -10915}, 793 {14820, -10950}, 794 {14794, -10985}, 795 {14767, -11021}, 796 {14741, -11056}, 797 {14714, -11092}, 798 {14687, -11127}, 799 {14661, -11162}, 800 {14635, -11197}, 801 {14607, -11232}, 802 {14581, -11267}, 803 {14554, -11302}, 804 {14526, -11337}, 805 {14499, -11372}, 806 {14472, -11407}, 807 {14444, -11441}, 808 {14417, -11476}, 809 {14389, -11511}, 810 {14362, -11545}, 811 {14334, -11579}, 812 {14306, -11614}, 813 {14278, -11648}, 814 {14251, -11682}, 815 {14222, -11716}, 816 {14194, -11750}, 817 {14166, -11784}, 818 {14137, -11818}, 819 {14109, -11852}, 820 {14081, -11886}, 821 {14053, -11919}, 822 {14023, -11953}, 823 {13995, -11987}, 824 {13966, -12020}, 825 {13937, -12054}, 826 {13909, -12087}, 827 {13879, -12120}, 828 {13851, -12153}, 829 {13821, -12187}, 830 {13792, -12220}, 831 {13763, -12253}, 832 {13733, -12286}, 833 {13704, -12319}, 834 {13674, -12351}, 835 {13645, -12385}, 836 {13615, -12417}, 837 {13585, -12450}, 838 {13555, -12482}, 839 {13525, -12514}, 840 {13495, -12546}, 841 {13465, -12579}, 842 {13435, -12611}, 843 {13405, -12644}, 844 {13374, -12676}, 845 {13345, -12708}, 846 {13314, -12739}, 847 {13283, -12772} 848 }; 849 850 851 852 cos_msin_t *s_cos_msin_table[] = {s_cos_msin_2, s_cos_msin_4, 853 s_cos_msin_8, s_cos_msin_16, 854 s_cos_msin_32, s_cos_msin_64 855 }; 856 857