lapack-0.3: Numerical Linear Algebra using LAPACK

Safe HaskellNone

Numeric.LAPACK.Matrix.Hermitian

Synopsis

Documentation

size :: Hermitian sh a -> shSource

fromList :: (C sh, Storable a) => Order -> sh -> [a] -> Hermitian sh aSource

identity :: (C sh, Floating a) => Order -> sh -> Hermitian sh aSource

diagonal :: (C sh, Floating a) => Order -> Vector sh (RealOf a) -> Hermitian sh aSource

takeDiagonal :: (C sh, Floating a) => Hermitian sh a -> Vector sh (RealOf a)Source

forceOrder :: (C sh, Floating a) => Order -> Hermitian sh a -> Hermitian sh aSource

stack :: (C sh0, Eq sh0, C sh1, Eq sh1, Floating a) => Hermitian sh0 a -> General sh0 sh1 a -> Hermitian sh1 a -> Hermitian (sh0 :+: sh1) aSource

 toSquare (stack a b c)

 =

 toSquare a ||| b
 ===
 adjoint b ||| toSquare c

It holds order (stack a b c) = order b. The function is most efficient when the order of all blocks match.

(*%%%#) :: (C sh0, Eq sh0, C sh1, Eq sh1, Floating a) => (Hermitian sh0 a, General sh0 sh1 a) -> Hermitian sh1 a -> Hermitian (sh0 :+: sh1) aSource

split :: (C sh0, C sh1, Floating a) => Hermitian (sh0 :+: sh1) a -> (Hermitian sh0 a, General sh0 sh1 a, Hermitian sh1 a)Source

takeTopLeft :: (C sh0, C sh1, Floating a) => Hermitian (sh0 :+: sh1) a -> Hermitian sh0 aSource

takeTopRight :: (C sh0, C sh1, Floating a) => Hermitian (sh0 :+: sh1) a -> General sh0 sh1 aSource

takeBottomRight :: (C sh0, C sh1, Floating a) => Hermitian (sh0 :+: sh1) a -> Hermitian sh1 aSource

multiplyVector :: (C sh, Eq sh, Floating a) => Transposition -> Hermitian sh a -> Vector sh a -> Vector sh aSource

square :: (C sh, Eq sh, Floating a) => Hermitian sh a -> Hermitian sh aSource

multiplyFull :: (C vert, C horiz, C height, Eq height, C width, Floating a) => Transposition -> Hermitian height a -> Full vert horiz height width a -> Full vert horiz height width aSource

outer :: (C sh, Floating a) => Order -> Vector sh a -> Hermitian sh aSource

sumRank1 :: (C sh, Eq sh, Floating a) => Order -> sh -> [(RealOf a, Vector sh a)] -> Hermitian sh aSource

sumRank1NonEmpty :: (C sh, Eq sh, Floating a) => Order -> T [] (RealOf a, Vector sh a) -> Hermitian sh aSource

sumRank2 :: (C sh, Eq sh, Floating a) => Order -> sh -> [(a, (Vector sh a, Vector sh a))] -> Hermitian sh aSource

sumRank2NonEmpty :: (C sh, Eq sh, Floating a) => Order -> T [] (a, (Vector sh a, Vector sh a)) -> Hermitian sh aSource

toSquare :: (C sh, Floating a) => Hermitian sh a -> Square sh aSource

gramian :: (C height, C width, Floating a) => General height width a -> Hermitian width aSource

gramian A = A^H * A

gramianAdjoint :: (C height, C width, Floating a) => General height width a -> Hermitian height aSource

gramianAdjoint A = A * A^H = gramian (A^H)

congruenceDiagonal :: (C height, Eq height, C width, Floating a) => Vector height (RealOf a) -> General height width a -> Hermitian width aSource

congruenceDiagonal D A = A^H * D * A

congruenceDiagonalAdjoint :: (C height, C width, Eq width, Floating a) => General height width a -> Vector width (RealOf a) -> Hermitian height aSource

congruenceDiagonalAdjoint A D = A * D * A^H

congruence :: (C height, Eq height, C width, Floating a) => Hermitian height a -> General height width a -> Hermitian width aSource

congruence B A = A^H * B * A

congruenceAdjoint :: (C height, C width, Eq width, Floating a) => General height width a -> Hermitian width a -> Hermitian height aSource

congruenceAdjoint B A = A * B * A^H

anticommutator :: (C vert, C horiz, C height, Eq height, C width, Eq width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Hermitian width aSource

anticommutator A B = A^H * B + B^H * A

Not exactly a matrix anticommutator, thus I like to call it Hermitian anticommutator.

anticommutatorAdjoint :: (C vert, C horiz, C height, Eq height, C width, Eq width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Hermitian height aSource

anticommutatorAdjoint A B = A * B^H + B * A^H = anticommutator (adjoint A) (adjoint B)

addAdjoint :: (C sh, Floating a) => Square sh a -> Hermitian sh aSource

addAdjoint A = A^H + A

solve :: (C vert, C horiz, C sh, Eq sh, C nrhs, Floating a) => Hermitian sh a -> Full vert horiz sh nrhs a -> Full vert horiz sh nrhs aSource

inverse :: (C sh, Floating a) => Hermitian sh a -> Hermitian sh aSource

determinant :: (C sh, Floating a) => Hermitian sh a -> RealOf aSource

eigenvalues :: (C sh, Floating a) => Hermitian sh a -> Vector sh (RealOf a)Source

eigensystem :: (C sh, Floating a) => Hermitian sh a -> (Square sh a, Vector sh (RealOf a))Source

For symmetric eigenvalue problems, eigensystem and schur coincide.