lapack-0.5.2: src/Numeric/LAPACK/Matrix/Layout/Basic.hs
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 RowMajor = 'T'
transposeFromOrder ColumnMajor = 'N'
swapOnRowMajor :: Order -> (a,a) -> (a,a)
swapOnRowMajor order =
case order of
RowMajor -> swap
ColumnMajor -> id
sideSwapFromOrder :: Order -> (a,a) -> (Char, (a,a))
sideSwapFromOrder order (m0,n0) =
let ((side,m), (_,n)) = swapOnRowMajor order (('L', m0), ('R', n0))
in (side,(m,n))
conjugatedOnRowMajor :: Order -> Modi.Conjugation
conjugatedOnRowMajor RowMajor = Modi.Conjugated
conjugatedOnRowMajor ColumnMajor = Modi.NonConjugated
uploFromOrder :: Order -> Char
uploFromOrder RowMajor = 'L'
uploFromOrder ColumnMajor = 'U'