----------------------------------------------------------------------------- -- | -- Module : BLAS.Types -- Copyright : Copyright (c) , Patrick Perry -- License : BSD3 -- Maintainer : Patrick Perry -- Stability : experimental -- module BLAS.Types ( OrderEnum(..), TransEnum(..), UpLoEnum(..), DiagEnum(..), SideEnum(..), flipOrder, flipTrans, flipUpLo, flipSide, ) where -- | Matrix element storage order. data OrderEnum = RowMajor | ColMajor deriving (Eq, Show, Enum) -- | Transpose type. data TransEnum = NoTrans | ConjTrans deriving (Eq, Show, Enum) -- | Lower or upper triangular storage. data UpLoEnum = Upper | Lower deriving (Eq, Show, Enum) -- | Diagonal storage. data DiagEnum = Unit | NonUnit deriving (Eq, Show, Enum) -- | Multiplication side. data SideEnum = LeftSide | RightSide deriving (Eq, Show, Enum) -- | Exchange @RowMajor@ and @ColMajor@. flipOrder :: OrderEnum -> OrderEnum flipOrder RowMajor = ColMajor flipOrder ColMajor = RowMajor -- | Exchange @NoTrans@ and @ConjTrans@. flipTrans :: TransEnum -> TransEnum flipTrans NoTrans = ConjTrans flipTrans ConjTrans = NoTrans -- | Exchange @Upper@ and @Lower@. flipUpLo :: UpLoEnum -> UpLoEnum flipUpLo Upper = Lower flipUpLo Lower = Upper -- | Exchange @LeftSide@ and @RigthSide@. flipSide :: SideEnum -> SideEnum flipSide LeftSide = RightSide flipSide RightSide = LeftSide