By Richard G. Lyons
The multiplication of two
complex numbers is one of the
most common functions performed in digital signal processing.
It's mandatory in all discrete and fast Fourier transformation algorithms,
necessary for graphics transformations, and used in processing digital
communications signals. Be it in hardware or software, it's always to
our benefit to streamline the processing necessary to perform a complex
multiply whenever we can.
If the available hardware can perform three additions faster than a
single multiplication, there's a way to speed up a complex multiply
operation. The multiplication of two complex numbers, a + jb and c + jd, results in the
complex product
R + jI = (a + jb)(c + jd) = (ac -
bd) + j(bc + ad). (Eq. 13-14)
We can see that Eq. (13 -14) requires four multiplications and two
additions. (From a computational
standpoint we'll assume a subtraction is equivalent to an addition.)
Instead of using Eq. (13 -14), we can calculate the following
intermediate values
k1 = a(c + d)
k2 = d(a + b) (Eq. 13 -15)
k3 = c(b - a).
We then perform the following operations to get the final R and I
R = k1 - k2 , and I = k1 + k3. (Eq. 13 -16)
The reader is invited to plug the k values from Eq. (13 -15) into
Eq.
(13 -16) to verify that the expressions in Eq. (13 -16) are equivalent
to
Eq. (13 -14).
The intermediate values in Eq. (13 -15) required three additions and
three multiplications, while the results in Eq. (13 -16) required two
more additions.
So we traded one of the multiplications required in Eq. (13 -14) for
three addition operations needed by Eq. (13 -15) and Eq. (13 -16).
If our hardware uses fewer clock cycles to perform three additions
than a single multiplication, we may well gain overall processing speed
by using Eq. (13 -15) and Eq. (13 -16) instead of Eq. (13 -14) for
complex
multiplication.
Used
with the permission of the publisher, Prentice Hall, this on-going
series of articles is based on copyrighted material from "Understanding
Digital Signal Processing, Second Edition" by Richard G. Lyons. The
book can be purchased on line.
Richard Lyons is a consulting
systems engineer and lecturer with Besser Associates. As a
lecturer with Besser and an instructor for the University of California
Santa Cruz Extension, Lyons has delivered digitasl signal processing
seminars and training course at technical conferences as well at
companies such as Motorola, Freescale, Lockheed Martin, Texas
Instruments, Conexant, Northrop Grumman, Lucent, Nokia, Qualcomm,
Honeywell, National Semiconductor, General Dynamics and Infinion.