{-# LANGUAGE TypeFamilies #-} module Numeric.LAPACK.Matrix.Special ( Matrix.Matrix(Scale,Inverse), Scale, Inverse, inverse, ) where import qualified Numeric.LAPACK.Matrix.Inverse as Inverse import qualified Numeric.LAPACK.Matrix.Type.Private as Matrix import qualified Numeric.LAPACK.Matrix.Shape.Omni as Omni import Numeric.LAPACK.Matrix.Layout.Private (Empty, Filled) type Scale sh = Matrix.Quadratic Matrix.Scale () () Empty Empty sh type Inverse typ lower upper sh = Matrix.Quadratic (Inverse.Inverse typ) lower upper Filled Filled sh inverse :: (Omni.PowerStrip lower, Omni.PowerStrip upper) => Matrix.QuadraticMeas typ xl xu upper lower meas width height a -> Matrix.QuadraticMeas (Inverse.Inverse typ) (xl,lower) (xu,upper) lower upper meas height width a inverse :: forall lower upper typ xl xu meas width height a. (PowerStrip lower, PowerStrip upper) => QuadraticMeas typ xl xu upper lower meas width height a -> QuadraticMeas (Inverse typ) (xl, lower) (xu, upper) lower upper meas height width a inverse QuadraticMeas typ xl xu upper lower meas width height a a = QuadraticMeas typ xl xu upper lower meas width height a -> Matrix (Inverse typ) (xl, lower) (xu, upper) lower upper meas Small Small height width a forall typ xl xu upperf lowerf meas width height a. QuadraticMeas typ xl xu upperf lowerf meas width height a -> Matrix (Inverse typ) (xl, lowerf) (xu, upperf) lowerf upperf meas Small Small height width a Inverse.Inverse QuadraticMeas typ xl xu upper lower meas width height a a