{-# LINE 1 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}

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

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

-- | <http://www.gnu.org/software/gsl/manual/html_node/Complex-Numbers.html>

module Bindings.Gsl.ComplexNumbers 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.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

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

type C'gsl_complex_packed = CUInt

{-# LINE 10 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_float = CUInt

{-# LINE 11 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_long_double = CUInt

{-# LINE 12 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed = CUInt

{-# LINE 13 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_float = CUInt

{-# LINE 14 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_long_double = CUInt

{-# LINE 15 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_array = CUInt

{-# LINE 16 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_array_float = CUInt

{-# LINE 17 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_array_long_double = CUInt

{-# LINE 18 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_array = CUInt

{-# LINE 19 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_array_float = CUInt

{-# LINE 20 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_array_long_double = CUInt

{-# LINE 21 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_ptr = CUInt

{-# LINE 22 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_float_ptr = CUInt

{-# LINE 23 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_complex_packed_long_double_ptr = CUInt

{-# LINE 24 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_ptr = CUInt

{-# LINE 25 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_float_ptr = CUInt

{-# LINE 26 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
type C'gsl_const_complex_packed_long_double_ptr = CUInt

{-# LINE 27 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}

-- #starttype gsl_complex_long_double
-- #array_field dat , CLDouble
-- #stoptype


{-# LINE 33 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}

{-# LINE 34 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
data C'gsl_complex = C'gsl_complex{
  c'gsl_complex'dat :: [CDouble]
} deriving (Eq,Show)
p'gsl_complex'dat p = plusPtr p 0
p'gsl_complex'dat :: Ptr (C'gsl_complex) -> Ptr (CDouble)
instance Storable C'gsl_complex where
  sizeOf _ = 16
  alignment _ = 4
  peek p = do
    v0 <- let s = div 16 $ sizeOf $ (undefined :: CDouble) in peekArray s (plusPtr p 0)
    return $ C'gsl_complex v0
  poke p (C'gsl_complex v0) = do
    let s = div 8101253775701835792 $ sizeOf $ (undefined :: CDouble)
    pokeArray (plusPtr p 0) (take s v0)
    return ()

{-# LINE 35 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}


{-# LINE 37 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}

{-# LINE 38 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}
data C'gsl_complex_float = C'gsl_complex_float{
  c'gsl_complex_float'dat :: [CFloat]
} deriving (Eq,Show)
p'gsl_complex_float'dat p = plusPtr p 0
p'gsl_complex_float'dat :: Ptr (C'gsl_complex_float) -> Ptr (CFloat)
instance Storable C'gsl_complex_float where
  sizeOf _ = 8
  alignment _ = 4
  peek p = do
    v0 <- let s = div 8 $ sizeOf $ (undefined :: CFloat) in peekArray s (plusPtr p 0)
    return $ C'gsl_complex_float v0
  poke p (C'gsl_complex_float v0) = do
    let s = div 8 $ sizeOf $ (undefined :: CFloat)
    pokeArray (plusPtr p 0) (take s v0)
    return ()

{-# LINE 39 "src/Bindings/Gsl/ComplexNumbers.hsc" #-}