{"id":479,"date":"2021-05-10T11:30:00","date_gmt":"2021-05-10T11:30:00","guid":{"rendered":"http:\/\/www.ethanepperly.com\/?p=479"},"modified":"2021-05-09T20:52:56","modified_gmt":"2021-05-09T20:52:56","slug":"big-ideas-in-applied-math-the-fast-fourier-transform","status":"publish","type":"post","link":"https:\/\/www.ethanepperly.com\/index.php\/2021\/05\/10\/big-ideas-in-applied-math-the-fast-fourier-transform\/","title":{"rendered":"Big Ideas in Applied Math: The Fast Fourier Transform"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>The famous <a href=\"https:\/\/en.wikipedia.org\/wiki\/Law_of_the_instrument\">law of the instrument<\/a> states that &#8220;when all you have is a hammer, every problem looks like a nail.&#8221; In general, this tendency is undesirable: most problems in life are not nails and could better be addressed by a more appropriate tool. However, one can also review the law of the instrument in a more positive framing: when presented with a powerful new tool, it is worth checking how many problems it can solve. The fast Fourier transform (FFT) is one of the most important hammers in an applied mathematician&#8217;s toolkit. And it has made many seemingly unrelated problems look like nails.<\/p>\n\n\n\n<p>In this article, I want to consider three related questions:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>What is the FFT\u2014what problem is it solving and how does it solve it fast?<\/li><li>How can the <em>idea<\/em>s behind the FFT be used to solve other problems?<\/li><li>How can the FFT be used as a building block in solving a seemingly unrelated problem?<\/li><\/ol>\n\n\n\n<p>The FFT is <a href=\"https:\/\/nhigham.com\/2016\/03\/29\/the-top-10-algorithms-in-applied-mathematics\/\">widely considered<\/a> one of the most important numerical algorithms, and as such every sub-community of applied mathematics is inclined to see the most interesting applications of the FFT as those in their particular area. I am unapologetically victim to this tendency myself, and thus will discuss an application of the FFT that I find particularly beautiful and surprising. In particular, this article won&#8217;t focus on the manifold applications of the FFT in signal processing, which I think has been far better covered by authors more familiar with that field.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Discrete Fourier Transform<\/h2>\n\n\n\n<p>At its core, the FFT is a fast algorithm to compute <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> complex numbers <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e0d720c6f33141905f67928bf3617c94_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"90\" style=\"vertical-align: -4px;\"\/> given <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> real or complex numbers <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-454956b7c062b8ac7abd767d05e5d0b2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#95;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#102;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"90\" style=\"vertical-align: -4px;\"\/> defined by the formula<sup class=\"modern-footnotes-footnote \" data-mfn=\"1\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-1\">1<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-1\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"1\">The factor of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-557ad73231c45b398a7c09e69d8e131a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"27\" width=\"20\" style=\"vertical-align: -11px;\"\/> is not universal. It is common to omit the factor in (1) and replace the <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c0b03d4129fbf49947837093e3ade347_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"27\" width=\"20\" style=\"vertical-align: -11px;\"\/> in Eq. (2) with a <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b46f379dd3950849d9a45626e1909cb4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#110;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"9\" style=\"vertical-align: -6px;\"\/>. We prefer this convention as it makes the DFT a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unitary_transformation\">unitary<\/a> transformation. When working with Fourier analysis, it is important to choose formulas for the (discrete) Fourier transform and the inverse (discrete) Fourier transform which form a pair in the sense they are inverses of each other.<\/span>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 56px;\"><span class=\"ql-right-eqno\"> (1) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b1ecdbbe39f63697d6604609007d21d5_l3.png\" height=\"56\" width=\"403\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#107;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#106;&#61;&#48;&#125;&#94;&#123;&#110;&#45;&#49;&#125;&#32;&#102;&#95;&#106;&#32;&#101;&#94;&#123;&#45;&#40;&#50;&#92;&#112;&#105;&#32;&#105;&#47;&#110;&#41;&#106;&#107;&#125;&#32;&#92;&#113;&#117;&#97;&#100;&#32;&#92;&#109;&#98;&#111;&#120;&#123;&#102;&#111;&#114;&#32;&#125;&#32;&#107;&#32;&#61;&#32;&#48;&#44;&#49;&#44;&#50;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#110;&#45;&#49;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>The outputs <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b56a08c0008f3a970e0d36114f663a52_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#32;&#61;&#32;&#40;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#123;&#110;&#45;&#49;&#125;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"24\" width=\"138\" style=\"vertical-align: -5px;\"\/> is called the <strong>discrete Fourier transform<\/strong> (DFT) of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-d237cee24cfc6828950b6ac3c9db3176_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#32;&#61;&#32;&#40;&#102;&#95;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#102;&#95;&#123;&#110;&#45;&#49;&#125;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"138\" style=\"vertical-align: -5px;\"\/>. The FFT is just one possible algorithm to evaluate the DFT. <\/p>\n\n\n\n<p>The DFT has the following interpretation. Suppose that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> is a periodic function defined on the integers with period <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/>\u2014that is, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-cc9e367341cc254971e8a0af618a3b1c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#40;&#106;&#32;&#43;&#32;&#110;&#41;&#32;&#61;&#32;&#102;&#40;&#106;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"120\" style=\"vertical-align: -5px;\"\/> for every integer <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fe087f8cefab0bcb3270609914ada26c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#106;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"9\" style=\"vertical-align: -4px;\"\/>. Choose <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-454956b7c062b8ac7abd767d05e5d0b2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#95;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#102;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"90\" style=\"vertical-align: -4px;\"\/> to be the values of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> given by <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-1b55179bb1024e9cfe6b0f0b3d22d466_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#95;&#106;&#32;&#61;&#32;&#102;&#40;&#106;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"71\" style=\"vertical-align: -6px;\"\/> for <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2de8db5cc4b9212bea534aac01d0df4f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#106;&#61;&#48;&#44;&#49;&#44;&#50;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#110;&#45;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"155\" style=\"vertical-align: -4px;\"\/>. Then, in fact, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e0d720c6f33141905f67928bf3617c94_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"90\" style=\"vertical-align: -4px;\"\/> gives an expression for <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> as a so-called trigonometric polynomial<sup class=\"modern-footnotes-footnote \" data-mfn=\"2\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-2\">2<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-2\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"2\">The name &#8220;trigonometric polynomial&#8221; is motivated by Euler&#8217;s formula which shows that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-d13471319e2bf7390786d3a6170495af_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#101;&#94;&#123;&#40;&#50;&#92;&#112;&#105;&#32;&#105;&#47;&#110;&#41;&#106;&#107;&#125;&#32;&#61;&#32;&#40;&#92;&#99;&#111;&#115;&#32;&#40;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#50;&#92;&#112;&#105;&#32;&#105;&#125;&#123;&#110;&#125;&#32;&#106;&#41;&#32;&#43;&#32;&#105;&#92;&#115;&#105;&#110;&#40;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#50;&#92;&#112;&#105;&#32;&#105;&#125;&#123;&#110;&#125;&#32;&#106;&#41;&#41;&#94;&#107;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"281\" style=\"vertical-align: -6px;\"\/>, so indeed the right-hand side of Eq. (2) is indeed a &#8220;polynomial&#8221; in the &#8220;variables&#8221; <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-5ebebc8dae6f0e7745958bf1dc5ad68d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#115;&#105;&#110;&#40;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#50;&#92;&#112;&#105;&#32;&#105;&#125;&#123;&#110;&#125;&#32;&#106;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"67\" style=\"vertical-align: -6px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-94ebca3a5db5b193fb46176fcab34b1e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#99;&#111;&#115;&#40;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#50;&#92;&#112;&#105;&#32;&#105;&#125;&#123;&#110;&#125;&#32;&#106;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"69\" style=\"vertical-align: -6px;\"\/><\/span>:<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 53px;\"><span class=\"ql-right-eqno\"> (2) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-f711afd6eeb4c9ab06e671f9a2b8af79_l3.png\" height=\"53\" width=\"353\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#102;&#40;&#106;&#41;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#107;&#61;&#48;&#125;&#94;&#123;&#110;&#45;&#49;&#125;&#32;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#107;&#32;&#101;&#94;&#123;&#40;&#50;&#92;&#112;&#105;&#32;&#105;&#47;&#110;&#41;&#106;&#107;&#125;&#32;&#92;&#109;&#98;&#111;&#120;&#123;&#32;&#102;&#111;&#114;&#32;&#101;&#118;&#101;&#114;&#121;&#32;&#105;&#110;&#116;&#101;&#103;&#101;&#114;&#32;&#125;&#32;&#106;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>This shows that (1) converts function values <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-412378dbe1bcf3ed549431338781266f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#95;&#48;&#44;&#102;&#95;&#49;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#102;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"114\" style=\"vertical-align: -4px;\"\/> of a periodic function <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> to coefficients <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6d1f069f382dcc2891299ea574fd2ea1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#48;&#44;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#49;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"114\" style=\"vertical-align: -4px;\"\/> of a trigonometric polynomial representation of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/>, which can be called the <strong>Fourier series<\/strong> of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/>. Eq. (2), referred to as the <strong>inverse discrete Fourier transform<\/strong>, inverts this, converting coefficients <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6d1f069f382dcc2891299ea574fd2ea1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#48;&#44;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#49;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"114\" style=\"vertical-align: -4px;\"\/> to function values <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-412378dbe1bcf3ed549431338781266f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#95;&#48;&#44;&#102;&#95;&#49;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#102;&#95;&#123;&#110;&#45;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"114\" style=\"vertical-align: -4px;\"\/>. <\/p>\n\n\n\n<p>Fourier series are an immensely powerful tool in applied mathematics. For example again, if <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> represents a sound wave produced by a chord on a piano, its Fourier coefficients <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-77019817e85ae3f0e4e83622815c805e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"13\" style=\"vertical-align: -4px;\"\/> represents the intensity of each pitch comprising the chord. An audio engineer could, for example, compute a Fourier series for a piece of music and zero out Fourier coefficients, thus reducing the amount of data needed to store a piece of music. This idea is indeed part of the way audio compression standards like <a href=\"https:\/\/en.wikipedia.org\/wiki\/MP3#Encoding_and_decoding\">MP3<\/a> work. In addition to many more related applications in signal processing, the Fourier series is also a natural way to solve differential equations, either <a href=\"https:\/\/tutorial.math.lamar.edu\/classes\/de\/SolvingHeatEquation.aspx\">by pencil and paper<\/a> or by computer via so-called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Spectral_method\">Fourier spectral methods<\/a>. As these applications (and more to follow) show, the DFT is a very useful computation to perform. The FFT allows us to perform this calculation fast.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Fast Fourier Transform<\/h2>\n\n\n\n<p>The first observation to make is that Eq. (1) is a<a href=\"https:\/\/en.wikipedia.org\/wiki\/Linear_map\"> linear transformation<\/a>: if we think of Eq. (1) as describing a transformation <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2847b65d43b9a851b94af55f10bb28f7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#32;&#92;&#109;&#97;&#112;&#115;&#116;&#111;&#32;&#92;&#104;&#97;&#116;&#123;&#102;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"51\" style=\"vertical-align: -4px;\"\/>, then we have that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-8e3e394ab4f93cdc8c1715f108e5fd3a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#119;&#105;&#100;&#101;&#104;&#97;&#116;&#123;&#92;&#97;&#108;&#112;&#104;&#97;&#32;&#102;&#32;&#43;&#32;&#92;&#98;&#101;&#116;&#97;&#32;&#103;&#125;&#32;&#61;&#32;&#92;&#97;&#108;&#112;&#104;&#97;&#32;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#32;&#43;&#32;&#92;&#98;&#101;&#116;&#97;&#32;&#92;&#104;&#97;&#116;&#123;&#103;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"152\" style=\"vertical-align: -4px;\"\/>. Recall the crucial fact from linear algebra that <a href=\"https:\/\/math.libretexts.org\/Bookshelves\/Linear_Algebra\/Book%3A_A_First_Course_in_Linear_Algebra_(Kuttler)\/05%3A_Linear_Transformations\/5.02%3A_The_Matrix_of_a_Linear_Transformation_I\">every linear transformation can be represented by a matrix-vector muliplication<\/a>.<sup class=\"modern-footnotes-footnote \" data-mfn=\"3\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-3\">3<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-3\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"3\">At least in finite dimensions; the story for <a href=\"https:\/\/math.stackexchange.com\/questions\/466707\/what-are-some-examples-of-infinite-dimensional-vector-spaces\">infinite-dime\u000ensional vector spaces<\/a> is more complicated.<\/span> In my experience, one of the most effective algorithm design strategies in applied mathematics is, when presented with a linear transformation, to write its matrix down and poke and prod it to see if there are any patterns in the numbers which can be exploited to give a fast algorithm. Let&#8217;s try to do this with the DFT. <\/p>\n\n\n\n<p>We have that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ed22cb78e7a50a4f79cc65a2b6e9baca_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#32;&#61;&#32;&#70;&#95;&#110;&#32;&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"65\" style=\"vertical-align: -4px;\"\/> for some <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-41c0efe7f3a82ce93dc2542200956ad7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"9\" width=\"43\" style=\"vertical-align: 0px;\"\/> matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fc65b83a9a8770b11591d92640853913_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"19\" style=\"vertical-align: -3px;\"\/>. (We will omit the subscript <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> when its value isn&#8217;t particularly important to the discussion.) Let us make the somewhat non-standard choice of describing rows and columns of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7bf5d1207baa8be58658ce9d3cf12043_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> by <a href=\"https:\/\/en.wikipedia.org\/wiki\/Zero-based_numbering\">zero-indexing<\/a>, so that the first row of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7bf5d1207baa8be58658ce9d3cf12043_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> is row <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-54589d9b5610bf48dcf5a1b1f24a67b6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#48;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: 0px;\"\/> and the last is row <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7b31ef9757c2828596bea62c97d430ae_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#45;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"40\" style=\"vertical-align: 0px;\"\/>. Then we have that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-8b960215d246673c0a1150f60c8d57bf_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#95;&#107;&#32;&#61;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#106;&#61;&#48;&#125;&#94;&#123;&#110;&#45;&#49;&#125;&#32;&#70;&#95;&#123;&#107;&#106;&#125;&#32;&#102;&#95;&#106;\" title=\"Rendered by QuickLaTeX.com\" height=\"27\" width=\"130\" style=\"vertical-align: -8px;\"\/>. Comparing with Eq. (1), we see that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-d91e5d078c9e757e3ef47cd29f552875_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#123;&#107;&#106;&#125;&#32;&#61;&#32;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;&#32;&#101;&#94;&#123;&#40;&#45;&#50;&#92;&#112;&#105;&#32;&#105;&#47;&#110;&#41;&#32;&#106;&#107;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"27\" width=\"152\" style=\"vertical-align: -11px;\"\/>. Let us define <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-d2df3c3ebdcb9e22cd74653b3ec548ea_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#32;&#61;&#32;&#101;&#94;&#123;&#45;&#50;&#92;&#112;&#105;&#32;&#105;&#47;&#110;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"98\" style=\"vertical-align: -3px;\"\/>. Thus, we can write the matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7bf5d1207baa8be58658ce9d3cf12043_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> out as<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 151px;\"><span class=\"ql-right-eqno\"> (3) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-21df626d48f382f506add2e66d4b21d4_l3.png\" height=\"151\" width=\"383\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#70;&#95;&#110;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#48;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#48;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#48;&#32;&#92;&#92;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#48;&#125;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#49;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#50;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#110;&#45;&#49;&#125;&#32;&#92;&#92;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#48;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#50;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#52;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#50;&#40;&#110;&#45;&#49;&#41;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#48;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#51;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#54;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#51;&#40;&#110;&#45;&#49;&#41;&#125;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#92;&#92;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#48;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#50;&#40;&#110;&#45;&#49;&#41;&#125;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#40;&#110;&#45;&#49;&#41;&#40;&#110;&#45;&#49;&#41;&#125;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>This is a highly structured matrix. The patterns in this matrix are more easily seen for a particular value of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/>. We shall focus on <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6a260bf4dd6d2f6e6a4f0eed09f5b731_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#32;&#61;&#32;&#56;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"43\" style=\"vertical-align: 0px;\"\/> in this discussion, but what will follow will generalize in a straightforward way to <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> any power of two (and in less straightforward ways to arbitrary <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/>\u2014we will return to this point at the end).<\/p>\n\n\n\n<p>Instantiating Eq. (3) with <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6a260bf4dd6d2f6e6a4f0eed09f5b731_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#32;&#61;&#32;&#56;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"43\" style=\"vertical-align: 0px;\"\/> (and writing <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2bfced0e6b2dd216a24c689495be2698_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#32;&#61;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#56;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"53\" style=\"vertical-align: -3px;\"\/>), we have<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 173px;\"><span class=\"ql-right-eqno\"> (4) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-859da37101aa3bcd031eaf5f612f891c_l3.png\" height=\"173\" width=\"400\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#70;&#95;&#56;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#56;&#125;&#125; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#56;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#52;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#57;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#56;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#49;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#56;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#56;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#53;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#56;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#50;&#125;&#32;&#92;&#92; &#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#48;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#56;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#57;&#125;&#32;&#92;&#92; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p> To fully exploit the patterns in this matrix, we note that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-0b198aa9b9853ff3f922aed5fd03dc71_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> <a href=\"https:\/\/youtu.be\/mvmuCPvRoWQ\">represents a clockwise rotation<\/a> of the complex plane by an eighth of the way around the circle. So, for example <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-26c85cc4f274c9a23382ce68dcce260e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"25\" style=\"vertical-align: 0px;\"\/> is twenty-one eighths of a turn or simply just <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-0abf8c4d9ae7dd2afaf45e3bb2ca3890_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#50;&#49;&#45;&#49;&#54;&#32;&#61;&#32;&#53;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"89\" style=\"vertical-align: 0px;\"\/> turns. Thus <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c3cb12154a18081259d6ed278a98026c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#49;&#125;&#32;&#61;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#53;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"69\" style=\"vertical-align: 0px;\"\/> and more generally <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6debfcdb1ce7b014477a2ac7e2778645_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#109;&#32;&#61;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#109;&#32;&#92;&#111;&#112;&#101;&#114;&#97;&#116;&#111;&#114;&#110;&#97;&#109;&#101;&#123;&#109;&#111;&#100;&#125;&#32;&#56;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"110\" style=\"vertical-align: 0px;\"\/>. This allows us to simplify as follows:<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 170px;\"><span class=\"ql-right-eqno\"> (5) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-5fcb5f80ab00f252b46193e8c4e6c006_l3.png\" height=\"170\" width=\"348\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#70;&#95;&#56;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#56;&#125;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#92;&#92; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>Now notice that, since <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-0b198aa9b9853ff3f922aed5fd03dc71_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> represents a clockwise rotation of an eighth of the way around the circle, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2e6a0ca3e1f1f24c3b398df7fa4872bc_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"19\" style=\"vertical-align: 0px;\"\/> represents a quarter turn of the circle. This fact leads to the surprising observation we can actually find the DFT matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3e920d508bac809e764a276bcd744540_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/> for <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-aea689809ea3939bec94cab4d4915bca_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#32;&#61;&#32;&#52;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"43\" style=\"vertical-align: 0px;\"\/> hidden inside the DFT matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-944bf603fd896fdcce0d24f447085372_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#56;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/> for <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6a260bf4dd6d2f6e6a4f0eed09f5b731_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#32;&#61;&#32;&#56;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"43\" style=\"vertical-align: 0px;\"\/>!<\/p>\n\n\n\n<p>To see this, rearrange the columns of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-944bf603fd896fdcce0d24f447085372_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#56;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/> to interleave every other column. In matrix language this is represented by right-multiplying with an appropriate<sup class=\"modern-footnotes-footnote \" data-mfn=\"4\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-4\">4<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-4\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"4\">In fact, this permutation has a special name: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Riffle_shuffle_permutation\">the perfect shuffle<\/a>.<\/span> permutation matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-27e132f30a2e98e043af2eb93c9613bf_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#80;&#105;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"13\" style=\"vertical-align: 0px;\"\/>:<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 170px;\"><span class=\"ql-right-eqno\"> (6) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e1ca31282953d082fff97ee179266b69_l3.png\" height=\"170\" width=\"362\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#70;&#95;&#56;&#32;&#92;&#80;&#105;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#56;&#125;&#125;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#50;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#52;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#52;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#53;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#55;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#49;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#51;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#54;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#50;&#125;&#32;&#92;&#92; &#49;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#54;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#52;&#125;&#32;&#38;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#50;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#55;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#53;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#51;&#32;&#38;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#49; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>The top-left <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2c168a3cdd14d7e1819dee9c45c29416_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#52;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#52;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"40\" style=\"vertical-align: 0px;\"\/> sub-block is precisely <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3e920d508bac809e764a276bcd744540_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/> (up to scaling). In fact, defining the diagonal matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c546a6cfff3afca207affcfdbe312dfe_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#61;&#32;&#92;&#111;&#112;&#101;&#114;&#97;&#116;&#111;&#114;&#110;&#97;&#109;&#101;&#123;&#100;&#105;&#97;&#103;&#125;&#40;&#49;&#44;&#92;&#111;&#109;&#101;&#103;&#97;&#44;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#50;&#44;&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#51;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"173\" style=\"vertical-align: -5px;\"\/> (called the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Twiddle_factor\">twiddle factor<\/a>) and noting that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-11214ee0751f84b31877a990c2c679c7_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#52;&#32;&#61;&#32;&#45;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"65\" style=\"vertical-align: 0px;\"\/>, we have<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 42px;\"><span class=\"ql-right-eqno\"> (7) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b060819cf89e90b2b044b950b88bf530_l3.png\" height=\"42\" width=\"201\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#70;&#95;&#56;&#32;&#92;&#80;&#105;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#70;&#95;&#52;&#32;&#38;&#32;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#70;&#95;&#52;&#32;&#92;&#92;&#32;&#70;&#95;&#52;&#32;&#38;&#32;&#45;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#70;&#95;&#52;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>The matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-944bf603fd896fdcce0d24f447085372_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#56;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/> is entirely built up of simple scalings of the smaller DFT matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3e920d508bac809e764a276bcd744540_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: -3px;\"\/>! This suggests the following decomposition to compute <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-32bd5b27454107ee75cd2e18e3c3e912_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#56;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"29\" style=\"vertical-align: -3px;\"\/>:<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 58px;\"><span class=\"ql-right-eqno\"> (8) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-bbdbaecd700429400ffe7f979cfa33f9_l3.png\" height=\"58\" width=\"502\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#70;&#95;&#56;&#32;&#120;&#32;&#61;&#32;&#40;&#70;&#95;&#56;&#32;&#92;&#80;&#105;&#41;&#40;&#92;&#80;&#105;&#94;&#92;&#116;&#111;&#112;&#32;&#120;&#41;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#70;&#95;&#52;&#32;&#38;&#32;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#70;&#95;&#52;&#32;&#92;&#92;&#32;&#70;&#95;&#52;&#32;&#38;&#32;&#45;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#70;&#95;&#52;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#120;&#95;&#49;&#32;&#92;&#92;&#32;&#120;&#95;&#50;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#70;&#95;&#52;&#32;&#120;&#95;&#49;&#32;&#43;&#32;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#40;&#70;&#95;&#52;&#32;&#120;&#95;&#50;&#41;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#32;&#92;&#92;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#70;&#95;&#52;&#32;&#120;&#95;&#49;&#32;&#45;&#32;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#40;&#70;&#95;&#52;&#32;&#120;&#95;&#50;&#41;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>Here <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e08a13fffeaa35c71a527c0bfe1ee065_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"16\" style=\"vertical-align: -3px;\"\/> represent the even-indexed entries of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b312d649591164b7149ed0756f694a76_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\" style=\"vertical-align: 0px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-d525edc5789c75ed5956bf51c0d19e17_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"17\" style=\"vertical-align: -3px;\"\/> the odd-indexed entries. Thus, we see that we can evaluate <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ade87a6ac3fc28fb8a7cf4d0f9130c99_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#56;&#32;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"29\" style=\"vertical-align: -3px;\"\/> by evaluating the two expressions <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-353aae9f1625a344803955df532d442f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;&#120;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"35\" style=\"vertical-align: -3px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-0c35f8746ac026be4d722b5f59c4a968_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;&#120;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"36\" style=\"vertical-align: -3px;\"\/>. We have broken our problem into two smaller problems, which we then recombine into a solution of our original problem.<\/p>\n\n\n\n<p>How then, do we compute the smaller DFTs <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-353aae9f1625a344803955df532d442f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;&#120;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"35\" style=\"vertical-align: -3px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-0c35f8746ac026be4d722b5f59c4a968_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;&#120;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"36\" style=\"vertical-align: -3px;\"\/>? We just use the same trick again, breaking, for example, the product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-353aae9f1625a344803955df532d442f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#52;&#120;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"35\" style=\"vertical-align: -3px;\"\/> into further subcomputations <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e6f3e730f3ae24e1e778704f9302d0d1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#50;&#120;&#95;&#123;&#49;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"42\" style=\"vertical-align: -3px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-d29e1a6fa576f98689ddeb432df8d5e9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#50;&#120;&#95;&#123;&#49;&#50;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"43\" style=\"vertical-align: -3px;\"\/>. Performing this process one more time, we need to evaluate expressions of the form <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b81fc74b640c98ed1056e7203a92ba5e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#49;&#120;&#95;&#123;&#49;&#49;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"49\" style=\"vertical-align: -3px;\"\/>, which are simply given by <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-de8c5e217745f65782d2dee5c0d5da83_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#49;&#32;&#120;&#95;&#123;&#49;&#49;&#49;&#125;&#61;&#32;&#120;&#95;&#123;&#49;&#49;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"104\" style=\"vertical-align: -3px;\"\/> since the matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-52b5de73119273c43455a2994649b962_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"17\" style=\"vertical-align: -3px;\"\/> is just a <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-4ac03eedd19f9d68a98d70f3ba365091_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#49;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"38\" style=\"vertical-align: 0px;\"\/> matrix whose single entry is <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-27e3598fd2d4f0491067f1afaced92e9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"7\" style=\"vertical-align: 0px;\"\/>.<\/p>\n\n\n\n<p>This procedure is an example of a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Recursion_(computer_science)\">recursive algorithm<\/a>: we designed an algorithm which solves a problem by breaking it down into one or more smaller problems, solve each of the smaller problems by using this same algorithm, and then reassemble the solutions of the smaller problems to solve our original problem. Eventually, we will break our problems into such small pieces that they can be solved directly, which is referred to as the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Recursion#base_case\">base case<\/a> of our recursion. (In our case, the base case is multiplication by <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-52b5de73119273c43455a2994649b962_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"17\" style=\"vertical-align: -3px;\"\/>). Algorithms using this recursion in this way are referred to as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Divide-and-conquer_algorithm\">divide-and-conquer algorithms<\/a>.<\/p>\n\n\n\n<p>Let us summarize this recursive procedure we&#8217;ve developed. We want to compute the DFT <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-855fe0d21fb9047c3c40c68703ff8dde_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#70;&#95;&#110;&#32;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"64\" style=\"vertical-align: -4px;\"\/> where <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> is a power of two. First, we use the DFT to recursively compute <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e982ab666f1d7d6bb74dac7b913a6fdb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#123;&#110;&#47;&#50;&#125;&#120;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"50\" style=\"vertical-align: -8px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-88830856c0adb56bc022e1755f6edf2d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#123;&#110;&#47;&#50;&#125;&#120;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"51\" style=\"vertical-align: -8px;\"\/>. Next, we combine these computations to evaluate <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-855fe0d21fb9047c3c40c68703ff8dde_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#70;&#95;&#110;&#32;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"64\" style=\"vertical-align: -4px;\"\/> by the formula<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 64px;\"><span class=\"ql-right-eqno\"> (9) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-69e9830d8f5ab27e1ae982e4660827c8_l3.png\" height=\"64\" width=\"214\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#70;&#95;&#110;&#32;&#120;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#70;&#95;&#123;&#110;&#47;&#50;&#125;&#32;&#120;&#95;&#49;&#32;&#43;&#32;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#40;&#70;&#95;&#123;&#110;&#47;&#50;&#125;&#32;&#120;&#95;&#50;&#41;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#32;&#92;&#92;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#70;&#95;&#123;&#110;&#47;&#50;&#125;&#32;&#120;&#95;&#49;&#32;&#45;&#32;&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#52;&#32;&#40;&#70;&#95;&#123;&#110;&#47;&#50;&#125;&#32;&#120;&#95;&#50;&#41;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>This procedure is the famous fast Fourier transform (FFT), whose modern incarnation was presented by Cooley and Tukey in 1965 with lineage that can be traced back to work by Gauss in the early 1800s. There are many variants of the FFT using similar ideas.<\/p>\n\n\n\n<p>Let us see why the FFT is considered &#8220;fast&#8221; by analyzing its operation count. As is common for divide-and-conquer algorithms, the number of operations for computing <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b098488c07dffd9c1c505e45442f08bb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#110;&#32;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"31\" style=\"vertical-align: -3px;\"\/> using the FFT can be determined by solving a certain <a href=\"https:\/\/en.wikipedia.org\/wiki\/Recurrence_relation\">recurrence relation<\/a>. Let <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2d3c977a5f33ecc694be02518c4ca71b_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#40;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"37\" style=\"vertical-align: -5px;\"\/> be the number of operations required by the FFT. Then the cost of computing <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b098488c07dffd9c1c505e45442f08bb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#110;&#32;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"31\" style=\"vertical-align: -3px;\"\/> consists of<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>proportional-to-<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> operations (or <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-546213db83abaec9578680abb1f73f49_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"38\" style=\"vertical-align: -5px;\"\/> operations, in computer science language<sup class=\"modern-footnotes-footnote \" data-mfn=\"5\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-5\">5<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-5\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"5\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-71ee9c94c3d9c97c0db2f438fa86b686_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#92;&#99;&#100;&#111;&#116;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"32\" style=\"vertical-align: -5px;\"\/> refers to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Big_O_notation\">big-O notation<\/a>. Saying an algorithm takes <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c08754413e1d82ace2f1ed8aed1140dd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/> operations is stating that, more or less, the algorithm takes less than some multiple of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fb6ee0c67acaa0b17a3234171b1eb471_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#92;&#108;&#111;&#103;&#32;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"50\" style=\"vertical-align: -4px;\"\/> operations to complete.<\/span>) to:<ul><li>add, subtract, and scale vectors and<\/li><li>multiply by the diagonal matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-1fa6b2f1f1c1c35d79db85a6236a52f3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#79;&#109;&#101;&#103;&#97;&#95;&#123;&#110;&#47;&#50;&#125;&#32;&#61;&#32;&#92;&#111;&#112;&#101;&#114;&#97;&#116;&#111;&#114;&#110;&#97;&#109;&#101;&#123;&#100;&#105;&#97;&#103;&#125;&#40;&#49;&#44;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#123;&#50;&#110;&#125;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#123;&#50;&#110;&#125;&#94;&#123;&#110;&#45;&#49;&#125;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"24\" width=\"227\" style=\"vertical-align: -8px;\"\/> and<\/li><\/ul><\/li><li> two recursive computations of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-1d17a2406fa8b8c3275dff6d4514118d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#123;&#110;&#47;&#50;&#125;&#120;&#95;&#106;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"50\" style=\"vertical-align: -8px;\"\/> for <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2b49a004d5c23119286a68d0c9c67287_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#106;&#61;&#32;&#49;&#44;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"58\" style=\"vertical-align: -4px;\"\/>, each of which requires <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-751aaee77d3091fe633090a55640de35_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#40;&#110;&#47;&#50;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"55\" style=\"vertical-align: -5px;\"\/> operations.<\/li><\/ul>\n\n\n\n<p>This gives us the recurrence relation<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 19px;\"><span class=\"ql-right-eqno\"> (10) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-f299ac381a559dfb596246e6b8fc6ac2_l3.png\" height=\"19\" width=\"190\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#84;&#40;&#110;&#41;&#32;&#61;&#32;&#50;&#84;&#40;&#110;&#47;&#50;&#41;&#32;&#43;&#32;&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#41;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>Solving recurrences is a delicate art in general, but a wide class of recurrences are immediately solved by the flexible <a href=\"https:\/\/en.wikipedia.org\/wiki\/Master_theorem_(analysis_of_algorithms)\">master theorem for recurrences<\/a>. Appealing to this result, we deduce that the FFT requires <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-800578767f28f476120634527f8e2beb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#40;&#110;&#41;&#32;&#61;&#32;&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"139\" style=\"vertical-align: -5px;\"\/> operations. This is a dramatic improvement of the <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-a17728d9a037c0e8224076203a97b719_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#94;&#50;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"45\" style=\"vertical-align: -5px;\"\/> operations to compute <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b098488c07dffd9c1c505e45442f08bb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#110;&#32;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"31\" style=\"vertical-align: -3px;\"\/> directly using Eq. (1). This dramatic improvement in speed is what makes the FFT &#8220;fast&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Extending the FFT Idea<\/h2>\n\n\n\n<p>The FFT is a brilliant algorithm. It exploits the structure of the discrete Fourier transform problem Eq. (1) for dramatically lower operation counts. And as we shall see a taste of, the FFT is useful in a surprisingly broad range of applications. Given the success of the FFT, we are naturally led to the question: can we learn from our success with the FFT to develop fast algorithms for other problems?<\/p>\n\n\n\n<p>I think the FFT speaks to the power of a simple problem-solving strategy for numerical algorithm design<sup class=\"modern-footnotes-footnote \" data-mfn=\"6\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-6\">6<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-6\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"6\">As mentioned earlier, the FFT also exemplifies a typical design pattern in general (not necessarily numerical) algorithm design, the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Divide-and-conquer_algorithm\">divide-and-conquer<\/a> strategy. In the divide-and-conquer strategy, find a clever way of <em>dividing<\/em> a problem into multiple subproblems, <em>conquering<\/em> (solving) each, and then <em>recombining<\/em> the solutions to the subproblems into a solution of the larger problem. The challenge with such problems is often finding a way of doing the recombination step, which usually relies on some clever insight. Other instances of divide-and-conquer algorithms include <a href=\"https:\/\/en.wikipedia.org\/wiki\/Merge_sort\">merge sort<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Karatsuba_algorithm\">Karatsuba&#8217;s integer multiplication algorithm<\/a>.<\/span>: <em>whenever you have a linear transformation, write it as a matrix-vector product; whenever you have a matrix, write it down and see if there are any patterns.<\/em><sup class=\"modern-footnotes-footnote \" data-mfn=\"7\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-7\">7<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-7\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"7\">Often, rearranging the matrix will be necessary to see any patterns.<\/span> We often like to present mathematics with each step of a derivation follows almost effortlessly from the last from a firm basis of elegant mathematical intuition. Often, however, noticing patterns by staring at symbols on a page can be more effective than reasoning grounded in intuition. Once the pattern has been discovered, intuition and elegance sometimes will follow quickly behind.<\/p>\n\n\n\n<p>The most natural generalization of the FFT is the fast <em>inverse<\/em> discrete Fourier transform, providing a fast algorithm to compute the inverse discrete Fourier transform Eq. (2). The inverse FFT is quite an easy generalization of the FFT presented in the past section; it is a good exercise to see if you can mimic the development in the previous section to come up with this generalization yourself. The FFT can also be generalized to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Discrete_sine_transform\">other<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Discrete_cosine_transform\">discrete<\/a> trigonometric transforms and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Discrete_Fourier_transform#Multidimensional_DFT\">2D and 3D discrete Fourier transforms<\/a>.<\/p>\n\n\n\n<p>I want to consider a problem more tangentially related to the FFT, the evaluation of expressions of the form <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-4d65ab8f803bfeedb6018a364addff3b_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#40;&#65;&#32;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#66;&#41;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"106\" style=\"vertical-align: -5px;\"\/>, where <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-11f4f587954b361e7d78940f65b8d70d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#65;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"13\" style=\"vertical-align: 0px;\"\/> is an <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-d08c2f330a16da615892715b25b34ca6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#109;&#95;&#49;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#110;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"62\" style=\"vertical-align: -3px;\"\/> matrix, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-06d2c1a5a171b6d7d9c5df87d123c5a4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#66;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> is an <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-8a3405fffd951de2b03e47f7cbe230f5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#109;&#95;&#50;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#110;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"63\" style=\"vertical-align: -3px;\"\/> matrix, <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b312d649591164b7149ed0756f694a76_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\" style=\"vertical-align: 0px;\"\/> is a vector of length <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-bc6a18bb2518cd7faff56f207b82adb2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#95;&#49;&#110;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"36\" style=\"vertical-align: -3px;\"\/>, and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-42f3f44fd3485dd717d2d6ef570a41ca_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#116;&#105;&#109;&#101;&#115;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"13\" style=\"vertical-align: -2px;\"\/> denotes the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Kronecker_product\">Kronecker product<\/a>. For the unitiated, the Kronecker product of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-11f4f587954b361e7d78940f65b8d70d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#65;\" title=\"Rendered by QuickLaTeX.com\" height=\"13\" width=\"13\" style=\"vertical-align: 0px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-06d2c1a5a171b6d7d9c5df87d123c5a4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#66;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> is a <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fee4bc52be18762bdb9c8921936f73c1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#109;&#95;&#49;&#109;&#95;&#50;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#110;&#95;&#49;&#110;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"105\" style=\"vertical-align: -3px;\"\/> matrix defined as the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Block_matrix\">block matrix<\/a><\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 96px;\"><span class=\"ql-right-eqno\"> (11) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c6d51980c0d2bd23f60953a4d54cf384_l3.png\" height=\"96\" width=\"347\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#65;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#66;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#65;&#95;&#123;&#49;&#49;&#125;&#32;&#66;&#32;&#38;&#32;&#65;&#95;&#123;&#49;&#50;&#125;&#32;&#66;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#65;&#95;&#123;&#49;&#110;&#95;&#49;&#125;&#32;&#66;&#92;&#92; &#65;&#95;&#123;&#50;&#49;&#125;&#66;&#32;&#38;&#32;&#65;&#95;&#123;&#50;&#50;&#125;&#32;&#66;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#65;&#95;&#123;&#50;&#110;&#95;&#49;&#125;&#32;&#66;&#32;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#92;&#92; &#65;&#95;&#123;&#109;&#95;&#49;&#32;&#49;&#125;&#32;&#32;&#66;&#32;&#38;&#32;&#65;&#95;&#123;&#109;&#95;&#49;&#32;&#50;&#125;&#32;&#66;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#65;&#95;&#123;&#109;&#95;&#49;&#32;&#110;&#95;&#49;&#125;&#32;&#66;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>We could just form this <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-25fe9fd25819e494c338f382835a12c5_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#109;&#95;&#49;&#32;&#109;&#95;&#50;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#110;&#95;&#49;&#110;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"105\" style=\"vertical-align: -3px;\"\/> matrix and compute the matrix-vector product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e6303eb7b75e50d835a92ecde0d32756_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#40;&#65;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#66;&#41;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"106\" style=\"vertical-align: -5px;\"\/> directly, but this takes a hefty <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ba0f58b5eabbccc8dc72eb40dbac11c9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#109;&#95;&#49;&#109;&#95;&#50;&#110;&#95;&#49;&#110;&#95;&#50;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"110\" style=\"vertical-align: -5px;\"\/> operations.<sup class=\"modern-footnotes-footnote \" data-mfn=\"8\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-8\">8<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-8\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"8\">Equally or perhaps more problematically, this also takes <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ba0f58b5eabbccc8dc72eb40dbac11c9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#109;&#95;&#49;&#109;&#95;&#50;&#110;&#95;&#49;&#110;&#95;&#50;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"110\" style=\"vertical-align: -5px;\"\/> <em>space<\/em>.<\/span> We can do better.<\/p>\n\n\n\n<p>The insight is much the same as with the FFT: scaled copies of the matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-06d2c1a5a171b6d7d9c5df87d123c5a4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#66;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> are embedded in <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-f9d785ef037edbb58ebb2b4d67fc5a81_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#65;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#66;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"49\" style=\"vertical-align: -2px;\"\/>. In the FFT, we needed to rearrange the columns of the DFT matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fc65b83a9a8770b11591d92640853913_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"19\" style=\"vertical-align: -3px;\"\/> to see this; for the Kronecker product, this pattern is evident in the natural ordering. To exploit this fact, chunk the vectors <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b312d649591164b7149ed0756f694a76_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\" style=\"vertical-align: 0px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7506eeeff09aad3bcf6b7259302df451_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: -4px;\"\/> into pieces <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-4015484caae00d58cf7c133ec88175c9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;&#95;&#49;&#44;&#120;&#95;&#50;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#120;&#95;&#123;&#110;&#95;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"106\" style=\"vertical-align: -4px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-1c33dc0037740628a73eb01a9cf990df_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#95;&#49;&#44;&#121;&#95;&#50;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#121;&#95;&#123;&#109;&#95;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"106\" style=\"vertical-align: -4px;\"\/> of length <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6b7f2063200761d215847c410b3cecb9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"18\" style=\"vertical-align: -3px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7b65222f596bbcae98e908e2becc0e4c_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#109;&#95;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"11\" width=\"23\" style=\"vertical-align: -3px;\"\/> respectively so that our matrix vector product can be written as<sup class=\"modern-footnotes-footnote \" data-mfn=\"9\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-9\">9<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-9\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"9\">This way of writing this expression is referred to as a <a href=\"https:\/\/planetmath.org\/conformalpartitioning\">conformal partitioning<\/a> to indicate that one can multiply the block matrices using the ordinary <a href=\"https:\/\/en.wikipedia.org\/wiki\/Matrix_multiplication#Definition\">matrix product formula<\/a> treating the block entries as if they were simple numbers.<\/span>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 122px;\"><span class=\"ql-right-eqno\"> (12) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-618a396bd83905a1fc2a14dd2c41167d_l3.png\" height=\"122\" width=\"403\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#92;&#117;&#110;&#100;&#101;&#114;&#98;&#114;&#97;&#99;&#101;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#121;&#95;&#49;&#32;&#92;&#92;&#32;&#121;&#95;&#50;&#32;&#92;&#92;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#92;&#92;&#32;&#121;&#95;&#123;&#109;&#95;&#49;&#125;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#95;&#123;&#61;&#121;&#125;&#32;&#61;&#32;&#92;&#117;&#110;&#100;&#101;&#114;&#98;&#114;&#97;&#99;&#101;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#65;&#95;&#123;&#49;&#49;&#125;&#32;&#66;&#32;&#38;&#32;&#65;&#95;&#123;&#49;&#50;&#125;&#32;&#66;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#65;&#95;&#123;&#49;&#110;&#95;&#49;&#125;&#32;&#66;&#92;&#92; &#65;&#95;&#123;&#50;&#49;&#125;&#66;&#32;&#38;&#32;&#65;&#95;&#123;&#50;&#50;&#125;&#32;&#66;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#65;&#95;&#123;&#50;&#110;&#95;&#49;&#125;&#32;&#66;&#32;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#92;&#92; &#65;&#95;&#123;&#109;&#95;&#49;&#32;&#49;&#125;&#32;&#32;&#66;&#32;&#38;&#32;&#65;&#95;&#123;&#109;&#95;&#49;&#32;&#50;&#125;&#32;&#66;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#65;&#95;&#123;&#109;&#95;&#49;&#32;&#110;&#95;&#49;&#125;&#32;&#66;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#95;&#123;&#61;&#65;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#66;&#125;&#32;&#92;&#117;&#110;&#100;&#101;&#114;&#98;&#114;&#97;&#99;&#101;&#123;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#120;&#95;&#49;&#32;&#92;&#92;&#32;&#120;&#95;&#50;&#32;&#92;&#92;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#92;&#92;&#32;&#120;&#95;&#123;&#110;&#95;&#49;&#125;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#125;&#95;&#123;&#61;&#120;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>To compute this product efficiently, we proceed in two steps. First, we compute the products <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-5d778aeb02ca6b88504938bb9fd7c808_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#66;&#120;&#95;&#49;&#44;&#66;&#120;&#95;&#50;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#66;&#120;&#95;&#123;&#110;&#95;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"149\" style=\"vertical-align: -4px;\"\/> which takes time <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-4cab7d080663e46d027173049af1bcb9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#109;&#95;&#50;&#110;&#95;&#50;&#92;&#99;&#100;&#111;&#116;&#32;&#110;&#95;&#49;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"99\" style=\"vertical-align: -5px;\"\/> in total. Next, we compute each component <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-1d2a53fc942f56f6d5b1e60728b3b1c2_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#95;&#49;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#121;&#95;&#123;&#109;&#95;&#49;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"82\" style=\"vertical-align: -4px;\"\/> by using the formula<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 19px;\"><span class=\"ql-right-eqno\"> (13) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-4ce110a12742c1772bbb7c6c674b431c_l3.png\" height=\"19\" width=\"365\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#121;&#95;&#106;&#32;&#61;&#32;&#65;&#95;&#123;&#106;&#49;&#125;&#32;&#40;&#66;&#120;&#95;&#49;&#41;&#32;&#43;&#32;&#65;&#95;&#123;&#106;&#50;&#125;&#32;&#40;&#66;&#120;&#95;&#50;&#41;&#32;&#43;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#43;&#32;&#65;&#95;&#123;&#106;&#110;&#95;&#49;&#125;&#32;&#40;&#66;&#120;&#95;&#123;&#110;&#95;&#49;&#125;&#41;&#44; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>which takes a total of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-099062782d4d05b7fa9a525f5a07bf5b_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#109;&#95;&#49;&#32;&#110;&#95;&#49;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#109;&#95;&#50;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"104\" style=\"vertical-align: -5px;\"\/> operations to compute all the <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-606bf02a4a493047b48efc0080163350_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#95;&#106;\" title=\"Rendered by QuickLaTeX.com\" height=\"14\" width=\"15\" style=\"vertical-align: -6px;\"\/>&#8216;s. This leads to a total operation count of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-beac00ec43b1bb8c0b696cf7310c536a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#109;&#95;&#50;&#110;&#95;&#49;&#40;&#109;&#95;&#49;&#43;&#110;&#95;&#50;&#41;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"145\" style=\"vertical-align: -5px;\"\/> for computing the matrix-vector product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e6303eb7b75e50d835a92ecde0d32756_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#40;&#65;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#66;&#41;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"106\" style=\"vertical-align: -5px;\"\/>, much better than our earlier operation count of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ba0f58b5eabbccc8dc72eb40dbac11c9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#109;&#95;&#49;&#109;&#95;&#50;&#110;&#95;&#49;&#110;&#95;&#50;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"110\" style=\"vertical-align: -5px;\"\/>.<sup class=\"modern-footnotes-footnote \" data-mfn=\"10\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-10\">10<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-10\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"10\">There is another way of interpreting this algorithm. If we interpret <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b312d649591164b7149ed0756f694a76_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\" style=\"vertical-align: 0px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7506eeeff09aad3bcf6b7259302df451_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: -4px;\"\/> as the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vectorization_(mathematics)\">vectorization<\/a> of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3a470915698f19f719b33a23b62a9d08_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#95;&#50;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#110;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"57\" style=\"vertical-align: -3px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-714b7daf079aabe09ff082169296ae79_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#109;&#95;&#50;&#32;&#92;&#116;&#105;&#109;&#101;&#115;&#32;&#109;&#95;&#49;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"67\" style=\"vertical-align: -3px;\"\/> matrices <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ee8974e4adfbdab75fa43f4df80b4e5d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#88;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"16\" style=\"vertical-align: 0px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-58d456b42236adc71c7788a42a6c7884_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#89;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/>, then we have <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-245e299950ad22317ce6ec6b13ccaa2f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#89;&#32;&#61;&#32;&#66;&#88;&#65;&#94;&#92;&#116;&#111;&#112;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"91\" style=\"vertical-align: 0px;\"\/>. The algorithm we presented is equivalent to evaluating this matrix triple product in the order <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-f466cdc72480f0ecf63e0d7e3a8b2860_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#89;&#32;&#61;&#32;&#40;&#66;&#88;&#41;&#65;&#94;&#92;&#116;&#111;&#112;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"105\" style=\"vertical-align: -5px;\"\/>. This shows that this algorithm could be further accelerated using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Strassen_algorithm\">Strassen<\/a>&#8211;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Coppersmith\u2013Winograd_algorithm\">style<\/a> fast matrix multiplication algorithms.<\/span>\n\n\n\n<p>While this idea might seem quite far from the FFT, if one applies this idea iteratively, one can use this approach to rapidly evaluate a close cousin of the DFT called the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hadamard_transform\">Hadamard-Walsh transform<\/a>. Using the Kronecker product, the Hadamard-Walsh transform <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-77019817e85ae3f0e4e83622815c805e_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"13\" style=\"vertical-align: -4px;\"\/> of a vector <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> is defined to be<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 43px;\"><span class=\"ql-right-eqno\"> (14) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-44aa12a88de6329c19b291b7099cc1b6_l3.png\" height=\"43\" width=\"453\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#92;&#104;&#97;&#116;&#123;&#102;&#125;&#32;&#61;&#32;&#92;&#108;&#101;&#102;&#116;&#40;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#49;&#32;&#38;&#32;&#49;&#32;&#92;&#92;&#32;&#49;&#32;&#38;&#32;&#45;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#49;&#32;&#38;&#32;&#49;&#32;&#92;&#92;&#32;&#49;&#32;&#38;&#32;&#45;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#50;&#125;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#49;&#32;&#38;&#32;&#49;&#32;&#92;&#92;&#32;&#49;&#32;&#38;&#32;&#45;&#49;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#114;&#105;&#103;&#104;&#116;&#41;&#32;&#102;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>If one applies the Kronecker product trick we developed repeatedly, this gives an algorithm to evaluate the Hadamard-Walsh transform of a vector <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> of length <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> in <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e091d48e6c0f5cdaaf8494af69b515b3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#32;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/> operations, just like the FFT.<\/p>\n\n\n\n<p>The Hadamard-Walsh transform can be thought of as a generalization of the discrete Fourier transform to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Boolean_function\">Boolean functions<\/a>, which play an integral role in computer science. The applications of the Hadamard-Walsh transform are numerous and varied, from everything to <a href=\"http:\/\/analysisofbooleanfunctions.net\/\">voting systems<\/a> to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Grover%27s_algorithm\">quantum computing<\/a>. This is really just the tip of the iceberg. The ideas behind the FFT (and related ideas from the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fast_multipole_method\">fast multipole method<\/a>) allow for the rapid evaluation of a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hankel_transform\">large<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Discrete_wavelet_transform\">number<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Sine_and_cosine_transforms#Fourier_cosine_transform\">of<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Integral_transform\">transformations<\/a>, some of which are connected by <a href=\"https:\/\/onlinelibrary.wiley.com\/doi\/book\/10.1002\/9781118165621\">deep<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Sturm\u2013Liouville_theory\">general<\/a> theories.<\/p>\n\n\n\n<p>Resisting the temptation to delve into these interesting subjects in any more depth, we return to our main idea: <em>when presented with a linear transformation, write it as a matrix-vector product; whenever you have a matrix, write it down and see if there are any patterns.<\/em> The FFT exploits one such pattern, noticing that (after a reordering) a matrix contains many scaled copies of the same matrix. Rapidly evaluation expressions of the form <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e6303eb7b75e50d835a92ecde0d32756_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#40;&#65;&#92;&#111;&#116;&#105;&#109;&#101;&#115;&#32;&#66;&#41;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"106\" style=\"vertical-align: -5px;\"\/> involves an even simpler application of the same idea. But there are many other patterns that can be exploited: <a href=\"https:\/\/www.ethanepperly.com\/index.php\/2020\/07\/18\/big-ideas-in-applied-math-sparse-matrices\/\">sparsity<\/a>, <a href=\"https:\/\/arxiv.org\/abs\/1705.07474\">(approximate) low rank<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fast_multipole_method\">off-diagonal blocks approximately of low rank<\/a>, and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Fast_multipole_method\">displacement structure<\/a> are other examples. Very often in applied math, our problems have additional structure that can be exploited to solve problems much faster, and sometimes finding that structure is as easy as just trying to look for it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">An Application of the FFT<\/h2>\n\n\n\n<p>A discussion of the FFT would be incomplete without exploring at least one reason <em>why<\/em> you&#8217;d want to compute the discrete Fourier transform. To focus our attention, let us consider another linear algebraic calculation which appears to have no relation to the FFT on its face: computing a matrix-vector product with a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Toeplitz_matrix\">Toeplitz matrix<\/a>. A matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3396fa383714d552f2493eb05c1d04eb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"13\" style=\"vertical-align: 0px;\"\/> is said to be Toeplitz if it has the following structure:<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 120px;\"><span class=\"ql-right-eqno\"> (15) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-93668abe56732a8532ddffe676f7b262_l3.png\" height=\"120\" width=\"353\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#84;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#116;&#95;&#48;&#32;&#38;&#32;&#116;&#95;&#49;&#32;&#38;&#32;&#116;&#95;&#50;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#92;&#92;&#32;&#116;&#95;&#123;&#45;&#49;&#125;&#32;&#38;&#32;&#116;&#95;&#48;&#32;&#38;&#32;&#116;&#95;&#49;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#123;&#110;&#45;&#50;&#125;&#32;&#92;&#92; &#116;&#95;&#123;&#45;&#50;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#45;&#49;&#125;&#32;&#38;&#32;&#116;&#95;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#123;&#110;&#45;&#51;&#125;&#32;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#92;&#92; &#116;&#95;&#123;&#45;&#40;&#110;&#45;&#49;&#41;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#45;&#40;&#110;&#45;&#50;&#41;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#45;&#40;&#110;&#45;&#51;&#41;&#125;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#48;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>Toeplitz matrices and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Circulant_matrix\">their<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hankel_matrix\">relatives<\/a> appear widely across applications of applied mathematics including <a href=\"https:\/\/arc.aiaa.org\/doi\/abs\/10.2514\/3.20031?casa_token=JMqtghjFIGsAAAAA:ewJVRpnheBbUtRLvJIU3BK2RaAuW0KLWf7w4y0bRuUsVqZiu9ZWXdHnbFrTaQ8nC4rXByMLg0BzUkg\">control and systems theory<\/a>, <a href=\"https:\/\/ee.stanford.edu\/~gray\/toeplitz.pdf\">time series<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Discrete_Poisson_equation\">numerical partial differential equations<\/a>, and <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S1063520311000649\">signal processing<\/a>.<\/p>\n\n\n\n<p>We seek to compute the matrix-vector product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ce133497e8abfab0c3af9c06a1ae2e2d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#84;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"56\" style=\"vertical-align: -4px;\"\/>. Let us by considering a special case of a Toeplitz matrix, a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Circulant_matrix\">circulant matrix<\/a>. A circulant matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-52134c3741ef3371f17ceb962d0792f6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> has the form<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 117px;\"><span class=\"ql-right-eqno\"> (16) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-06f84995c49abdbcee472241af0b94ab_l3.png\" height=\"117\" width=\"232\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#99;&#95;&#48;&#32;&#38;&#32;&#99;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#99;&#95;&#123;&#110;&#45;&#50;&#125;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#99;&#95;&#49;&#32;&#92;&#92; &#99;&#95;&#49;&#32;&#38;&#32;&#99;&#95;&#48;&#32;&#38;&#32;&#99;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#99;&#95;&#50;&#92;&#92; &#99;&#95;&#50;&#32;&#38;&#32;&#99;&#95;&#49;&#32;&#38;&#32;&#99;&#95;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#99;&#95;&#51;&#32;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#92;&#92; &#99;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#99;&#95;&#123;&#110;&#45;&#50;&#125;&#32;&#38;&#32;&#99;&#95;&#123;&#110;&#45;&#51;&#125;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#99;&#95;&#48; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>By direct computation, the matrix-vector product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-33da1f36500e0b34d0fc3578472d9fc4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#67;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"57\" style=\"vertical-align: -4px;\"\/> is given by<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 56px;\"><span class=\"ql-right-eqno\"> (17) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-90b6a7c9afbb27a65e0882e3cf1f18db_l3.png\" height=\"56\" width=\"173\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#121;&#95;&#107;&#32;&#61;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#106;&#61;&#48;&#125;&#94;&#123;&#110;&#45;&#49;&#125;&#120;&#95;&#106;&#32;&#99;&#95;&#123;&#92;&#111;&#112;&#101;&#114;&#97;&#116;&#111;&#114;&#110;&#97;&#109;&#101;&#123;&#109;&#111;&#100;&#125;&#40;&#107;&#45;&#106;&#44;&#110;&#41;&#125;&#46; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n<p>A surprising and non-obvious fact is that the circulant matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-52134c3741ef3371f17ceb962d0792f6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/> is diagonalized by the discrete Fourier transform. Specifically, we have <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-016e67111994e5dabb7776afe828bbb8_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;&#32;&#61;&#32;&#70;&#95;&#110;&#94;&#42;&#32;&#92;&#111;&#112;&#101;&#114;&#97;&#116;&#111;&#114;&#110;&#97;&#109;&#101;&#123;&#100;&#105;&#97;&#103;&#125;&#40;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#32;&#70;&#95;&#110;&#32;&#99;&#41;&#32;&#70;&#95;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"182\" style=\"vertical-align: -5px;\"\/> where <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-6ddde805d4b0bb11375ab776785ecf0a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#99;&#61;&#40;&#99;&#95;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#99;&#95;&#123;&#110;&#45;&#49;&#125;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"133\" style=\"vertical-align: -5px;\"\/>. This gives a fast algorithm to compute <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-33da1f36500e0b34d0fc3578472d9fc4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#67;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"57\" style=\"vertical-align: -4px;\"\/> in time <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c08754413e1d82ace2f1ed8aed1140dd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/>: compute the DFTs of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b312d649591164b7149ed0756f694a76_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\" style=\"vertical-align: 0px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-97ef9906ba01e608975440d5f5812edb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#99;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"8\" style=\"vertical-align: 0px;\"\/> and multiply them together entrywise, take the inverse Fourier transform, and scale by <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-0bbb71c94391d90ce47d108084081941_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"25\" style=\"vertical-align: -4px;\"\/>.<\/p>\n\n\n<p>There is a connection with signal processing and differential equations that may help to shed light on why technique works for those familiar with those areas. In the signal processing context, the matrix-vector product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-33da1f36500e0b34d0fc3578472d9fc4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#67;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"57\" style=\"vertical-align: -4px;\"\/> can be interpreted as the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Convolution#Discrete_convolution\">discrete convolution<\/a> of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b312d649591164b7149ed0756f694a76_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\" style=\"vertical-align: 0px;\"\/> with <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-97ef9906ba01e608975440d5f5812edb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#99;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"8\" style=\"vertical-align: 0px;\"\/> (see Eq. (17)) which is a natural extension of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Convolution\">convolution<\/a> <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ab6c640766db0ef30f9fc99d29621355_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;&#42;&#32;&#103;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"36\" style=\"vertical-align: -4px;\"\/> of two functions <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c23e757cb6bd08fe194e942085387dcd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"10\" style=\"vertical-align: -4px;\"\/> and <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e78c32c3b1b71438b109dc59c7e00786_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#103;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: -4px;\"\/> on the real line. It is an important fact that <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Convolution#Convolution_theorem\">the Fourier transform of a convolution is the same as multiplication of the Fourier transforms<\/a><\/em>: <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-8f77a23ed45e580129c698c0e18e9844_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#119;&#105;&#100;&#101;&#104;&#97;&#116;&#123;&#102;&#32;&#42;&#32;&#103;&#125;&#32;&#61;&#32;&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#104;&#97;&#116;&#123;&#103;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"94\" style=\"vertical-align: -4px;\"\/> (up to a possible normalizing constant).<sup class=\"modern-footnotes-footnote \" data-mfn=\"11\" data-mfn-post-scope=\"00000000000005870000000000000000_479\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005870000000000000000_479-11\">11<\/a><\/sup><span id=\"mfn-content-00000000000005870000000000000000_479-11\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"11\">A related identity <a href=\"https:\/\/en.wikipedia.org\/wiki\/Laplace_transform#Properties_and_theorems\">also holds<\/a> for the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Laplace_transform\">Laplace transform.<\/a><\/span> The fact that the DFT diagonalizes a circulant matrix is just the analog of this fact for the discrete Fourier transform and the discrete convolution.<\/p>\n\n\n\n<p>This fast algorithm for circulant matrix-vector products is already extremely useful. One can naturally reframe the problems of multiplying integers and polynomials as discrete convolutions, which can then be computed rapidly by applying the <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c08754413e1d82ace2f1ed8aed1140dd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/> algorithm for fast circulant matrix-vector products. <a href=\"https:\/\/www.youtube.com\/watch?v=h7apO7q16V0\">This video<\/a> gives a great introduction to the FFT with this as its motivating application.<\/p>\n\n\n\n<p>Let&#8217;s summarize where we&#8217;re at. We are interested in computing the Toeplitz matrix-vector product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ce133497e8abfab0c3af9c06a1ae2e2d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#84;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"56\" style=\"vertical-align: -4px;\"\/>. We don&#8217;t know how to do this for a general Toeplitz matrix yet, but we can do it for a special Toeplitz matrix called a circulant matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-52134c3741ef3371f17ceb962d0792f6_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"14\" style=\"vertical-align: 0px;\"\/>. By use of the FFT, we can compute the circulant matrix-vector product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-33da1f36500e0b34d0fc3578472d9fc4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#67;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"57\" style=\"vertical-align: -4px;\"\/> in <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c08754413e1d82ace2f1ed8aed1140dd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/> operations.<\/p>\n\n\n\n<p>We can now leverage what we&#8217;ve done with circulant matrices to accelerate Toeplitz matrix-vector product. The trick is very simple: <em>embedding<\/em>. We construct a big circulant matrix which contains the Toeplitz matrix as a sub-matrix and then use multiplications by the bigger matrix to compute multiplications by the smaller matrix.<\/p>\n\n\n\n<p>Consider the following circulant matrix, which contains as <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3396fa383714d552f2493eb05c1d04eb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"13\" style=\"vertical-align: 0px;\"\/> as defined in Eq. (15) a sub-matrix in its top-left corner:<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 288px;\"><span class=\"ql-right-eqno\"> (18) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-a9960742ced94470c3d27140a8d1c2c2_l3.png\" height=\"288\" width=\"396\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#67;&#95;&#84;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#116;&#95;&#48;&#32;&#38;&#32;&#116;&#95;&#49;&#32;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115; &#92;&#92;&#32;&#116;&#95;&#123;&#45;&#49;&#125;&#32;&#38;&#32;&#116;&#95;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#123;&#110;&#45;&#50;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#92;&#100;&#100;&#111;&#116;&#115;&#92;&#92; &#116;&#95;&#123;&#45;&#40;&#110;&#45;&#49;&#41;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#45;&#40;&#110;&#45;&#50;&#41;&#125;&#32;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#48;&#32;&#38;&#32;&#116;&#95;&#49;&#32;&#38;&#32;&#116;&#95;&#50;&#38;&#92;&#99;&#100;&#111;&#116;&#115;&#92;&#92; &#48;&#32;&#38;&#32;&#116;&#95;&#123;&#45;&#40;&#110;&#45;&#49;&#41;&#125;&#38;&#92;&#99;&#100;&#111;&#116;&#115;&#38;&#116;&#95;&#123;&#45;&#49;&#125;&#32;&#38;&#32;&#116;&#95;&#48;&#32;&#38;&#32;&#116;&#95;&#49;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#116;&#95;&#123;&#45;&#50;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#45;&#49;&#125;&#32;&#38;&#32;&#116;&#95;&#48;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#92;&#100;&#100;&#111;&#116;&#115;&#92;&#92; &#48;&#32;&#38;&#32;&#48;&#32;&#38;&#92;&#99;&#100;&#111;&#116;&#115;&#38;&#38;&#38;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#92;&#92; &#116;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#38;&#38;&#38;&#38;&#92;&#99;&#100;&#111;&#116;&#115;&#92;&#92; &#116;&#95;&#123;&#110;&#45;&#50;&#125;&#32;&#38;&#32;&#116;&#95;&#123;&#110;&#45;&#49;&#125;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#38;&#38;&#38;&#92;&#99;&#100;&#111;&#116;&#115;&#92;&#92; &#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#100;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#92;&#118;&#100;&#111;&#116;&#115;&#32;&#38;&#92;&#100;&#100;&#111;&#116;&#115;&#92;&#92; &#116;&#95;&#49;&#32;&#38;&#32;&#116;&#95;&#50;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#48;&#32;&#38;&#32;&#92;&#99;&#100;&#111;&#116;&#115; &#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>This matrix is hard to write out, but essentially we pad the Toeplitz matrix with extra zeros to embed it into a circulant matrix. The &#8220;<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-97ef9906ba01e608975440d5f5812edb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#99;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"8\" style=\"vertical-align: 0px;\"\/>&#8221; vector for this larger circulant matrix is obtained from the parameters <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e5291c38bf0082efa22f6dc22ee324a4_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#116;&#95;&#48;&#44;&#116;&#95;&#123;&#92;&#112;&#109;&#32;&#49;&#125;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#116;&#95;&#123;&#92;&#112;&#109;&#32;&#40;&#110;&#45;&#49;&#41;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"20\" width=\"138\" style=\"vertical-align: -8px;\"\/> of the Toeplitz matrix Eq. (15) by <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-373f139a0095c81db8e76946d730d727_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#99;&#32;&#61;&#32;&#40;&#116;&#95;&#48;&#44;&#116;&#95;&#123;&#45;&#49;&#125;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#116;&#95;&#123;&#45;&#40;&#110;&#45;&#49;&#41;&#125;&#44;&#48;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#48;&#44;&#116;&#95;&#123;&#110;&#45;&#49;&#125;&#44;&#116;&#95;&#123;&#110;&#45;&#50;&#125;&#44;&#92;&#108;&#100;&#111;&#116;&#115;&#44;&#116;&#95;&#49;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"385\" style=\"vertical-align: -8px;\"\/>. <\/p>\n\n\n\n<p>Here comes another clever observation: we can choose the number of padding zeros used cleverly to make the size of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-9adf434f88397de3c3cd9de81c7a2ecd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;&#95;&#84;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"23\" style=\"vertical-align: -3px;\"\/> exactly equal to a power of two. This is useful because it allows us to compute matrix-vector products <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-0835d32918559287b1cfbe4170f6e3e1_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#119;&#61;&#67;&#95;&#84;&#122;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"69\" style=\"vertical-align: -3px;\"\/> with the power-of-two FFT described above, which we know is fast.<\/p>\n\n\n\n<p>Finally, let&#8217;s close the loop and use fast multiplications with <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-9adf434f88397de3c3cd9de81c7a2ecd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;&#95;&#84;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"23\" style=\"vertical-align: -3px;\"\/> to compute fast multiplications with <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3396fa383714d552f2493eb05c1d04eb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"13\" style=\"vertical-align: 0px;\"\/>. We wish to compute the product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ce133497e8abfab0c3af9c06a1ae2e2d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;&#32;&#61;&#32;&#84;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"56\" style=\"vertical-align: -4px;\"\/> fast. To do this, vector <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b312d649591164b7149ed0756f694a76_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"10\" style=\"vertical-align: 0px;\"\/> into a larger vector <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fab4c39805a4ffa76218c5524e1b6e66_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#122;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"9\" style=\"vertical-align: 0px;\"\/> by padding with zeros to get<\/p>\n\n\n<p><p class=\"ql-center-displayed-equation\" style=\"line-height: 42px;\"><span class=\"ql-right-eqno\"> (19) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-71af54fd5aa47839046772046bcce9a0_l3.png\" height=\"42\" width=\"203\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#67;&#95;&#84;&#32;&#122;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#84;&#32;&#38;&#32;&#92;&#115;&#116;&#97;&#114;&#32;&#92;&#92;&#32;&#92;&#115;&#116;&#97;&#114;&#32;&#38;&#32;&#92;&#115;&#116;&#97;&#114;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#120;&#32;&#92;&#92;&#32;&#48;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#61;&#32;&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#32;&#121;&#32;&#92;&#92;&#32;&#92;&#115;&#116;&#97;&#114;&#32;&#92;&#101;&#110;&#100;&#123;&#98;&#109;&#97;&#116;&#114;&#105;&#120;&#125;&#44; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p><\/p>\n\n\n<p>where we use <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-505180f187259820bc245c7f81e8a50a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#115;&#116;&#97;&#114;\" title=\"Rendered by QuickLaTeX.com\" height=\"9\" width=\"9\" style=\"vertical-align: 0px;\"\/> to denote matrix or vector entries which are immaterial to us. We compute <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-9c5919df34b616f78b509b0c3684d6df_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"23\" style=\"vertical-align: 0px;\"\/> by using our fast algorithm to compute <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3beba779ef31fe435fecd810e63f67ee_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#67;&#95;&#84;&#32;&#122;&#32;&#61;&#32;&#119;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"69\" style=\"vertical-align: -3px;\"\/> and then discarding everything but the first entries of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-8daecae168d2c5e4e901c89360b57724_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#119;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"13\" style=\"vertical-align: 0px;\"\/> to obtain <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7506eeeff09aad3bcf6b7259302df451_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#121;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"9\" style=\"vertical-align: -4px;\"\/>. If you&#8217;re careful to analyze how much padding we need to make this work, we see that this algorithm also takes only <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-e091d48e6c0f5cdaaf8494af69b515b3_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#32;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/> operations. Thus, we&#8217;ve completed our goal: we can compute Toeplitz matrix-vector products in a fast <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c08754413e1d82ace2f1ed8aed1140dd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/> operations.<\/p>\n\n\n\n<p>Finally, let us bring this full circle and see a delightfully self-referential use of this algorithm: we can use the FFT-accelerated fast Toeplitz matrix-vector multiply to compute DFT itself. Recall that the FFT algorithm we presented above was particularized to <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> which were powers of <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-b5fed14f2144ce9f7a2e7c6c1a9858d9_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"8\" style=\"vertical-align: 0px;\"\/>. There are natural generalizations of the along the lines of what we did above to more general <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> which are highly composite and possess many small prime factors. But what if we want to evaluate the DFT for <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> which is a large prime?<\/p>\n\n\n\n<p>Recall that the DFT matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fc65b83a9a8770b11591d92640853913_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"19\" style=\"vertical-align: -3px;\"\/> has <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-2856b7e953299adc57804ff87381ab26_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#106;&#107;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"18\" style=\"vertical-align: -4px;\"\/>th entry <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-18fd9d74d75130192df8ee0c33257b2a_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#40;&#70;&#95;&#110;&#41;&#95;&#123;&#106;&#107;&#125;&#32;&#61;&#32;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#106;&#107;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"29\" width=\"120\" style=\"vertical-align: -11px;\"\/>. We now employ a clever trick. Let <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ab69a4a7716bbf890e5f604a06fd1f13_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#68;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"15\" style=\"vertical-align: 0px;\"\/> be a diagonal matrix with the <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-7843bf01d6a27ac906ef1e5247b23a09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#106;&#106;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"17\" style=\"vertical-align: -4px;\"\/>th entry equal to <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-af5a187aa7ae63fd623783512f41ec7f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#45;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#106;&#94;&#50;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"30\" width=\"45\" style=\"vertical-align: -2px;\"\/>. Then, defining <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-eeb449c9f496f7eb8db11acc1c6de7c0_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#32;&#61;&#32;&#68;&#32;&#70;&#95;&#110;&#32;&#68;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"87\" style=\"vertical-align: -3px;\"\/>, we have that <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-fd0948a96440eff56a20acd9d8f1554f_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#95;&#123;&#106;&#107;&#125;&#32;&#61;&#32;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#45;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#106;&#94;&#50;&#32;&#43;&#32;&#106;&#107;&#32;&#45;&#32;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#32;&#107;&#94;&#50;&#125;&#32;&#61;&#32;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#115;&#113;&#114;&#116;&#123;&#110;&#125;&#125;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#95;&#110;&#94;&#123;&#45;&#92;&#116;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#50;&#125;&#40;&#106;&#45;&#107;&#41;&#94;&#50;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"39\" width=\"301\" style=\"vertical-align: -11px;\"\/>, which means <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3396fa383714d552f2493eb05c1d04eb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"13\" style=\"vertical-align: 0px;\"\/> is a Toeplitz matrix! (Writing out the matrix <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3396fa383714d552f2493eb05c1d04eb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"13\" style=\"vertical-align: 0px;\"\/> entrywise may be helpful to see this.)<\/p>\n\n\n\n<p>Thus, we can compute the DFT <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-ed22cb78e7a50a4f79cc65a2b6e9baca_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#32;&#61;&#32;&#70;&#95;&#110;&#32;&#102;\" title=\"Rendered by QuickLaTeX.com\" height=\"23\" width=\"65\" style=\"vertical-align: -4px;\"\/> for any size <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> by evaluating the DFT as <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-444087b9f21be777575603db26944a3d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#104;&#97;&#116;&#123;&#102;&#125;&#32;&#61;&#32;&#68;&#94;&#123;&#45;&#49;&#125;&#40;&#84;&#40;&#68;&#94;&#123;&#45;&#49;&#125;&#32;&#102;&#41;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"24\" width=\"152\" style=\"vertical-align: -5px;\"\/>, where the product <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-9c5919df34b616f78b509b0c3684d6df_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#120;\" title=\"Rendered by QuickLaTeX.com\" height=\"12\" width=\"23\" style=\"vertical-align: 0px;\"\/> is computed using the fast Toeplitz matrix-vector product. Since our fast Toeplitz matrix-vector product only requires us to evaluate power-of-two DFTs, this technique allows us to evaluate DFTs of arbitrary size <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> in only <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-c08754413e1d82ace2f1ed8aed1140dd_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#109;&#97;&#116;&#104;&#99;&#97;&#108;&#123;&#79;&#125;&#40;&#110;&#92;&#108;&#111;&#103;&#32;&#110;&#41;\" title=\"Rendered by QuickLaTeX.com\" height=\"19\" width=\"77\" style=\"vertical-align: -5px;\"\/> operations.<\/p>\n\n\n\n<p><strong>Upshot:<\/strong> The discrete Fourier transform (DFT) is an important computation which occurs all across applied mathematics. The fast Fourier transform (FFT) reduces the operation count of evaluating the DFT of a vector of length <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-75a5652acadcd645b180a972b75a9d09_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"8\" width=\"11\" style=\"vertical-align: 0px;\"\/> to proportional to <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-3b5f77a466177a06d750a74ed863a9aa_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#32;&#92;&#108;&#111;&#103;&#32;&#110;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"50\" style=\"vertical-align: -4px;\"\/>, down from proportional to <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ethanepperly.com\/wp-content\/ql-cache\/quicklatex.com-13686b36ed5e56ea6998abe1bc940995_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#110;&#94;&#50;\" title=\"Rendered by QuickLaTeX.com\" height=\"15\" width=\"18\" style=\"vertical-align: 0px;\"\/> for direct evaluation. The FFT is an example of a broader matrix algorithm design strategy of looking for patterns in the numbers in a matrix and exploiting these patterns to reduce computation. The FFT can often have surprising applications, such as allowing for rapid computations with Toeplitz matrices.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The famous law of the instrument states that &#8220;when all you have is a hammer, every problem looks like a nail.&#8221; In general, this tendency is undesirable: most problems in life are not nails and could better be addressed by a more appropriate tool. However, one can also review the law of the instrument in<a class=\"more-link\" href=\"https:\/\/www.ethanepperly.com\/index.php\/2021\/05\/10\/big-ideas-in-applied-math-the-fast-fourier-transform\/\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-479","post","type-post","status-publish","format-standard","hentry","category-big-ideas-in-applied-math"],"_links":{"self":[{"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/posts\/479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/comments?post=479"}],"version-history":[{"count":113,"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/posts\/479\/revisions"}],"predecessor-version":[{"id":677,"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/posts\/479\/revisions\/677"}],"wp:attachment":[{"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/media?parent=479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/categories?post=479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ethanepperly.com\/index.php\/wp-json\/wp\/v2\/tags?post=479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}