Content deleted Content added
No edit summary |
→References: | Altered template type. Add: isbn, chapter, title. | Use this tool. Report bugs. | #UCB_Gadget |
||
(34 intermediate revisions by 23 users not shown) | |||
Line 1:
{{Short description|Fast Fourier transform algorithm}}
'''Bruun's algorithm''' is a [[fast Fourier transform]] (FFT) algorithm based on an unusual recursive [[polynomial]]-factorization approach, proposed for powers of two by G. Bruun in 1978 and generalized to arbitrary even composite sizes by H. Murakami in 1996. Because its operations involve only real coefficients until the last computation stage, it was initially proposed as a way to efficiently compute the [[discrete Fourier transform]] (DFT) of real data. Bruun's algorithm has not seen widespread use, however, as approaches based on the ordinary [[
Nevertheless, Bruun's algorithm illustrates an alternative algorithmic framework that can express both itself and the
== A polynomial approach to the DFT ==
Recall that the DFT is defined by the formula:
▲:<math>X_k = \sum_{n=0}^{N-1} x_n e^{-\frac{2\pi i}{N} nk }
\qquad
k = 0,\dots,N-1. </math>
For convenience, let us denote the ''N'' [[root of unity|roots of unity]] by ω<sub>''N''</sub><sup>''n''</sup> (''n'' = 0, ..., ''N''
▲:<math>\omega_N^n = e^{-\frac{2\pi i}{N} n }</math>
and define the polynomial ''x''(''z'') whose coefficients are ''x''<sub>''n''</sub>:
▲:<math>x(z) = \sum_{n=0}^{N-1} x_n z^n.</math>
The DFT can then be understood as a ''reduction'' of this polynomial; that is, ''X''<sub>''k''</sub> is given by:
where '''mod'''
▲:<math>X_k = x(\omega_N^k) = x(z) \mod (z - \omega_N^k)</math>
▲where '''mod''' ([[modulo]]) denotes the polynomial remainder operation. The key to fast algorithms like Bruun's or Cooley-Tukey comes from the fact that one can perform this set of ''N'' remainder operations in recursive stages.
== Recursive factorizations and FFTs ==
In order to compute the DFT, we need to evaluate the remainder of
The product of all of the monomials <math>(
More explicitly, suppose for example that
''F''<sub>''k''</sub>(''z''), then computing ''x''<sub>''k'',''j''</sub>(''z'') = ''x''<sub>''k''</sub>(''z'') mod
''F''<sub>''k'',''j''</sub>(''z''), and so on, recursively creating more and more remainder polynomials of smaller and smaller degree until one arrives at the final degree-0 results.
Moreover, as long as the polynomial factors at each stage are [[relatively prime polynomials|relatively prime]] (which for polynomials means that they have no common roots), one can construct a dual algorithm by reversing the process with the [[Chinese
===
The standard decimation-in-frequency (DIF) radix-''r''
== The Bruun factorization ==
The basic Bruun algorithm for [[power of two|powers of two]] ''N''=''2''<sup>''n''</sup> factorizes ''z''<sup>''
where ''a'' is a real constant with |''a''| ≤ 2. If <math>a=2\cos(\phi)</math>, <math>\phi\in(0,\pi)</math>, then <math>\sqrt{2+a}=2\cos\tfrac\phi2</math> and <math>\sqrt{2-a}=2\cos(\tfrac\pi 2-\tfrac\phi 2)</math>.
At stage ''s'', ''s''=0,1,2,''n''-1, the intermediate state consists of ''2''<sup>''s''</sup> polynomials <math>p_{s,0},\dots,p_{s,2^s-1}</math> of degree ''2''<sup>''n''-''s''</sup> - ''1'' or less , where
Moreover, since all of these polynomials have purely real coefficients (until the very last stage), they automatically exploit the special case where the inputs ''x''<sub>''n''</sub> are purely real to save roughly a factor of two in computation and storage. One can also take straightforward advantage of the case of real-symmetric data for computing the [[discrete cosine transform]] (Chen and Sorensen, 1992).▼
<math display="block">\begin{align}
p_{s,0}(z)&= p(z) \mod \left(z^{2^{n-s}}-1\right)&\quad&\text{and}\\
p_{s,m}(z) &= p(z)\mod \left(z^{2^{n-s}}-2\cos\left(\tfrac{m}{2^s}\pi\right)z^{2^{n-1-s}}+1\right)&m&=1,2,\dots,2^s-1
\end{align}</math>
By the construction of the factorization of ''z''<sup>''2''<sup>''n''</sup></sup>-''1'', the polynomials ''p''<sub>''s'',''m''</sub>(''z'') each encode 2<sup>''n''-''s''</sup> values
==== Generalization to arbitrary radices ====▼
<math display="block">X_k=p(e^{2\pi i\tfrac{k}{2^n}})</math>
of the Fourier transform, for ''m''=0, the covered indices are ''k''=''0'', 2<sup>''k''</sup>, 2∙2<sup>''s''</sup>, 3∙2<sup>''s''</sup>,..., (2<sup>''n''-''s''</sup>-1)∙2<sup>''s''</sup>, for ''m''>''0'' the covered indices are ''k''=''m'', 2<sup>''s''+1</sup>-''m'', 2<sup>''s''+1</sup>+''m'', 2∙2<sup>''s''+1</sup>-''m'', 2∙2<sup>''s''+1</sup>+''m'', ..., 2<sup>''n''</sup>-''m''.
During the transition to the next stage, the polynomial <math>p_{s,\ell}(z)</math> is reduced to the polynomials <math>p_{s+1,\ell}(z)</math> and <math>p_{s+1,2^s-\ell}(z)</math> via polynomial division. If one wants to keep the polynomials in increasing index order, this pattern requires an implementation with two arrays. An implementation in place produces a predictable, but highly unordered sequence of indices, for example for ''N''=16 the final order of the 8 linear remainders is (0, 4, 2, 6, 1, 7, 3, 5).
The Bruun factorization, and thus the Bruun FFT algorithm, was generalized to handle arbitrary ''even'' composite lengths, i.e. dividing the polynomial degree by an arbitrary ''radix'' (factor), as follows. First, we define a set of polynomials φ<sub>''N'',α</sub>(''z'') for positive integers ''N'' and for α in <nowiki>[0,1)</nowiki> by:▼
At the end of the recursion, for {{math|1=''s'' = ''n''-1}}, there remain {{math|2<sup>''n''-1</sup>}} linear polynomials encoding two Fourier coefficients {{math|''X''<sub>''0''</sub>}} and {{math|''X''<sub>2<sup>''n''-1</sup></sub>}} for the first and for the any other {{mvar|k}}th polynomial the coefficients {{math|''X''<sub>''k''</sub>}} and {{math|''X''<sub>2<sup>''n''</sup>-''k''</sub>}}.
:<math>\phi_{N, \alpha}(z) = ▼
z^{2N} - 2 \cos (2 \pi \alpha) z^N + 1 & \mbox{if } 0 < \alpha < 1 \\ \\▼
z^{2N} - 1 & \mbox{if } \alpha = 0▼
At each recursive stage, all of the polynomials of the common degree {{math|4''M''-1}} are reduced to two parts of half the degree {{math|2''M''-1}}. The divisor of this polynomial remainder computation is a quadratic polynomial ''z''<sup>''m''</sup>, so that all reductions can be reduced to polynomial divisions of cubic by quadratic polynomials. There are {{math|1=''N''/2 = 2<sup>''n''−1</sup>}} of these small divisions at each stage, leading to an {{math|''O''(''N'' log ''N'')}} algorithm for the FFT.
▲Moreover, since all of these polynomials have purely real coefficients (until the very last stage), they automatically exploit the special case where the inputs ''x''<sub>''n''</sub> are purely real to save roughly a factor of two in computation and storage.
:<math>\phi_{rM, \alpha}(z) = ▼
\prod_{\ell=0}^{r-1} \phi_{M,(\alpha+\ell)/r} & \mbox{if } 0 < \alpha \leq 0.5 \\ \\▼
\prod_{\ell=0}^{r-1} \phi_{M,(1-\alpha+\ell)/r} & \mbox{if } 0.5 < \alpha < 1 \\ \\▼
\prod_{\ell=0}^{r-1} \phi_{M,\ell/(2r)} & \mbox{if } \alpha = 0▼
▲The Bruun factorization, and thus the Bruun FFT algorithm, was generalized to handle arbitrary ''even'' composite lengths, i.e. dividing the polynomial degree by an arbitrary ''radix'' (factor), as follows.
==References==▼
\end{cases} </math>
Note that all of the polynomials that appear in the Bruun factorization above can be written in this form. The zeroes of these polynomials are <math>e^{2\pi i ( \pm\alpha + k ) / N}</math> for <math>k = 0, 1, \dots, N-1</math> in the <math>\alpha \neq 0</math> case, and <math>e^{2\pi i k / 2N}</math> for <math>k = 0, 1, \dots, 2N-1</math> in the <math>\alpha = 0</math> case. Hence these polynomials can be recursively factorized for a factor (radix) {{mvar|r}} via:
* Hideo Murakami, "Real-valued decimation-in-time and decimation-in-frequency algorithms," ''IEEE Trans. Circuits Syst. II: Analog and Digital Sig. Proc.'' '''41''' (12), 808-816 (1994).▼
\end{cases} </math>
▲==References==
{{refbegin}}
* {{cite journal | first = Georg | last = Bruun | title = ''z''-Transform DFT filters and FFTs | journal = IEEE Transactions on Acoustics, Speech, and Signal Processing| volume = 26 | issue = 1 | pages = 56–63 | year = 1978 | doi = 10.1109/TASSP.1978.1163036 | url = https://backend.orbit.dtu.dk/ws/files/4658740/Bruun.pdf }}
* {{cite book | first = H. J. | last = Nussbaumer | title = Fast Fourier Transform and Convolution Algorithms | series = Springer Series in Information Sciences | publisher = Springer-Verlag | ___location = Berlin | year = 1990 | volume = 2 |doi=10.1007/978-3-642-81897-4| isbn = 978-3-540-11825-1 }}
* {{cite journal | first = Yuhang | last = Wu | title = New FFT structures based on the Bruun algorithm | journal = IEEE Transactions on Acoustics, Speech, and Signal Processing| volume = 38 | issue = 1 | pages = 188–191 | year = 1990 | doi = 10.1109/29.45572 | url = https://backend.orbit.dtu.dk/ws/files/4601557/Wu.pdf }}
* {{cite book | first1 = Jianping | last1 = Chen | first2 = Henrik | last2 = Sorensen | title = [Proceedings] ICASSP-92: 1992 IEEE International Conference on Acoustics, Speech, and Signal Processing | chapter = An efficient FFT algorithm for real-symmetric data | volume = 5 | pages = 17–20 | year = 1992 |doi=10.1109/ICASSP.1992.226669| isbn = 0-7803-0532-9 }}
* {{cite journal | first = Rainer | last = Storn | title = Some results in fixed point error analysis of the Bruun-FTT {{sic}} algorithm | journal = IEEE Transactions on Signal Processing| volume = 41 | issue = 7 | pages = 2371–2375 | year = 1993 | doi = 10.1109/78.224246 | bibcode = 1993ITSP...41.2371S }}
▲* {{cite journal | first = Hideo | last = Murakami
* {{cite book | first = Hideo | last = Murakami | title = 1996 IEEE International Conference on Acoustics, Speech, and Signal Processing Conference Proceedings | chapter = Real-valued fast discrete Fourier transform and cyclic convolution algorithms of highly composite even length | volume = 3 | pages = 1311–1314 | year = 1996 |doi=10.1109/ICASSP.1996.543667| isbn = 0-7803-3192-3 }}
* {{cite book |doi=10.1007/978-3-540-73625-7_39 |chapter=A Comparative Study of Different FFT Architectures for Software Defined Radio |title=Embedded Computer Systems: Architectures, Modeling, and Simulation |series=Lecture Notes in Computer Science |date=2007 |last1=Mittal |first1=Shashank |last2=Khan |first2=Md. Zafar Ali |last3=Srinivas |first3=M. B. |volume=4599 |pages=375–384 |isbn=978-3-540-73622-6 }}
{{refend}}
[[Category:FFT algorithms]]
|