TL;DR: The prevalent CORDIC shift-and-add algorithm is compared to two multiplier-based techniques that directly uses piecewise bivariate polynomial approximations of degree 1 or 2, and their relevance domains are discussed.
Abstract: The atan2 function computes the polar angle arctan(y/x) of a point given by its cartesian coordinates. It is widely used in digital signal processing to recover the phase of a signal. This article studies for this context the implementation of atan2 with fixed-point inputs and outputs. It compares the prevalent CORDIC shift-and-add algorithm to two multiplier-based techniques. The first one computes the bivariate atan2 function as the composition of two univariate functions: the reciprocal, and the arctangent, each evaluated using bipartite or polynomial approximation methods. The second technique directly uses piecewise bivariate polynomial approximations of degree 1 or 2. Each of these approaches requires a relevant argument reduction, which is also discussed. All the algorithms are last-bit accurate, and implemented with similar care in the open-source FloPoCo framework. Based on synthesis results on FPGAs, their relevance domains are discussed.
TL;DR: This paper introduces this formula which is based on the idea of a unit vector, S, originating from the observer’s location and pointing toward the center of the Sun, and it facilitates a figure that can be used as a full 3D graphic depiction of the daily and annual cycles of theSun’'s position for any given location.
TL;DR: Results show that the third-order proposed function outperforms the existing ones in terms of both precision and performance, and is the most suitable one for real-time applications, since it has the highest performance.
Abstract: This article presents two novel full quadrant approximations for the arctangent function that are specially suitable for real-time applications. The key point of the proposed approximations is that they are valid in a full quadrant. As a result, they can be easily extended to two and four quadrants. The approximations we define are rational functions of second and third order, respectively. This article provides a comparison of the precision and performance of the proposed functions with the best state-of-the-art approximations. Results show that the third-order proposed function outperforms the existing ones in terms of both precision and performance. The second-order proposed function, on the other hand, is the most suitable one for real-time applications, since it has the highest performance. Furthermore, it attains an adequate precision for most applications in the computer vision field.
TL;DR: Another method to compute the arctangent approximation is proposed that uses neither the look-up table nor high order polynomials.
Abstract: Fast and accurate methods for computing the arctangent of a complex number x = I + jQ have been the subject of extensive study because estimating the angle /spl theta/ of a complex value has so many applications in the field of signal processing. Practitioners interested in high-speed arctangent computations typically use look-up tables where the values of I and Q specify an address in read-only memory (ROM) containing an approximation of angle /spl theta/. In this paper, another method to compute the arctangent approximation is proposed that uses neither the look-up table nor high order polynomials.
TL;DR: A 24 bit VLSI cell, capable of computing the (1) square root, (2) reciprocal, (3) sine/cosine, and (4) arctangent functions, is presented for single precision floating-point applications.
Abstract: This paper discusses an efficient interpolation method for nonlinear function generation. Based on this, a 24 bit VLSI cell, capable of computing the (1) square root, (2) reciprocal, (3) sine/cosine, and (4) arctangent functions, is presented for single precision floating-point applications. A 53 bit version, suitable for double precision computations, is also presented. Finally, an extension of the method to the two dimensional nonlinear functions is briefly addressed. >