This paper presents a unified algorithm for calculating elementary functions, including multiplication, division, trigonometric and hyperbolic functions, logarithms, exponentials, and square roots. The algorithm is based on coordinate rotation in linear, circular, or hyperbolic coordinate systems, depending on the function to be calculated. The algorithm requires only shifting, adding, subtracting, and the recall of prestored constants. The convergence domain of the algorithm is discussed, and modifications are proposed to extend it for floating-point calculations.
A hardware floating-point processor using this algorithm was developed at Hewlett-Packard Laboratories. The block diagram of the processor, the microprogram control used for the algorithm, and performance measures are described.
The algorithm uses coordinate rotation to calculate elementary functions. It was first developed by Volder in 1956 for trigonometric and hyperbolic functions. In 1959, Volder described a CORDIC algorithm for trigonometric functions, multiplication, division, and binary-to-decimal conversions. Daggett in 1959 discussed the use of CORDIC for decimal-binary conversions. Liccardo in 1968 wrote a master's thesis on CORDIC algorithms.
The algorithm uses coordinate systems parameterized by m, where the radius R and angle A of a vector P=(x,y) are defined by specific equations. The algorithm iteratively modifies the angle and radius of the vector. The total change in angle is the sum of incremental changes, while the total change in radius is the product of incremental changes. By choosing appropriate initial values, the algorithm can compute various functions, including trigonometric, hyperbolic, and logarithmic functions.
The algorithm's convergence is limited by the sum of the rotations. The domain of convergence is determined by the maximum initial angle. The algorithm can be used to force the angle to zero, and the convergence is proven using mathematical induction.
The algorithm is implemented using shifters to perform multiplication by δ_i. The integers F_i are chosen such that the angles α_i satisfy the convergence criterion. The domain of convergence is extended using pre-scaling identities. The algorithm is accurate and can be used for floating-point calculations with high precision.
The algorithm is implemented in hardware, with a block diagram showing three identical arithmetic units. The processor supports 48-bit floating-point, 32-bit floating-point, and 32-bit integer data types. The microprogram control is stored in a read-only memory (ROM), and the processor operates with a cycle time of 200 nanoseconds.
The algorithm is accurate and efficient, suitable for applications such as desktop calculators, air navigation computers, and floating-point processors. The algorithm is simple, accurate, and capable of high-speed execution via parallel processing. The paper acknowledges the contributions of various researchers and institutions.This paper presents a unified algorithm for calculating elementary functions, including multiplication, division, trigonometric and hyperbolic functions, logarithms, exponentials, and square roots. The algorithm is based on coordinate rotation in linear, circular, or hyperbolic coordinate systems, depending on the function to be calculated. The algorithm requires only shifting, adding, subtracting, and the recall of prestored constants. The convergence domain of the algorithm is discussed, and modifications are proposed to extend it for floating-point calculations.
A hardware floating-point processor using this algorithm was developed at Hewlett-Packard Laboratories. The block diagram of the processor, the microprogram control used for the algorithm, and performance measures are described.
The algorithm uses coordinate rotation to calculate elementary functions. It was first developed by Volder in 1956 for trigonometric and hyperbolic functions. In 1959, Volder described a CORDIC algorithm for trigonometric functions, multiplication, division, and binary-to-decimal conversions. Daggett in 1959 discussed the use of CORDIC for decimal-binary conversions. Liccardo in 1968 wrote a master's thesis on CORDIC algorithms.
The algorithm uses coordinate systems parameterized by m, where the radius R and angle A of a vector P=(x,y) are defined by specific equations. The algorithm iteratively modifies the angle and radius of the vector. The total change in angle is the sum of incremental changes, while the total change in radius is the product of incremental changes. By choosing appropriate initial values, the algorithm can compute various functions, including trigonometric, hyperbolic, and logarithmic functions.
The algorithm's convergence is limited by the sum of the rotations. The domain of convergence is determined by the maximum initial angle. The algorithm can be used to force the angle to zero, and the convergence is proven using mathematical induction.
The algorithm is implemented using shifters to perform multiplication by δ_i. The integers F_i are chosen such that the angles α_i satisfy the convergence criterion. The domain of convergence is extended using pre-scaling identities. The algorithm is accurate and can be used for floating-point calculations with high precision.
The algorithm is implemented in hardware, with a block diagram showing three identical arithmetic units. The processor supports 48-bit floating-point, 32-bit floating-point, and 32-bit integer data types. The microprogram control is stored in a read-only memory (ROM), and the processor operates with a cycle time of 200 nanoseconds.
The algorithm is accurate and efficient, suitable for applications such as desktop calculators, air navigation computers, and floating-point processors. The algorithm is simple, accurate, and capable of high-speed execution via parallel processing. The paper acknowledges the contributions of various researchers and institutions.