bindings-levmar 0.1.1.1 → 0.2.0.1
raw patch · 3 files changed
+112/−345 lines, 3 filesdep +bindings-DSLdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: bindings-DSL
Dependency ranges changed: base
API changes (from Hackage documentation)
- Bindings.LevMar: _LM_DIFF_DELTA :: (Fractional a) => a
- Bindings.LevMar: _LM_ERROR :: CInt
- Bindings.LevMar: _LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK :: CInt
- Bindings.LevMar: _LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS :: CInt
- Bindings.LevMar: _LM_ERROR_FAILED_BOX_CHECK :: CInt
- Bindings.LevMar: _LM_ERROR_LAPACK_ERROR :: CInt
- Bindings.LevMar: _LM_ERROR_MEMORY_ALLOCATION_FAILURE :: CInt
- Bindings.LevMar: _LM_ERROR_NO_BOX_CONSTRAINTS :: CInt
- Bindings.LevMar: _LM_ERROR_NO_JACOBIAN :: CInt
- Bindings.LevMar: _LM_ERROR_SINGULAR_MATRIX :: CInt
- Bindings.LevMar: _LM_ERROR_SUM_OF_SQUARES_NOT_FINITE :: CInt
- Bindings.LevMar: _LM_ERROR_TOO_FEW_MEASUREMENTS :: CInt
- Bindings.LevMar: _LM_INFO_SZ :: Int
- Bindings.LevMar: _LM_INIT_MU :: (Fractional a) => a
- Bindings.LevMar: _LM_OPTS_SZ :: Int
- Bindings.LevMar: _LM_STOP_THRESH :: (Fractional a) => a
- Bindings.LevMar: _LM_VERSION :: String
- Bindings.LevMar: dlevmar_R2 :: LevMarR2 CDouble
- Bindings.LevMar: dlevmar_bc_der :: LevMarBCDer CDouble
- Bindings.LevMar: dlevmar_bc_dif :: LevMarBCDif CDouble
- Bindings.LevMar: dlevmar_blec_der :: LevMarBLecDer CDouble
- Bindings.LevMar: dlevmar_blec_dif :: LevMarBLecDif CDouble
- Bindings.LevMar: dlevmar_chkjac :: LevMarChkJac CDouble
- Bindings.LevMar: dlevmar_corcoef :: LevMarCorCoef CDouble
- Bindings.LevMar: dlevmar_der :: LevMarDer CDouble
- Bindings.LevMar: dlevmar_dif :: LevMarDif CDouble
- Bindings.LevMar: dlevmar_lec_der :: LevMarLecDer CDouble
- Bindings.LevMar: dlevmar_lec_dif :: LevMarLecDif CDouble
- Bindings.LevMar: dlevmar_stddev :: LevMarStddev CDouble
- Bindings.LevMar: slevmar_R2 :: LevMarR2 CFloat
- Bindings.LevMar: slevmar_bc_der :: LevMarBCDer CFloat
- Bindings.LevMar: slevmar_bc_dif :: LevMarBCDif CFloat
- Bindings.LevMar: slevmar_blec_der :: LevMarBLecDer CFloat
- Bindings.LevMar: slevmar_blec_dif :: LevMarBLecDif CFloat
- Bindings.LevMar: slevmar_chkjac :: LevMarChkJac CFloat
- Bindings.LevMar: slevmar_corcoef :: LevMarCorCoef CFloat
- Bindings.LevMar: slevmar_der :: LevMarDer CFloat
- Bindings.LevMar: slevmar_dif :: LevMarDif CFloat
- Bindings.LevMar: slevmar_lec_der :: LevMarLecDer CFloat
- Bindings.LevMar: slevmar_lec_dif :: LevMarLecDif CFloat
- Bindings.LevMar: slevmar_stddev :: LevMarStddev CFloat
- Bindings.LevMar.CurryFriendly: _LM_DIFF_DELTA :: (Fractional a) => a
- Bindings.LevMar.CurryFriendly: _LM_ERROR :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_FAILED_BOX_CHECK :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_LAPACK_ERROR :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_MEMORY_ALLOCATION_FAILURE :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_NO_BOX_CONSTRAINTS :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_NO_JACOBIAN :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_SINGULAR_MATRIX :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_SUM_OF_SQUARES_NOT_FINITE :: CInt
- Bindings.LevMar.CurryFriendly: _LM_ERROR_TOO_FEW_MEASUREMENTS :: CInt
- Bindings.LevMar.CurryFriendly: _LM_INFO_SZ :: Int
- Bindings.LevMar.CurryFriendly: _LM_INIT_MU :: (Fractional a) => a
- Bindings.LevMar.CurryFriendly: _LM_OPTS_SZ :: Int
- Bindings.LevMar.CurryFriendly: _LM_STOP_THRESH :: (Fractional a) => a
- Bindings.LevMar.CurryFriendly: _LM_VERSION :: String
- Bindings.LevMar.CurryFriendly: dlevmar_R2 :: LevMarR2 CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_bc_der :: LevMarBCDer CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_bc_dif :: LevMarBCDif CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_blec_der :: LevMarBLecDer CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_blec_dif :: LevMarBLecDif CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_chkjac :: LevMarChkJac CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_corcoef :: LevMarCorCoef CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_der :: LevMarDer CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_dif :: LevMarDif CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_lec_der :: LevMarLecDer CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_lec_dif :: LevMarLecDif CDouble
- Bindings.LevMar.CurryFriendly: dlevmar_stddev :: LevMarStddev CDouble
- Bindings.LevMar.CurryFriendly: slevmar_R2 :: LevMarR2 CFloat
- Bindings.LevMar.CurryFriendly: slevmar_bc_der :: LevMarBCDer CFloat
- Bindings.LevMar.CurryFriendly: slevmar_bc_dif :: LevMarBCDif CFloat
- Bindings.LevMar.CurryFriendly: slevmar_blec_der :: LevMarBLecDer CFloat
- Bindings.LevMar.CurryFriendly: slevmar_blec_dif :: LevMarBLecDif CFloat
- Bindings.LevMar.CurryFriendly: slevmar_chkjac :: LevMarChkJac CFloat
- Bindings.LevMar.CurryFriendly: slevmar_corcoef :: LevMarCorCoef CFloat
- Bindings.LevMar.CurryFriendly: slevmar_der :: LevMarDer CFloat
- Bindings.LevMar.CurryFriendly: slevmar_dif :: LevMarDif CFloat
- Bindings.LevMar.CurryFriendly: slevmar_lec_der :: LevMarLecDer CFloat
- Bindings.LevMar.CurryFriendly: slevmar_lec_dif :: LevMarLecDif CFloat
- Bindings.LevMar.CurryFriendly: slevmar_stddev :: LevMarStddev CFloat
- Bindings.LevMar.CurryFriendly: type AData = Ptr ()
- Bindings.LevMar.CurryFriendly: type BestFitParameterIx = CInt
- Bindings.LevMar.CurryFriendly: type BoxConstraints cr a = LowerBounds cr -> UpperBounds cr -> a
- Bindings.LevMar.CurryFriendly: type ConstraintsMatrix = Ptr
- Bindings.LevMar.CurryFriendly: type ConstraintsVector = Ptr
- Bindings.LevMar.CurryFriendly: type Covar = Ptr
- Bindings.LevMar.CurryFriendly: type Errors = Ptr
- Bindings.LevMar.CurryFriendly: type Info = Ptr
- Bindings.LevMar.CurryFriendly: type Jacobian a = Model a
- Bindings.LevMar.CurryFriendly: type LevMarBCDer cr = BoxConstraints cr (LevMarDer cr)
- Bindings.LevMar.CurryFriendly: type LevMarBCDif cr = BoxConstraints cr (LevMarDif cr)
- Bindings.LevMar.CurryFriendly: type LevMarBLecDer cr = BoxConstraints cr (LinearConstraints cr (Weights cr -> (LevMarDer cr)))
- Bindings.LevMar.CurryFriendly: type LevMarBLecDif cr = BoxConstraints cr (LinearConstraints cr (Weights cr -> (LevMarDif cr)))
- Bindings.LevMar.CurryFriendly: type LevMarChkJac cr = FunPtr (Model cr) -> FunPtr (Jacobian cr) -> Parameters cr -> NrOfParameters -> NrOfMeasurements -> AData -> Errors cr -> IO ()
- Bindings.LevMar.CurryFriendly: type LevMarCorCoef cr = Covar cr -> NrOfParameters -> BestFitParameterIx -> BestFitParameterIx -> IO cr
- Bindings.LevMar.CurryFriendly: type LevMarDer cr = FunPtr (Jacobian cr) -> LevMarDif cr
- Bindings.LevMar.CurryFriendly: type LevMarDif cr = LevMarDif cr
- Bindings.LevMar.CurryFriendly: type LevMarLecDer cr = LinearConstraints cr (LevMarDer cr)
- Bindings.LevMar.CurryFriendly: type LevMarLecDif cr = LinearConstraints cr (LevMarDif cr)
- Bindings.LevMar.CurryFriendly: type LevMarR2 cr = FunPtr (Model cr) -> Parameters cr -> Measurements cr -> NrOfParameters -> NrOfMeasurements -> AData -> Result cr -> IO CInt
- Bindings.LevMar.CurryFriendly: type LevMarStddev cr = Covar cr -> NrOfParameters -> BestFitParameterIx -> IO cr
- Bindings.LevMar.CurryFriendly: type LinearConstraints cr a = ConstraintsMatrix cr -> ConstraintsVector cr -> NrOfConstraints -> a
- Bindings.LevMar.CurryFriendly: type LowerBounds = Ptr
- Bindings.LevMar.CurryFriendly: type MaxIterations = CInt
- Bindings.LevMar.CurryFriendly: type Measurements = Ptr
- Bindings.LevMar.CurryFriendly: type Model r = Parameters r -> Measurements r -> NrOfParameters -> NrOfMeasurements -> AData -> IO ()
- Bindings.LevMar.CurryFriendly: type NrOfConstraints = CInt
- Bindings.LevMar.CurryFriendly: type NrOfMeasurements = CInt
- Bindings.LevMar.CurryFriendly: type NrOfParameters = CInt
- Bindings.LevMar.CurryFriendly: type Options = Ptr
- Bindings.LevMar.CurryFriendly: type Parameters = Ptr
- Bindings.LevMar.CurryFriendly: type Result = Ptr
- Bindings.LevMar.CurryFriendly: type UpperBounds = Ptr
- Bindings.LevMar.CurryFriendly: type Weights = Ptr
- Bindings.LevMar.CurryFriendly: type Work = Ptr
- Bindings.LevMar.CurryFriendly: withJacobian :: Jacobian a -> (FunPtr (Jacobian a) -> IO b) -> IO b
- Bindings.LevMar.CurryFriendly: withModel :: Model a -> (FunPtr (Model a) -> IO b) -> IO b
+ Bindings.LevMar: c'LM_DIFF_DELTA :: Fractional a => a
+ Bindings.LevMar: c'LM_ERROR :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_FAILED_BOX_CHECK :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_LAPACK_ERROR :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_MEMORY_ALLOCATION_FAILURE :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_NO_BOX_CONSTRAINTS :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_NO_JACOBIAN :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_SINGULAR_MATRIX :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_SUM_OF_SQUARES_NOT_FINITE :: Num a => a
+ Bindings.LevMar: c'LM_ERROR_TOO_FEW_MEASUREMENTS :: Num a => a
+ Bindings.LevMar: c'LM_INFO_SZ :: Num a => a
+ Bindings.LevMar: c'LM_INIT_MU :: Fractional a => a
+ Bindings.LevMar: c'LM_OPTS_SZ :: Num a => a
+ Bindings.LevMar: c'LM_STOP_THRESH :: Fractional a => a
+ Bindings.LevMar: c'LM_VERSION :: String
+ Bindings.LevMar: c'dlevmar_R2 :: LevMarR2 CDouble
+ Bindings.LevMar: c'dlevmar_bc_der :: LevMarBCDer CDouble
+ Bindings.LevMar: c'dlevmar_bc_dif :: LevMarBCDif CDouble
+ Bindings.LevMar: c'dlevmar_blec_der :: LevMarBLecDer CDouble
+ Bindings.LevMar: c'dlevmar_blec_dif :: LevMarBLecDif CDouble
+ Bindings.LevMar: c'dlevmar_chkjac :: LevMarChkJac CDouble
+ Bindings.LevMar: c'dlevmar_corcoef :: LevMarCorCoef CDouble
+ Bindings.LevMar: c'dlevmar_der :: LevMarDer CDouble
+ Bindings.LevMar: c'dlevmar_dif :: LevMarDif CDouble
+ Bindings.LevMar: c'dlevmar_lec_der :: LevMarLecDer CDouble
+ Bindings.LevMar: c'dlevmar_lec_dif :: LevMarLecDif CDouble
+ Bindings.LevMar: c'dlevmar_stddev :: LevMarStddev CDouble
+ Bindings.LevMar: c'slevmar_R2 :: LevMarR2 CFloat
+ Bindings.LevMar: c'slevmar_bc_der :: LevMarBCDer CFloat
+ Bindings.LevMar: c'slevmar_bc_dif :: LevMarBCDif CFloat
+ Bindings.LevMar: c'slevmar_blec_der :: LevMarBLecDer CFloat
+ Bindings.LevMar: c'slevmar_blec_dif :: LevMarBLecDif CFloat
+ Bindings.LevMar: c'slevmar_chkjac :: LevMarChkJac CFloat
+ Bindings.LevMar: c'slevmar_corcoef :: LevMarCorCoef CFloat
+ Bindings.LevMar: c'slevmar_der :: LevMarDer CFloat
+ Bindings.LevMar: c'slevmar_dif :: LevMarDif CFloat
+ Bindings.LevMar: c'slevmar_lec_der :: LevMarLecDer CFloat
+ Bindings.LevMar: c'slevmar_lec_dif :: LevMarLecDif CFloat
+ Bindings.LevMar: c'slevmar_stddev :: LevMarStddev CFloat
Files
- Bindings/LevMar.hsc +105/−93
- Bindings/LevMar/CurryFriendly.hs +0/−244
- bindings-levmar.cabal +7/−8
Bindings/LevMar.hsc view
@@ -1,5 +1,8 @@ {-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE NoImplicitPrelude #-} +{-# OPTIONS_GHC -fno-warn-unused-binds #-}+ -------------------------------------------------------------------------------- -- | -- Module : Bindings.LevMar@@ -9,36 +12,39 @@ -- Maintainer : vandijk.roel@gmail.com, v.dijk.bas@gmail.com -- Stability : Experimental ----- A binding to the C levmar (Levenberg-Marquardt) library+-- A low level binding to the C levmar (Levenberg-Marquardt) library. -- -- For documentation see: <http://www.ics.forth.gr/~lourakis/levmar/> -- -------------------------------------------------------------------------------- +#include <bindings.dsl.h>+#include <lm.h>+ module Bindings.LevMar- ( _LM_VERSION+ ( c'LM_VERSION -- * Maximum sizes of arrays.- , _LM_OPTS_SZ- , _LM_INFO_SZ+ , c'LM_OPTS_SZ+ , c'LM_INFO_SZ -- * Errors.- , _LM_ERROR- , _LM_ERROR_LAPACK_ERROR- , _LM_ERROR_NO_JACOBIAN- , _LM_ERROR_NO_BOX_CONSTRAINTS- , _LM_ERROR_FAILED_BOX_CHECK- , _LM_ERROR_MEMORY_ALLOCATION_FAILURE- , _LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS- , _LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK- , _LM_ERROR_TOO_FEW_MEASUREMENTS- , _LM_ERROR_SINGULAR_MATRIX- , _LM_ERROR_SUM_OF_SQUARES_NOT_FINITE+ , c'LM_ERROR+ , c'LM_ERROR_LAPACK_ERROR+ , c'LM_ERROR_NO_JACOBIAN+ , c'LM_ERROR_NO_BOX_CONSTRAINTS+ , c'LM_ERROR_FAILED_BOX_CHECK+ , c'LM_ERROR_MEMORY_ALLOCATION_FAILURE+ , c'LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS+ , c'LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK+ , c'LM_ERROR_TOO_FEW_MEASUREMENTS+ , c'LM_ERROR_SINGULAR_MATRIX+ , c'LM_ERROR_SUM_OF_SQUARES_NOT_FINITE -- * Default values for minimization options.- , _LM_INIT_MU- , _LM_STOP_THRESH- , _LM_DIFF_DELTA+ , c'LM_INIT_MU+ , c'LM_STOP_THRESH+ , c'LM_DIFF_DELTA -- * Handy type synonyms , Parameters@@ -76,28 +82,28 @@ , LevMarBLecDif -- * Levenberg-Marquardt algorithms.- , dlevmar_der- , slevmar_der- , dlevmar_dif- , slevmar_dif- , dlevmar_bc_der- , slevmar_bc_der- , dlevmar_bc_dif- , slevmar_bc_dif- , dlevmar_lec_der- , slevmar_lec_der- , dlevmar_lec_dif- , slevmar_lec_dif- , dlevmar_blec_der- , slevmar_blec_der- , dlevmar_blec_dif- , slevmar_blec_dif+ , c'dlevmar_der+ , c'slevmar_der+ , c'dlevmar_dif+ , c'slevmar_dif+ , c'dlevmar_bc_der+ , c'slevmar_bc_der+ , c'dlevmar_bc_dif+ , c'slevmar_bc_dif+ , c'dlevmar_lec_der+ , c'slevmar_lec_der+ , c'dlevmar_lec_dif+ , c'slevmar_lec_dif+ , c'dlevmar_blec_der+ , c'slevmar_blec_der+ , c'dlevmar_blec_dif+ , c'slevmar_blec_dif -- * Jacobian verification , Errors , LevMarChkJac- , dlevmar_chkjac- , slevmar_chkjac+ , c'dlevmar_chkjac+ , c'slevmar_chkjac -- * Utils , BestFitParameterIx@@ -108,25 +114,39 @@ , Result - , dlevmar_stddev- , slevmar_stddev- , dlevmar_corcoef- , slevmar_corcoef- , dlevmar_R2- , slevmar_R2+ , c'dlevmar_stddev+ , c'slevmar_stddev+ , c'dlevmar_corcoef+ , c'slevmar_corcoef+ , c'dlevmar_R2+ , c'slevmar_R2 ) where +--------------------------------------------------------------------------------+-- Imports+--------------------------------------------------------------------------------++import Prelude ( Num, Fractional )++#if __GLASGOW_HASKELL__ < 700+import Prelude ( negate, fromInteger, fromRational )+#endif++import System.IO ( IO )+import Data.Char ( String ) import Foreign.C.Types ( CInt, CFloat, CDouble ) import Foreign.Ptr ( Ptr, FunPtr, freeHaskellFunPtr ) import Control.Exception ( bracket ) -#include <lm.h> +--------------------------------------------------------------------------------+-- Version+-------------------------------------------------------------------------------- -- | The version of the C levmar library.-_LM_VERSION :: String-_LM_VERSION = #const_str LM_VERSION+c'LM_VERSION :: String+c'LM_VERSION = #const_str LM_VERSION --------------------------------------------------------------------------------@@ -134,44 +154,36 @@ -------------------------------------------------------------------------------- -- | The maximum size of the options array.-_LM_OPTS_SZ :: Int-_LM_OPTS_SZ = #const LM_OPTS_SZ+#num LM_OPTS_SZ -- | The size of the info array.-_LM_INFO_SZ :: Int-_LM_INFO_SZ = #const LM_INFO_SZ+#num LM_INFO_SZ -------------------------------------------------------------------------------- -- Errors. -------------------------------------------------------------------------------- -#{enum CInt,- , _LM_ERROR = LM_ERROR- , _LM_ERROR_LAPACK_ERROR = LM_ERROR_LAPACK_ERROR- , _LM_ERROR_NO_JACOBIAN = LM_ERROR_NO_JACOBIAN- , _LM_ERROR_NO_BOX_CONSTRAINTS = LM_ERROR_NO_BOX_CONSTRAINTS- , _LM_ERROR_FAILED_BOX_CHECK = LM_ERROR_FAILED_BOX_CHECK- , _LM_ERROR_MEMORY_ALLOCATION_FAILURE = LM_ERROR_MEMORY_ALLOCATION_FAILURE- , _LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS = LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS- , _LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK = LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK- , _LM_ERROR_TOO_FEW_MEASUREMENTS = LM_ERROR_TOO_FEW_MEASUREMENTS- , _LM_ERROR_SINGULAR_MATRIX = LM_ERROR_SINGULAR_MATRIX- , _LM_ERROR_SUM_OF_SQUARES_NOT_FINITE = LM_ERROR_SUM_OF_SQUARES_NOT_FINITE- }+#num LM_ERROR+#num LM_ERROR_LAPACK_ERROR+#num LM_ERROR_NO_JACOBIAN+#num LM_ERROR_NO_BOX_CONSTRAINTS+#num LM_ERROR_FAILED_BOX_CHECK+#num LM_ERROR_MEMORY_ALLOCATION_FAILURE+#num LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS+#num LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK+#num LM_ERROR_TOO_FEW_MEASUREMENTS+#num LM_ERROR_SINGULAR_MATRIX+#num LM_ERROR_SUM_OF_SQUARES_NOT_FINITE -------------------------------------------------------------------------------- -- Default values for minimization options. -------------------------------------------------------------------------------- -#let const_real r = "%e", r--_LM_INIT_MU, _LM_STOP_THRESH, _LM_DIFF_DELTA :: Fractional a => a--_LM_INIT_MU = #const_real LM_INIT_MU-_LM_STOP_THRESH = #const_real LM_STOP_THRESH-_LM_DIFF_DELTA = #const_real LM_DIFF_DELTA+#fractional LM_INIT_MU+#fractional LM_STOP_THRESH+#fractional LM_DIFF_DELTA --------------------------------------------------------------------------------@@ -361,22 +373,22 @@ -- Levenberg-Marquardt algorithms. -------------------------------------------------------------------------------- -foreign import ccall "slevmar_der" slevmar_der :: LevMarDer CFloat-foreign import ccall "dlevmar_der" dlevmar_der :: LevMarDer CDouble-foreign import ccall "slevmar_dif" slevmar_dif :: LevMarDif CFloat-foreign import ccall "dlevmar_dif" dlevmar_dif :: LevMarDif CDouble-foreign import ccall "slevmar_bc_der" slevmar_bc_der :: LevMarBCDer CFloat-foreign import ccall "dlevmar_bc_der" dlevmar_bc_der :: LevMarBCDer CDouble-foreign import ccall "slevmar_bc_dif" slevmar_bc_dif :: LevMarBCDif CFloat-foreign import ccall "dlevmar_bc_dif" dlevmar_bc_dif :: LevMarBCDif CDouble-foreign import ccall "slevmar_lec_der" slevmar_lec_der :: LevMarLecDer CFloat-foreign import ccall "dlevmar_lec_der" dlevmar_lec_der :: LevMarLecDer CDouble-foreign import ccall "slevmar_lec_dif" slevmar_lec_dif :: LevMarLecDif CFloat-foreign import ccall "dlevmar_lec_dif" dlevmar_lec_dif :: LevMarLecDif CDouble-foreign import ccall "slevmar_blec_der" slevmar_blec_der :: LevMarBLecDer CFloat-foreign import ccall "dlevmar_blec_der" dlevmar_blec_der :: LevMarBLecDer CDouble-foreign import ccall "slevmar_blec_dif" slevmar_blec_dif :: LevMarBLecDif CFloat-foreign import ccall "dlevmar_blec_dif" dlevmar_blec_dif :: LevMarBLecDif CDouble+#ccall slevmar_der , LevMarDer CFloat+#ccall dlevmar_der , LevMarDer CDouble+#ccall slevmar_dif , LevMarDif CFloat+#ccall dlevmar_dif , LevMarDif CDouble+#ccall slevmar_bc_der , LevMarBCDer CFloat+#ccall dlevmar_bc_der , LevMarBCDer CDouble+#ccall slevmar_bc_dif , LevMarBCDif CFloat+#ccall dlevmar_bc_dif , LevMarBCDif CDouble+#ccall slevmar_lec_der , LevMarLecDer CFloat+#ccall dlevmar_lec_der , LevMarLecDer CDouble+#ccall slevmar_lec_dif , LevMarLecDif CFloat+#ccall dlevmar_lec_dif , LevMarLecDif CDouble+#ccall slevmar_blec_der , LevMarBLecDer CFloat+#ccall dlevmar_blec_der , LevMarBLecDer CDouble+#ccall slevmar_blec_dif , LevMarBLecDif CFloat+#ccall dlevmar_blec_dif , LevMarBLecDif CDouble --------------------------------------------------------------------------------@@ -394,8 +406,8 @@ -> Errors cr -> IO () -foreign import ccall "dlevmar_chkjac" dlevmar_chkjac :: LevMarChkJac CDouble-foreign import ccall "slevmar_chkjac" slevmar_chkjac :: LevMarChkJac CFloat+#ccall dlevmar_chkjac , LevMarChkJac CDouble+#ccall slevmar_chkjac , LevMarChkJac CFloat --------------------------------------------------------------------------------@@ -429,12 +441,12 @@ type Result = Ptr -foreign import ccall "dlevmar_stddev" dlevmar_stddev :: LevMarStddev CDouble-foreign import ccall "slevmar_stddev" slevmar_stddev :: LevMarStddev CFloat-foreign import ccall "dlevmar_corcoef" dlevmar_corcoef :: LevMarCorCoef CDouble-foreign import ccall "slevmar_corcoef" slevmar_corcoef :: LevMarCorCoef CFloat-foreign import ccall "dlevmar_R2" dlevmar_R2 :: LevMarR2 CDouble-foreign import ccall "slevmar_R2" slevmar_R2 :: LevMarR2 CFloat+#ccall dlevmar_stddev , LevMarStddev CDouble+#ccall slevmar_stddev , LevMarStddev CFloat+#ccall dlevmar_corcoef , LevMarCorCoef CDouble+#ccall slevmar_corcoef , LevMarCorCoef CFloat+#ccall dlevmar_R2 , LevMarR2 CDouble+#ccall slevmar_R2 , LevMarR2 CFloat -- The End ---------------------------------------------------------------------
− Bindings/LevMar/CurryFriendly.hs
@@ -1,244 +0,0 @@------------------------------------------------------------------------------------ |--- Module : Bindings.LevMar.CurryFriendly--- Copyright : (c) 2009 Roel van Dijk & Bas van Dijk--- License : BSD-style (see the file LICENSE)------ Maintainer : vandijk.roel@gmail.com, v.dijk.bas@gmail.com--- Stability : Experimental------ Curry friendly variants of the Levenberg-Marquardt algorithms in 'Bindings.LevMar'.------ (This module re-exports all the necessary types and function from--- 'Bindings.LevMar', so there's no need to import that module when--- you want to use this one.)--------------------------------------------------------------------------------------module Bindings.LevMar.CurryFriendly- ( LMA_C._LM_VERSION-- -- * Maximum sizes of arrays.- , LMA_C._LM_OPTS_SZ- , LMA_C._LM_INFO_SZ-- -- * Errors- , LMA_C._LM_ERROR- , LMA_C._LM_ERROR_LAPACK_ERROR- , LMA_C._LM_ERROR_NO_JACOBIAN- , LMA_C._LM_ERROR_NO_BOX_CONSTRAINTS- , LMA_C._LM_ERROR_FAILED_BOX_CHECK- , LMA_C._LM_ERROR_MEMORY_ALLOCATION_FAILURE- , LMA_C._LM_ERROR_CONSTRAINT_MATRIX_ROWS_GT_COLS- , LMA_C._LM_ERROR_CONSTRAINT_MATRIX_NOT_FULL_ROW_RANK- , LMA_C._LM_ERROR_TOO_FEW_MEASUREMENTS- , LMA_C._LM_ERROR_SINGULAR_MATRIX- , LMA_C._LM_ERROR_SUM_OF_SQUARES_NOT_FINITE-- -- * Default values for options.- , LMA_C._LM_INIT_MU- , LMA_C._LM_STOP_THRESH- , LMA_C._LM_DIFF_DELTA-- -- * Handy type synonyms- , LMA_C.Parameters- , LMA_C.Measurements- , LMA_C.Options- , LMA_C.LowerBounds- , LMA_C.UpperBounds- , LMA_C.ConstraintsMatrix- , LMA_C.ConstraintsVector- , LMA_C.Weights- , LMA_C.Info- , LMA_C.Work- , LMA_C.Covar- , LMA_C.AData- , LMA_C.NrOfParameters- , LMA_C.NrOfMeasurements- , LMA_C.NrOfConstraints- , LMA_C.MaxIterations-- -- * Model & Jacobian- , LMA_C.Model- , LMA_C.Jacobian-- , LMA_C.withModel- , LMA_C.withJacobian-- -- * Handy type synonyms used in the curry friendly types.- , BoxConstraints- , LinearConstraints-- -- * Curry friendly types of the Levenberg-Marquardt algorithms.- , LevMarDer- , LevMarDif- , LevMarBCDer- , LevMarBCDif- , LevMarLecDer- , LevMarLecDif- , LevMarBLecDer- , LevMarBLecDif-- -- * Curry friendly variants of the Levenberg-Marquardt algorithms in 'Bindings.Levmar'.- , dlevmar_der- , slevmar_der- , dlevmar_dif- , slevmar_dif- , dlevmar_bc_der- , slevmar_bc_der- , dlevmar_bc_dif- , slevmar_bc_dif- , dlevmar_lec_der- , slevmar_lec_der- , dlevmar_lec_dif- , slevmar_lec_dif- , dlevmar_blec_der- , slevmar_blec_der- , dlevmar_blec_dif- , slevmar_blec_dif-- -- * Jacobian verification- , LMA_C.Errors- , LMA_C.LevMarChkJac- , LMA_C.dlevmar_chkjac- , LMA_C.slevmar_chkjac-- -- * Utils- , LMA_C.BestFitParameterIx-- , LMA_C.LevMarStddev- , LMA_C.LevMarCorCoef- , LMA_C.LevMarR2-- , LMA_C.Result-- , LMA_C.dlevmar_stddev- , LMA_C.slevmar_stddev- , LMA_C.dlevmar_corcoef- , LMA_C.slevmar_corcoef- , LMA_C.dlevmar_R2- , LMA_C.slevmar_R2- ) where---import Foreign.C.Types ( CFloat, CDouble )-import Foreign.Ptr ( FunPtr )--import qualified Bindings.LevMar as LMA_C-------------------------------------------------------------------------------------- Handy type synonyms used in the curry friendly types.-----------------------------------------------------------------------------------type BoxConstraints cr a = LMA_C.LowerBounds cr- -> LMA_C.UpperBounds cr- -> a--type LinearConstraints cr a = LMA_C.ConstraintsMatrix cr- -> LMA_C.ConstraintsVector cr- -> LMA_C.NrOfConstraints- -> a-------------------------------------------------------------------------------------- Curry friendly types of the Levenberg-Marquardt algorithms.-----------------------------------------------------------------------------------type LevMarDif cr = LMA_C.LevMarDif cr-type LevMarDer cr = FunPtr (LMA_C.Jacobian cr) -> LevMarDif cr-type LevMarBCDif cr = BoxConstraints cr (LevMarDif cr)-type LevMarBCDer cr = BoxConstraints cr (LevMarDer cr)-type LevMarLecDif cr = LinearConstraints cr (LevMarDif cr)-type LevMarLecDer cr = LinearConstraints cr (LevMarDer cr)-type LevMarBLecDif cr = BoxConstraints cr (LinearConstraints cr (LMA_C.Weights cr -> (LevMarDif cr)))-type LevMarBLecDer cr = BoxConstraints cr (LinearConstraints cr (LMA_C.Weights cr -> (LevMarDer cr)))-------------------------------------------------------------------------------------- Reordering arguments to create curry friendly variants.-----------------------------------------------------------------------------------mk_levmar_der :: LMA_C.LevMarDer cr -> LevMarDer cr-mk_levmar_der lma j f- = lma f j--mk_levmar_bc_dif :: LMA_C.LevMarBCDif cr -> LevMarBCDif cr-mk_levmar_bc_dif lma lb ub f p x m n- = lma f p x m n lb ub--mk_levmar_bc_der :: LMA_C.LevMarBCDer cr -> LevMarBCDer cr-mk_levmar_bc_der lma lb ub j f p x m n- = lma f j p x m n lb ub--mk_levmar_lec_dif :: LMA_C.LevMarLecDif cr -> LevMarLecDif cr-mk_levmar_lec_dif lma a b k f p x m n- = lma f p x m n a b k--mk_levmar_lec_der :: LMA_C.LevMarLecDer cr -> LevMarLecDer cr-mk_levmar_lec_der lma a b k j f p x m n- = lma f j p x m n a b k--mk_levmar_blec_dif :: LMA_C.LevMarBLecDif cr -> LevMarBLecDif cr-mk_levmar_blec_dif lma lb ub a b k wghts f p x m n- = lma f p x m n lb ub a b k wghts--mk_levmar_blec_der :: LMA_C.LevMarBLecDer cr -> LevMarBLecDer cr-mk_levmar_blec_der lma lb ub a b k wghts j f p x m n- = lma f j p x m n lb ub a b k wghts-------------------------------------------------------------------------------------- Curry friendly variants of the Levenberg-Marquardt algorithms in 'Bindings.Levmar'.-----------------------------------------------------------------------------------slevmar_dif :: LevMarDif CFloat-slevmar_dif = LMA_C.slevmar_dif--dlevmar_dif :: LevMarDif CDouble-dlevmar_dif = LMA_C.dlevmar_dif--slevmar_der :: LevMarDer CFloat-slevmar_der = mk_levmar_der LMA_C.slevmar_der--dlevmar_der :: LevMarDer CDouble-dlevmar_der = mk_levmar_der LMA_C.dlevmar_der--slevmar_bc_dif :: LevMarBCDif CFloat-slevmar_bc_dif = mk_levmar_bc_dif LMA_C.slevmar_bc_dif--dlevmar_bc_dif :: LevMarBCDif CDouble-dlevmar_bc_dif = mk_levmar_bc_dif LMA_C.dlevmar_bc_dif--slevmar_bc_der :: LevMarBCDer CFloat-slevmar_bc_der = mk_levmar_bc_der LMA_C.slevmar_bc_der--dlevmar_bc_der :: LevMarBCDer CDouble-dlevmar_bc_der = mk_levmar_bc_der LMA_C.dlevmar_bc_der--slevmar_lec_dif :: LevMarLecDif CFloat-slevmar_lec_dif = mk_levmar_lec_dif LMA_C.slevmar_lec_dif--dlevmar_lec_dif :: LevMarLecDif CDouble-dlevmar_lec_dif = mk_levmar_lec_dif LMA_C.dlevmar_lec_dif--slevmar_lec_der :: LevMarLecDer CFloat-slevmar_lec_der = mk_levmar_lec_der LMA_C.slevmar_lec_der--dlevmar_lec_der :: LevMarLecDer CDouble-dlevmar_lec_der = mk_levmar_lec_der LMA_C.dlevmar_lec_der--slevmar_blec_dif :: LevMarBLecDif CFloat-slevmar_blec_dif = mk_levmar_blec_dif LMA_C.slevmar_blec_dif--dlevmar_blec_dif :: LevMarBLecDif CDouble-dlevmar_blec_dif = mk_levmar_blec_dif LMA_C.dlevmar_blec_dif--slevmar_blec_der :: LevMarBLecDer CFloat-slevmar_blec_der = mk_levmar_blec_der LMA_C.slevmar_blec_der--dlevmar_blec_der :: LevMarBLecDer CDouble-dlevmar_blec_der = mk_levmar_blec_der LMA_C.dlevmar_blec_der----- The End ---------------------------------------------------------------------
bindings-levmar.cabal view
@@ -1,16 +1,15 @@ name: bindings-levmar-version: 0.1.1.1+version: 0.2.0.1 cabal-version: >= 1.6 build-type: Simple stability: experimental-tested-with: GHC ==6.10.4 author: Roel van Dijk & Bas van Dijk maintainer: vandijk.roel@gmail.com, v.dijk.bas@gmail.com copyright: (c) 2009 Roel van Dijk & Bas van Dijk license: OtherLicense license-file: LICENSE-category: numerical, FFI-synopsis: A binding to the C levmar (Levenberg-Marquardt) library+category: Numerical, FFI+synopsis: Low level bindings to the C levmar (Levenberg-Marquardt) library description: The Levenberg-Marquardt algorithm is an iterative technique that finds a local minimum of a function that is expressed as the sum of squares of nonlinear@@ -32,7 +31,7 @@ . Note that the included C library is lightly patched to make it pure. This way the functions can be used inside- unsafePerformIO.+ @unsafePerformIO@. . A note regarding the license: .@@ -72,10 +71,10 @@ location: http://code.haskell.org/bindings-levmar library- build-depends: base >= 3 && < 4.2+ build-depends: base >= 3 && < 4.4+ , bindings-DSL >= 1.0.2 && < 1.1 exposed-modules: Bindings.LevMar- , Bindings.LevMar.CurryFriendly- ghc-options: -Wall -O2+ ghc-options: -Wall cc-options: -D_OPENMP include-dirs: levmar-2.4 c-sources: