https://en.wikipedia.org/w/index.php?action=history&feed=atom&title=Prime-factor_FFT_algorithm Prime-factor FFT algorithm - Revision history 2025-05-30T06:42:06Z Revision history for this page on the wiki MediaWiki 1.45.0-wmf.3 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1284174120&oldid=prev Quondum: rm title case; fmt; fixing weirdness of <math display="block"> not being on its own line in Brave browser 2025-04-06T00:58:57Z <p>rm title case; fmt; fixing weirdness of &lt;math display=&quot;block&quot;&gt; not being on its own line in Brave browser</p> <a href="//en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&amp;diff=1284174120&amp;oldid=1265985292">Show changes</a> Quondum https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1265985292&oldid=prev Citation bot: Add: bibcode, doi. | Use this bot. Report bugs. | Suggested by Dominic3203 | Category:FFT algorithms | #UCB_Category 15/17 2024-12-29T15:16:18Z <p>Add: bibcode, doi. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this bot</a>. <a href="/wiki/Wikipedia:DBUG" class="mw-redirect" title="Wikipedia:DBUG">Report bugs</a>. | Suggested by Dominic3203 | <a href="/wiki/Category:FFT_algorithms" title="Category:FFT algorithms">Category:FFT algorithms</a> | #UCB_Category 15/17</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:16, 29 December 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 63:</td> <td colspan="2" class="diff-lineno">Line 63:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==References==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==References==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{refbegin}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{refbegin}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first=I. J. |last=Good |title=The interaction algorithm and practical Fourier analysis |journal=Journal of the Royal Statistical Society, Series B |volume=20 |issue=2 |pages=361–372 |year=1958 |jstor=2983896 }} Addendum, ''ibid.'' '''22''' (2), 373-375 (1960) {{JSTOR|2984108}}.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first=I. J. |last=Good |title=The interaction algorithm and practical Fourier analysis |journal=Journal of the Royal Statistical Society, Series B |volume=20 |issue=2 |pages=361–372 |year=1958<ins style="font-weight: bold; text-decoration: none;"> |doi=10.1111/j.2517-6161.1958.tb00300.x</ins> |jstor=2983896 }} Addendum, ''ibid.'' '''22''' (2), 373-375 (1960) {{JSTOR|2984108}}.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*{{cite book |first=L. H. |last=Thomas |chapter=Using a computer to solve problems in physics |title=Applications of Digital Computers |publisher=Ginn |location=Boston |year=1963 }}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*{{cite book |first=L. H. |last=Thomas |chapter=Using a computer to solve problems in physics |title=Applications of Digital Computers |publisher=Ginn |location=Boston |year=1963 }}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first1=P. |last1=Duhamel |first2=M. |last2=Vetterli |title=Fast Fourier transforms: a tutorial review and a state of the art |journal=Signal Processing |volume=19 |issue=4 |pages=259–299 |year=1990 |doi=10.1016/0165-1684(90)90158-U |url=http://infoscience.epfl.ch/record/59946 }}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first1=P. |last1=Duhamel |first2=M. |last2=Vetterli |title=Fast Fourier transforms: a tutorial review and a state of the art |journal=Signal Processing |volume=19 |issue=4 |pages=259–299 |year=1990 |doi=10.1016/0165-1684(90)90158-U<ins style="font-weight: bold; text-decoration: none;"> |bibcode=1990SigPr..19..259D</ins> |url=http://infoscience.epfl.ch/record/59946 }}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first1=S. C. |last1=Chan |first2=K. L. |last2=Ho |title=On indexing the prime-factor fast Fourier transform algorithm |journal= IEEE Transactions on Circuits and Systems|volume=38 |issue=8 |pages=951–953 |year=1991 |doi=10.1109/31.85638 }}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first1=S. C. |last1=Chan |first2=K. L. |last2=Ho |title=On indexing the prime-factor fast Fourier transform algorithm |journal= IEEE Transactions on Circuits and Systems|volume=38 |issue=8 |pages=951–953 |year=1991 |doi=10.1109/31.85638 }}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first=I. J. |last=Good |title=The relationship between two fast Fourier transforms | journal = IEEE Transactions on Computers |volume=100 |issue=3 |pages=310–317 |year=1971 |doi=10.1109/T-C.1971.223236 |s2cid=585818 }}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>*{{cite journal |first=I. J. |last=Good |title=The relationship between two fast Fourier transforms | journal = IEEE Transactions on Computers |volume=100 |issue=3 |pages=310–317 |year=1971 |doi=10.1109/T-C.1971.223236 |s2cid=585818 }}</div></td> </tr> </table> Citation bot https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1240476249&oldid=prev Synapse554: /* Algorithm */ 2024-08-15T15:14:19Z <p><span class="autocomment">Algorithm</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 15:14, 15 August 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 10:</td> <td colspan="2" class="diff-lineno">Line 10:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Algorithm==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Algorithm==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt;a(x)&lt;/math&gt; a polynomial and &lt;math&gt;\omega_n&lt;/math&gt; a [[Principal root of unity|principal &lt;math&gt;n&lt;/math&gt;th root of unity]]. We define the DFT of &lt;math&gt;a(x)&lt;/math&gt; as the &lt;math&gt;n&lt;/math&gt;-tuple &lt;math&gt;(\hat{a}_j) = (a(\omega_n^j)) &lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Let &lt;math&gt;a(x)&lt;/math&gt;<ins style="font-weight: bold; text-decoration: none;"> be</ins> a polynomial and &lt;math&gt;\omega_n&lt;/math&gt;<ins style="font-weight: bold; text-decoration: none;"> be</ins> a [[Principal root of unity|principal &lt;math&gt;n&lt;/math&gt;<ins style="font-weight: bold; text-decoration: none;">-</ins>th root of unity]]. We define the DFT of &lt;math&gt;a(x)&lt;/math&gt; as the &lt;math&gt;n&lt;/math&gt;-tuple &lt;math&gt;(\hat{a}_j) = (a(\omega_n^j)) &lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In other words,</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In other words,</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;math display="block"&gt;\hat{a}_j = \sum_{i=0}^{n-1} a_i \omega_n^{ij} \quad \text{ for all } j = 0, 1, \dots, n - 1.&lt;/math&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;math display="block"&gt;\hat{a}_j = \sum_{i=0}^{n-1} a_i \omega_n^{ij} \quad \text{ for all } j = 0, 1, \dots, n - 1.&lt;/math&gt;</div></td> </tr> </table> Synapse554 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1214416877&oldid=prev Philipnelson99: Reverted edits by 142.181.177.25 (talk) (HG) (3.4.12) 2024-03-18T20:46:47Z <p>Reverted edits by <a href="/wiki/Special:Contributions/142.181.177.25" title="Special:Contributions/142.181.177.25">142.181.177.25</a> (<a href="/wiki/User_talk:142.181.177.25" title="User talk:142.181.177.25">talk</a>) (<a href="/wiki/Wikipedia:HG" class="mw-redirect" title="Wikipedia:HG">HG</a>) (3.4.12)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 20:46, 18 March 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<del style="font-weight: bold; text-decoration: none;">ishupissyisanigly</del>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<ins style="font-weight: bold; text-decoration: none;">Good–Thomas algorithm</ins>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> </tr> </table> Philipnelson99 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1214416856&oldid=prev 142.181.177.25 at 20:46, 18 March 2024 2024-03-18T20:46:41Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 20:46, 18 March 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<del style="font-weight: bold; text-decoration: none;">Good–Thomas algorithm</del>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<ins style="font-weight: bold; text-decoration: none;">ishupissyisanigly</ins>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> </tr> </table> 142.181.177.25 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1214416761&oldid=prev Philipnelson99: Reverted edits by 142.181.177.25 (talk) (HG) (3.4.12) 2024-03-18T20:46:09Z <p>Reverted edits by <a href="/wiki/Special:Contributions/142.181.177.25" title="Special:Contributions/142.181.177.25">142.181.177.25</a> (<a href="/wiki/User_talk:142.181.177.25" title="User talk:142.181.177.25">talk</a>) (<a href="/wiki/Wikipedia:HG" class="mw-redirect" title="Wikipedia:HG">HG</a>) (3.4.12)</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 20:46, 18 March 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<del style="font-weight: bold; text-decoration: none;">ishana</del> <del style="font-weight: bold; text-decoration: none;">is a niglywigly</del>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<ins style="font-weight: bold; text-decoration: none;">Good–Thomas</ins> <ins style="font-weight: bold; text-decoration: none;">algorithm</ins>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> </tr> </table> Philipnelson99 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1214416747&oldid=prev 142.181.177.25 at 20:46, 18 March 2024 2024-03-18T20:46:02Z <p></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 20:46, 18 March 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Use American English|date = March 2019}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>{{Short description|Fast Fourier Transform algorithm}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<del style="font-weight: bold; text-decoration: none;">Good–Thomas</del> <del style="font-weight: bold; text-decoration: none;">algorithm</del>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>The '''prime-factor algorithm (PFA)''', also called the '''<ins style="font-weight: bold; text-decoration: none;">ishana</ins> <ins style="font-weight: bold; text-decoration: none;">is a niglywigly</ins>''' (1958/1963), is a [[fast Fourier transform]] (FFT) algorithm that re-expresses the [[discrete Fourier transform]] (DFT) of a size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; as a two-dimensional ''N''&lt;sub&gt;1&lt;/sub&gt;×''N''&lt;sub&gt;2&lt;/sub&gt; DFT, but ''only'' for the case where ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; are [[relatively prime]]. These smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt; can then be evaluated by applying PFA [[recursion|recursively]] or by using some other FFT algorithm.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>PFA should not be confused with the ''mixed-radix'' generalization of the popular [[Cooley–Tukey FFT algorithm|Cooley–Tukey algorithm]], which also subdivides a DFT of size ''N'' = ''N''&lt;sub&gt;1&lt;/sub&gt;''N''&lt;sub&gt;2&lt;/sub&gt; into smaller transforms of size ''N''&lt;sub&gt;1&lt;/sub&gt; and ''N''&lt;sub&gt;2&lt;/sub&gt;. The latter algorithm can use ''any'' factors (not necessarily relatively prime), but it has the disadvantage that it also requires extra multiplications by roots of unity called [[twiddle factor]]s, in addition to the smaller transforms. On the other hand, PFA has the disadvantages that it only works for relatively prime factors (e.g. it is useless for [[power of two|power-of-two]] sizes) and that it requires more complicated re-indexing of the data based on the [[additive group]] [[Group isomorphism|isomorphisms]]. Note, however, that PFA can be combined with mixed-radix Cooley–Tukey, with the former factorizing ''N'' into relatively prime components and the latter handling repeated factors.</div></td> </tr> </table> 142.181.177.25 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1212345755&oldid=prev 137.248.70.5: /* Mapping Based on CRT */ 2024-03-07T11:07:14Z <p><span class="autocomment">Mapping Based on CRT</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:07, 7 March 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 28:</td> <td colspan="2" class="diff-lineno">Line 28:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Finally, define &lt;math&gt;a_{i_0, \dots, i_{D - 1}} = a_{\sum_{d = 0}^{D - 1} i_d e_d}&lt;/math&gt; and &lt;math&gt;\hat{a}_{j_0, \dots, j_{D - 1}} = \hat{a}_{\sum_{d = 0}^{D - 1} j_d e_d}&lt;/math&gt;, </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Finally, define &lt;math&gt;a_{i_0, \dots, i_{D - 1}} = a_{\sum_{d = 0}^{D - 1} i_d e_d}&lt;/math&gt; and &lt;math&gt;\hat{a}_{j_0, \dots, j_{D - 1}} = \hat{a}_{\sum_{d = 0}^{D - 1} j_d e_d}&lt;/math&gt;, </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>we have </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>we have </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>&lt;math display="block"&gt;\hat{a}_{j_0, \dots, j_{D - 1}} = \sum_{i_0 = 0}^{n_0 - 1} \cdots \sum_{i_{D - 1}}^{n_{D - 1} - 1} a_{i_0, \dots, i_{D - 1}} \prod_{d = 0}^{D - 1} \omega_{n_d}^{i_d j_d} .&lt;/math&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>&lt;math display="block"&gt;\hat{a}_{j_0, \dots, j_{D - 1}} = \sum_{i_0 = 0}^{n_0 - 1} \cdots \sum_{i_{D - 1}<ins style="font-weight: bold; text-decoration: none;">=0</ins>}^{n_{D - 1} - 1} a_{i_0, \dots, i_{D - 1}} \prod_{d = 0}^{D - 1} \omega_{n_d}^{i_d j_d} .&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Therefore, we have the multi-dimensional DFT, &lt;math&gt;\otimes_{d = 0}^{D - 1} \text{DFT}_{\omega_{n_d}}&lt;/math&gt;.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Therefore, we have the multi-dimensional DFT, &lt;math&gt;\otimes_{d = 0}^{D - 1} \text{DFT}_{\omega_{n_d}}&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> 137.248.70.5 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1212344923&oldid=prev 137.248.70.5: /* Mapping Based on CRT */ 2024-03-07T11:00:20Z <p><span class="autocomment">Mapping Based on CRT</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:00, 7 March 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 25:</td> <td colspan="2" class="diff-lineno">Line 25:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>\sum_{i = 0}^{n - 1} a_i \left( \prod_{d = 0}^{D - 1} \omega_{n_d} \right)^{ij} = </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>\sum_{i = 0}^{n - 1} a_i \left( \prod_{d = 0}^{D - 1} \omega_{n_d} \right)^{ij} = </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>\sum_{i = 0}^{n - 1} a_i \prod_{d = 0}^{D - 1} \omega_{n_d}^{ (i \bmod n_d) (j \bmod n_d)} = </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>\sum_{i = 0}^{n - 1} a_i \prod_{d = 0}^{D - 1} \omega_{n_d}^{ (i \bmod n_d) (j \bmod n_d)} = </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>\sum_{i_0 = 0}^{n_0 - 1} \cdots \sum_{i_{D - 1}}^{n_{D - 1} - 1} a_{\sum_{d = 0}^{D - 1} e_d i_d} \prod_{d = 0}^{D - 1} \omega_{n_d}^{i_d (j \bmod n_d)} .&lt;/math&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>\sum_{i_0 = 0}^{n_0 - 1} \cdots \sum_{i_{D - 1}<ins style="font-weight: bold; text-decoration: none;"> = 0</ins>}^{n_{D - 1} - 1} a_{\sum_{d = 0}^{D - 1} e_d i_d} \prod_{d = 0}^{D - 1} \omega_{n_d}^{i_d (j \bmod n_d)} .&lt;/math&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Finally, define &lt;math&gt;a_{i_0, \dots, i_{D - 1}} = a_{\sum_{d = 0}^{D - 1} i_d e_d}&lt;/math&gt; and &lt;math&gt;\hat{a}_{j_0, \dots, j_{D - 1}} = \hat{a}_{\sum_{d = 0}^{D - 1} j_d e_d}&lt;/math&gt;, </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Finally, define &lt;math&gt;a_{i_0, \dots, i_{D - 1}} = a_{\sum_{d = 0}^{D - 1} i_d e_d}&lt;/math&gt; and &lt;math&gt;\hat{a}_{j_0, \dots, j_{D - 1}} = \hat{a}_{\sum_{d = 0}^{D - 1} j_d e_d}&lt;/math&gt;, </div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>we have </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>we have </div></td> </tr> </table> 137.248.70.5 https://en.wikipedia.org/w/index.php?title=Prime-factor_FFT_algorithm&diff=1211558447&oldid=prev 2601:647:6300:1070:59A4:D25D:994F:8792: Fixing typo in modulo (q_d -> n_d) for CRT map 2024-03-03T05:05:38Z <p>Fixing typo in modulo (q_d -&gt; n_d) for CRT map</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Previous revision</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 05:05, 3 March 2024</td> </tr><tr> <td colspan="2" class="diff-lineno">Line 19:</td> <td colspan="2" class="diff-lineno">Line 19:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Mapping Based on CRT ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Mapping Based on CRT ===</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>For a coprime factorization &lt;math display="inline"&gt;n = \prod_{d = 0}^{D - 1} n_d&lt;/math&gt;, we have the [[Chinese remainder theorem|Chinese remainder map]] &lt;math&gt;m \mapsto (m \bmod <del style="font-weight: bold; text-decoration: none;">q_d</del>)&lt;/math&gt; from &lt;math&gt;\mathbb{Z}_{n}&lt;/math&gt; to &lt;math display="inline"&gt;\prod_{d = 0}^{D - 1} \mathbb{Z}_{n_d} &lt;/math&gt; with &lt;math display="inline"&gt;(m_d) \mapsto \sum_{d = 0}^{D - 1} e_d m_d&lt;/math&gt; as its inverse where &lt;math&gt;e_d&lt;/math&gt;'s are the [[central idempotent|central orthogonal idempotent elements]] with &lt;math display="inline"&gt;\sum_{d = 0}^{D - 1} e_d = 1 \pmod{n}&lt;/math&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>For a coprime factorization &lt;math display="inline"&gt;n = \prod_{d = 0}^{D - 1} n_d&lt;/math&gt;, we have the [[Chinese remainder theorem|Chinese remainder map]] &lt;math&gt;m \mapsto (m \bmod <ins style="font-weight: bold; text-decoration: none;">n_d</ins>)&lt;/math&gt; from &lt;math&gt;\mathbb{Z}_{n}&lt;/math&gt; to &lt;math display="inline"&gt;\prod_{d = 0}^{D - 1} \mathbb{Z}_{n_d} &lt;/math&gt; with &lt;math display="inline"&gt;(m_d) \mapsto \sum_{d = 0}^{D - 1} e_d m_d&lt;/math&gt; as its inverse where &lt;math&gt;e_d&lt;/math&gt;'s are the [[central idempotent|central orthogonal idempotent elements]] with &lt;math display="inline"&gt;\sum_{d = 0}^{D - 1} e_d = 1 \pmod{n}&lt;/math&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Choosing &lt;math&gt;\omega_{n_d} = \omega_n^{e_d}&lt;/math&gt; (therefore, &lt;math display="inline"&gt;\prod_{d = 0}^{D - 1} \omega_{n_d} = \omega_n^{\sum_{d = 0}^{D - 1} e_d} = \omega_n&lt;/math&gt;), we rewrite &lt;math&gt;\text{DFT}_{\omega_n}&lt;/math&gt; as follows:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Choosing &lt;math&gt;\omega_{n_d} = \omega_n^{e_d}&lt;/math&gt; (therefore, &lt;math display="inline"&gt;\prod_{d = 0}^{D - 1} \omega_{n_d} = \omega_n^{\sum_{d = 0}^{D - 1} e_d} = \omega_n&lt;/math&gt;), we rewrite &lt;math&gt;\text{DFT}_{\omega_n}&lt;/math&gt; as follows:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;math display="block"&gt;\hat{a}_j = </div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;math display="block"&gt;\hat{a}_j = </div></td> </tr> </table> 2601:647:6300:1070:59A4:D25D:994F:8792