-- | Radix-2 Decimation-In-Frequeny Fast Fourier Transformation of the given complex vector
--   The given vector must be power-of-two sized, (for example 2, 4, 8, 16, 32, etc.)
fft :: Pull1 (Complex Float) -> Pull1 (Complex Float)
fft v = bitRev steps $ fftCore steps v
    where steps = ilog2 (length v) - 1

-- | Radix-2 Decimation-In-Frequeny Inverse Fast Fourier Transformation of the given complex vector
--   The given vector must be power-of-two sized, (for example 2, 4, 8, 16, 32, etc.)
fft :: Pull1 (Complex Float) -> Pull1 (Complex Float)
fft v = bitRev steps $ fftCore steps v
    where steps = ilog2 (length v) - 1

-- | Radix-2 Decimation-In-Frequeny Inverse Fast Fourier Transformation of the given complex vector
--   The given vector must be power-of-two sized, (for example 2, 4, 8, 16, 32, etc.)
fft v = bitRev steps $ fftCore steps v
    where steps = ilog2 (length v) - 1

-- | Radix-2 Decimation-In-Frequeny Inverse Fast Fourier Transformation of the given complex vector
--   The given vector must be power-of-two sized, (for example 2, 4, 8, 16, 32, etc.)