<< Chapter < Page | Chapter >> Page > |
Increasing the radix to 8 gives some improvement but not as much as from 2 to 4. Increasing it to 16 is theoretically promisingbut the small decrease in multiplications is somewhat offset by an increase in additions and the program becomes rather long. Otherradices are not attractive because they generally require a substantial number of multiplications and additions in thebutterflies.
The second method of reducing arithmetic is to remove the unnecessary TF multiplications by plus or minus unity or by plus orminus the square root of minus one. This occurs when the exponent of is zero or a multiple of . A reduction of additions as well as multiplications is achieved by removing these extraneouscomplex multiplications since a complex multiplication requires at least two real additions. In a program, this reduction is usuallyachieved by having special butterflies for the cases where the TF is one or . As many as four special butterflies may be necessary to remove all unnecessary arithmetic, but in many cases there will beno practical improvement above two or three.
In addition to removing multiplications by one or , there can be a reduction in multiplications by using a special butterflyfor TFs with , which have equal real and imaginary parts. Also, for computers or hardware with multiplication considerablyslower than addition, it is desirable to use an algorithm for complex multiplication that requires three multiplications and threeadditions rather than the conventional four multiplications and two additions. Note that this gives no reduction in the total number ofarithmetic operations, but does give a trade of multiplications for additions. This is one reason not to use complex data types inprograms but to explicitly program complex arithmetic.
A time-consuming and unnecessary part of the execution of a FFT program is the calculation of the sine and cosine terms whichare the real and imaginary parts of the TFs. There are basically three approaches to obtaining the sine and cosine values. They canbe calculated as needed which is what is done in the sample program above. One value per stage can be calculated and the othersrecursively calculated from those. That method is fast but suffers from accumulated round-off errors. The fastest method is to fetchprecalculated values from a stored table. This has the disadvantage of requiring considerable memory space.
If all the N DFT values are not needed, special forms of the FFT can be developed using a process called pruning [link] which removes the operations concerned with the unneeded outputs.
Special algorithms are possible for cases with real data or with symmetric data [link] . The decimation-in-time algorithm can be easily modified to transform real data and save half thearithmetic required for complex data [link] . There are numerous other modifications to deal with special hardwareconsiderations such as an array processor or a special microprocessor such as the Texas Instruments TMS320. Examples ofprograms that deal with some of these items can be found in [link] , [link] , [link] .
Notification Switch
Would you like to follow the 'Fast fourier transforms' conversation and receive update notifications?