Four-quadrant inverse tangent of fixed-point values
z = atan2(y,x)
z = atan2(y,x) returns the four-quadrant arctangent of
y/x using a table-lookup algorithm.
This arctangent calculation is accurate only to within the top 16 most-significant bits of the input.
Calculate the arctangent of unsigned and signed fixed-point input values. The first example uses unsigned, 16-bit word length values. The second example uses signed, 16-bit word length values.
y = fi(0.125,0,16); x = fi(0.5,0,16); z = atan2(y,x) z = 0.2450 DataTypeMode: Fixed-point: binary point scaling Signedness: Unsigned WordLength: 16 FractionLength: 15 y = fi(-0.1,1,16); x = fi(-0.9,1,16); z = atan2(y,x) z = -3.0309 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13
The four-quadrant arctangent is defined as follows, with respect to the atan function:
atan2 function computes the four-quadrant
arctangent of fixed-point inputs using an 8-bit lookup table as follows:
Divide the input absolute values to get an unsigned, fractional, fixed-point, 16-bit ratio between 0 and 1. The absolute values of y and x determine which value is the divisor.
The signs of the
determine in what quadrant their ratio lies. The input with the larger
absolute value is used as the denominator, thus producing a value
between 0 and 1.
Compute the table index, based on the 16-bit, unsigned, stored integer value:
Use the 8 most-significant bits to obtain the first value from the table.
Use the next-greater table value as the second value.
Use the 8 least-significant bits to interpolate between the first and second values using nearest neighbor linear interpolation. This interpolation produces a value in the range [0, pi/4).
Perform octant correction on the resulting angle,
based on the values of the original
atan2 function ignores and discards any
to the inputs. The output,
z, is always associated
with the default