// Generating a cos table - woo! #include #include #include // cos table from AMR ref source... static const int16_t cos_table[65] = { 32767, 32729, 32610, 32413, 32138, 31786, 31357, 30853, 30274, 29622, 28899, 28106, 27246, 26320, 25330, 24279, 23170, 22006, 20788, 19520, 18205, 16846, 15447, 14010, 12540, 11039, 9512, 7962, 6393, 4808, 3212, 1608, 0, - 1608, - 3212, - 4808, - 6393, - 7962, - 9512, - 11039, - 12540, - 14010, - 15447, - 16846, - 18205, - 19520, - 20788, - 22006, - 23170, - 24279, - 25330, - 26320, - 27246, - 28106, - 28899, - 29622, - 30274, - 30853, - 31357, - 31786, - 32138, - 32413, - 32610, - 32729, - 32768 }; int main() { int i; double pi_step = M_PI/(double)64; int16_t cos_table_65[65]; cos_table_65[0] = 32767; // FIXME dirty hack for -32768 when i want 32767 printf("cos_table[%d] = %6d : %6d : %2d\n", 0, cos_table_65[0], cos_table[0], cos_table_65[0]-cos_table[0]); for(i=1; i<65; i++) { cos_table_65[i] = (int16_t)(32768*cos(pi_step*(double)i)); printf("cos_table[%d] = %6d : %6d : %2d\n", i, cos_table_65[i], cos_table[i], cos_table_65[i]-cos_table[i]); } return; } @@@@@@@@ OUTPUT OF THE ABOVE CODE IS BELOW @@@@@@@@ cos_table[0] = 32767 : 32767 : 0 cos_table[1] = 32728 : 32729 : -1 cos_table[2] = 32610 : 32610 : 0 cos_table[3] = 32413 : 32413 : 0 cos_table[4] = 32138 : 32138 : 0 cos_table[5] = 31785 : 31786 : -1 cos_table[6] = 31357 : 31357 : 0 cos_table[7] = 30852 : 30853 : -1 cos_table[8] = 30273 : 30274 : -1 cos_table[9] = 29621 : 29622 : -1 cos_table[10] = 28898 : 28899 : -1 cos_table[11] = 28106 : 28106 : 0 cos_table[12] = 27245 : 27246 : -1 cos_table[13] = 26319 : 26320 : -1 cos_table[14] = 25330 : 25330 : 0 cos_table[15] = 24279 : 24279 : 0 cos_table[16] = 23170 : 23170 : 0 cos_table[17] = 22005 : 22006 : -1 cos_table[18] = 20787 : 20788 : -1 cos_table[19] = 19519 : 19520 : -1 cos_table[20] = 18204 : 18205 : -1 cos_table[21] = 16846 : 16846 : 0 cos_table[22] = 15446 : 15447 : -1 cos_table[23] = 14010 : 14010 : 0 cos_table[24] = 12539 : 12540 : -1 cos_table[25] = 11039 : 11039 : 0 cos_table[26] = 9512 : 9512 : 0 cos_table[27] = 7961 : 7962 : -1 cos_table[28] = 6392 : 6393 : -1 cos_table[29] = 4808 : 4808 : 0 cos_table[30] = 3211 : 3212 : -1 cos_table[31] = 1607 : 1608 : -1 cos_table[32] = 0 : 0 : 0 cos_table[33] = -1607 : -1608 : 1 cos_table[34] = -3211 : -3212 : 1 cos_table[35] = -4808 : -4808 : 0 cos_table[36] = -6392 : -6393 : 1 cos_table[37] = -7961 : -7962 : 1 cos_table[38] = -9512 : -9512 : 0 cos_table[39] = -11039 : -11039 : 0 cos_table[40] = -12539 : -12540 : 1 cos_table[41] = -14010 : -14010 : 0 cos_table[42] = -15446 : -15447 : 1 cos_table[43] = -16846 : -16846 : 0 cos_table[44] = -18204 : -18205 : 1 cos_table[45] = -19519 : -19520 : 1 cos_table[46] = -20787 : -20788 : 1 cos_table[47] = -22005 : -22006 : 1 cos_table[48] = -23170 : -23170 : 0 cos_table[49] = -24279 : -24279 : 0 cos_table[50] = -25330 : -25330 : 0 cos_table[51] = -26319 : -26320 : 1 cos_table[52] = -27245 : -27246 : 1 cos_table[53] = -28106 : -28106 : 0 cos_table[54] = -28898 : -28899 : 1 cos_table[55] = -29621 : -29622 : 1 cos_table[56] = -30273 : -30274 : 1 cos_table[57] = -30852 : -30853 : 1 cos_table[58] = -31357 : -31357 : 0 cos_table[59] = -31785 : -31786 : 1 cos_table[60] = -32138 : -32138 : 0 cos_table[61] = -32413 : -32413 : 0 cos_table[62] = -32610 : -32610 : 0 cos_table[63] = -32728 : -32729 : 1 cos_table[64] = -32768 : -32768 : 0