dynobud-1.0.0.0: src/Dyno/SXElement.hs
{-# OPTIONS_GHC -Wall #-}
{-# Language GeneralizedNewtypeDeriving #-}
module Dyno.SXElement
( SXElement(..)
, sxElementSym
, sxToSXElement
, sxElementToSX
) where
import Linear.Conjugate ( Conjugate(..) )
import Casadi.SX
import Casadi.Overloading
newtype SXElement =
SXElement SX
deriving ( Num, Fractional, Floating
, Fmod, ArcTan2, SymOrd
, Show, Eq, Conjugate
)
sxElementSym :: String -> IO SXElement
sxElementSym = fmap SXElement . ssym
sxToSXElement :: SX -> SXElement
sxToSXElement x
| (1,1) == sizes = SXElement x
| otherwise = error $ "sxToSXElement: got non-scalar of size " ++ show sizes
where
sizes = (ssize1 x, ssize2 x)
sxElementToSX :: SXElement -> SX
sxElementToSX (SXElement x)
| (1,1) == sizes = x
| otherwise = error $ "sxElementToSX: got non-scalar of size " ++ show sizes
where
sizes = (ssize1 x, ssize2 x)