//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 };