casadi-bindings-2.1.3.2: src/Casadi/DMatrix.hs
{-# OPTIONS_GHC -Wall -fno-cse -fno-warn-orphans #-}
module Casadi.DMatrix
( DMatrix, dcrs, dmm, dvector, ddata, ddiag
, ddense, dsparse, dtrans, dtriu, dtril
, dsize, dsize1, dsize2, dnumel
, dvertcat, dhorzcat, dveccat, dvertsplit, dhorzsplit
, dones, dzeros
, dindexed
) where
import qualified Data.Vector as V
import System.IO.Unsafe ( unsafePerformIO )
import Linear.Conjugate ( Conjugate(..) )
import Casadi.Core.Classes.Sparsity
import Casadi.Core.Classes.DMatrix
import Casadi.Core.Classes.Slice ( Slice )
import qualified Casadi.Core.Tools as C
import Casadi.Overloading ( Fmod(..), ArcTan2(..), SymOrd(..) )
instance Conjugate DMatrix where
conjugate = id
instance Show DMatrix where
show x = unsafePerformIO (dmatrix_getDescription x)
{-# NOINLINE show #-}
instance Eq DMatrix where
x == y = unsafePerformIO (dmatrix_isEqual x y)
{-# NOINLINE (==) #-}
-- | matrix matrix product
dmm :: DMatrix -> DMatrix -> DMatrix
dmm x y = unsafePerformIO (dmatrix_mul__0 x y)
{-# NOINLINE dmm #-}
-- | transpose
dtrans :: DMatrix -> DMatrix
dtrans x = unsafePerformIO (dmatrix_trans x)
{-# NOINLINE dtrans #-}
ddense :: DMatrix -> DMatrix
ddense x = unsafePerformIO (C.dense__2 x)
{-# NOINLINE ddense #-}
dsparse :: DMatrix -> DMatrix
dsparse x = unsafePerformIO (C.sparse__2 x)
{-# NOINLINE dsparse #-}
dcrs :: DMatrix -> Sparsity
dcrs x = unsafePerformIO (dmatrix_sparsityRef__0 x)
{-# NOINLINE dcrs #-}
ddiag :: DMatrix -> DMatrix
ddiag x = unsafePerformIO (C.diag__2 x)
{-# NOINLINE ddiag #-}
-- | from vector
dvector :: V.Vector Double -> DMatrix
dvector x = unsafePerformIO (dmatrix__4 x)
{-# NOINLINE dvector #-}
ddata :: DMatrix -> V.Vector Double
ddata x = unsafePerformIO (dmatrix_data__0 x)
{-# NOINLINE ddata #-}
dsize :: DMatrix -> Int
dsize x = unsafePerformIO (dmatrix_size__1 x)
{-# NOINLINE dsize #-}
dsize1 :: DMatrix -> Int
dsize1 x = unsafePerformIO (dmatrix_size1 x)
{-# NOINLINE dsize1 #-}
dsize2 :: DMatrix -> Int
dsize2 x = unsafePerformIO (dmatrix_size2 x)
{-# NOINLINE dsize2 #-}
dnumel :: DMatrix -> Int
dnumel x = unsafePerformIO (dmatrix_numel x)
{-# NOINLINE dnumel #-}
dvertcat :: V.Vector DMatrix -> DMatrix
dvertcat x = unsafePerformIO (C.vertcat__3 x)
{-# NOINLINE dvertcat #-}
dveccat :: V.Vector DMatrix -> DMatrix
dveccat x = unsafePerformIO (C.veccat__2 x)
{-# NOINLINE dveccat #-}
dvertsplit :: DMatrix -> V.Vector Int -> V.Vector DMatrix
dvertsplit x ks = unsafePerformIO (C.vertsplit__9 x ks)
{-# NOINLINE dvertsplit #-}
dhorzsplit :: DMatrix -> V.Vector Int -> V.Vector DMatrix
dhorzsplit x ks = unsafePerformIO (C.horzsplit__9 x ks)
{-# NOINLINE dhorzsplit #-}
dhorzcat :: V.Vector DMatrix -> DMatrix
dhorzcat x = unsafePerformIO (C.horzcat__3 x)
{-# NOINLINE dhorzcat #-}
dtriu :: DMatrix -> DMatrix
dtriu x = unsafePerformIO (C.triu__4 (castDMatrix x))
{-# NOINLINE dtriu #-}
dtril :: DMatrix -> DMatrix
dtril x = unsafePerformIO (C.tril__4 (castDMatrix x))
{-# NOINLINE dtril #-}
dones :: (Int,Int) -> DMatrix
dones (r,c) = unsafePerformIO (dmatrix_ones__3 r c)
{-# NOINLINE dones #-}
dzeros :: (Int,Int) -> DMatrix
dzeros (r,c) = unsafePerformIO (dmatrix_zeros__3 r c)
{-# NOINLINE dzeros #-}
dindexed :: DMatrix -> Slice -> Slice -> DMatrix
dindexed m sx sy = unsafePerformIO (dmatrix_indexed__5 m sx sy)
{-# NOINLINE dindexed #-}
instance Num DMatrix where
(+) x y = unsafePerformIO (dmatrix___add__ x y)
{-# NOINLINE (+) #-}
(-) x y = unsafePerformIO (dmatrix___sub__ x y)
{-# NOINLINE (-) #-}
(*) x y = unsafePerformIO (dmatrix___mul__ x y)
{-# NOINLINE (*) #-}
fromInteger x = unsafePerformIO (dmatrix__5 (fromInteger x :: Double))
{-# NOINLINE fromInteger #-}
abs x = unsafePerformIO (dmatrix_fabs x)
{-# NOINLINE abs #-}
signum x = unsafePerformIO (dmatrix_sign x)
{-# NOINLINE signum #-}
instance Fractional DMatrix where
(/) x y = unsafePerformIO (dmatrix___truediv____0 x y)
{-# NOINLINE (/) #-}
fromRational x = unsafePerformIO (dmatrix__5 (fromRational x :: Double))
{-# NOINLINE fromRational #-}
instance Floating DMatrix where
pi = unsafePerformIO (dmatrix__5 (pi :: Double))
{-# NOINLINE pi #-}
(**) x y = unsafePerformIO (dmatrix___pow__ x y)
{-# NOINLINE (**) #-}
exp x = unsafePerformIO (dmatrix_exp x)
{-# NOINLINE exp #-}
log x = unsafePerformIO (dmatrix_log x)
{-# NOINLINE log #-}
sin x = unsafePerformIO (dmatrix_sin x)
{-# NOINLINE sin #-}
cos x = unsafePerformIO (dmatrix_cos x)
{-# NOINLINE cos #-}
tan x = unsafePerformIO (dmatrix_tan x)
{-# NOINLINE tan #-}
asin x = unsafePerformIO (dmatrix_arcsin x)
{-# NOINLINE asin #-}
atan x = unsafePerformIO (dmatrix_arctan x)
{-# NOINLINE atan #-}
acos x = unsafePerformIO (dmatrix_arccos x)
{-# NOINLINE acos #-}
sinh x = unsafePerformIO (dmatrix_sinh x)
{-# NOINLINE sinh #-}
cosh x = unsafePerformIO (dmatrix_cosh x)
{-# NOINLINE cosh #-}
tanh x = unsafePerformIO (dmatrix_tanh x)
{-# NOINLINE tanh #-}
asinh x = unsafePerformIO (dmatrix_arcsinh x)
{-# NOINLINE asinh #-}
atanh x = unsafePerformIO (dmatrix_arctanh x)
{-# NOINLINE atanh #-}
acosh x = unsafePerformIO (dmatrix_arccosh x)
{-# NOINLINE acosh #-}
instance Fmod DMatrix where
fmod x y = unsafePerformIO (dmatrix_fmod x y)
{-# NOINLINE fmod #-}
instance ArcTan2 DMatrix where
arctan2 x y = unsafePerformIO (dmatrix_arctan2 x y)
{-# NOINLINE arctan2 #-}
instance SymOrd DMatrix where
x `leq` y = unsafePerformIO (dmatrix___le__ x y)
{-# NOINLINE leq #-}
x `geq` y = unsafePerformIO (dmatrix___ge____0 x y)
{-# NOINLINE geq #-}
x `eq` y = unsafePerformIO (dmatrix___eq__ x y)
{-# NOINLINE eq #-}