{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Numeric.BLAS.Matrix.Layout where

import Control.DeepSeq (NFData, rnf)


data Order = RowMajor | ColumnMajor
   deriving (Order -> Order -> Bool
(Order -> Order -> Bool) -> (Order -> Order -> Bool) -> Eq Order
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Order -> Order -> Bool
== :: Order -> Order -> Bool
$c/= :: Order -> Order -> Bool
/= :: Order -> Order -> Bool
Eq, Int -> Order -> ShowS
[Order] -> ShowS
Order -> String
(Int -> Order -> ShowS)
-> (Order -> String) -> ([Order] -> ShowS) -> Show Order
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Order -> ShowS
showsPrec :: Int -> Order -> ShowS
$cshow :: Order -> String
show :: Order -> String
$cshowList :: [Order] -> ShowS
showList :: [Order] -> ShowS
Show)

instance NFData Order where
   rnf :: Order -> ()
rnf Order
RowMajor = ()
   rnf Order
ColumnMajor = ()

flipOrder :: Order -> Order
flipOrder :: Order -> Order
flipOrder Order
RowMajor = Order
ColumnMajor
flipOrder Order
ColumnMajor = Order
RowMajor

transposeFromOrder :: Order -> Char
transposeFromOrder :: Order -> Char
transposeFromOrder Order
RowMajor = Char
'T'
transposeFromOrder Order
ColumnMajor = Char
'N'