The Goertzel Algorithm
eetimes.com
eetimes.com
I don't see how to perform a convolution with this algorithm, which I would be able to do if it was an FFT.
There are many algorithms for FFT that are faster, e.g. the split radix FFT, Gentleman and Sande's approach, the Matrix Fourier Algorithm and scores of variations on a theme. The article doesn't make clear whether this is one of them.
But for larger M, it's better to do the FFT, since that gives you back O(N) frequencies in O(NlogN) time - because of the tricks it can do with N if it's a power of 2.
with N if it's highly composite. See, e.g. http://www.fftw.org/ which works fairly well even for non-powers of 2.
As with everything, there are trade-offs associated with these three options.
I find it really interesting