Haskell FFT posts
- The Discrete Fourier Transform Introduction to the DFT and a naïve implementation. 
- Matrix factorisation The Cooley-Tukey approach to factorising Fourier matrices. 
- Cooley-Tukey for Powers of Two The “textbook” Cooley-Tukey algorithm for powers-of-two input lengths. 
- A Simple Application Audio filtering example. 
- Transforming Vectors of Arbitrary Lengths Extending the Cooley-Tukey idea to arbitrary input lengths. 
- Implementing the Mixed-Radix FFT Haskell code (and testing) for the arbitrary length Cooley-Tukey algorithm. 
- Where We’ve Got To, Where We’re Going Taking stock. 
- Benchmarking Experiments Benchmarking with Criterion, and a plan for optimisation. 
- Prime-Length FFT With Rader’s Algorithm Dealing with prime input lengths— some number theory, some group theory, and achieving $O(N \log N)$ scaling. 
- Building a package Code organisation. 
- Optimisation Part 1 Mutable vectors, unboxing. 
- Optimisation Part 2 Plan generation: heuristics and empirical plan selection. 
- Optimisation Part 3 Improvements to Rader’s algorithm, compiler flags, final benchmarking. 
- Wrap-up What we’ve done, lessons learned, what’s left to do.