packages feed

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 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: