| Portability | portable | 
|---|---|
| Stability | experimental | 
| Maintainer | 8c6794b6@gmail.com | 
| Safe Haskell | None | 
Data.Array.Repa.FFTW
Contents
Description
- fft :: Array F DIM1 (Complex Double) -> Array F DIM1 (Complex Double)
 - ifft :: Array F DIM1 (Complex Double) -> Array F DIM1 (Complex Double)
 - fft2d :: Array F DIM2 (Complex Double) -> Array F DIM2 (Complex Double)
 - ifft2d :: Array F DIM2 (Complex Double) -> Array F DIM2 (Complex Double)
 - fft3d :: Array F DIM3 (Complex Double) -> Array F DIM3 (Complex Double)
 - ifft3d :: Array F DIM3 (Complex Double) -> Array F DIM3 (Complex Double)
 
Examples
Sample module:
import Data.Complex import Data.Array.Repa import Data.Array.Repa.Eval import Data.Array.Repa.Repr.ForeignPtr import Data.Array.Repa.FFTW a :: Array F DIM1 (Complex Double) a = fromList (Z :. 4) [i :+ 0 | i <- [0..3]]
Loading above in ghci:
>>>toList a[0.0 :+ 0.0,1.0 :+ 0.0,2.0 :+ 0.0,3.0 :+ 0.0]>>>toList $ fft a[6.0 :+ 0.0,(-2.0) :+ 2.0,(-2.0) :+ 0.0,(-2.0) :+ (-2.0)]>>>toList $ ifft $ fft a[0.0 :+ 0.0,1.0 :+ 0.0,2.0 :+ 0.0,3.0 :+ 0.0]
Multi dimension functions
Although FFTW library has more flexiblity, choice of dimensions in
multi-dimension FFT functions (fft2d, ifft2d ... etc) were using fixed
dimensions to perform FFTs. Those choices were made after fft2dP, fft3dP
functions from repa-algorithms package.
References
- fftw : http://www.fftw.org
 - fftw haskell binding : http://hackage.haskell.org/package/fft
 - repa-algorithms: http://hackage.haskell.org/package/repa-algorithms
 
FFT functions (1 dimension)
fft :: Array F DIM1 (Complex Double) -> Array F DIM1 (Complex Double)Source
Performs 1 dimension forward fft.
ifft :: Array F DIM1 (Complex Double) -> Array F DIM1 (Complex Double)Source
Performs 1 dimension inverse fft.
FFT functions (2 dimension)
fft2d :: Array F DIM2 (Complex Double) -> Array F DIM2 (Complex Double)Source
Performs 2 dimension forward fft.
ifft2d :: Array F DIM2 (Complex Double) -> Array F DIM2 (Complex Double)Source
Performs 2 dimension inverse fft.