CORDIC is an acronym for COordinate Rotation
DIgital Computer. The Givens rotation-based CORDIC algorithm is one
of the most hardware-efficient algorithms available because it requires
only iterative shift-add operations (see References). The CORDIC algorithm
eliminates the need for explicit multipliers. Using CORDIC, you can
calculate various functions, such as sine, cosine, arc sine, arc cosine,
arc tangent, and vector magnitude. You can also use this algorithm
for divide, square root, hyperbolic, and logarithmic functions.

Increasing the number of CORDIC iterations can produce more
accurate results,
but doing so also increases the expense of the computation and adds
latency.

### Signal Flow Diagrams

#### CORDIC Rotation Kernel

*X* represents the sine, *Y* represents
the cosine, and *Z* represents theta. The accuracy
of the CORDIC rotation kernel depends on the choice of initial values
for *X*, *Y*, and *Z*.
This algorithm uses the following initial values:

$$\begin{array}{l}{z}_{0}\text{isinitializedtothe}\theta \text{inputargumentvalue}\\ {x}_{0}\text{isinitializedto}\frac{1}{{A}_{N}}\\ {y}_{0}\text{isinitializedto}0\end{array}$$

### fimath Propagation Rules

CORDIC functions discard any local `fimath`

attached
to the input.

The CORDIC functions use their own internal `fimath`

when
performing calculations:

`OverflowAction`

—`Wrap`

`RoundingMethod`

—`Floor`

The output has no attached `fimath`

.