Digital Signal Processing Tricks - Fast multiplication of complex numbers
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
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.