General size FFT