repa-fftw-3.2.3.1: Perform fft with repa via FFTW

Portabilityportable
Stabilityexperimental
Maintainer8c6794b6@gmail.com
Safe HaskellNone

Data.Array.Repa.FFTW

Contents

Description

Performs fft of repa array data via FFTW.

Currently supporting (Complex Double) arrays for dimensions DIM1, DIM2, and DIM3 only.

Synopsis

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

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.

FFT functions (3 dimension)

fft3d :: Array F DIM3 (Complex Double) -> Array F DIM3 (Complex Double)Source

Performs 3 dimension forward fft.

ifft3d :: Array F DIM3 (Complex Double) -> Array F DIM3 (Complex Double)Source

Performs 3 dimension inverse fft.