The Discrete Fourier Transform: Theory, Algorithms and Applications