
Would you like to be notified by email when Duraisamy Sundararajan publishes a new blog?
In dsp and many other areas of science and engineering, the Fourier transform is an indispensable tool. One of the major reasons for this is the availability of regular and fast algorithms for approximating its different versions by the finite and discrete version, the discrete Fourier transform (DFT). In this blog, a brief history of the DFT algorithms is presented.
The history essentially consists of a single line in that Gauss invented the radix-2 DFT algorithm in 1805 [1] and, surprisingly, it still remains the practically most efficient DFT algorithm for vast majority of applications, but with a more suitable data structure.
Let us see why it is so. Since it was invented by Gauss, it appeared in the books and journals, but went mostly unnoticed. It was after the publication of the paper by Cooley and Tukey [2], that the algorithm became so popular that, along with developments in computer hardware, the subject of digital signal processing was firmly established. As the multiplication operation was much more time consuming than other operations in the computers available at that time, higher-radix and prime factor algorithms [3], with less number of multiplications, came into prominence.
With a single cycle execution of the multiplication and multiply-accumulate operations in modern processors, the number of additions and overhead operations became a dominant factor in determining the execution of algorithms to the extent that in some processors, the radix-2 algorithm executes faster than the other algorithms with less number of total arithmetic operations. In addition, this algorithm is regular and simplest to understand, code, and debug. For these reasons, radix-2 DFT algorithm is most often used still.
It is known that the number of additions (actually additions/subtractions) in the radix-2 DFT algorithm is optimum. The addition/subtraction always occur as a pair. In the PM DFT algorithms, data and transform values are stored in an array of two-element vectors [4,5]. Using this data structure, the execution of the addition/subtraction can be optimized, resulting in reduced execution time. That is, two operands are read in, the sum and difference computed, and both the results stored at the same address.
In conclusion, the radix-2 DFT algorithm is practically most efficient for vast majority of applications. The DIF version is easier to understand in terms of waveform decomposition [6]. The DIT version is obtained by transposing the signal flow-graph of the DIF algorithm.
1. Heidaman, M. T., Johnson, D. H., and Burrus, C. S., (1984) Gauss and the History of the Fast Fourier Transform, it IEEE ASSP Magazine, 1(4):14-21
2. Cooley, J. W., and Tukey, J. W., (1965) An algorithm for the Machine Computation of Complex Fourier Series,” Math. Comp., vol. 19, pp. 297-301, April
3. Burrus, C. S. and Parks, T.W. (1985) DFT/FFT and Convolution Algorithms, Wiley, New York.
4. Sundararajan, D., Ahmad, M. O. and Swamy, M. N. S. (1994) “Computational Structures for Fast Fourier Transform Analyzers”, U.S. Patent, No. 5,371,696.
5. Sundararajan, D. (2001) Discrete Fourier Transform, Theory, Algorithms, and Applications, World Scientific, Singapore.
6. Sundararajan, D., November 9, 2009, ”Fundamentals of the DFT (fft) Algorithms”, http://www.dsprelated.com/showabstract/93.php
posted by Duraisamy Sundararajan Would you like to be notified by email when Duraisamy Sundararajan publishes a new blog?