module Bindings.Gsl.NonlinearLeastSquaresFitting 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
import Bindings.Gsl.VectorsAndMatrices
foreign import ccall "gsl_multifit_gradient" c'gsl_multifit_gradient
:: Ptr C'gsl_matrix -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> IO CInt
foreign import ccall "&gsl_multifit_gradient" p'gsl_multifit_gradient
:: FunPtr (Ptr C'gsl_matrix -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> IO CInt)
foreign import ccall "gsl_multifit_covar" c'gsl_multifit_covar
:: Ptr C'gsl_matrix -> CDouble -> Ptr C'gsl_matrix -> IO CInt
foreign import ccall "&gsl_multifit_covar" p'gsl_multifit_covar
:: FunPtr (Ptr C'gsl_matrix -> CDouble -> Ptr C'gsl_matrix -> IO CInt)
data C'gsl_multifit_function = C'gsl_multifit_function{
c'gsl_multifit_function'f :: FunPtr (Ptr C'gsl_vector -> Ptr () -> Ptr C'gsl_vector -> IO ())
,
c'gsl_multifit_function'n :: CSize
,
c'gsl_multifit_function'p :: CSize
,
c'gsl_multifit_function'params :: Ptr ()
} deriving (Eq,Show)
instance Storable C'gsl_multifit_function where
sizeOf _ = 16
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
return $ C'gsl_multifit_function v0 v1 v2 v3
poke p (C'gsl_multifit_function v0 v1 v2 v3) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
return ()
foreign import ccall "inline_GSL_MULTIFIT_FN_EVAL" c'GSL_MULTIFIT_FN_EVAL
:: Ptr C'gsl_multifit_function -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> IO ()
data C'gsl_multifit_fsolver_type = C'gsl_multifit_fsolver_type{
c'gsl_multifit_fsolver_type'name :: CString
,
c'gsl_multifit_fsolver_type'size :: CSize
,
c'gsl_multifit_fsolver_type'alloc :: FunPtr (Ptr () -> CSize -> CSize -> IO CInt)
,
c'gsl_multifit_fsolver_type'set :: FunPtr (Ptr () -> Ptr C'gsl_multifit_function -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> IO CInt)
,
c'gsl_multifit_fsolver_type'iterate :: FunPtr (Ptr () -> Ptr C'gsl_multifit_function -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> IO CInt)
,
c'gsl_multifit_fsolver_type'free :: FunPtr (Ptr () -> IO ())
} deriving (Eq,Show)
instance Storable C'gsl_multifit_fsolver_type where
sizeOf _ = 24
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
return $ C'gsl_multifit_fsolver_type v0 v1 v2 v3 v4 v5
poke p (C'gsl_multifit_fsolver_type v0 v1 v2 v3 v4 v5) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
return ()
data C'gsl_multifit_fsolver = C'gsl_multifit_fsolver{
c'gsl_multifit_fsolver'type :: Ptr C'gsl_multifit_fsolver_type
,
c'gsl_multifit_fsolver'function :: Ptr C'gsl_multifit_function
,
c'gsl_multifit_fsolver'x :: Ptr C'gsl_vector
,
c'gsl_multifit_fsolver'f :: Ptr C'gsl_vector
,
c'gsl_multifit_fsolver'dx :: Ptr C'gsl_vector
,
c'gsl_multifit_fsolver'state :: Ptr ()
} deriving (Eq,Show)
instance Storable C'gsl_multifit_fsolver where
sizeOf _ = 24
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
return $ C'gsl_multifit_fsolver v0 v1 v2 v3 v4 v5
poke p (C'gsl_multifit_fsolver v0 v1 v2 v3 v4 v5) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
return ()
foreign import ccall "gsl_multifit_fsolver_alloc" c'gsl_multifit_fsolver_alloc
:: Ptr C'gsl_multifit_fsolver_type -> CSize -> CSize -> IO (Ptr C'gsl_multifit_fsolver)
foreign import ccall "&gsl_multifit_fsolver_alloc" p'gsl_multifit_fsolver_alloc
:: FunPtr (Ptr C'gsl_multifit_fsolver_type -> CSize -> CSize -> IO (Ptr C'gsl_multifit_fsolver))
foreign import ccall "gsl_multifit_fsolver_free" c'gsl_multifit_fsolver_free
:: Ptr C'gsl_multifit_fsolver -> IO ()
foreign import ccall "&gsl_multifit_fsolver_free" p'gsl_multifit_fsolver_free
:: FunPtr (Ptr C'gsl_multifit_fsolver -> IO ())
foreign import ccall "gsl_multifit_fsolver_set" c'gsl_multifit_fsolver_set
:: Ptr C'gsl_multifit_fsolver -> Ptr C'gsl_multifit_function -> Ptr C'gsl_vector -> IO CInt
foreign import ccall "&gsl_multifit_fsolver_set" p'gsl_multifit_fsolver_set
:: FunPtr (Ptr C'gsl_multifit_fsolver -> Ptr C'gsl_multifit_function -> Ptr C'gsl_vector -> IO CInt)
foreign import ccall "gsl_multifit_fsolver_iterate" c'gsl_multifit_fsolver_iterate
:: Ptr C'gsl_multifit_fsolver -> IO CInt
foreign import ccall "&gsl_multifit_fsolver_iterate" p'gsl_multifit_fsolver_iterate
:: FunPtr (Ptr C'gsl_multifit_fsolver -> IO CInt)
foreign import ccall "gsl_multifit_fsolver_name" c'gsl_multifit_fsolver_name
:: Ptr C'gsl_multifit_fsolver -> IO CString
foreign import ccall "&gsl_multifit_fsolver_name" p'gsl_multifit_fsolver_name
:: FunPtr (Ptr C'gsl_multifit_fsolver -> IO CString)
foreign import ccall "gsl_multifit_fsolver_position" c'gsl_multifit_fsolver_position
:: Ptr C'gsl_multifit_fsolver -> IO (Ptr C'gsl_vector)
foreign import ccall "&gsl_multifit_fsolver_position" p'gsl_multifit_fsolver_position
:: FunPtr (Ptr C'gsl_multifit_fsolver -> IO (Ptr C'gsl_vector))
data C'gsl_multifit_function_fdf = C'gsl_multifit_function_fdf{
c'gsl_multifit_function_fdf'f :: FunPtr (Ptr C'gsl_vector -> Ptr () -> Ptr C'gsl_vector -> IO CInt)
,
c'gsl_multifit_function_fdf'df :: FunPtr (Ptr C'gsl_vector -> Ptr () -> Ptr C'gsl_matrix -> IO CInt)
,
c'gsl_multifit_function_fdf'fdf :: FunPtr (Ptr C'gsl_vector -> Ptr () -> Ptr C'gsl_vector -> Ptr C'gsl_matrix -> IO CInt)
,
c'gsl_multifit_function_fdf'n :: CSize
,
c'gsl_multifit_function_fdf'p :: CSize
,
c'gsl_multifit_function_fdf'params :: Ptr ()
} deriving (Eq,Show)
instance Storable C'gsl_multifit_function_fdf where
sizeOf _ = 24
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
return $ C'gsl_multifit_function_fdf v0 v1 v2 v3 v4 v5
poke p (C'gsl_multifit_function_fdf v0 v1 v2 v3 v4 v5) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
return ()
foreign import ccall "inline_GSL_MULTIFIT_FN_EVAL_F" c'GSL_MULTIFIT_FN_EVAL_F
:: Ptr C'gsl_multifit_function_fdf -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> IO CInt
foreign import ccall "inline_GSL_MULTIFIT_FN_EVAL_DF" c'GSL_MULTIFIT_FN_EVAL_DF
:: Ptr C'gsl_multifit_function_fdf -> Ptr C'gsl_vector -> Ptr C'gsl_matrix -> IO CInt
foreign import ccall "inline_GSL_MULTIFIT_FN_EVAL_F_DF" c'GSL_MULTIFIT_FN_EVAL_F_DF
:: Ptr C'gsl_multifit_function_fdf -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> Ptr C'gsl_matrix -> IO CInt
data C'gsl_multifit_fdfsolver_type = C'gsl_multifit_fdfsolver_type{
c'gsl_multifit_fdfsolver_type'name :: CString
,
c'gsl_multifit_fdfsolver_type'size :: CSize
,
c'gsl_multifit_fdfsolver_type'alloc :: FunPtr (Ptr () -> CSize -> CSize -> IO CInt)
,
c'gsl_multifit_fdfsolver_type'set :: FunPtr (Ptr () -> Ptr C'gsl_multifit_function_fdf -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> Ptr C'gsl_matrix -> Ptr C'gsl_vector -> IO CInt)
,
c'gsl_multifit_fdfsolver_type'iterate :: FunPtr (Ptr () -> Ptr C'gsl_multifit_function_fdf -> Ptr C'gsl_vector -> Ptr C'gsl_vector -> Ptr C'gsl_matrix -> Ptr C'gsl_vector -> IO CInt)
,
c'gsl_multifit_fdfsolver_type'free :: FunPtr (Ptr () -> IO ())
} deriving (Eq,Show)
instance Storable C'gsl_multifit_fdfsolver_type where
sizeOf _ = 24
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
return $ C'gsl_multifit_fdfsolver_type v0 v1 v2 v3 v4 v5
poke p (C'gsl_multifit_fdfsolver_type v0 v1 v2 v3 v4 v5) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
return ()
data C'gsl_multifit_fdfsolver = C'gsl_multifit_fdfsolver{
c'gsl_multifit_fdfsolver'type :: Ptr C'gsl_multifit_fdfsolver_type
,
c'gsl_multifit_fdfsolver'fdf :: Ptr C'gsl_multifit_function_fdf
,
c'gsl_multifit_fdfsolver'x :: Ptr C'gsl_vector
,
c'gsl_multifit_fdfsolver'f :: Ptr C'gsl_vector
,
c'gsl_multifit_fdfsolver'J :: Ptr C'gsl_matrix
,
c'gsl_multifit_fdfsolver'dx :: Ptr C'gsl_vector
,
c'gsl_multifit_fdfsolver'state :: Ptr ()
} deriving (Eq,Show)
instance Storable C'gsl_multifit_fdfsolver where
sizeOf _ = 28
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
v5 <- peekByteOff p 20
v6 <- peekByteOff p 24
return $ C'gsl_multifit_fdfsolver v0 v1 v2 v3 v4 v5 v6
poke p (C'gsl_multifit_fdfsolver v0 v1 v2 v3 v4 v5 v6) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
pokeByteOff p 20 v5
pokeByteOff p 24 v6
return ()
foreign import ccall "gsl_multifit_fdfsolver_alloc" c'gsl_multifit_fdfsolver_alloc
:: Ptr C'gsl_multifit_fdfsolver_type -> CSize -> CSize -> IO (Ptr C'gsl_multifit_fdfsolver)
foreign import ccall "&gsl_multifit_fdfsolver_alloc" p'gsl_multifit_fdfsolver_alloc
:: FunPtr (Ptr C'gsl_multifit_fdfsolver_type -> CSize -> CSize -> IO (Ptr C'gsl_multifit_fdfsolver))
foreign import ccall "gsl_multifit_fdfsolver_set" c'gsl_multifit_fdfsolver_set
:: Ptr C'gsl_multifit_fdfsolver -> Ptr C'gsl_multifit_function_fdf -> Ptr C'gsl_vector -> IO CInt
foreign import ccall "&gsl_multifit_fdfsolver_set" p'gsl_multifit_fdfsolver_set
:: FunPtr (Ptr C'gsl_multifit_fdfsolver -> Ptr C'gsl_multifit_function_fdf -> Ptr C'gsl_vector -> IO CInt)
foreign import ccall "gsl_multifit_fdfsolver_iterate" c'gsl_multifit_fdfsolver_iterate
:: Ptr C'gsl_multifit_fdfsolver -> IO CInt
foreign import ccall "&gsl_multifit_fdfsolver_iterate" p'gsl_multifit_fdfsolver_iterate
:: FunPtr (Ptr C'gsl_multifit_fdfsolver -> IO CInt)
foreign import ccall "gsl_multifit_fdfsolver_free" c'gsl_multifit_fdfsolver_free
:: Ptr C'gsl_multifit_fdfsolver -> IO ()
foreign import ccall "&gsl_multifit_fdfsolver_free" p'gsl_multifit_fdfsolver_free
:: FunPtr (Ptr C'gsl_multifit_fdfsolver -> IO ())
foreign import ccall "gsl_multifit_fdfsolver_name" c'gsl_multifit_fdfsolver_name
:: Ptr C'gsl_multifit_fdfsolver -> IO CString
foreign import ccall "&gsl_multifit_fdfsolver_name" p'gsl_multifit_fdfsolver_name
:: FunPtr (Ptr C'gsl_multifit_fdfsolver -> IO CString)
foreign import ccall "gsl_multifit_fdfsolver_position" c'gsl_multifit_fdfsolver_position
:: Ptr C'gsl_multifit_fdfsolver -> IO (Ptr C'gsl_vector)
foreign import ccall "&gsl_multifit_fdfsolver_position" p'gsl_multifit_fdfsolver_position
:: FunPtr (Ptr C'gsl_multifit_fdfsolver -> IO (Ptr C'gsl_vector))
foreign import ccall "gsl_multifit_test_delta" c'gsl_multifit_test_delta
:: Ptr C'gsl_vector -> Ptr C'gsl_vector -> CDouble -> CDouble -> IO CInt
foreign import ccall "&gsl_multifit_test_delta" p'gsl_multifit_test_delta
:: FunPtr (Ptr C'gsl_vector -> Ptr C'gsl_vector -> CDouble -> CDouble -> IO CInt)
foreign import ccall "gsl_multifit_test_gradient" c'gsl_multifit_test_gradient
:: Ptr C'gsl_vector -> CDouble -> IO CInt
foreign import ccall "&gsl_multifit_test_gradient" p'gsl_multifit_test_gradient
:: FunPtr (Ptr C'gsl_vector -> CDouble -> IO CInt)
foreign import ccall "&gsl_multifit_fdfsolver_lmder" p'gsl_multifit_fdfsolver_lmder
:: Ptr (Ptr C'gsl_multifit_fdfsolver_type)
foreign import ccall "&gsl_multifit_fdfsolver_lmsder" p'gsl_multifit_fdfsolver_lmsder
:: Ptr (Ptr C'gsl_multifit_fdfsolver_type)