1
{-# LANGUAGE ForeignFunctionInterface #-}
2
-----------------------------------------------------------------------------
4
Module : Numeric.GSL.Fourier
5
Copyright : (c) Alberto Ruiz 2006
8
Maintainer : Alberto Ruiz (aruiz at um dot es)
9
Stability : provisional
10
Portability : uses ffi
14
<http://www.gnu.org/software/gsl/manual/html_node/Fast-Fourier-Transforms.html#Fast-Fourier-Transforms>
17
-----------------------------------------------------------------------------
18
module Numeric.GSL.Fourier (
23
import Data.Packed.Internal
25
import Foreign.C.Types
26
import System.IO.Unsafe (unsafePerformIO)
28
genfft code v = unsafePerformIO $ do
29
r <- createVector (dim v)
30
app2 (c_fft code) vec v vec r "fft"
33
foreign import ccall unsafe "gsl-aux.h fft" c_fft :: CInt -> TCVCV
36
{- | Fast 1D Fourier transform of a 'Vector' @(@'Complex' 'Double'@)@ using /gsl_fft_complex_forward/. It uses the same scaling conventions as GNU Octave.
38
@> fft ('fromList' [1,2,3,4])
39
vector (4) [10.0 :+ 0.0,(-2.0) :+ 2.0,(-2.0) :+ 0.0,(-2.0) :+ (-2.0)]@
42
fft :: Vector (Complex Double) -> Vector (Complex Double)
45
-- | The inverse of 'fft', using /gsl_fft_complex_inverse/.
46
ifft :: Vector (Complex Double) -> Vector (Complex Double)