Portability | portable |
---|---|
Stability | experimental |
Maintainer | 8c6794b6@gmail.com |
Safe Haskell | None |
- 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.