{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE GADTs #-}
module Numeric.LAPACK.Matrix.Quadratic (
asDiagonal,
asSymmetric,
size,
mapSize,
identity,
diagonal, Diagonal,
OmniMatrix.takeDiagonal,
takeTopLeft,
takeTopRight,
takeBottomLeft,
takeBottomRight,
) where
import qualified Numeric.LAPACK.Matrix.Symmetric as Symmetric
import qualified Numeric.LAPACK.Matrix.Triangular as Triangular
import qualified Numeric.LAPACK.Matrix.Mosaic.Private as Mos
import qualified Numeric.LAPACK.Matrix.BandedHermitian.Basic as BandedHermitian
import qualified Numeric.LAPACK.Matrix.Banded.Basic as Banded
import qualified Numeric.LAPACK.Matrix.Square.Basic as Square
import qualified Numeric.LAPACK.Matrix.Basic as Full
import qualified Numeric.LAPACK.Matrix.Type.Private as Matrix
import qualified Numeric.LAPACK.Matrix.Class as MatrixClass
import qualified Numeric.LAPACK.Matrix.Array.Basic as OmniMatrix
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 Numeric.LAPACK.Matrix.Array.Banded (FlexDiagonal)
import Numeric.LAPACK.Matrix.Array.Mosaic (Symmetric)
import Numeric.LAPACK.Matrix.Array.Private (General, Quadratic)
import Numeric.LAPACK.Matrix.Shape.Omni (Arbitrary)
import Numeric.LAPACK.Matrix.Layout.Private (Order)
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.Shape ((::+))
import Data.Function.HT (Id)
asDiagonal :: Id (FlexDiagonal diag sh a)
asDiagonal :: Id (FlexDiagonal diag sh a)
asDiagonal = Id (FlexDiagonal diag sh a)
forall a. a -> a
id
asSymmetric :: Id (Symmetric sh a)
asSymmetric :: Id (Symmetric sh a)
asSymmetric = Id (Symmetric sh a)
forall a. a -> a
id
size :: Quadratic pack property lower upper sh a -> sh
size :: Quadratic pack property lower upper sh a -> sh
size = Omni pack property lower upper Shape Small Small sh sh -> sh
forall pack property lower upper sh.
Omni pack property lower upper Shape Small Small sh sh -> sh
Omni.squareSize (Omni pack property lower upper Shape Small Small sh sh -> sh)
-> (Quadratic pack property lower upper sh a
-> Omni pack property lower upper Shape Small Small sh sh)
-> Quadratic pack property lower upper sh a
-> sh
forall b c a. (b -> c) -> (a -> b) -> a -> c
. 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
mapSize ::
(Shape.C shA, Shape.C shB) =>
(shA -> shB) ->
Quadratic pack property lower upper shA a ->
Quadratic pack property lower upper shB a
mapSize :: (shA -> shB)
-> Quadratic pack property lower upper shA a
-> Quadratic pack property lower upper shB a
mapSize = (shA -> shB)
-> Quadratic pack property lower upper shA a
-> Quadratic pack property lower upper shB a
forall shA shB pack property lower upper a.
(C shA, C shB) =>
(shA -> shB)
-> Quadratic pack property lower upper shA a
-> Quadratic pack property lower upper shB a
OmniMatrix.mapSquareSize
identity ::
(Omni.Quadratic pack property lower upper, Shape.C sh, Class.Floating a) =>
Order -> sh -> Quadratic pack property lower upper sh a
identity :: Order -> sh -> Quadratic pack property lower upper sh a
identity = Order -> sh -> Quadratic pack property lower upper sh a
forall pack property lower upper sh a.
(Quadratic pack property lower upper, C sh, Floating a) =>
Order -> sh -> Quadratic pack property lower upper sh a
OmniMatrix.identityOrder
diagonal ::
(Diagonal property, Omni.Quadratic pack property lower upper,
Shape.C sh, Class.Floating a) =>
Order -> Vector sh a -> Quadratic pack property lower upper sh a
diagonal :: Order -> Vector sh a -> Quadratic pack property lower upper sh a
diagonal Order
order Vector sh a
v = Quadratic pack property lower upper sh
-> Vector sh a -> Quadratic pack property lower upper sh a
forall property pack lower upper sh a.
(Diagonal property, Quadratic pack property lower upper, C sh,
Floating a) =>
Quadratic pack property lower upper sh
-> Vector sh a -> Quadratic pack property lower upper sh a
diagonalAux (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 -> Quadratic pack property lower upper sh)
-> sh -> Quadratic pack property lower upper sh
forall a b. (a -> b) -> a -> b
$ Vector sh a -> sh
forall sh a. Array sh a -> sh
Array.shape Vector sh a
v) Vector sh a
v
class (Omni.Property property) => Diagonal property where
diagonalAux ::
(Omni.Quadratic pack property lower upper) =>
(Shape.C sh, Class.Floating a) =>
MatrixShape.Quadratic pack property lower upper sh -> Vector sh a ->
Quadratic pack property lower upper sh a
instance Diagonal Arbitrary where
diagonalAux :: Quadratic pack Arbitrary lower upper sh
-> Vector sh a -> Quadratic pack Arbitrary lower upper sh a
diagonalAux Quadratic pack Arbitrary lower upper sh
omni Vector sh a
v =
case Quadratic pack Arbitrary lower upper sh
omni of
Omni.Full Full Shape Small Small sh sh
_ -> Quadratic pack Arbitrary lower upper sh
-> Vector sh a -> Quadratic Unpacked Arbitrary lower upper sh a
forall property lower upper sh a pack.
(Property property, Strip lower, Strip upper, C sh, Floating a) =>
Quadratic pack property lower upper sh
-> Vector sh a -> Quadratic Unpacked property lower upper sh a
squareDiagonal Quadratic pack Arbitrary lower upper sh
omni Vector sh a
v
Omni.LowerTriangular LowerTriangular sh
_ -> Order -> Vector sh a -> Triangular lower Arbitrary upper sh a
forall lo up sh a.
(UpLo lo up, C sh, Floating a) =>
Order -> Vector sh a -> Triangular lo Arbitrary up sh a
Triangular.diagonal (Quadratic pack Arbitrary 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 Arbitrary lower upper sh
omni) Vector sh a
v
Omni.UpperTriangular UpperTriangular sh
_ -> Order -> Vector sh a -> Triangular lower Arbitrary upper sh a
forall lo up sh a.
(UpLo lo up, C sh, Floating a) =>
Order -> Vector sh a -> Triangular lo Arbitrary up sh a
Triangular.diagonal (Quadratic pack Arbitrary 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 Arbitrary lower upper sh
omni) Vector sh a
v
Omni.Banded Banded sub super Shape Small Small sh sh
_ ->
OmniArray
Packed
Arbitrary
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a
-> Matrix
(Array Packed Arbitrary)
()
()
(Bands sub)
(Bands super)
Shape
Small
Small
sh
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
Packed
Arbitrary
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a
-> Matrix
(Array Packed Arbitrary)
()
()
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a)
-> OmniArray
Packed
Arbitrary
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a
-> Matrix
(Array Packed Arbitrary)
()
()
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a
forall a b. (a -> b) -> a -> b
$ (Banded sub super Shape Small Small sh sh
-> Omni
Packed Arbitrary (Bands sub) (Bands super) Shape Small Small sh sh)
-> Array (Banded sub super Shape Small Small sh sh) a
-> OmniArray
Packed
Arbitrary
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a
forall sh0 sh1 a. (sh0 -> sh1) -> Array sh0 a -> Array sh1 a
Array.mapShape 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 (Array (Banded sub super Shape Small Small sh sh) a
-> OmniArray
Packed
Arbitrary
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a)
-> Array (Banded sub super Shape Small Small sh sh) a
-> OmniArray
Packed
Arbitrary
(Bands sub)
(Bands super)
Shape
Small
Small
sh
sh
a
forall a b. (a -> b) -> a -> b
$
Order
-> Vector sh a
-> Array (Banded sub super Shape Small Small sh sh) a
forall sub super size a.
(Natural sub, Natural super, C size, Floating a) =>
Order -> Vector size a -> Square sub super size a
Banded.diagonalFat (Quadratic pack Arbitrary 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 Arbitrary lower upper sh
omni) Vector sh a
v
instance Diagonal Omni.Symmetric where
diagonalAux :: Quadratic pack Symmetric lower upper sh
-> Vector sh a -> Quadratic pack Symmetric lower upper sh a
diagonalAux Quadratic pack Symmetric lower upper sh
omni Vector sh a
v =
case Quadratic pack Symmetric lower upper sh
omni of
Omni.Full Full Shape Small Small sh sh
_ -> Quadratic pack Symmetric lower upper sh
-> Vector sh a -> Quadratic Unpacked Symmetric lower upper sh a
forall property lower upper sh a pack.
(Property property, Strip lower, Strip upper, C sh, Floating a) =>
Quadratic pack property lower upper sh
-> Vector sh a -> Quadratic Unpacked property lower upper sh a
squareDiagonal Quadratic pack Symmetric lower upper sh
omni Vector sh a
v
Omni.LowerTriangular LowerTriangular sh
_ -> [Char] -> Quadratic pack Symmetric lower upper sh a
forall a. HasCallStack => [Char] -> a
error [Char]
"lower triangular not symmetric"
Omni.UpperTriangular UpperTriangular sh
_ -> [Char] -> Quadratic pack Symmetric lower upper sh a
forall a. HasCallStack => [Char] -> a
error [Char]
"upper triangular not symmetric"
Omni.Symmetric Symmetric sh
_ -> Order -> Vector sh a -> Symmetric sh a
forall sh a.
(C sh, Floating a) =>
Order -> Vector sh a -> Symmetric sh a
Symmetric.diagonal (Quadratic pack Symmetric 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 Symmetric lower upper sh
omni) Vector sh a
v
squareDiagonal ::
(Omni.Property property, Omni.Strip lower, Omni.Strip upper) =>
(Shape.C sh, Class.Floating a) =>
MatrixShape.Quadratic pack property lower upper sh -> Vector sh a ->
Quadratic Layout.Unpacked property lower upper sh a
squareDiagonal :: Quadratic pack property lower upper sh
-> Vector sh a -> Quadratic Unpacked property lower upper sh a
squareDiagonal Quadratic pack property lower upper sh
omni =
FullArray Shape Small Small sh sh a
-> Quadratic Unpacked property lower upper sh 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 sh sh a
-> Quadratic Unpacked property lower upper sh a)
-> (Vector sh a -> FullArray Shape Small Small sh sh a)
-> Vector sh a
-> Quadratic Unpacked property lower upper sh a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Order -> Vector sh a -> FullArray Shape Small Small sh sh a
forall sh a.
(C sh, Floating a) =>
Order -> Vector sh a -> Square sh a
Square.diagonalOrder (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)
takeTopLeft ::
(Shape.C sh0, Shape.C sh1, Class.Floating a) =>
Quadratic pack property lower upper (sh0::+sh1) a ->
Quadratic pack property lower upper sh0 a
takeTopLeft :: Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh0 a
takeTopLeft Quadratic pack property lower upper (sh0 ::+ sh1) a
a =
case Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Omni
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
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 (sh0 ::+ sh1) a
a of
Omni.Full Full Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1)
_ ->
(FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Shape Small Small sh0 sh0 a)
-> UnpackedMatrix
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> UnpackedMatrix property lower upper Shape Small Small sh0 sh0 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
(Full Shape Small Small (Unchecked sh0) (Unchecked sh0) a
-> FullArray Shape Small Small sh0 sh0 a
forall meas vert horiz height width a.
(Measure meas, C vert, C horiz) =>
Full meas vert horiz (Unchecked height) (Unchecked width) a
-> Full meas vert horiz height width a
Full.recheck (Full Shape Small Small (Unchecked sh0) (Unchecked sh0) a
-> FullArray Shape Small Small sh0 sh0 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Shape Small Small (Unchecked sh0) (Unchecked sh0) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Shape Small Small sh0 sh0 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big (Unchecked sh0) (Unchecked sh0) a
-> Full Shape Small Small (Unchecked sh0) (Unchecked sh0) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz, Eq sh) =>
Full meas vert horiz sh sh a -> Square sh a
Square.fromFull (Full Size Big Big (Unchecked sh0) (Unchecked sh0) a
-> Full Shape Small Small (Unchecked sh0) (Unchecked sh0) a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (Unchecked sh0) (Unchecked sh0) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Shape Small Small (Unchecked sh0) (Unchecked sh0) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big sh0 sh0 a
-> Full Size Big Big (Unchecked sh0) (Unchecked sh0) a
forall meas vert horiz height width a.
(Measure meas, C vert, C horiz) =>
Full meas vert horiz height width a
-> Full meas vert horiz (Unchecked height) (Unchecked width) a
Full.uncheck (Full Size Big Big sh0 sh0 a
-> Full Size Big Big (Unchecked sh0) (Unchecked sh0) a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big sh0 sh0 a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (Unchecked sh0) (Unchecked sh0) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Full Size Big Big (sh0 ::+ sh1) sh0 a
-> Full Size Big Big sh0 sh0 a
forall vert height0 height1 width a.
(C vert, C height0, C height1, C width, Floating a) =>
Full Size vert Big (height0 ::+ height1) width a
-> Full Size vert Big height0 width a
Full.takeTop (Full Size Big Big (sh0 ::+ sh1) sh0 a
-> Full Size Big Big sh0 sh0 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big sh0 sh0 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a
forall vert height width0 width1 a.
(C vert, C height, C width0, C width1, Floating a) =>
Full Size Big vert height (width0 ::+ width1) a
-> Full Size Big vert height width0 a
Full.takeLeft (Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz) =>
Square sh a -> Full meas vert horiz sh sh a
Square.toFull) Quadratic pack property lower upper (sh0 ::+ sh1) a
UnpackedMatrix
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
a
Omni.LowerTriangular LowerTriangular (sh0 ::+ sh1)
_ -> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh0 a
forall pack lo up diag sh0 sh1 a.
(Packing pack, UpLo lo up, TriDiag diag, C sh0, C sh1,
Floating a) =>
TriangularP pack lo diag up (sh0 ::+ sh1) a
-> TriangularP pack lo diag up sh0 a
Triangular.takeTopLeft Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.UpperTriangular UpperTriangular (sh0 ::+ sh1)
_ -> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh0 a
forall pack lo up diag sh0 sh1 a.
(Packing pack, UpLo lo up, TriDiag diag, C sh0, C sh1,
Floating a) =>
TriangularP pack lo diag up (sh0 ::+ sh1) a
-> TriangularP pack lo diag up sh0 a
Triangular.takeTopLeft Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.Symmetric Symmetric (sh0 ::+ sh1)
_ -> SymmetricP pack (sh0 ::+ sh1) a -> SymmetricP pack sh0 a
forall pack sh0 sh1 a.
(Packing pack, C sh0, C sh1, Floating a) =>
SymmetricP pack (sh0 ::+ sh1) a -> SymmetricP pack sh0 a
Symmetric.takeTopLeft Quadratic pack property lower upper (sh0 ::+ sh1) a
SymmetricP pack (sh0 ::+ sh1) a
a
Omni.Hermitian Hermitian (sh0 ::+ sh1)
_ -> (PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh0 sh0 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh0 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh0 sh0 a
forall height width a mirror.
(C height, C width, Floating a) =>
MosaicUpper mirror (height ::+ width) a
-> MosaicUpper mirror height a
Mos.takeTopLeft Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.Banded Banded sub super Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1)
_ -> (PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh0 sh0 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh0 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh0 sh0 a
forall sub super sh0 sh1 a.
(Natural sub, Natural super, C sh0, C sh1, Floating a) =>
Square sub super (sh0 ::+ sh1) a -> Square sub super sh0 a
Banded.takeTopLeftSquare Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.BandedHermitian BandedHermitian offDiag (sh0 ::+ sh1)
_ -> (PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh0 sh0 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh0 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh0 sh0 a
forall offDiag sh0 sh1 a.
(Natural offDiag, C sh0, C sh1, Floating a) =>
BandedHermitian offDiag (sh0 ::+ sh1) a
-> BandedHermitian offDiag sh0 a
BandedHermitian.takeTopLeft Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.UnitBandedTriangular BandedSquare sub super (sh0 ::+ sh1)
_ -> (PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh0 sh0 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh0 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh0 sh0 a
forall sub super sh0 sh1 a.
(Natural sub, Natural super, C sh0, C sh1, Floating a) =>
Square sub super (sh0 ::+ sh1) a -> Square sub super sh0 a
Banded.takeTopLeftSquare Quadratic pack property lower upper (sh0 ::+ sh1) a
a
takeBottomLeft ::
(Shape.C sh0, Shape.C sh1, Class.Floating a) =>
Quadratic pack property Layout.Filled upper (sh0::+sh1) a ->
General sh1 sh0 a
takeBottomLeft :: Quadratic pack property Filled upper (sh0 ::+ sh1) a
-> General sh1 sh0 a
takeBottomLeft Quadratic pack property Filled upper (sh0 ::+ sh1) a
a =
case Quadratic pack property Filled upper (sh0 ::+ sh1) a
-> Omni
pack
property
Filled
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
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 Filled upper (sh0 ::+ sh1) a
a of
Omni.Full Full Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1)
_ ->
(FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Size Big Big sh1 sh0 a)
-> UnpackedMatrix
property
Filled
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> General sh1 sh0 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
(Full Size Big Big (sh0 ::+ sh1) sh0 a
-> FullArray Size Big Big sh1 sh0 a
forall vert height0 height1 width a.
(C vert, C height0, C height1, C width, Floating a) =>
Full Size vert Big (height0 ::+ height1) width a
-> Full Size vert Big height1 width a
Full.takeBottom (Full Size Big Big (sh0 ::+ sh1) sh0 a
-> FullArray Size Big Big sh1 sh0 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Size Big Big sh1 sh0 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a
forall vert height width0 width1 a.
(C vert, C height, C width0, C width1, Floating a) =>
Full Size Big vert height (width0 ::+ width1) a
-> Full Size Big vert height width0 a
Full.takeLeft (Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh0 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz) =>
Square sh a -> Full meas vert horiz sh sh a
Square.toFull) Quadratic pack property Filled upper (sh0 ::+ sh1) a
UnpackedMatrix
property
Filled
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
a
Omni.LowerTriangular LowerTriangular (sh0 ::+ sh1)
_ -> FlexLowerP pack property (sh0 ::+ sh1) a -> General sh1 sh0 a
forall pack diag sh0 sh1 a.
(Packing pack, TriDiag diag, C sh0, C sh1, Floating a) =>
FlexLowerP pack diag (sh0 ::+ sh1) a -> General sh1 sh0 a
Triangular.takeBottomLeft Quadratic pack property Filled upper (sh0 ::+ sh1) a
FlexLowerP pack property (sh0 ::+ sh1) a
a
Omni.Symmetric Symmetric (sh0 ::+ sh1)
_ -> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
a
-> General sh1 sh0 a
forall typ xl xu meas vert horiz height width a lower upper.
(Transpose typ, TransposeExtra typ xl, TransposeExtra typ xu,
Measure meas, C vert, C horiz, C height, C width, Floating a) =>
Matrix typ xl xu lower upper meas vert horiz height width a
-> Matrix typ xu xl upper lower meas horiz vert width height a
Matrix.transpose (Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
a
-> General sh1 sh0 a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
a
-> General sh1 sh0 a
forall a b. (a -> b) -> a -> b
$ SymmetricP pack (sh0 ::+ sh1) a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
a
forall pack sh0 sh1 a.
(Packing pack, C sh0, C sh1, Floating a) =>
SymmetricP pack (sh0 ::+ sh1) a -> General sh0 sh1 a
Symmetric.takeTopRight Quadratic pack property Filled upper (sh0 ::+ sh1) a
SymmetricP pack (sh0 ::+ sh1) a
a
Omni.Hermitian Hermitian (sh0 ::+ sh1)
_ ->
Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
a
-> General sh1 sh0 a
forall typ xl xu meas vert horiz height width a lower upper.
(Transpose typ, Complex typ, TransposeExtra typ xl,
TransposeExtra typ xu, Measure meas, C vert, C horiz, C height,
C width, Floating a) =>
Matrix typ xl xu lower upper meas vert horiz height width a
-> Matrix typ xu xl upper lower meas horiz vert width height a
MatrixClass.adjoint (Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
a
-> General sh1 sh0 a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
a
-> General sh1 sh0 a
forall a b. (a -> b) -> a -> b
$ (PlainArray
pack
property
Filled
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
Unpacked Arbitrary Filled Filled Size Big Big sh0 sh1 a)
-> Quadratic pack property Filled upper (sh0 ::+ sh1) a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
Big
Big
sh0
sh1
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
Filled
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
Unpacked Arbitrary Filled Filled Size Big Big sh0 sh1 a
forall height width a mirror.
(C height, C width, Floating a) =>
MosaicUpper mirror (height ::+ width) a -> General height width a
Mos.takeTopRight Quadratic pack property Filled upper (sh0 ::+ sh1) a
a
takeTopRight ::
(Shape.C sh0, Shape.C sh1, Class.Floating a) =>
Quadratic pack property lower Layout.Filled (sh0::+sh1) a ->
General sh0 sh1 a
takeTopRight :: Quadratic pack property lower Filled (sh0 ::+ sh1) a
-> General sh0 sh1 a
takeTopRight Quadratic pack property lower Filled (sh0 ::+ sh1) a
a =
case Quadratic pack property lower Filled (sh0 ::+ sh1) a
-> Omni
pack
property
lower
Filled
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
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 Filled (sh0 ::+ sh1) a
a of
Omni.Full Full Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1)
_ ->
(FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Size Big Big sh0 sh1 a)
-> UnpackedMatrix
property
lower
Filled
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> General sh0 sh1 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
(Full Size Big Big (sh0 ::+ sh1) sh1 a
-> FullArray Size Big Big sh0 sh1 a
forall vert height0 height1 width a.
(C vert, C height0, C height1, C width, Floating a) =>
Full Size vert Big (height0 ::+ height1) width a
-> Full Size vert Big height0 width a
Full.takeTop (Full Size Big Big (sh0 ::+ sh1) sh1 a
-> FullArray Size Big Big sh0 sh1 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Size Big Big sh0 sh1 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a
forall vert height width0 width1 a.
(C vert, C height, C width0, C width1, Floating a) =>
Full Size Big vert height (width0 ::+ width1) a
-> Full Size Big vert height width1 a
Full.takeRight (Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz) =>
Square sh a -> Full meas vert horiz sh sh a
Square.toFull) Quadratic pack property lower Filled (sh0 ::+ sh1) a
UnpackedMatrix
property
lower
Filled
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
a
Omni.UpperTriangular UpperTriangular (sh0 ::+ sh1)
_ -> FlexUpperP pack property (sh0 ::+ sh1) a -> General sh0 sh1 a
forall pack diag sh0 sh1 a.
(Packing pack, TriDiag diag, C sh0, C sh1, Floating a) =>
FlexUpperP pack diag (sh0 ::+ sh1) a -> General sh0 sh1 a
Triangular.takeTopRight Quadratic pack property lower Filled (sh0 ::+ sh1) a
FlexUpperP pack property (sh0 ::+ sh1) a
a
Omni.Symmetric Symmetric (sh0 ::+ sh1)
_ -> SymmetricP pack (sh0 ::+ sh1) a -> General sh0 sh1 a
forall pack sh0 sh1 a.
(Packing pack, C sh0, C sh1, Floating a) =>
SymmetricP pack (sh0 ::+ sh1) a -> General sh0 sh1 a
Symmetric.takeTopRight Quadratic pack property lower Filled (sh0 ::+ sh1) a
SymmetricP pack (sh0 ::+ sh1) a
a
Omni.Hermitian Hermitian (sh0 ::+ sh1)
_ -> (PlainArray
pack
property
lower
Filled
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
Unpacked Arbitrary Filled Filled Size Big Big sh0 sh1 a)
-> Quadratic pack property lower Filled (sh0 ::+ sh1) a
-> General sh0 sh1 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
Filled
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
Unpacked Arbitrary Filled Filled Size Big Big sh0 sh1 a
forall height width a mirror.
(C height, C width, Floating a) =>
MosaicUpper mirror (height ::+ width) a -> General height width a
Mos.takeTopRight Quadratic pack property lower Filled (sh0 ::+ sh1) a
a
takeBottomRight ::
(Shape.C sh0, Shape.C sh1, Class.Floating a) =>
Quadratic pack property lower upper (sh0::+sh1) a ->
Quadratic pack property lower upper sh1 a
takeBottomRight :: Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh1 a
takeBottomRight Quadratic pack property lower upper (sh0 ::+ sh1) a
a =
case Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Omni
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
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 (sh0 ::+ sh1) a
a of
Omni.Full Full Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1)
_ ->
(FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Shape Small Small sh1 sh1 a)
-> UnpackedMatrix
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> UnpackedMatrix property lower upper Shape Small Small sh1 sh1 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
(Full Shape Small Small (Unchecked sh1) (Unchecked sh1) a
-> FullArray Shape Small Small sh1 sh1 a
forall meas vert horiz height width a.
(Measure meas, C vert, C horiz) =>
Full meas vert horiz (Unchecked height) (Unchecked width) a
-> Full meas vert horiz height width a
Full.recheck (Full Shape Small Small (Unchecked sh1) (Unchecked sh1) a
-> FullArray Shape Small Small sh1 sh1 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Shape Small Small (Unchecked sh1) (Unchecked sh1) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> FullArray Shape Small Small sh1 sh1 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big (Unchecked sh1) (Unchecked sh1) a
-> Full Shape Small Small (Unchecked sh1) (Unchecked sh1) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz, Eq sh) =>
Full meas vert horiz sh sh a -> Square sh a
Square.fromFull (Full Size Big Big (Unchecked sh1) (Unchecked sh1) a
-> Full Shape Small Small (Unchecked sh1) (Unchecked sh1) a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (Unchecked sh1) (Unchecked sh1) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Shape Small Small (Unchecked sh1) (Unchecked sh1) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big sh1 sh1 a
-> Full Size Big Big (Unchecked sh1) (Unchecked sh1) a
forall meas vert horiz height width a.
(Measure meas, C vert, C horiz) =>
Full meas vert horiz height width a
-> Full meas vert horiz (Unchecked height) (Unchecked width) a
Full.uncheck (Full Size Big Big sh1 sh1 a
-> Full Size Big Big (Unchecked sh1) (Unchecked sh1) a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big sh1 sh1 a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (Unchecked sh1) (Unchecked sh1) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
.
Full Size Big Big (sh0 ::+ sh1) sh1 a
-> Full Size Big Big sh1 sh1 a
forall vert height0 height1 width a.
(C vert, C height0, C height1, C width, Floating a) =>
Full Size vert Big (height0 ::+ height1) width a
-> Full Size vert Big height1 width a
Full.takeBottom (Full Size Big Big (sh0 ::+ sh1) sh1 a
-> Full Size Big Big sh1 sh1 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big sh1 sh1 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a
forall vert height width0 width1 a.
(C vert, C height, C width0, C width1, Floating a) =>
Full Size Big vert height (width0 ::+ width1) a
-> Full Size Big vert height width1 a
Full.takeRight (Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a)
-> (FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a)
-> FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) sh1 a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FullArray Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1) a
-> Full Size Big Big (sh0 ::+ sh1) (sh0 ::+ sh1) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz) =>
Square sh a -> Full meas vert horiz sh sh a
Square.toFull) Quadratic pack property lower upper (sh0 ::+ sh1) a
UnpackedMatrix
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
a
Omni.LowerTriangular LowerTriangular (sh0 ::+ sh1)
_ -> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh1 a
forall pack lo up diag sh0 sh1 a.
(Packing pack, UpLo lo up, TriDiag diag, C sh0, C sh1,
Floating a) =>
TriangularP pack lo diag up (sh0 ::+ sh1) a
-> TriangularP pack lo diag up sh1 a
Triangular.takeBottomRight Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.UpperTriangular UpperTriangular (sh0 ::+ sh1)
_ -> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh1 a
forall pack lo up diag sh0 sh1 a.
(Packing pack, UpLo lo up, TriDiag diag, C sh0, C sh1,
Floating a) =>
TriangularP pack lo diag up (sh0 ::+ sh1) a
-> TriangularP pack lo diag up sh1 a
Triangular.takeBottomRight Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.Symmetric Symmetric (sh0 ::+ sh1)
_ -> SymmetricP pack (sh0 ::+ sh1) a -> SymmetricP pack sh1 a
forall pack sh0 sh1 a.
(Packing pack, C sh0, C sh1, Floating a) =>
SymmetricP pack (sh0 ::+ sh1) a -> SymmetricP pack sh1 a
Symmetric.takeBottomRight Quadratic pack property lower upper (sh0 ::+ sh1) a
SymmetricP pack (sh0 ::+ sh1) a
a
Omni.Hermitian Hermitian (sh0 ::+ sh1)
_ -> (PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh1 sh1 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh1 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh1 sh1 a
forall height width a mirror.
(C height, C width, Floating a) =>
MosaicUpper mirror (height ::+ width) a
-> MosaicUpper mirror width a
Mos.takeBottomRight Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.Banded Banded sub super Shape Small Small (sh0 ::+ sh1) (sh0 ::+ sh1)
_ -> (PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh1 sh1 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh1 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh1 sh1 a
forall sub super sh0 sh1 a.
(Natural sub, Natural super, C sh0, C sh1, Floating a) =>
Square sub super (sh0 ::+ sh1) a -> Square sub super sh1 a
Banded.takeBottomRightSquare Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.BandedHermitian BandedHermitian offDiag (sh0 ::+ sh1)
_ ->
(PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh1 sh1 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh1 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh1 sh1 a
forall offDiag sh0 sh1 a.
(Natural offDiag, C sh0, C sh1, Floating a) =>
BandedHermitian offDiag (sh0 ::+ sh1) a
-> BandedHermitian offDiag sh1 a
BandedHermitian.takeBottomRight Quadratic pack property lower upper (sh0 ::+ sh1) a
a
Omni.UnitBandedTriangular BandedSquare sub super (sh0 ::+ sh1)
_ ->
(PlainArray
pack
property
lower
upper
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray
pack property lower upper Shape Small Small sh1 sh1 a)
-> Quadratic pack property lower upper (sh0 ::+ sh1) a
-> Quadratic pack property lower upper sh1 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
Shape
Small
Small
(sh0 ::+ sh1)
(sh0 ::+ sh1)
a
-> PlainArray pack property lower upper Shape Small Small sh1 sh1 a
forall sub super sh0 sh1 a.
(Natural sub, Natural super, C sh0, C sh1, Floating a) =>
Square sub super (sh0 ::+ sh1) a -> Square sub super sh1 a
Banded.takeBottomRightSquare Quadratic pack property lower upper (sh0 ::+ sh1) a
a