lapack-0.2.3.1: Numerical Linear Algebra using LAPACK

Safe HaskellNone
LanguageHaskell98

Numeric.LAPACK.Linear.LowerUpper

Synopsis

Documentation

data LowerUpper vert horiz height width a Source #

Instances
(C vert, C horiz, C height, C width, Storable a, Show height, Show width, Show a) => Show (LowerUpper vert horiz height width a) Source # 
Instance details

Defined in Numeric.LAPACK.Linear.LowerUpper

Methods

showsPrec :: Int -> LowerUpper vert horiz height width a -> ShowS #

show :: LowerUpper vert horiz height width a -> String #

showList :: [LowerUpper vert horiz height width a] -> ShowS #

(C vert, C horiz, C height, C width, Floating a) => Format (LowerUpper vert horiz height width a) Source # 
Instance details

Defined in Numeric.LAPACK.Linear.LowerUpper

Methods

format :: String -> LowerUpper vert horiz height width a -> Box Source #

mapExtent :: (C vertA, C horizA) => (C vertB, C horizB) => Map vertA horizA vertB horizB height width -> LowerUpper vertA horizA height width a -> LowerUpper vertB horizB height width a Source #

fromMatrix :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> LowerUpper vert horiz height width a Source #

LowerUpper.fromMatrix a computes the LU decomposition of matrix a with row pivotisation.

You can reconstruct a from lu depending on wether a is tall or wide.

LU.multiplyP False lu $ LU.extractL lu <#> LU.tallExtractU lu
LU.multiplyP False lu $ LU.wideExtractL lu <#> LU.extractU lu

toMatrix :: (C vert, C horiz, C height, Eq height, C width, Eq width, Floating a) => LowerUpper vert horiz height width a -> Full vert horiz height width a Source #

solve :: (C vert, C horiz, Eq height, C height, C width, Floating a) => Square height a -> Full vert horiz height width a -> Full vert horiz height width a Source #

multiplyFullRight :: (C vert, C horiz, C height, Eq height, C width, C fuse, Eq fuse, Floating a) => LowerUpper vert horiz height fuse a -> Full vert horiz fuse width a -> Full vert horiz height width a Source #

determinant :: (C sh, Floating a, Eq a) => Square sh a -> a Source #

Caution: LU.determinant . LU.fromMatrix will fail for singular matrices.

extractP :: (C vert, C horiz, C height) => Inversion -> LowerUpper vert horiz height width a -> Permutation height Source #

multiplyP :: (C vertA, C horizA, C vertB, C horizB, Eq height, C height, C widthA, C widthB, Floating a) => Inversion -> LowerUpper vertA horizA height widthA a -> Full vertB horizB height widthB a -> Full vertB horizB height widthB a Source #

extractL :: (C vert, C horiz, C height, C width, Floating a) => LowerUpper vert horiz height width a -> Full vert horiz height width a Source #

wideExtractL :: (C horiz, C height, C width, Floating a) => LowerUpper Small horiz height width a -> UnitLower height a Source #

wideMultiplyL :: (C horizA, C vert, C horiz, C height, Eq height, C widthA, C widthB, Floating a) => Transposition -> LowerUpper Small horizA height widthA a -> Full vert horiz height widthB a -> Full vert horiz height widthB a Source #

wideMultiplyL transposed lu a multiplies the square part of lu containing the lower triangular matrix with a.

wideMultiplyL False lu a == wideExtractL lu <#> a
wideMultiplyL True lu a == wideExtractL (Tri.transposeUp lu) <#> a

wideSolveL :: (C horizA, C vert, C horiz, C height, Eq height, C width, C nrhs, Floating a) => Transposition -> Conjugation -> LowerUpper Small horizA height width a -> Full vert horiz height nrhs a -> Full vert horiz height nrhs a Source #

extractU :: (C vert, C horiz, C height, C width, Floating a) => LowerUpper vert horiz height width a -> Full vert horiz height width a Source #

tallExtractU :: (C vert, C height, C width, Floating a) => LowerUpper vert Small height width a -> Upper width a Source #

tallMultiplyU :: (C vertA, C vert, C horiz, C height, Eq height, C heightA, C widthB, Floating a) => Transposition -> LowerUpper vertA Small heightA height a -> Full vert horiz height widthB a -> Full vert horiz height widthB a Source #

tallMultiplyU transposed lu a multiplies the square part of lu containing the upper triangular matrix with a.

tallMultiplyU False lu a == tallExtractU lu <#> a
tallMultiplyU True lu a == tallExtractU (Tri.transposeDown lu) <#> a

tallSolveU :: (C vertA, C vert, C horiz, C height, C width, Eq width, C nrhs, Floating a) => Transposition -> Conjugation -> LowerUpper vertA Small height width a -> Full vert horiz width nrhs a -> Full vert horiz width nrhs a Source #

caseTallWide :: (C vert, C horiz, C height, C width) => LowerUpper vert horiz height width a -> Either (Tall height width a) (Wide height width a) Source #