lapack-0.5.2: src/Numeric/LAPACK/Matrix/ModifierTyped.hs
{-# LANGUAGE GADTs #-}
module Numeric.LAPACK.Matrix.ModifierTyped where
import qualified Numeric.Netlib.Modifier as Mod
import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent
import Numeric.LAPACK.Matrix.Extent.Private (Extent, Small)
data Transposition heightA widthA heightB widthB where
NonTransposed :: Transposition height width height width
Transposed :: Transposition height width width height
transposeTransposition ::
Transposition heightA widthA heightB widthB ->
Transposition widthA heightA widthB heightB
transposeTransposition trans =
case trans of
NonTransposed -> NonTransposed
Transposed -> Transposed
transposeSquareExtent ::
(Extent.Measure meas) =>
Transposition heightA widthA heightB widthB ->
Extent meas Small Small heightA widthA ->
Extent meas Small Small heightB widthB
transposeSquareExtent trans =
case trans of
NonTransposed -> id
Transposed -> Extent.transpose
transpositionToUntyped ::
Transposition heightA widthA heightB widthB -> Mod.Transposition
transpositionToUntyped trans =
case trans of
NonTransposed -> Mod.NonTransposed
Transposed -> Mod.Transposed
fromSquareTransposition :: Mod.Transposition -> Transposition sh sh sh sh
fromSquareTransposition trans =
case trans of
Mod.NonTransposed -> NonTransposed
Mod.Transposed -> Transposed
data SquareTransposition sh height width where
SquareTransposition :: Mod.Transposition -> SquareTransposition sh sh sh
squareFromTransposition ::
Transposition sh sh height width -> SquareTransposition sh height width
squareFromTransposition trans =
case trans of
NonTransposed -> SquareTransposition Mod.NonTransposed
Transposed -> SquareTransposition Mod.Transposed