{-# INCLUDE <bindings.dsl.h> #-}
{-# INCLUDE <gsl/gsl_fft.h> #-}
{-# INCLUDE <gsl/gsl_fft_complex_float.h> #-}
{-# INCLUDE <gsl/gsl_fft_complex.h> #-}
{-# INCLUDE <gsl/gsl_fft_halfcomplex_float.h> #-}
{-# INCLUDE <gsl/gsl_fft_halfcomplex.h> #-}
{-# INCLUDE <gsl/gsl_fft_real_float.h> #-}
{-# INCLUDE <gsl/gsl_fft_real.h> #-}
{-# LINE 1 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 2 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 3 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 4 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 5 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 6 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 7 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 8 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

{-# LINE 9 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

-- | <http://www.gnu.org/software/gsl/manual/html_node/Fast-Fourier-Transforms.html>

module Bindings.Gsl.FastFourierTransforms where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 14 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
import Bindings.Gsl.ComplexNumbers

type C'gsl_fft_direction = CInt

{-# LINE 17 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

c'gsl_fft_forward = -1
c'gsl_fft_forward :: (Num a) => a

{-# LINE 19 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
c'gsl_fft_backward = 1
c'gsl_fft_backward :: (Num a) => a

{-# LINE 20 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}


foreign import ccall "gsl_fft_complex_float_radix2_forward" c'gsl_fft_complex_float_radix2_forward
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_forward" p'gsl_fft_complex_float_radix2_forward
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt)

{-# LINE 23 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_radix2_backward" c'gsl_fft_complex_float_radix2_backward
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_backward" p'gsl_fft_complex_float_radix2_backward
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt)

{-# LINE 24 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_radix2_inverse" c'gsl_fft_complex_float_radix2_inverse
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_inverse" p'gsl_fft_complex_float_radix2_inverse
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt)

{-# LINE 25 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_radix2_transform" c'gsl_fft_complex_float_radix2_transform
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_transform" p'gsl_fft_complex_float_radix2_transform
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt)

{-# LINE 26 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_radix2_dif_forward" c'gsl_fft_complex_float_radix2_dif_forward
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_dif_forward" p'gsl_fft_complex_float_radix2_dif_forward
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt)

{-# LINE 27 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_radix2_dif_backward" c'gsl_fft_complex_float_radix2_dif_backward
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_dif_backward" p'gsl_fft_complex_float_radix2_dif_backward
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt)

{-# LINE 28 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_radix2_dif_inverse" c'gsl_fft_complex_float_radix2_dif_inverse
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_dif_inverse" p'gsl_fft_complex_float_radix2_dif_inverse
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> IO CInt)

{-# LINE 29 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_radix2_dif_transform" c'gsl_fft_complex_float_radix2_dif_transform
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt
foreign import ccall "&gsl_fft_complex_float_radix2_dif_transform" p'gsl_fft_complex_float_radix2_dif_transform
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt)

{-# LINE 30 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

data C'gsl_fft_complex_wavetable_float = C'gsl_fft_complex_wavetable_float{
{-# LINE 32 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_complex_wavetable_float'n :: CSize
{-# LINE 33 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable_float'nf :: CSize
{-# LINE 34 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable_float'factor :: [CSize]
{-# LINE 35 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable_float'twiddle :: [Ptr C'gsl_complex_float]
{-# LINE 36 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable_float'trig :: Ptr C'gsl_complex_float
{-# LINE 37 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_complex_wavetable_float where
  sizeOf _ = 524
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekArray 64 (plusPtr p 8)
    v3 <- peekArray 64 (plusPtr p 264)
    v4 <- peekByteOff p 520
    return $ C'gsl_fft_complex_wavetable_float v0 v1 v2 v3 v4
  poke p (C'gsl_fft_complex_wavetable_float v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeArray (plusPtr p 8) (take 64 v2)
    pokeArray (plusPtr p 264) (take 64 v3)
    pokeByteOff p 520 v4
    return ()

{-# LINE 38 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}


data C'gsl_fft_complex_workspace_float = C'gsl_fft_complex_workspace_float{
{-# LINE 41 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_complex_workspace_float'n :: CSize
{-# LINE 42 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_workspace_float'scratch :: Ptr CFloat
{-# LINE 43 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_complex_workspace_float where
  sizeOf _ = 8
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    return $ C'gsl_fft_complex_workspace_float v0 v1
  poke p (C'gsl_fft_complex_workspace_float v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    return ()

{-# LINE 44 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

foreign import ccall "gsl_fft_complex_wavetable_float_alloc" c'gsl_fft_complex_wavetable_float_alloc
  :: CSize -> IO (Ptr C'gsl_fft_complex_wavetable_float)
foreign import ccall "&gsl_fft_complex_wavetable_float_alloc" p'gsl_fft_complex_wavetable_float_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_complex_wavetable_float))

{-# LINE 46 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_wavetable_float_free" c'gsl_fft_complex_wavetable_float_free
  :: Ptr C'gsl_fft_complex_wavetable_float -> IO ()
foreign import ccall "&gsl_fft_complex_wavetable_float_free" p'gsl_fft_complex_wavetable_float_free
  :: FunPtr (Ptr C'gsl_fft_complex_wavetable_float -> IO ())

{-# LINE 47 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_workspace_float_alloc" c'gsl_fft_complex_workspace_float_alloc
  :: CSize -> IO (Ptr C'gsl_fft_complex_workspace_float)
foreign import ccall "&gsl_fft_complex_workspace_float_alloc" p'gsl_fft_complex_workspace_float_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_complex_workspace_float))

{-# LINE 48 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_workspace_float_free" c'gsl_fft_complex_workspace_float_free
  :: Ptr C'gsl_fft_complex_workspace_float -> IO ()
foreign import ccall "&gsl_fft_complex_workspace_float_free" p'gsl_fft_complex_workspace_float_free
  :: FunPtr (Ptr C'gsl_fft_complex_workspace_float -> IO ())

{-# LINE 49 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_memcpy" c'gsl_fft_complex_float_memcpy
  :: Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_wavetable_float -> IO CInt
foreign import ccall "&gsl_fft_complex_float_memcpy" p'gsl_fft_complex_float_memcpy
  :: FunPtr (Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_wavetable_float -> IO CInt)

{-# LINE 50 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_forward" c'gsl_fft_complex_float_forward
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> IO CInt
foreign import ccall "&gsl_fft_complex_float_forward" p'gsl_fft_complex_float_forward
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> IO CInt)

{-# LINE 51 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_backward" c'gsl_fft_complex_float_backward
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> IO CInt
foreign import ccall "&gsl_fft_complex_float_backward" p'gsl_fft_complex_float_backward
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> IO CInt)

{-# LINE 52 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_inverse" c'gsl_fft_complex_float_inverse
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> IO CInt
foreign import ccall "&gsl_fft_complex_float_inverse" p'gsl_fft_complex_float_inverse
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> IO CInt)

{-# LINE 53 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_float_transform" c'gsl_fft_complex_float_transform
  :: C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> C'gsl_fft_direction -> IO CInt
foreign import ccall "&gsl_fft_complex_float_transform" p'gsl_fft_complex_float_transform
  :: FunPtr (C'gsl_complex_packed_array_float -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable_float -> Ptr C'gsl_fft_complex_workspace_float -> C'gsl_fft_direction -> IO CInt)

{-# LINE 54 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_forward" c'gsl_fft_complex_radix2_forward
  :: C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_forward" p'gsl_fft_complex_radix2_forward
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt)

{-# LINE 55 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_backward" c'gsl_fft_complex_radix2_backward
  :: C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_backward" p'gsl_fft_complex_radix2_backward
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt)

{-# LINE 56 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_inverse" c'gsl_fft_complex_radix2_inverse
  :: C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_inverse" p'gsl_fft_complex_radix2_inverse
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt)

{-# LINE 57 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_transform" c'gsl_fft_complex_radix2_transform
  :: C'gsl_complex_packed_array -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_transform" p'gsl_fft_complex_radix2_transform
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt)

{-# LINE 58 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_dif_forward" c'gsl_fft_complex_radix2_dif_forward
  :: C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_dif_forward" p'gsl_fft_complex_radix2_dif_forward
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt)

{-# LINE 59 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_dif_backward" c'gsl_fft_complex_radix2_dif_backward
  :: C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_dif_backward" p'gsl_fft_complex_radix2_dif_backward
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt)

{-# LINE 60 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_dif_inverse" c'gsl_fft_complex_radix2_dif_inverse
  :: C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_dif_inverse" p'gsl_fft_complex_radix2_dif_inverse
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> IO CInt)

{-# LINE 61 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_radix2_dif_transform" c'gsl_fft_complex_radix2_dif_transform
  :: C'gsl_complex_packed_array -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt
foreign import ccall "&gsl_fft_complex_radix2_dif_transform" p'gsl_fft_complex_radix2_dif_transform
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> C'gsl_fft_direction -> IO CInt)

{-# LINE 62 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

data C'gsl_fft_complex_wavetable = C'gsl_fft_complex_wavetable{
{-# LINE 64 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_complex_wavetable'n :: CSize
{-# LINE 65 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable'nf :: CSize
{-# LINE 66 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable'factor :: [CSize]
{-# LINE 67 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable'twiddle :: [Ptr C'gsl_complex]
{-# LINE 68 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_wavetable'trig :: Ptr C'gsl_complex
{-# LINE 69 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_complex_wavetable where
  sizeOf _ = 524
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekArray 64 (plusPtr p 8)
    v3 <- peekArray 64 (plusPtr p 264)
    v4 <- peekByteOff p 520
    return $ C'gsl_fft_complex_wavetable v0 v1 v2 v3 v4
  poke p (C'gsl_fft_complex_wavetable v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeArray (plusPtr p 8) (take 64 v2)
    pokeArray (plusPtr p 264) (take 64 v3)
    pokeByteOff p 520 v4
    return ()

{-# LINE 70 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}


data C'gsl_fft_complex_workspace = C'gsl_fft_complex_workspace{
{-# LINE 73 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_complex_workspace'n :: CSize
{-# LINE 74 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_complex_workspace'scratch :: Ptr CDouble
{-# LINE 75 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_complex_workspace where
  sizeOf _ = 8
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    return $ C'gsl_fft_complex_workspace v0 v1
  poke p (C'gsl_fft_complex_workspace v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    return ()

{-# LINE 76 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

foreign import ccall "gsl_fft_complex_wavetable_alloc" c'gsl_fft_complex_wavetable_alloc
  :: CSize -> IO (Ptr C'gsl_fft_complex_wavetable)
foreign import ccall "&gsl_fft_complex_wavetable_alloc" p'gsl_fft_complex_wavetable_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_complex_wavetable))

{-# LINE 78 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_wavetable_free" c'gsl_fft_complex_wavetable_free
  :: Ptr C'gsl_fft_complex_wavetable -> IO ()
foreign import ccall "&gsl_fft_complex_wavetable_free" p'gsl_fft_complex_wavetable_free
  :: FunPtr (Ptr C'gsl_fft_complex_wavetable -> IO ())

{-# LINE 79 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_workspace_alloc" c'gsl_fft_complex_workspace_alloc
  :: CSize -> IO (Ptr C'gsl_fft_complex_workspace)
foreign import ccall "&gsl_fft_complex_workspace_alloc" p'gsl_fft_complex_workspace_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_complex_workspace))

{-# LINE 80 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_workspace_free" c'gsl_fft_complex_workspace_free
  :: Ptr C'gsl_fft_complex_workspace -> IO ()
foreign import ccall "&gsl_fft_complex_workspace_free" p'gsl_fft_complex_workspace_free
  :: FunPtr (Ptr C'gsl_fft_complex_workspace -> IO ())

{-# LINE 81 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_memcpy" c'gsl_fft_complex_memcpy
  :: Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_wavetable -> IO CInt
foreign import ccall "&gsl_fft_complex_memcpy" p'gsl_fft_complex_memcpy
  :: FunPtr (Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_wavetable -> IO CInt)

{-# LINE 82 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_forward" c'gsl_fft_complex_forward
  :: C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> IO CInt
foreign import ccall "&gsl_fft_complex_forward" p'gsl_fft_complex_forward
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> IO CInt)

{-# LINE 83 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_backward" c'gsl_fft_complex_backward
  :: C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> IO CInt
foreign import ccall "&gsl_fft_complex_backward" p'gsl_fft_complex_backward
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> IO CInt)

{-# LINE 84 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_inverse" c'gsl_fft_complex_inverse
  :: C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> IO CInt
foreign import ccall "&gsl_fft_complex_inverse" p'gsl_fft_complex_inverse
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> IO CInt)

{-# LINE 85 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_complex_transform" c'gsl_fft_complex_transform
  :: C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> C'gsl_fft_direction -> IO CInt
foreign import ccall "&gsl_fft_complex_transform" p'gsl_fft_complex_transform
  :: FunPtr (C'gsl_complex_packed_array -> CSize -> CSize -> Ptr C'gsl_fft_complex_wavetable -> Ptr C'gsl_fft_complex_workspace -> C'gsl_fft_direction -> IO CInt)

{-# LINE 86 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_radix2_backward" c'gsl_fft_halfcomplex_float_radix2_backward
  :: Ptr CFloat -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_radix2_backward" p'gsl_fft_halfcomplex_float_radix2_backward
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> IO CInt)

{-# LINE 87 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_radix2_inverse" c'gsl_fft_halfcomplex_float_radix2_inverse
  :: Ptr CFloat -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_radix2_inverse" p'gsl_fft_halfcomplex_float_radix2_inverse
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> IO CInt)

{-# LINE 88 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_radix2_transform" c'gsl_fft_halfcomplex_float_radix2_transform
  :: Ptr CFloat -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_radix2_transform" p'gsl_fft_halfcomplex_float_radix2_transform
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> IO CInt)

{-# LINE 89 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

data C'gsl_fft_halfcomplex_wavetable_float = C'gsl_fft_halfcomplex_wavetable_float{
{-# LINE 91 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_halfcomplex_wavetable_float'twiddle :: [Ptr C'gsl_complex_float]
{-# LINE 92 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable_float'n :: CSize
{-# LINE 93 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable_float'nf :: CSize
{-# LINE 94 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable_float'factor :: [CSize]
{-# LINE 95 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable_float'trig :: Ptr C'gsl_complex_float
{-# LINE 96 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_halfcomplex_wavetable_float where
  sizeOf _ = 524
  alignment = sizeOf
  peek p = do
    v0 <- peekArray 64 (plusPtr p 264)
    v1 <- peekByteOff p 0
    v2 <- peekByteOff p 4
    v3 <- peekArray 64 (plusPtr p 8)
    v4 <- peekByteOff p 520
    return $ C'gsl_fft_halfcomplex_wavetable_float v0 v1 v2 v3 v4
  poke p (C'gsl_fft_halfcomplex_wavetable_float v0 v1 v2 v3 v4) = do
    pokeArray (plusPtr p 264) (take 64 v0)
    pokeByteOff p 0 v1
    pokeByteOff p 4 v2
    pokeArray (plusPtr p 8) (take 64 v3)
    pokeByteOff p 520 v4
    return ()

{-# LINE 97 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

foreign import ccall "gsl_fft_halfcomplex_wavetable_float_alloc" c'gsl_fft_halfcomplex_wavetable_float_alloc
  :: CSize -> IO (Ptr C'gsl_fft_halfcomplex_wavetable_float)
foreign import ccall "&gsl_fft_halfcomplex_wavetable_float_alloc" p'gsl_fft_halfcomplex_wavetable_float_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_halfcomplex_wavetable_float))

{-# LINE 99 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_wavetable_float_free" c'gsl_fft_halfcomplex_wavetable_float_free
  :: Ptr C'gsl_fft_halfcomplex_wavetable_float -> IO ()
foreign import ccall "&gsl_fft_halfcomplex_wavetable_float_free" p'gsl_fft_halfcomplex_wavetable_float_free
  :: FunPtr (Ptr C'gsl_fft_halfcomplex_wavetable_float -> IO ())

{-# LINE 100 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_backward" c'gsl_fft_halfcomplex_float_backward
  :: Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_backward" p'gsl_fft_halfcomplex_float_backward
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt)

{-# LINE 101 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_inverse" c'gsl_fft_halfcomplex_float_inverse
  :: Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_inverse" p'gsl_fft_halfcomplex_float_inverse
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt)

{-# LINE 102 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_transform" c'gsl_fft_halfcomplex_float_transform
  :: Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_transform" p'gsl_fft_halfcomplex_float_transform
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt)

{-# LINE 103 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_unpack" c'gsl_fft_halfcomplex_float_unpack
  :: Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_unpack" p'gsl_fft_halfcomplex_float_unpack
  :: FunPtr (Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt)

{-# LINE 104 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_float_radix2_unpack" c'gsl_fft_halfcomplex_float_radix2_unpack
  :: Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_float_radix2_unpack" p'gsl_fft_halfcomplex_float_radix2_unpack
  :: FunPtr (Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt)

{-# LINE 105 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_radix2_backward" c'gsl_fft_halfcomplex_radix2_backward
  :: Ptr CDouble -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_radix2_backward" p'gsl_fft_halfcomplex_radix2_backward
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> IO CInt)

{-# LINE 106 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_radix2_inverse" c'gsl_fft_halfcomplex_radix2_inverse
  :: Ptr CDouble -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_radix2_inverse" p'gsl_fft_halfcomplex_radix2_inverse
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> IO CInt)

{-# LINE 107 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_radix2_transform" c'gsl_fft_halfcomplex_radix2_transform
  :: Ptr CDouble -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_radix2_transform" p'gsl_fft_halfcomplex_radix2_transform
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> IO CInt)

{-# LINE 108 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

data C'gsl_fft_halfcomplex_wavetable = C'gsl_fft_halfcomplex_wavetable{
{-# LINE 110 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_halfcomplex_wavetable'n :: CSize
{-# LINE 111 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable'nf :: CSize
{-# LINE 112 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable'factor :: [CSize]
{-# LINE 113 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable'twiddle :: [Ptr C'gsl_complex]
{-# LINE 114 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_halfcomplex_wavetable'trig :: Ptr C'gsl_complex
{-# LINE 115 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_halfcomplex_wavetable where
  sizeOf _ = 524
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekArray 64 (plusPtr p 8)
    v3 <- peekArray 64 (plusPtr p 264)
    v4 <- peekByteOff p 520
    return $ C'gsl_fft_halfcomplex_wavetable v0 v1 v2 v3 v4
  poke p (C'gsl_fft_halfcomplex_wavetable v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeArray (plusPtr p 8) (take 64 v2)
    pokeArray (plusPtr p 264) (take 64 v3)
    pokeByteOff p 520 v4
    return ()

{-# LINE 116 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

foreign import ccall "gsl_fft_halfcomplex_wavetable_alloc" c'gsl_fft_halfcomplex_wavetable_alloc
  :: CSize -> IO (Ptr C'gsl_fft_halfcomplex_wavetable)
foreign import ccall "&gsl_fft_halfcomplex_wavetable_alloc" p'gsl_fft_halfcomplex_wavetable_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_halfcomplex_wavetable))

{-# LINE 118 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_wavetable_free" c'gsl_fft_halfcomplex_wavetable_free
  :: Ptr C'gsl_fft_halfcomplex_wavetable -> IO ()
foreign import ccall "&gsl_fft_halfcomplex_wavetable_free" p'gsl_fft_halfcomplex_wavetable_free
  :: FunPtr (Ptr C'gsl_fft_halfcomplex_wavetable -> IO ())

{-# LINE 119 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_backward" c'gsl_fft_halfcomplex_backward
  :: Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_backward" p'gsl_fft_halfcomplex_backward
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt)

{-# LINE 120 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_inverse" c'gsl_fft_halfcomplex_inverse
  :: Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_inverse" p'gsl_fft_halfcomplex_inverse
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt)

{-# LINE 121 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_transform" c'gsl_fft_halfcomplex_transform
  :: Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_transform" p'gsl_fft_halfcomplex_transform
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_halfcomplex_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt)

{-# LINE 122 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_unpack" c'gsl_fft_halfcomplex_unpack
  :: Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_unpack" p'gsl_fft_halfcomplex_unpack
  :: FunPtr (Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt)

{-# LINE 123 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_halfcomplex_radix2_unpack" c'gsl_fft_halfcomplex_radix2_unpack
  :: Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_halfcomplex_radix2_unpack" p'gsl_fft_halfcomplex_radix2_unpack
  :: FunPtr (Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt)

{-# LINE 124 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_float_radix2_transform" c'gsl_fft_real_float_radix2_transform
  :: Ptr CFloat -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_real_float_radix2_transform" p'gsl_fft_real_float_radix2_transform
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> IO CInt)

{-# LINE 125 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

data C'gsl_fft_real_wavetable_float = C'gsl_fft_real_wavetable_float{
{-# LINE 127 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_real_wavetable_float'n :: CSize
{-# LINE 128 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable_float'nf :: CSize
{-# LINE 129 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable_float'factor :: [CSize]
{-# LINE 130 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable_float'twiddle :: [Ptr C'gsl_complex_float]
{-# LINE 131 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable_float'trig :: Ptr C'gsl_complex_float
{-# LINE 132 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_real_wavetable_float where
  sizeOf _ = 524
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekArray 64 (plusPtr p 8)
    v3 <- peekArray 64 (plusPtr p 264)
    v4 <- peekByteOff p 520
    return $ C'gsl_fft_real_wavetable_float v0 v1 v2 v3 v4
  poke p (C'gsl_fft_real_wavetable_float v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeArray (plusPtr p 8) (take 64 v2)
    pokeArray (plusPtr p 264) (take 64 v3)
    pokeByteOff p 520 v4
    return ()

{-# LINE 133 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}


data C'gsl_fft_real_workspace_float = C'gsl_fft_real_workspace_float{
{-# LINE 136 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_real_workspace_float'n :: CSize
{-# LINE 137 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_workspace_float'scratch :: Ptr CFloat
{-# LINE 138 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_real_workspace_float where
  sizeOf _ = 8
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    return $ C'gsl_fft_real_workspace_float v0 v1
  poke p (C'gsl_fft_real_workspace_float v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    return ()

{-# LINE 139 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

foreign import ccall "gsl_fft_real_wavetable_float_alloc" c'gsl_fft_real_wavetable_float_alloc
  :: CSize -> IO (Ptr C'gsl_fft_real_wavetable_float)
foreign import ccall "&gsl_fft_real_wavetable_float_alloc" p'gsl_fft_real_wavetable_float_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_real_wavetable_float))

{-# LINE 141 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_wavetable_float_free" c'gsl_fft_real_wavetable_float_free
  :: Ptr C'gsl_fft_real_wavetable_float -> IO ()
foreign import ccall "&gsl_fft_real_wavetable_float_free" p'gsl_fft_real_wavetable_float_free
  :: FunPtr (Ptr C'gsl_fft_real_wavetable_float -> IO ())

{-# LINE 142 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_workspace_float_alloc" c'gsl_fft_real_workspace_float_alloc
  :: CSize -> IO (Ptr C'gsl_fft_real_workspace_float)
foreign import ccall "&gsl_fft_real_workspace_float_alloc" p'gsl_fft_real_workspace_float_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_real_workspace_float))

{-# LINE 143 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_workspace_float_free" c'gsl_fft_real_workspace_float_free
  :: Ptr C'gsl_fft_real_workspace_float -> IO ()
foreign import ccall "&gsl_fft_real_workspace_float_free" p'gsl_fft_real_workspace_float_free
  :: FunPtr (Ptr C'gsl_fft_real_workspace_float -> IO ())

{-# LINE 144 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_float_transform" c'gsl_fft_real_float_transform
  :: Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_real_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt
foreign import ccall "&gsl_fft_real_float_transform" p'gsl_fft_real_float_transform
  :: FunPtr (Ptr CFloat -> CSize -> CSize -> Ptr C'gsl_fft_real_wavetable_float -> Ptr C'gsl_fft_real_workspace_float -> IO CInt)

{-# LINE 145 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_float_unpack" c'gsl_fft_real_float_unpack
  :: Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_real_float_unpack" p'gsl_fft_real_float_unpack
  :: FunPtr (Ptr CFloat -> Ptr CFloat -> CSize -> CSize -> IO CInt)

{-# LINE 146 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_radix2_transform" c'gsl_fft_real_radix2_transform
  :: Ptr CDouble -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_real_radix2_transform" p'gsl_fft_real_radix2_transform
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> IO CInt)

{-# LINE 147 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

data C'gsl_fft_real_wavetable = C'gsl_fft_real_wavetable{
{-# LINE 149 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_real_wavetable'n :: CSize
{-# LINE 150 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable'nf :: CSize
{-# LINE 151 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable'factor :: [CSize]
{-# LINE 152 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable'twiddle :: [Ptr C'gsl_complex]
{-# LINE 153 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_wavetable'trig :: Ptr C'gsl_complex
{-# LINE 154 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_real_wavetable where
  sizeOf _ = 524
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    v2 <- peekArray 64 (plusPtr p 8)
    v3 <- peekArray 64 (plusPtr p 264)
    v4 <- peekByteOff p 520
    return $ C'gsl_fft_real_wavetable v0 v1 v2 v3 v4
  poke p (C'gsl_fft_real_wavetable v0 v1 v2 v3 v4) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    pokeArray (plusPtr p 8) (take 64 v2)
    pokeArray (plusPtr p 264) (take 64 v3)
    pokeByteOff p 520 v4
    return ()

{-# LINE 155 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}


data C'gsl_fft_real_workspace = C'gsl_fft_real_workspace{
{-# LINE 158 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

  c'gsl_fft_real_workspace'n :: CSize
{-# LINE 159 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
,
  c'gsl_fft_real_workspace'scratch :: Ptr CDouble
{-# LINE 160 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

 } deriving (Eq,Show)
instance Storable C'gsl_fft_real_workspace where
  sizeOf _ = 8
  alignment = sizeOf
  peek p = do
    v0 <- peekByteOff p 0
    v1 <- peekByteOff p 4
    return $ C'gsl_fft_real_workspace v0 v1
  poke p (C'gsl_fft_real_workspace v0 v1) = do
    pokeByteOff p 0 v0
    pokeByteOff p 4 v1
    return ()

{-# LINE 161 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}

foreign import ccall "gsl_fft_real_wavetable_alloc" c'gsl_fft_real_wavetable_alloc
  :: CSize -> IO (Ptr C'gsl_fft_real_wavetable)
foreign import ccall "&gsl_fft_real_wavetable_alloc" p'gsl_fft_real_wavetable_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_real_wavetable))

{-# LINE 163 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_wavetable_free" c'gsl_fft_real_wavetable_free
  :: Ptr C'gsl_fft_real_wavetable -> IO ()
foreign import ccall "&gsl_fft_real_wavetable_free" p'gsl_fft_real_wavetable_free
  :: FunPtr (Ptr C'gsl_fft_real_wavetable -> IO ())

{-# LINE 164 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_workspace_alloc" c'gsl_fft_real_workspace_alloc
  :: CSize -> IO (Ptr C'gsl_fft_real_workspace)
foreign import ccall "&gsl_fft_real_workspace_alloc" p'gsl_fft_real_workspace_alloc
  :: FunPtr (CSize -> IO (Ptr C'gsl_fft_real_workspace))

{-# LINE 165 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_workspace_free" c'gsl_fft_real_workspace_free
  :: Ptr C'gsl_fft_real_workspace -> IO ()
foreign import ccall "&gsl_fft_real_workspace_free" p'gsl_fft_real_workspace_free
  :: FunPtr (Ptr C'gsl_fft_real_workspace -> IO ())

{-# LINE 166 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_transform" c'gsl_fft_real_transform
  :: Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_real_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt
foreign import ccall "&gsl_fft_real_transform" p'gsl_fft_real_transform
  :: FunPtr (Ptr CDouble -> CSize -> CSize -> Ptr C'gsl_fft_real_wavetable -> Ptr C'gsl_fft_real_workspace -> IO CInt)

{-# LINE 167 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}
foreign import ccall "gsl_fft_real_unpack" c'gsl_fft_real_unpack
  :: Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt
foreign import ccall "&gsl_fft_real_unpack" p'gsl_fft_real_unpack
  :: FunPtr (Ptr CDouble -> Ptr CDouble -> CSize -> CSize -> IO CInt)

{-# LINE 168 "src/Bindings/Gsl/FastFourierTransforms.hsc" #-}