module Numeric.LAPACK.Matrix.Layout.Basic where import qualified Numeric.Netlib.Modifier as Modi import Numeric.Netlib.Layout (Order(RowMajor,ColumnMajor)) import Data.Tuple.HT (swap) transposeFromOrder :: Order -> Char transposeFromOrder :: Order -> Char transposeFromOrder Order RowMajor = Char 'T' transposeFromOrder Order ColumnMajor = Char 'N' swapOnRowMajor :: Order -> (a,a) -> (a,a) swapOnRowMajor :: forall a. Order -> (a, a) -> (a, a) swapOnRowMajor Order order = case Order order of Order RowMajor -> (a, a) -> (a, a) forall a b. (a, b) -> (b, a) swap Order ColumnMajor -> (a, a) -> (a, a) forall a. a -> a id sideSwapFromOrder :: Order -> (a,a) -> (Char, (a,a)) sideSwapFromOrder :: forall a. Order -> (a, a) -> (Char, (a, a)) sideSwapFromOrder Order order (a m0,a n0) = let ((Char side,a m), (Char _,a n)) = Order -> ((Char, a), (Char, a)) -> ((Char, a), (Char, a)) forall a. Order -> (a, a) -> (a, a) swapOnRowMajor Order order ((Char 'L', a m0), (Char 'R', a n0)) in (Char side,(a m,a n)) conjugatedOnRowMajor :: Order -> Modi.Conjugation conjugatedOnRowMajor :: Order -> Conjugation conjugatedOnRowMajor Order RowMajor = Conjugation Modi.Conjugated conjugatedOnRowMajor Order ColumnMajor = Conjugation Modi.NonConjugated uploFromOrder :: Order -> Char uploFromOrder :: Order -> Char uploFromOrder Order RowMajor = Char 'L' uploFromOrder Order ColumnMajor = Char 'U'