Source: https://courspython.com/fft-introduction.html.pdf