JuliaDSP/DSP.jl — pull request #5 by simonster (2013-12-01 04:13:57+00:00)
Title: Overlap-save FIR filtering

This is substantially faster than filt() when the filter is long. The function firfilt() heuristically chooses whether to use time domain or FFT-based filtering depending on the estimated speeds of the two techniques.

Implementation notes:

- fftfilt() computes the optimal chunk size for the FFT based on
average times on my computer for transforms of powers of 2 up to
2^28. There might be a way to get relative transform times from FFTW,
but if there is it doesn't seem to be documented.
- fftfilt() copies data to temporary arrays. It is in principle
possible to perform the transform in place if the chunks are
processed in reverse order, provided that the chunks will be 16-byte
aligned. I tried this and it wasn't substantially faster.