rendered paste body// Generating a cos table - woo!
#include <inttypes.h>
#include <math.h>
#include <stdio.h>
// 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