Source: http://bender.astro.sunysb.edu/classes/numerical_methods/lectures/ffts.pdf