Fix up the FFT implementation so that it works with Complex (almost)