CORDIC
Acronym of coordinate rotation digital computer.
CORDIC: fast angle math without a multiplier
CORDIC stands for coordinate rotation digital computer. It is an iterative algorithm that calculates trigonometric functions, hyperbolic functions, and vector rotations using only shifts and additions, with no multiplication or division hardware required. The core operation rotates a vector in the Cartesian plane by successive small angle approximations, each one halving the residual angle error.
The algorithm works by decomposing a target rotation angle into a sum of predetermined arctangent values: arctan(1), arctan(0.5), arctan(0.25), and so on. At each iteration, the processor either applies or skips the current arctangent step depending on the sign of the remaining angle to rotate. A running pair of coordinates (x, y) is updated by shifting and adding, converging toward the sine and cosine of the original angle after enough iterations.
CORDIC executes in O(n) iterations for n-bit precision, making it faster than table lookup plus interpolation on hardware with restricted instruction sets. Early aerospace guidance computers and scientific calculators adopted CORDIC because it fit into compact circuits. Modern FPGAs and digital signal processors still use CORDIC for real-time coordinate transformations, phase detection, and polar-to-rectangular conversion because it consumes less die area than multiplier arrays and executes in predictable time.
The algorithm produces rounding errors that accumulate over many iterations, typically at the level of the least significant bit of the accumulator width. In systems requiring very high precision, CORDIC may be paired with a Newton-Raphson refinement step or reserved for lower-precision fast paths. Pipelined implementations can retire one iteration per clock cycle, sustaining throughput of one result per cycle after a pipeline fill delay.
Variants exist for circular rotation (the standard case), hyperbolic rotation (for logarithms and exponentials), and linear mode (for multiplication and division). The choice of mode depends on the function family needed. CORDIC remains relevant in embedded systems, motor control, radar processing, and any numerically intensive application where silicon area or power consumption must be minimized.