casadi-bindings 2.2.0.5 → 2.2.0.6
raw patch · 3 files changed
+31/−1 lines, 3 filesdep +cereal
Dependencies added: cereal
Files
- casadi-bindings.cabal +2/−1
- src/Casadi/DMatrix.hs +15/−0
- src/Casadi/Sparsity.hs +14/−0
casadi-bindings.cabal view
@@ -1,5 +1,5 @@ name: casadi-bindings-version: 2.2.0.5+version: 2.2.0.6 synopsis: mid-level bindings to CasADi category: Numerical, Math description:@@ -58,6 +58,7 @@ linear, vector, containers,+ cereal, casadi-bindings-internal == 0.1.2.1, casadi-bindings-core == 2.2.0.2 default-language: Haskell2010
src/Casadi/DMatrix.hs view
@@ -9,15 +9,30 @@ import qualified Data.Vector as V import System.IO.Unsafe ( unsafePerformIO ) import Linear.Conjugate ( Conjugate(..) )+import Data.Serialize ( Serialize(..) ) import Casadi.Core.Classes.DMatrix+import Casadi.Core.Classes.Sparsity ( Sparsity ) import qualified Casadi.Core.Tools as C import Casadi.Overloading ( Fmod(..), ArcTan2(..), SymOrd(..), Erf(..) ) import Casadi.CMatrix ( CMatrix(..) ) +instance Serialize DMatrix where+ get = do+ sp <- get+ data' <- get+ return (fromSparseData sp (V.fromList data'))+ put x = do+ put (sparsity x)+ put (V.toList (ddata x))+ instance Conjugate DMatrix where conjugate = id++fromSparseData :: Sparsity -> V.Vector Double -> DMatrix+fromSparseData s d = unsafePerformIO (dmatrix__6 s d)+{-# NOINLINE fromSparseData #-} dsparsify :: DMatrix -> DMatrix dsparsify x = unsafePerformIO (dmatrix_zz_sparsify__0 x)
src/Casadi/Sparsity.hs view
@@ -4,15 +4,21 @@ ( Sparsity , upper, lower, spy, spyMatlab , dense, sparse, scalar+ , compress, compressed ) where import qualified Data.Vector as V import System.IO.Unsafe ( unsafePerformIO )+import Data.Serialize ( Serialize(..) ) import Casadi.Core.Classes.Sparsity import Casadi.SharedObject ( castSharedObject ) +instance Serialize Sparsity where+ put = put . V.toList . compress+ get = fmap (compressed . V.fromList) get+ instance Show Sparsity where show x = show (castSharedObject x) {-# NOINLINE show #-}@@ -46,3 +52,11 @@ dense :: Int -> Int -> Sparsity dense nr nc = unsafePerformIO (sparsity_dense__1 nr nc) {-# NOINLINE dense #-}++compress :: Sparsity -> V.Vector Int+compress s = unsafePerformIO (sparsity_compress s)+{-# NOINLINE compress #-}++compressed :: V.Vector Int -> Sparsity+compressed v = unsafePerformIO (sparsity_compressed v)+{-# NOINLINE compressed #-}