IEEE
TRANSACTIONS ON COMPUTERS,
VOL.
40,
NO.
1,
JANUARY
1991
13
Expanding the Range
of
Convergence
of
the CORDIC Algorithm
Xiaobo
Hu,
Member,
IEEE,
Ronald
G.
Harber,
Member,
IEEE,
and Steven
C.
Bass,
Member,
IEEE
Abstract-Since the late 1950's when the CORDIC algorithm for the
numerical calculation of products, quotients, and many transcendental
functions was proposed by Volder
[l],
this technique has increased in
popularity especially in the area of special-purpose arithmetic processors
and desk calculator applications. In
this
paper, the authors discuss the
limitations
on
the numerical values of the hctional arguments that are
passed to these CORDIC computational units with a special emphasis
on
the binary,
bed-point
hardware implementation. Research
in
the
area of expanding the allowed ranges of the input variables for which
accurate output values can
be
obtained is presented. Examples mentioned
in this paper demonstrate the usefulness of the methods described here
in realistic situations.
Index
rem-Convergence range, coordinate rotation, CORDIC, fixed-
point arithmetic, rotation angles, roundoff error.
I. INTRODUCTION
HE
Coordinate Rotational Digital Computer (CORDIC) al-
T
gorithm is an iterative technique that
is
capable of evaluating
many basic arithmetic operations and mathematical functions
[l]. Examples of those that can be performed directly using the
CORDIC technique are multiplication, division, square root, sine,
cosine, inverse tangent, hyperbolic sine, hyperbolic cosine, and
inverse hyperbolic tangent. The results of these basic functions
can be processed further to obtain the functions of tangent,
hyperbolic tangent, logarithms, and exponentials [2]
-
[4]. Clearly
this algorithm
is
a very powerful tool in areas where arithmetic
function evaluation
is
heavily utilized such as robot control
[5],
engineering graphics [6], and digital signal processing
[7].
However, a major shortcoming of CORDIC is the magnitude
restriction that one must impose
on
its various input variables in
order to guarantee that its output values converge. In this paper,
we introduce modifications to the algorithm which greatly ease
these restrictions. We will emphasize the effects that these mod-
ifications have
on
a binary, fixed-point hardware implementation
of the CORDIC algorithm
[8].
A
number of papers have been published addressing the
problem of limited convergence ranges of the CORDIC algo-
rithm. Basically,
two
different approaches have been presented.
One strategy is to use mathematical identities to preprocess
the CORDIC input quantities [2], [9]. While such mathematical
identities do indeed help ease the limitations present, there is
no single identity that will universally remove or reduce the
limitations of all the CORDIC algorithms. Furthermore, these
mathematical identities are cumbersome to use in hardware
applications because their implementation typically requires a
Manuscript received June
20, 1988;
revised December
4, 1989.
This work
was supported by the National Science Foundation through the Engineering
Research Center
for
Intelligent Manufacturing Systems at Purdue University.
X.
Hu is with General Motors Research Laboratories, Warren, MI
48090.
R. G. Harber is with Hewlett-Packard Company, Fort Collins, CO
80525.
S.
C.
Bass
is with the Department of Electrical and Computer Engineering,
IEEE
Log
Number
9040679.
George
Mason University, Fairfax,
VA
22030.
significant amount
of
overhead processing time and/or additional
hardware.
Another approach for expanding the convergence range of the
CORDIC algorithm requires repeating certain iterations
of
the
algorithm and is discussed in [lo]-[12]. Depending
on
how
these repeated iterations are chosen, many such iterations may
be necessary to obtain accurate results. If a large number of
iterations of the algorithm need to be repeated, the processing
time needed to compute a result may be unnecessarily excessive.
Thus, it is desirable to introduce a different technique for
handling the limitations of the CORDIC algorithm. We seek
a modification to the basic CORDIC algorithm that can be
readily implemented in a
VLSI
architecture without excessively
increasing the processing time. In order to give the reader a better
understanding of our paper, we will first briefly summarize the
CORDIC algorithm and introduce some terminology.
11.
BACKGROUND
The CORDIC algorithm computes its results using three vari-
ables:
x,
y,
and
z.
These variables are initialized to the values
on
which the implemented function
is
to operate. Then, a set of
iterative equations is repeatedly applied to these variables until
they converge to the final result. These iterative equations are
where
tanh-'(a,)
if m
=
-1
tan-'(&,)
if m
=
+I
6,
=
{a,
ifm=O
(3)
and
i
is the index of the iteration (for example,
i
=
1,2,3,
. . .
,N).
The value of
6,
is
either
+1
or
-1
and is chosen
so
that either
y
or
z
is
driven toward zero to obtain the desired type of functions,
and
m
determines the class of functions being evaluated: linear
(m
=
0),
circular
(m
=
+
l),
or hyperbolic
(m
=
-
1).
Typically,
a,
is set equal to 2-', an integer power of 2, to simplify the
computations performed in
(1).
If
a,
=
2-', then
(1)
can be
performed with simple shifting and adding of binary data.
Depending upon the value assigned to the parameter
in
(0,
+1,
or
-l),
CORDIC can evaluate any of three classes of functions:
linear, circular, or hyperbolic. Within each of these classes there
are
two
subclasses of functions available depending upon whether
the iterations seek to drive the variable
y
or
z
toward zero. Table
I
shows the basic CORDIC functions that are available and the
classes and subclasses in which they lie. Here
x,,
yh,
and
z,
represent the initial values of
x,
y,
and
z,
respectively. Referring
to this table, the sine and cosine of an angle
8
can be evaluated
using the circular CORDIC algorithm and driving the z-variable
toward zero with each iteration. The variables must be initialized
0018-9340/91/0100-0013$01.00
0
1991
IEEE
-7
7