{-# LANGUAGE GADTs #-}
module Numeric.LAPACK.Matrix.Array.Basic where
import qualified Numeric.LAPACK.Matrix.BandedHermitian.Basic as BandedHermitian
import qualified Numeric.LAPACK.Matrix.Banded.Basic as Banded
import qualified Numeric.LAPACK.Matrix.Triangular.Basic as Triangular
import qualified Numeric.LAPACK.Matrix.Mosaic.Packed as Packed
import qualified Numeric.LAPACK.Matrix.Mosaic.Basic as Mosaic
import qualified Numeric.LAPACK.Matrix.Symmetric.Unified as Symmetric
import qualified Numeric.LAPACK.Matrix.Square.Basic as Square
import qualified Numeric.LAPACK.Matrix.Array.Private as ArrMatrix
import qualified Numeric.LAPACK.Matrix.Shape as MatrixShape
import qualified Numeric.LAPACK.Matrix.Shape.Omni as Omni
import qualified Numeric.LAPACK.Matrix.Layout.Private as Layout
import qualified Numeric.LAPACK.Matrix.Extent as Extent
import qualified Numeric.LAPACK.Vector as Vector
import qualified Numeric.LAPACK.Scalar as Scalar
import Numeric.LAPACK.Matrix.Array.Private (ArrayMatrix, Quadratic)
import Numeric.LAPACK.Vector (Vector)
import qualified Numeric.Netlib.Class as Class
import qualified Data.Array.Comfort.Storable.Unchecked as Array
import qualified Data.Array.Comfort.Shape as Shape
import Data.Array.Comfort.Storable (Array)
mapHeight ::
(ArrayMatrix pack property lower upper Extent.Size vert horiz ~ matrix,
Extent.C vert, Extent.C horiz,
Shape.C heightA, Shape.C heightB, Shape.C width) =>
(heightA -> heightB) ->
matrix heightA width a -> matrix heightB width a
mapHeight :: (heightA -> heightB)
-> matrix heightA width a -> matrix heightB width a
mapHeight heightA -> heightB
f =
OmniArray pack property lower upper Size vert horiz heightB width a
-> Matrix
(Array pack property)
()
()
lower
upper
Size
vert
horiz
heightB
width
a
forall pack prop lower upper meas vert horiz height width a.
OmniArray pack prop lower upper meas vert horiz height width a
-> Matrix
(Array pack prop) () () lower upper meas vert horiz height width a
ArrMatrix.Array (OmniArray
pack property lower upper Size vert horiz heightB width a
-> Matrix
(Array pack property)
()
()
lower
upper
Size
vert
horiz
heightB
width
a)
-> (ArrayMatrix
pack property lower upper Size vert horiz heightA width a
-> OmniArray
pack property lower upper Size vert horiz heightB width a)
-> ArrayMatrix
pack property lower upper Size vert horiz heightA width a
-> Matrix
(Array pack property)
()
()
lower
upper
Size
vert
horiz
heightB
width
a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Omni pack property lower upper Size vert horiz heightA width
-> Omni pack property lower upper Size vert horiz heightB width)
-> Array
(Omni pack property lower upper Size vert horiz heightA width) a
-> OmniArray
pack property lower upper Size vert horiz heightB width a
forall sh0 sh1 a. (sh0 -> sh1) -> Array sh0 a -> Array sh1 a
Array.mapShape ((heightA -> heightB)
-> Omni pack property lower upper Size vert horiz heightA width
-> Omni pack property lower upper Size vert horiz heightB width
forall heightA heightB vert horiz pack property lower upper width.
(C heightA, C heightB, C vert, C horiz) =>
(heightA -> heightB)
-> Omni pack property lower upper Size vert horiz heightA width
-> Omni pack property lower upper Size vert horiz heightB width
Omni.mapHeight heightA -> heightB
f) (Array
(Omni pack property lower upper Size vert horiz heightA width) a
-> OmniArray
pack property lower upper Size vert horiz heightB width a)
-> (ArrayMatrix
pack property lower upper Size vert horiz heightA width a
-> Array
(Omni pack property lower upper Size vert horiz heightA width) a)
-> ArrayMatrix
pack property lower upper Size vert horiz heightA width a
-> OmniArray
pack property lower upper Size vert horiz heightB width a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ArrayMatrix
pack property lower upper Size vert horiz heightA width a
-> Array
(Omni pack property lower upper Size vert horiz heightA width) a
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> OmniArray
pack property lower upper meas vert horiz height width a
ArrMatrix.unwrap
mapWidth ::
(ArrayMatrix pack property lower upper Extent.Size vert horiz ~ matrix,
Extent.C vert, Extent.C horiz,
Shape.C widthA, Shape.C widthB, Shape.C height) =>
(widthA -> widthB) ->
matrix height widthA a -> matrix height widthB a
mapWidth :: (widthA -> widthB)
-> matrix height widthA a -> matrix height widthB a
mapWidth widthA -> widthB
f =
OmniArray pack property lower upper Size vert horiz height widthB a
-> Matrix
(Array pack property)
()
()
lower
upper
Size
vert
horiz
height
widthB
a
forall pack prop lower upper meas vert horiz height width a.
OmniArray pack prop lower upper meas vert horiz height width a
-> Matrix
(Array pack prop) () () lower upper meas vert horiz height width a
ArrMatrix.Array (OmniArray
pack property lower upper Size vert horiz height widthB a
-> Matrix
(Array pack property)
()
()
lower
upper
Size
vert
horiz
height
widthB
a)
-> (ArrayMatrix
pack property lower upper Size vert horiz height widthA a
-> OmniArray
pack property lower upper Size vert horiz height widthB a)
-> ArrayMatrix
pack property lower upper Size vert horiz height widthA a
-> Matrix
(Array pack property)
()
()
lower
upper
Size
vert
horiz
height
widthB
a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Omni pack property lower upper Size vert horiz height widthA
-> Omni pack property lower upper Size vert horiz height widthB)
-> Array
(Omni pack property lower upper Size vert horiz height widthA) a
-> OmniArray
pack property lower upper Size vert horiz height widthB a
forall sh0 sh1 a. (sh0 -> sh1) -> Array sh0 a -> Array sh1 a
Array.mapShape ((widthA -> widthB)
-> Omni pack property lower upper Size vert horiz height widthA
-> Omni pack property lower upper Size vert horiz height widthB
forall widthA widthB vert horiz pack property lower upper height.
(C widthA, C widthB, C vert, C horiz) =>
(widthA -> widthB)
-> Omni pack property lower upper Size vert horiz height widthA
-> Omni pack property lower upper Size vert horiz height widthB
Omni.mapWidth widthA -> widthB
f) (Array
(Omni pack property lower upper Size vert horiz height widthA) a
-> OmniArray
pack property lower upper Size vert horiz height widthB a)
-> (ArrayMatrix
pack property lower upper Size vert horiz height widthA a
-> Array
(Omni pack property lower upper Size vert horiz height widthA) a)
-> ArrayMatrix
pack property lower upper Size vert horiz height widthA a
-> OmniArray
pack property lower upper Size vert horiz height widthB a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ArrayMatrix
pack property lower upper Size vert horiz height widthA a
-> Array
(Omni pack property lower upper Size vert horiz height widthA) a
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> OmniArray
pack property lower upper meas vert horiz height width a
ArrMatrix.unwrap
mapSquareSize ::
(Shape.C shA, Shape.C shB) =>
(shA -> shB) ->
Quadratic pack property lower upper shA a ->
Quadratic pack property lower upper shB a
mapSquareSize :: (shA -> shB)
-> Quadratic pack property lower upper shA a
-> Quadratic pack property lower upper shB a
mapSquareSize shA -> shB
f =
OmniArray pack property lower upper Shape Small Small shB shB a
-> Quadratic pack property lower upper shB a
forall pack prop lower upper meas vert horiz height width a.
OmniArray pack prop lower upper meas vert horiz height width a
-> Matrix
(Array pack prop) () () lower upper meas vert horiz height width a
ArrMatrix.Array (OmniArray pack property lower upper Shape Small Small shB shB a
-> Quadratic pack property lower upper shB a)
-> (Quadratic pack property lower upper shA a
-> OmniArray pack property lower upper Shape Small Small shB shB a)
-> Quadratic pack property lower upper shA a
-> Quadratic pack property lower upper shB a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Omni pack property lower upper Shape Small Small shA shA
-> Omni pack property lower upper Shape Small Small shB shB)
-> Array
(Omni pack property lower upper Shape Small Small shA shA) a
-> OmniArray pack property lower upper Shape Small Small shB shB a
forall sh0 sh1 a. (sh0 -> sh1) -> Array sh0 a -> Array sh1 a
Array.mapShape ((shA -> shB)
-> Omni pack property lower upper Shape Small Small shA shA
-> Omni pack property lower upper Shape Small Small shB shB
forall shA shB pack property lower upper.
(C shA, C shB) =>
(shA -> shB)
-> Omni pack property lower upper Shape Small Small shA shA
-> Omni pack property lower upper Shape Small Small shB shB
Omni.mapSquareSize shA -> shB
f) (Array (Omni pack property lower upper Shape Small Small shA shA) a
-> OmniArray pack property lower upper Shape Small Small shB shB a)
-> (Quadratic pack property lower upper shA a
-> Array
(Omni pack property lower upper Shape Small Small shA shA) a)
-> Quadratic pack property lower upper shA a
-> OmniArray pack property lower upper Shape Small Small shB shB a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Quadratic pack property lower upper shA a
-> Array
(Omni pack property lower upper Shape Small Small shA shA) a
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> OmniArray
pack property lower upper meas vert horiz height width a
ArrMatrix.unwrap
toFull ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz) =>
(Shape.C height, Shape.C width, Class.Floating a) =>
ArrayMatrix pack property lower upper meas vert horiz height width a ->
ArrMatrix.Full meas vert horiz height width a
toFull :: ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
toFull ArrayMatrix
pack property lower upper meas vert horiz height width a
a =
case ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Omni pack property lower upper meas vert horiz height width
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Omni pack property lower upper meas vert horiz height width
ArrMatrix.shape ArrayMatrix
pack property lower upper meas vert horiz height width a
a of
Omni.Full Full meas vert horiz height width
_ -> (FullArray meas vert horiz height width a
-> FullArray meas vert horiz height width a)
-> UnpackedMatrix
property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall propertyA lowerA upperA propertyB lowerB upperB measA vertA
horizA heightA widthA a measB vertB horizB heightB widthB b.
(Property propertyA, Strip lowerA, Strip upperA,
Property propertyB, Strip lowerB, Strip upperB) =>
(FullArray measA vertA horizA heightA widthA a
-> FullArray measB vertB horizB heightB widthB b)
-> UnpackedMatrix
propertyA lowerA upperA measA vertA horizA heightA widthA a
-> UnpackedMatrix
propertyB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.liftUnpacked1 FullArray meas vert horiz height width a
-> FullArray meas vert horiz height width a
forall a. a -> a
id ArrayMatrix
pack property lower upper meas vert horiz height width a
UnpackedMatrix property lower upper meas vert horiz height width a
a
Omni.UpperTriangular UpperTriangular height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
forall uplo sh a.
(UpLo uplo, C sh, Floating a) =>
Triangular uplo sh a -> Square sh a
Triangular.toSquare ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.LowerTriangular LowerTriangular height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
forall uplo sh a.
(UpLo uplo, C sh, Floating a) =>
Triangular uplo sh a -> Square sh a
Triangular.toSquare ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.Symmetric Symmetric height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
forall mirror sh a.
(Mirror mirror, C sh, Floating a) =>
Mosaic mirror Upper sh a -> Square sh a
Symmetric.toSquare ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.Hermitian Hermitian height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
forall mirror sh a.
(Mirror mirror, C sh, Floating a) =>
Mosaic mirror Upper sh a -> Square sh a
Symmetric.toSquare ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.Banded Banded sub super meas vert horiz height width
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
forall sub super meas vert horiz height width a.
(Natural sub, Natural super, Measure meas, C vert, C horiz,
C height, C width, Floating a) =>
Banded sub super meas vert horiz height width a
-> Full meas vert horiz height width a
Banded.toFull ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.UnitBandedTriangular BandedSquare sub super height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
forall sub super meas vert horiz height width a.
(Natural sub, Natural super, Measure meas, C vert, C horiz,
C height, C width, Floating a) =>
Banded sub super meas vert horiz height width a
-> Full meas vert horiz height width a
Banded.toFull ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.BandedHermitian BandedHermitian offDiag height
_ ->
(PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Full meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 (Banded offDiag offDiag Shape Small Small height height a
-> Full Shape Small Small height height a
forall sub super meas vert horiz height width a.
(Natural sub, Natural super, Measure meas, C vert, C horiz,
C height, C width, Floating a) =>
Banded sub super meas vert horiz height width a
-> Full meas vert horiz height width a
Banded.toFull (Banded offDiag offDiag Shape Small Small height height a
-> Full Shape Small Small height height a)
-> (BandedHermitian offDiag height a
-> Banded offDiag offDiag Shape Small Small height height a)
-> BandedHermitian offDiag height a
-> Full Shape Small Small height height a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BandedHermitian offDiag height a
-> Banded offDiag offDiag Shape Small Small height height a
forall offDiag size a.
(Natural offDiag, C size, Floating a) =>
BandedHermitian offDiag size a -> Square offDiag offDiag size a
BandedHermitian.toBanded) ArrayMatrix
pack property lower upper meas vert horiz height width a
a
unpack ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz) =>
(Shape.C height, Shape.C width, Class.Floating a) =>
ArrayMatrix pack property lower upper meas vert horiz height width a ->
ArrayMatrix Layout.Unpacked
property lower upper meas vert horiz height width a
unpack :: ArrayMatrix
pack property lower upper meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
unpack ArrayMatrix
pack property lower upper meas vert horiz height width a
a =
case ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Omni pack property lower upper meas vert horiz height width
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Omni pack property lower upper meas vert horiz height width
ArrMatrix.shape ArrayMatrix
pack property lower upper meas vert horiz height width a
a of
Omni.Full Full meas vert horiz height width
_ -> (FullArray meas vert horiz height width a
-> FullArray meas vert horiz height width a)
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall propertyA lowerA upperA propertyB lowerB upperB measA vertA
horizA heightA widthA a measB vertB horizB heightB widthB b.
(Property propertyA, Strip lowerA, Strip upperA,
Property propertyB, Strip lowerB, Strip upperB) =>
(FullArray measA vertA horizA heightA widthA a
-> FullArray measB vertB horizB heightB widthB b)
-> UnpackedMatrix
propertyA lowerA upperA measA vertA horizA heightA widthA a
-> UnpackedMatrix
propertyB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.liftUnpacked1 FullArray meas vert horiz height width a
-> FullArray meas vert horiz height width a
forall a. a -> a
id ArrayMatrix
pack property lower upper meas vert horiz height width a
ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
a
Omni.UpperTriangular UpperTriangular height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Mosaic mirror uplo sh a
Mosaic.unpack ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.LowerTriangular LowerTriangular height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Mosaic mirror uplo sh a
Mosaic.unpack ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.Symmetric Symmetric height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Mosaic mirror uplo sh a
Mosaic.unpack ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.Hermitian Hermitian height
_ -> (PlainArray
pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a)
-> ArrayMatrix
pack property lower upper meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall packA propA lowerA upperA measA vertA horizA heightA widthA
packB propB lowerB upperB measB vertB horizB heightB widthB a b.
(ToPlain
packA propA lowerA upperA measA vertA horizA heightA widthA,
FromPlain
packB propB lowerB upperB measB vertB horizB heightB widthB) =>
(PlainArray
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> PlainArray
packB propB lowerB upperB measB vertB horizB heightB widthB b)
-> ArrayMatrix
packA propA lowerA upperA measA vertA horizA heightA widthA a
-> ArrayMatrix
packB propB lowerB upperB measB vertB horizB heightB widthB b
ArrMatrix.lift1 PlainArray pack property lower upper meas vert horiz height width a
-> PlainArray
Unpacked property lower upper meas vert horiz height width a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Mosaic mirror uplo sh a
Mosaic.unpack ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.Banded Banded sub super meas vert horiz height width
_ ->
FullArray meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall propertyA lowerA upperA measA vertA horizA heightA widthA a.
(Property propertyA, Strip lowerA, Strip upperA) =>
FullArray measA vertA horizA heightA widthA a
-> UnpackedMatrix
propertyA lowerA upperA measA vertA horizA heightA widthA a
ArrMatrix.liftUnpacked0 (FullArray meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a)
-> FullArray meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall a b. (a -> b) -> a -> b
$ Banded sub super meas vert horiz height width a
-> FullArray meas vert horiz height width a
forall sub super meas vert horiz height width a.
(Natural sub, Natural super, Measure meas, C vert, C horiz,
C height, C width, Floating a) =>
Banded sub super meas vert horiz height width a
-> Full meas vert horiz height width a
Banded.toFull (Banded sub super meas vert horiz height width a
-> FullArray meas vert horiz height width a)
-> Banded sub super meas vert horiz height width a
-> FullArray meas vert horiz height width a
forall a b. (a -> b) -> a -> b
$ ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.UnitBandedTriangular BandedSquare sub super height
_ ->
FullArray meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall propertyA lowerA upperA measA vertA horizA heightA widthA a.
(Property propertyA, Strip lowerA, Strip upperA) =>
FullArray measA vertA horizA heightA widthA a
-> UnpackedMatrix
propertyA lowerA upperA measA vertA horizA heightA widthA a
ArrMatrix.liftUnpacked0 (FullArray meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a)
-> FullArray meas vert horiz height width a
-> ArrayMatrix
Unpacked property lower upper meas vert horiz height width a
forall a b. (a -> b) -> a -> b
$ Banded sub super meas vert horiz height width a
-> FullArray meas vert horiz height width a
forall sub super meas vert horiz height width a.
(Natural sub, Natural super, Measure meas, C vert, C horiz,
C height, C width, Floating a) =>
Banded sub super meas vert horiz height width a
-> Full meas vert horiz height width a
Banded.toFull (Banded sub super meas vert horiz height width a
-> FullArray meas vert horiz height width a)
-> Banded sub super meas vert horiz height width a
-> FullArray meas vert horiz height width a
forall a b. (a -> b) -> a -> b
$ ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector ArrayMatrix
pack property lower upper meas vert horiz height width a
a
Omni.BandedHermitian BandedHermitian offDiag height
_ ->
FullArray Shape Small Small height height a
-> UnpackedMatrix
property lower upper Shape Small Small height height a
forall propertyA lowerA upperA measA vertA horizA heightA widthA a.
(Property propertyA, Strip lowerA, Strip upperA) =>
FullArray measA vertA horizA heightA widthA a
-> UnpackedMatrix
propertyA lowerA upperA measA vertA horizA heightA widthA a
ArrMatrix.liftUnpacked0 (FullArray Shape Small Small height height a
-> UnpackedMatrix
property lower upper Shape Small Small height height a)
-> FullArray Shape Small Small height height a
-> UnpackedMatrix
property lower upper Shape Small Small height height a
forall a b. (a -> b) -> a -> b
$ Banded offDiag offDiag Shape Small Small height height a
-> FullArray Shape Small Small height height a
forall sub super meas vert horiz height width a.
(Natural sub, Natural super, Measure meas, C vert, C horiz,
C height, C width, Floating a) =>
Banded sub super meas vert horiz height width a
-> Full meas vert horiz height width a
Banded.toFull (Banded offDiag offDiag Shape Small Small height height a
-> FullArray Shape Small Small height height a)
-> Banded offDiag offDiag Shape Small Small height height a
-> FullArray Shape Small Small height height a
forall a b. (a -> b) -> a -> b
$
BandedHermitian offDiag height a
-> Banded offDiag offDiag Shape Small Small height height a
forall offDiag size a.
(Natural offDiag, C size, Floating a) =>
BandedHermitian offDiag size a -> Square offDiag offDiag size a
BandedHermitian.toBanded (BandedHermitian offDiag height a
-> Banded offDiag offDiag Shape Small Small height height a)
-> BandedHermitian offDiag height a
-> Banded offDiag offDiag Shape Small Small height height a
forall a b. (a -> b) -> a -> b
$ ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector ArrayMatrix
pack property lower upper meas vert horiz height width a
a
takeDiagonal ::
(Shape.C sh, Class.Floating a) =>
Quadratic pack property lower upper sh a -> Vector sh a
takeDiagonal :: Quadratic pack property lower upper sh a -> Vector sh a
takeDiagonal Quadratic pack property lower upper sh a
a =
case Quadratic pack property lower upper sh a
-> Omni pack property lower upper Shape Small Small sh sh
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Omni pack property lower upper meas vert horiz height width
ArrMatrix.shape Quadratic pack property lower upper sh a
a of
Omni.Full Full Shape Small Small sh sh
fullShape ->
Square sh a -> Vector sh a
forall sh a. (C sh, Floating a) => Square sh a -> Vector sh a
Square.takeDiagonal (Square sh a -> Vector sh a) -> Square sh a -> Vector sh a
forall a b. (a -> b) -> a -> b
$ Full Shape Small Small sh sh
-> Array (Omni pack property lower upper Shape Small Small sh sh) a
-> Square sh a
forall sh1 sh0 a. sh1 -> Array sh0 a -> Array sh1 a
Array.reshape Full Shape Small Small sh sh
fullShape (Array (Omni pack property lower upper Shape Small Small sh sh) a
-> Square sh a)
-> Array (Omni pack property lower upper Shape Small Small sh sh) a
-> Square sh a
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> Array (Omni pack property lower upper Shape Small Small sh sh) a
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> OmniArray
pack property lower upper meas vert horiz height width a
ArrMatrix.unwrap Quadratic pack property lower upper sh a
a
Omni.UpperTriangular UpperTriangular sh
_ -> Mosaic Packed NoMirror Upper sh a -> Vector sh a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Vector sh a
Mosaic.takeDiagonal (Mosaic Packed NoMirror Upper sh a -> Vector sh a)
-> Mosaic Packed NoMirror Upper sh a -> Vector sh a
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> PlainArray pack property lower upper Shape Small Small sh sh a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector Quadratic pack property lower upper sh a
a
Omni.LowerTriangular LowerTriangular sh
_ -> Mosaic Packed NoMirror Lower sh a -> Vector sh a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Vector sh a
Mosaic.takeDiagonal (Mosaic Packed NoMirror Lower sh a -> Vector sh a)
-> Mosaic Packed NoMirror Lower sh a -> Vector sh a
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> PlainArray pack property lower upper Shape Small Small sh sh a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector Quadratic pack property lower upper sh a
a
Omni.Symmetric Symmetric sh
_ -> Mosaic Packed SimpleMirror Upper sh a -> Vector sh a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Vector sh a
Mosaic.takeDiagonal (Mosaic Packed SimpleMirror Upper sh a -> Vector sh a)
-> Mosaic Packed SimpleMirror Upper sh a -> Vector sh a
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> PlainArray pack property lower upper Shape Small Small sh sh a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector Quadratic pack property lower upper sh a
a
Omni.Hermitian Hermitian sh
_ -> Mosaic Packed ConjugateMirror Upper sh a -> Vector sh a
forall uplo sh a pack mirror.
(UpLo uplo, C sh, Floating a) =>
Mosaic pack mirror uplo sh a -> Vector sh a
Mosaic.takeDiagonal (Mosaic Packed ConjugateMirror Upper sh a -> Vector sh a)
-> Mosaic Packed ConjugateMirror Upper sh a -> Vector sh a
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> PlainArray pack property lower upper Shape Small Small sh sh a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector Quadratic pack property lower upper sh a
a
Omni.Banded Banded sub super Shape Small Small sh sh
_ -> Square sub super sh a -> Vector sh a
forall sub super sh a.
(Natural sub, Natural super, C sh, Floating a) =>
Square sub super sh a -> Vector sh a
Banded.takeDiagonal (Square sub super sh a -> Vector sh a)
-> Square sub super sh a -> Vector sh a
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> PlainArray pack property lower upper Shape Small Small sh sh a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector Quadratic pack property lower upper sh a
a
Omni.UnitBandedTriangular BandedSquare sub super sh
_ -> Square sub super sh a -> Vector sh a
forall sub super sh a.
(Natural sub, Natural super, C sh, Floating a) =>
Square sub super sh a -> Vector sh a
Banded.takeDiagonal (Square sub super sh a -> Vector sh a)
-> Square sub super sh a -> Vector sh a
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> PlainArray pack property lower upper Shape Small Small sh sh a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector Quadratic pack property lower upper sh a
a
Omni.BandedHermitian BandedHermitian offDiag sh
_ ->
Vector sh (RealOf a) -> Vector sh a
forall sh a.
(C sh, Floating a) =>
Vector sh (RealOf a) -> Vector sh a
Vector.fromReal (Vector sh (RealOf a) -> Vector sh a)
-> Vector sh (RealOf a) -> Vector sh a
forall a b. (a -> b) -> a -> b
$ BandedHermitian offDiag sh a -> Vector sh (RealOf a)
forall offDiag size a.
(Natural offDiag, C size, Floating a) =>
BandedHermitian offDiag size a -> Vector size (RealOf a)
BandedHermitian.takeDiagonal (BandedHermitian offDiag sh a -> Vector sh (RealOf a))
-> BandedHermitian offDiag sh a -> Vector sh (RealOf a)
forall a b. (a -> b) -> a -> b
$ Quadratic pack property lower upper sh a
-> PlainArray pack property lower upper Shape Small Small sh sh a
forall pack property lower upper meas vert horiz height width a.
ToPlain pack property lower upper meas vert horiz height width =>
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> PlainArray
pack property lower upper meas vert horiz height width a
ArrMatrix.toVector Quadratic pack property lower upper sh a
a
identityFromShape ::
(Shape.C sh, Class.Floating a) =>
MatrixShape.Quadratic pack property lower upper sh ->
Quadratic pack property lower upper sh a
identityFromShape :: Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a
identityFromShape Quadratic pack property lower upper sh
omni =
OmniArray pack property lower upper Shape Small Small sh sh a
-> Quadratic pack property lower upper sh a
forall pack prop lower upper meas vert horiz height width a.
OmniArray pack prop lower upper meas vert horiz height width a
-> Matrix
(Array pack prop) () () lower upper meas vert horiz height width a
ArrMatrix.Array (OmniArray pack property lower upper Shape Small Small sh sh a
-> Quadratic pack property lower upper sh a)
-> OmniArray pack property lower upper Shape Small Small sh sh a
-> Quadratic pack property lower upper sh a
forall a b. (a -> b) -> a -> b
$
case Quadratic pack property lower upper sh
omni of
Omni.Full Full Shape Small Small sh sh
_ ->
(Full Shape Small Small sh sh
-> Omni Unpacked property lower upper Shape Small Small sh sh)
-> (Order -> sh -> Array (Full Shape Small Small sh sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni Unpacked property lower upper Shape Small Small sh sh) a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni Full Shape Small Small sh sh
-> Omni Unpacked property lower upper Shape Small Small sh sh
forall property lower upper meas vert horiz height width.
(Property property, Strip lower, Strip upper) =>
Full meas vert horiz height width
-> Omni Unpacked property lower upper meas vert horiz height width
Omni.Full Order -> sh -> Array (Full Shape Small Small sh sh) a
forall sh a. (C sh, Floating a) => Order -> sh -> Square sh a
Square.identityOrder Quadratic pack property lower upper sh
omni
Omni.UpperTriangular UpperTriangular sh
_ ->
(UpperTriangular sh
-> Omni Packed property Empty Filled Shape Small Small sh sh)
-> (Order -> sh -> Array (UpperTriangular sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni Packed property Empty Filled Shape Small Small sh sh) a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni UpperTriangular sh
-> Omni Packed property Empty Filled Shape Small Small sh sh
forall diag size.
TriDiag diag =>
UpperTriangular size
-> Omni Packed diag Empty Filled Shape Small Small size size
Omni.UpperTriangular Order -> sh -> Array (UpperTriangular sh) a
forall mirror uplo sh a.
(Mirror mirror, UpLo uplo, C sh, Floating a) =>
Order -> sh -> Mosaic mirror uplo sh a
Packed.identity Quadratic pack property lower upper sh
omni
Omni.LowerTriangular LowerTriangular sh
_ ->
(LowerTriangular sh
-> Omni Packed property Filled Empty Shape Small Small sh sh)
-> (Order -> sh -> Array (LowerTriangular sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni Packed property Filled Empty Shape Small Small sh sh) a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni LowerTriangular sh
-> Omni Packed property Filled Empty Shape Small Small sh sh
forall diag size.
TriDiag diag =>
LowerTriangular size
-> Omni Packed diag Filled Empty Shape Small Small size size
Omni.LowerTriangular Order -> sh -> Array (LowerTriangular sh) a
forall mirror uplo sh a.
(Mirror mirror, UpLo uplo, C sh, Floating a) =>
Order -> sh -> Mosaic mirror uplo sh a
Packed.identity Quadratic pack property lower upper sh
omni
Omni.Symmetric Symmetric sh
_ ->
(Symmetric sh
-> Omni Packed Symmetric Filled Filled Shape Small Small sh sh)
-> (Order -> sh -> Array (Symmetric sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni Packed Symmetric Filled Filled Shape Small Small sh sh) a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni Symmetric sh
-> Omni Packed Symmetric Filled Filled Shape Small Small sh sh
forall size.
Symmetric size
-> Omni Packed Symmetric Filled Filled Shape Small Small size size
Omni.Symmetric Order -> sh -> Array (Symmetric sh) a
forall mirror uplo sh a.
(Mirror mirror, UpLo uplo, C sh, Floating a) =>
Order -> sh -> Mosaic mirror uplo sh a
Packed.identity Quadratic pack property lower upper sh
omni
Omni.Hermitian Hermitian sh
_ ->
(Hermitian sh
-> Omni
Packed
(Hermitian neg zero pos)
Filled
Filled
Shape
Small
Small
sh
sh)
-> (Order -> sh -> Array (Hermitian sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni
Packed
(Hermitian neg zero pos)
Filled
Filled
Shape
Small
Small
sh
sh)
a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni Hermitian sh
-> Omni
Packed
(Hermitian neg zero pos)
Filled
Filled
Shape
Small
Small
sh
sh
forall neg zero sub size.
(C neg, C zero, C sub) =>
Hermitian size
-> Omni
Packed
(Hermitian neg zero sub)
Filled
Filled
Shape
Small
Small
size
size
Omni.Hermitian Order -> sh -> Array (Hermitian sh) a
forall mirror uplo sh a.
(Mirror mirror, UpLo uplo, C sh, Floating a) =>
Order -> sh -> Mosaic mirror uplo sh a
Packed.identity Quadratic pack property lower upper sh
omni
Omni.Banded Banded sub super Shape Small Small sh sh
_ ->
(Banded sub super Shape Small Small sh sh
-> Omni
Packed Arbitrary (Bands sub) (Bands super) Shape Small Small sh sh)
-> (Order
-> sh -> Array (Banded sub super Shape Small Small sh sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni
Packed Arbitrary (Bands sub) (Bands super) Shape Small Small sh sh)
a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni Banded sub super Shape Small Small sh sh
-> Omni
Packed Arbitrary (Bands sub) (Bands super) Shape Small Small sh sh
forall sub super meas vert horiz height width.
(Natural sub, Natural super) =>
Banded sub super meas vert horiz height width
-> Omni
Packed
Arbitrary
(Bands sub)
(Bands super)
meas
vert
horiz
height
width
Omni.Banded Order -> sh -> Array (Banded sub super Shape Small Small sh sh) a
forall sub super size a.
(Natural sub, Natural super, C size, Floating a) =>
Order -> size -> Square sub super size a
Banded.identityFatOrder Quadratic pack property lower upper sh
omni
Omni.UnitBandedTriangular BandedSquare sub super sh
_ ->
(BandedSquare sub super sh
-> Omni
Packed Unit (Bands sub) (Bands super) Shape Small Small sh sh)
-> (Order -> sh -> Array (BandedSquare sub super sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni
Packed Unit (Bands sub) (Bands super) Shape Small Small sh sh)
a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni BandedSquare sub super sh
-> Omni
Packed Unit (Bands sub) (Bands super) Shape Small Small sh sh
forall sub super size.
(BandedTriangular sub super, BandedTriangular super sub) =>
BandedSquare sub super size
-> Omni
Packed Unit (Bands sub) (Bands super) Shape Small Small size size
Omni.UnitBandedTriangular Order -> sh -> Array (BandedSquare sub super sh) a
forall sub super size a.
(Natural sub, Natural super, C size, Floating a) =>
Order -> size -> Square sub super size a
Banded.identityFatOrder Quadratic pack property lower upper sh
omni
Omni.BandedHermitian BandedHermitian offDiag sh
_ ->
(BandedHermitian offDiag sh
-> Omni
Packed
(Hermitian neg zero pos)
(Bands offDiag)
(Bands offDiag)
Shape
Small
Small
sh
sh)
-> (Order -> sh -> Array (BandedHermitian offDiag sh) a)
-> Quadratic pack property lower upper sh
-> Array
(Omni
Packed
(Hermitian neg zero pos)
(Bands offDiag)
(Bands offDiag)
Shape
Small
Small
sh
sh)
a
forall shape omni sh a pack property lower upper.
(shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni BandedHermitian offDiag sh
-> Omni
Packed
(Hermitian neg zero pos)
(Bands offDiag)
(Bands offDiag)
Shape
Small
Small
sh
sh
forall neg zero pos offDiag size.
(C neg, C zero, C pos, Natural offDiag) =>
BandedHermitian offDiag size
-> Omni
Packed
(Hermitian neg zero pos)
(Bands offDiag)
(Bands offDiag)
Shape
Small
Small
size
size
Omni.BandedHermitian
Order -> sh -> Array (BandedHermitian offDiag sh) a
forall offDiag sh a.
(Natural offDiag, C sh, Floating a) =>
Order -> sh -> BandedHermitian offDiag sh a
BandedHermitian.identityFatOrder Quadratic pack property lower upper sh
omni
identityOmni ::
(shape -> omni) ->
(Layout.Order -> sh -> Array shape a) ->
MatrixShape.Quadratic pack property lower upper sh -> Array omni a
identityOmni :: (shape -> omni)
-> (Order -> sh -> Array shape a)
-> Quadratic pack property lower upper sh
-> Array omni a
identityOmni shape -> omni
consOmni Order -> sh -> Array shape a
eye Quadratic pack property lower upper sh
omni =
(shape -> omni) -> Array shape a -> Array omni a
forall sh0 sh1 a. (sh0 -> sh1) -> Array sh0 a -> Array sh1 a
Array.mapShape shape -> omni
consOmni (Array shape a -> Array omni a) -> Array shape a -> Array omni a
forall a b. (a -> b) -> a -> b
$ Order -> sh -> Array shape a
eye (Quadratic pack property lower upper sh -> Order
forall pack property lower upper meas vert horiz height width.
Omni pack property lower upper meas vert horiz height width
-> Order
Omni.order Quadratic pack property lower upper sh
omni) (Quadratic pack property lower upper sh -> sh
forall pack property lower upper sh.
Omni pack property lower upper Shape Small Small sh sh -> sh
Omni.squareSize Quadratic pack property lower upper sh
omni)
identityFrom ::
(Shape.C sh, Class.Floating a) =>
Quadratic pack property lower upper sh a ->
Quadratic pack property lower upper sh a
identityFrom :: Quadratic pack property lower upper sh a
-> Quadratic pack property lower upper sh a
identityFrom = Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a
forall sh a pack property lower upper.
(C sh, Floating a) =>
Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a
identityFromShape (Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a)
-> (Quadratic pack property lower upper sh a
-> Quadratic pack property lower upper sh)
-> Quadratic pack property lower upper sh a
-> Quadratic pack property lower upper sh a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Quadratic pack property lower upper sh a
-> Quadratic pack property lower upper sh
forall pack property lower upper meas vert horiz height width a.
ArrayMatrix
pack property lower upper meas vert horiz height width a
-> Omni pack property lower upper meas vert horiz height width
ArrMatrix.shape
identityOrder ::
(Omni.Quadratic pack property lower upper, Shape.C sh, Class.Floating a) =>
Layout.Order -> sh -> Quadratic pack property lower upper sh a
identityOrder :: Order -> sh -> Quadratic pack property lower upper sh a
identityOrder Order
order sh
sh = Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a
forall sh a pack property lower upper.
(C sh, Floating a) =>
Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a
identityFromShape (Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a)
-> Quadratic pack property lower upper sh
-> Quadratic pack property lower upper sh a
forall a b. (a -> b) -> a -> b
$ Order -> sh -> Quadratic pack property lower upper sh
forall pack property lower upper sh.
(Quadratic pack property lower upper, C sh) =>
Order
-> sh -> Omni pack property lower upper Shape Small Small sh sh
Omni.quadratic Order
order sh
sh
signNegativeDeterminant ::
(Shape.C sh, Class.Floating a) =>
MatrixShape.Quadratic pack property lower upper sh -> a
signNegativeDeterminant :: Quadratic pack property lower upper sh -> a
signNegativeDeterminant Quadratic pack property lower upper sh
shape =
a
forall a. Floating a => a
Scalar.minusOne a -> Int -> a
forall a b. (Num a, Integral b) => a -> b -> a
^ Int -> Int -> Int
forall a. Integral a => a -> a -> a
mod (sh -> Int
forall sh. C sh => sh -> Int
Shape.size (Quadratic pack property lower upper sh -> sh
forall pack property lower upper sh.
Omni pack property lower upper Shape Small Small sh sh -> sh
Omni.squareSize Quadratic pack property lower upper sh
shape)) Int
2