module Numeric.LAPACK.Permutation ( Plain.Permutation, Plain.Shape(Shape), Plain.Element(Element), Plain.size, Plain.identity, Mod.Inversion(NonInverted,Inverted), Plain.fromPivots, Plain.toPivots, toMatrix, Plain.Sign(Positive,Negative), Plain.determinant, Plain.numberFromSign, Plain.transpose, Plain.inversionFromTransposition, Plain.multiply, apply, ) where import qualified Numeric.LAPACK.Permutation.Private as Plain import qualified Numeric.LAPACK.Matrix.Array.Private as ArrMatrix import qualified Numeric.LAPACK.Matrix.Modifier as Mod import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent import Numeric.LAPACK.Permutation.Private (Permutation) import Numeric.LAPACK.Matrix.Array.Private (Full, Square) import qualified Numeric.Netlib.Class as Class import qualified Data.Array.Comfort.Shape as Shape toMatrix :: (Shape.C sh, Class.Floating a) => Permutation sh -> Square sh a toMatrix = ArrMatrix.lift0 . Plain.toMatrix apply :: (Extent.Measure meas, Extent.C vert, Extent.C horiz, Shape.C height, Eq height, Shape.C width, Class.Floating a) => Mod.Inversion -> Permutation height -> Full meas vert horiz height width a -> Full meas vert horiz height width a apply inverted = ArrMatrix.lift1 . Plain.apply inverted