add FFT function