1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//CORDIC, 21 bits, 18 iterations
// 1.0 = 262144.000000 multiplication factor
// A = 1.743279 convergence angle (limit is 1.7432866 = 99.9deg)
// F = 1.646760 gain (limit is 1.64676025812107)
// 1/F = 0.607253 inverse gain (limit is 0.607252935008881)
// pi = 3.141593 (3.1415926536897932384626)
#define CORDIC_A 1.743279 // CORDIC convergence angle A
#define CORDIC_F 0x00069648 // CORDIC gain F
#define CORDIC_1F 0x00026DD4 // CORDIC inverse gain 1/F
#define CORDIC_HALFPI 0x0006487F
#define CORDIC_PI 0x000C90FE
#define CORDIC_TWOPI 0x001921FB
#define CORDIC_MUL 262144.000000 // CORDIC multiplication factor M = 2^18
#define CORDIC_MAXITER 18
int CORDIC_ZTBL[] = {
0x0003243F, 0x0001DAC6, 0x0000FADC, 0x00007F57, 0x00003FEB, 0x00001FFD, 0x00001000, 0x00000800,
0x00000400, 0x00000200, 0x00000100, 0x00000080, 0x00000040, 0x00000020, 0x00000010, 0x00000008,
0x00000004, 0x00000002 };
|