module Numeric.LAPACK.Matrix.Full (
Full,
Unpacked.Unpacked,
identity,
diagonal,
mapExtent,
mapHeight,
mapWidth,
transpose,
adjoint,
multiplyVector,
multiply,
) where
import qualified Numeric.LAPACK.Matrix.Array.Unpacked as Unpacked
import qualified Numeric.LAPACK.Matrix.Array.Private as ArrMatrix
import qualified Numeric.LAPACK.Matrix.Basic as Basic
import qualified Numeric.LAPACK.Matrix.Plain as Plain
import qualified Numeric.LAPACK.Matrix.Extent as Extent
import Numeric.LAPACK.Matrix.Array.Private (Full)
import Numeric.LAPACK.Vector (Vector)
import qualified Numeric.Netlib.Class as Class
import qualified Data.Array.Comfort.Shape as Shape
identity ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz) =>
(Shape.C sh, Class.Floating a) =>
sh -> Full meas vert horiz sh sh a
identity :: forall meas vert horiz sh a.
(Measure meas, C vert, C horiz, C sh, Floating a) =>
sh -> Full meas vert horiz sh sh a
identity = Array (Full meas vert horiz sh sh) a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a
PlainArray Unpacked Arbitrary Filled Filled meas vert horiz sh sh a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a
forall pack prop lower upper meas vert horiz height width a.
FromPlain pack prop lower upper meas vert horiz height width =>
PlainArray pack prop lower upper meas vert horiz height width a
-> ArrayMatrix pack prop lower upper meas vert horiz height width a
ArrMatrix.lift0 (Array (Full meas vert horiz sh sh) a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a)
-> (sh -> Array (Full meas vert horiz sh sh) a)
-> sh
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. sh -> Array (Full meas vert horiz sh sh) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz, C sh, Floating a) =>
sh -> Full meas vert horiz sh sh a
Plain.identity
diagonal ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz) =>
(Shape.C sh, Class.Floating a) =>
Vector sh a -> Full meas vert horiz sh sh a
diagonal :: forall meas vert horiz sh a.
(Measure meas, C vert, C horiz, C sh, Floating a) =>
Vector sh a -> Full meas vert horiz sh sh a
diagonal = Array (Full meas vert horiz sh sh) a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a
PlainArray Unpacked Arbitrary Filled Filled meas vert horiz sh sh a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a
forall pack prop lower upper meas vert horiz height width a.
FromPlain pack prop lower upper meas vert horiz height width =>
PlainArray pack prop lower upper meas vert horiz height width a
-> ArrayMatrix pack prop lower upper meas vert horiz height width a
ArrMatrix.lift0 (Array (Full meas vert horiz sh sh) a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a)
-> (Vector sh a -> Array (Full meas vert horiz sh sh) a)
-> Vector sh a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
meas
vert
horiz
sh
sh
a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Vector sh a -> Array (Full meas vert horiz sh sh) a
forall meas vert horiz sh a.
(Measure meas, C vert, C horiz, C sh, Floating a) =>
Vector sh a -> Full meas vert horiz sh sh a
Plain.diagonal
mapExtent ::
(Extent.Measure measA, Extent.C vertA, Extent.C horizA) =>
(Extent.Measure measB, Extent.C vertB, Extent.C horizB) =>
Extent.Map measA vertA horizA measB vertB horizB height width ->
Full measA vertA horizA height width a ->
Full measB vertB horizB height width a
mapExtent :: forall measA vertA horizA measB vertB horizB height width a.
(Measure measA, C vertA, C horizA, Measure measB, C vertB,
C horizB) =>
Map measA vertA horizA measB vertB horizB height width
-> Full measA vertA horizA height width a
-> Full measB vertB horizB height width a
mapExtent = Map measA vertA horizA measB vertB horizB height width
-> Unpacked
Arbitrary Filled Filled measA vertA horizA height width a
-> Unpacked
Arbitrary Filled Filled measB vertB horizB height width a
forall property lower upper measA vertA horizA measB vertB horizB
height width a.
(Property property, Strip lower, Strip upper, Measure measA,
C vertA, C horizA, Measure measB, C vertB, C horizB) =>
Map measA vertA horizA measB vertB horizB height width
-> Unpacked property lower upper measA vertA horizA height width a
-> Unpacked property lower upper measB vertB horizB height width a
Unpacked.mapExtent
mapHeight ::
(Extent.C vert, Extent.C horiz,
Shape.C heightA, Shape.C heightB, Shape.C width) =>
(heightA -> heightB) ->
Full Extent.Size vert horiz heightA width a ->
Full Extent.Size vert horiz heightB width a
mapHeight :: forall vert horiz heightA heightB width a.
(C vert, C horiz, C heightA, C heightB, C width) =>
(heightA -> heightB)
-> Full Size vert horiz heightA width a
-> Full Size vert horiz heightB width a
mapHeight = (Array (Full Size vert horiz heightA width) a
-> Array (Full Size vert horiz heightB width) a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightA
width
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightB
width
a
(PlainArray
Unpacked Arbitrary Filled Filled Size vert horiz heightA width a
-> PlainArray
Unpacked Arbitrary Filled Filled Size vert horiz heightB width a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightA
width
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightB
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 ((Array (Full Size vert horiz heightA width) a
-> Array (Full Size vert horiz heightB width) a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightA
width
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightB
width
a)
-> ((heightA -> heightB)
-> Array (Full Size vert horiz heightA width) a
-> Array (Full Size vert horiz heightB width) a)
-> (heightA -> heightB)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightA
width
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
heightB
width
a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (heightA -> heightB)
-> Array (Full Size vert horiz heightA width) a
-> Array (Full Size vert horiz heightB width) a
forall heightA heightB vert horiz width a.
(C heightA, C heightB, C vert, C horiz) =>
(heightA -> heightB)
-> Full Size vert horiz heightA width a
-> Full Size vert horiz heightB width a
Plain.mapHeight
mapWidth ::
(Extent.C vert, Extent.C horiz,
Shape.C widthA, Shape.C widthB, Shape.C height) =>
(widthA -> widthB) ->
Full Extent.Size vert horiz height widthA a ->
Full Extent.Size vert horiz height widthB a
mapWidth :: forall vert horiz widthA widthB height a.
(C vert, C horiz, C widthA, C widthB, C height) =>
(widthA -> widthB)
-> Full Size vert horiz height widthA a
-> Full Size vert horiz height widthB a
mapWidth = (Array (Full Size vert horiz height widthA) a
-> Array (Full Size vert horiz height widthB) a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthA
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthB
a
(PlainArray
Unpacked Arbitrary Filled Filled Size vert horiz height widthA a
-> PlainArray
Unpacked Arbitrary Filled Filled Size vert horiz height widthB a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthA
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthB
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 ((Array (Full Size vert horiz height widthA) a
-> Array (Full Size vert horiz height widthB) a)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthA
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthB
a)
-> ((widthA -> widthB)
-> Array (Full Size vert horiz height widthA) a
-> Array (Full Size vert horiz height widthB) a)
-> (widthA -> widthB)
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthA
a
-> Matrix
(Array Unpacked Arbitrary)
()
()
Filled
Filled
Size
vert
horiz
height
widthB
a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (widthA -> widthB)
-> Array (Full Size vert horiz height widthA) a
-> Array (Full Size vert horiz height widthB) a
forall widthA widthB vert horiz height a.
(C widthA, C widthB, C vert, C horiz) =>
(widthA -> widthB)
-> Full Size vert horiz height widthA a
-> Full Size vert horiz height widthB a
Plain.mapWidth
transpose ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz) =>
Full meas vert horiz height width a -> Full meas horiz vert width height a
transpose :: forall meas vert horiz height width a.
(Measure meas, C vert, C horiz) =>
Full meas vert horiz height width a
-> Full meas horiz vert width height a
transpose = Unpacked Arbitrary Filled Filled meas vert horiz height width a
-> Unpacked Arbitrary Filled Filled meas horiz vert width height a
forall property lower upper meas vert horiz height width a.
(Property property, Strip lower, Strip upper, Measure meas, C vert,
C horiz) =>
Unpacked property lower upper meas vert horiz height width a
-> Unpacked property upper lower meas horiz vert width height a
Unpacked.transpose
adjoint ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz,
Shape.C height, Shape.C width, Class.Floating a) =>
Full meas vert horiz height width a -> Full meas horiz vert width height a
adjoint :: forall meas vert horiz height width a.
(Measure meas, C vert, C horiz, C height, C width, Floating a) =>
Full meas vert horiz height width a
-> Full meas horiz vert width height a
adjoint = (PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas horiz vert width height a)
-> ArrayMatrix
Unpacked Arbitrary Filled Filled meas vert horiz height width a
-> ArrayMatrix
Unpacked Arbitrary Filled Filled meas horiz vert width height 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 Full meas vert horiz height width a
-> Full meas horiz vert width height a
PlainArray
Unpacked Arbitrary Filled Filled meas vert horiz height width a
-> PlainArray
Unpacked Arbitrary Filled Filled meas horiz vert width height a
forall meas vert horiz height width a.
(Measure meas, C vert, C horiz, C height, C width, Floating a) =>
Full meas vert horiz height width a
-> Full meas horiz vert width height a
Basic.adjoint
multiplyVector ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz,
Shape.C height, Shape.C width, Eq width, Class.Floating a) =>
Full meas vert horiz height width a -> Vector width a -> Vector height a
multiplyVector :: forall meas vert horiz height width a.
(Measure meas, C vert, C horiz, C height, C width, Eq width,
Floating a) =>
Full meas vert horiz height width a
-> Vector width a -> Vector height a
multiplyVector = Unpacked Arbitrary Filled Filled meas vert horiz height width a
-> Vector width a -> Vector height a
forall property lower upper meas vert horiz height width a.
(Property property, Strip lower, Strip upper, Measure meas, C vert,
C horiz, C height, C width, Eq width, Floating a) =>
Unpacked property lower upper meas vert horiz height width a
-> Vector width a -> Vector height a
Unpacked.multiplyVector
multiply ::
(Extent.Measure meas, Extent.C vert, Extent.C horiz,
Shape.C height,
Shape.C fuse, Eq fuse,
Shape.C width,
Class.Floating a) =>
Full meas vert horiz height fuse a ->
Full meas vert horiz fuse width a ->
Full meas vert horiz height width a
multiply :: forall meas vert horiz height fuse width a.
(Measure meas, C vert, C horiz, C height, C fuse, Eq fuse, C width,
Floating a) =>
Full meas vert horiz height fuse a
-> Full meas vert horiz fuse width a
-> Full meas vert horiz height width a
multiply = Unpacked Arbitrary Filled Filled meas vert horiz height fuse a
-> Unpacked Arbitrary Filled Filled meas vert horiz fuse width a
-> Unpacked Arbitrary Filled Filled meas vert horiz height width a
forall propertyA lowerA upperA propertyB lowerB upperB propertyC
lowerC upperC meas vert horiz height fuse width a.
(Property propertyA, Strip lowerA, Strip upperA,
Property propertyB, Strip lowerB, Strip upperB, Property propertyC,
Strip lowerC, Strip upperC, Measure meas, C vert, C horiz,
C height, C fuse, Eq fuse, C width, Floating a) =>
Unpacked propertyA lowerA upperA meas vert horiz height fuse a
-> Unpacked propertyB upperB lowerB meas vert horiz fuse width a
-> Unpacked propertyC upperC lowerC meas vert horiz height width a
Unpacked.multiply