module Numeric.FFT
( fft, ifft, fftWith, ifftWith
, plan, planFromFactors, execute
, Plan (..), Direction (..), BaseTransform (..)
) where
import Prelude hiding (length, map, sum, zipWith)
import Data.Vector.Generic
import Data.Complex
import Numeric.FFT.Types
import Numeric.FFT.Plan
import Numeric.FFT.Execute
fft :: Vector v (Complex Double) =>
v (Complex Double) -> IO (v (Complex Double))
fft xs = do
p <- plan $ length xs
return $ fftWith p xs
ifft :: Vector v (Complex Double) =>
v (Complex Double) -> IO (v (Complex Double))
ifft xs = do
p <- plan $ length xs
return $ ifftWith p xs
fftWith :: Vector v (Complex Double) =>
Plan -> v (Complex Double) -> v (Complex Double)
fftWith p = convert . execute p Forward . convert
ifftWith :: Vector v (Complex Double) =>
Plan -> v (Complex Double) -> v (Complex Double)
ifftWith p = convert . execute p Inverse . convert