lapack-0.4: src/Numeric/LAPACK/Matrix/Layout.hs
module Numeric.LAPACK.Matrix.Layout (
General,
Tall,
Wide,
Square,
Full(..), fullHeight, fullWidth,
Order(..), flipOrder,
general,
square,
liberalSquare,
wide,
tall,
Split,
SplitGeneral,
Triangle(..),
Reflector(..),
splitGeneral,
splitFromFull,
Mosaic(..),
Packing(..), PackingSingleton(..), Packed, Unpacked,
Mirror(..), MirrorSingleton(..),
autoUplo,
Triangular,
LowerTriangular, LowerTriangularP,
lowerTriangular, lowerTriangularP,
UpperTriangular, UpperTriangularP,
upperTriangular, upperTriangularP,
Symmetric, SymmetricP,
symmetric, symmetricP,
Hermitian, HermitianP,
hermitian, hermitianP,
Diagonal,
diagonal,
Banded(..),
BandedGeneral,
BandedSquare,
BandedLowerTriangular,
BandedUpperTriangular,
BandedIndex(..),
bandedGeneral,
bandedSquare,
bandedFromFull,
UnaryProxy,
addOffDiagonals,
BandedHermitian(..),
bandedHermitian,
) where
import qualified Numeric.LAPACK.Matrix.Extent.Private as Extent
import Numeric.LAPACK.Matrix.Layout.Private
type SplitGeneral lower height width =
Split lower Extent.Size Extent.Big Extent.Big height width
splitGeneral ::
lower -> Order -> height -> width -> SplitGeneral lower height width
splitGeneral lowerPart order height width =
Split lowerPart order $ Extent.general height width
splitFromFull ::
lower ->
Full meas vert horiz height width ->
Split lower meas vert horiz height width
splitFromFull lowerPart (Full order extent) = Split lowerPart order extent
diagonal :: Order -> size -> Diagonal size
diagonal order = Banded (u0,u0) order . Extent.square
bandedFromFull ::
(UnaryProxy sub, UnaryProxy super) ->
Full meas vert horiz height width ->
Banded sub super meas vert horiz height width
bandedFromFull offDiag (Full order extent) = Banded offDiag order extent
bandedHermitian :: UnaryProxy off -> Order -> size -> BandedHermitian off size
bandedHermitian = BandedHermitian