/* ** polar -- program to calculate rectangular to polar ** conversion using CORDIC techniques ** ** written by Joseph B. Evans, 11/15/91 ** evans@shannon.tisl.ukans.edu */ #include #include "cordic.h" main(ac, av) int ac; char **av; { long x, y; long r, theta; int bits, msbits; if (ac == 3) { x = (long)atoi(av[1]); y = (long)atoi(av[2]); bits = 32; msbits = 10; } else if (ac == 5) { bits = (long)atoi(av[1]); msbits = (long)atoi(av[2]); x = (long)atoi(av[3]); y = (long)atoi(av[4]); } else { printf("usage: %s [bits msbits] x y\n",av[0]); exit(1); } r = x; theta = y; (void) cordic_init(bits,msbits); fxpolarize(&r,&theta,bits); printf("radius = %d\tangle = %.9f\n", r,(double)theta/(1<<(bits-msbits))); /*printf("arctangent = %.9f\n",fxatan2(x,y,bits)/(1<<(bits-msbits)));*/ }