Safe Haskell | None |
---|---|
Language | Haskell98 |
Synopsis
- type Full vert horiz height width = Array (Full vert horiz height width)
- type General height width = Array (General height width)
- type Tall height width = Array (Tall height width)
- type Wide height width = Array (Wide height width)
- type ZeroInt = ZeroBased Int
- zeroInt :: Int -> ZeroInt
- transpose :: (C vert, C horiz) => Full vert horiz height width a -> Full horiz vert width height a
- adjoint :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Full horiz vert width height a
- height :: Box shape => Array shape a -> HeightOf shape
- width :: Box shape => Array shape a -> WidthOf shape
- caseTallWide :: (C vert, C horiz, C height, C width) => Full vert horiz height width a -> Either (Tall height width a) (Wide height width a)
- fromScalar :: Storable a => a -> General () () a
- toScalar :: Storable a => General () () a -> a
- fromList :: (C height, C width, Storable a) => height -> width -> [a] -> General height width a
- mapExtent :: (C vertA, C horizA) => (C vertB, C horizB) => Map vertA horizA vertB horizB height width -> Full vertA horizA height width a -> Full vertB horizB height width a
- fromFull :: (C vert, C horiz) => Full vert horiz height width a -> General height width a
- generalizeTall :: (C vert, C horiz) => Full vert Small height width a -> Full vert horiz height width a
- generalizeWide :: (C vert, C horiz) => Full Small horiz height width a -> Full vert horiz height width a
- mapHeight :: (C heightA, C heightB, GeneralTallWide vert horiz, GeneralTallWide horiz vert) => (heightA -> heightB) -> Full vert horiz heightA width a -> Full vert horiz heightB width a
- mapWidth :: (C widthA, C widthB, GeneralTallWide vert horiz, GeneralTallWide horiz vert) => (widthA -> widthB) -> Full vert horiz height widthA a -> Full vert horiz height widthB a
- identity :: (C sh, Floating a) => sh -> General sh sh a
- diagonal :: (C sh, Floating a) => Vector sh a -> General sh sh a
- fromRowsNonEmpty :: (C width, Eq width, Storable a) => T [] (Vector width a) -> General ZeroInt width a
- fromRowArray :: (C height, C width, Eq width, Storable a) => width -> Array height (Vector width a) -> General height width a
- fromRows :: (C width, Eq width, Storable a) => width -> [Vector width a] -> General ZeroInt width a
- fromColumnsNonEmpty :: (C height, Eq height, Storable a) => T [] (Vector height a) -> General height ZeroInt a
- fromColumnArray :: (C height, Eq height, C width, Storable a) => height -> Array width (Vector height a) -> General height width a
- fromColumns :: (C height, Eq height, Storable a) => height -> [Vector height a] -> General height ZeroInt a
- singleRow :: Order -> Vector width a -> General () width a
- singleColumn :: Order -> Vector height a -> General height () a
- flattenRow :: General () width a -> Vector width a
- flattenColumn :: General height () a -> Vector height a
- liftRow :: Order -> (Vector height0 a -> Vector height1 b) -> General () height0 a -> General () height1 b
- liftColumn :: Order -> (Vector height0 a -> Vector height1 b) -> General height0 () a -> General height1 () b
- unliftRow :: Order -> (General () height0 a -> General () height1 b) -> Vector height0 a -> Vector height1 b
- unliftColumn :: Order -> (General height0 () a -> General height1 () b) -> Vector height0 a -> Vector height1 b
- toRows :: (C vert, C horiz, Indexed height, C width, Floating a) => Full vert horiz height width a -> [Vector width a]
- toColumns :: (C vert, C horiz, C height, Indexed width, Floating a) => Full vert horiz height width a -> [Vector height a]
- toRowArray :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Array height (Vector width a)
- toColumnArray :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Array width (Vector height a)
- takeRow :: (C vert, C horiz, Indexed height, C width, Index height ~ ix, Floating a) => Full vert horiz height width a -> ix -> Vector width a
- takeColumn :: (C vert, C horiz, C height, Indexed width, Index width ~ ix, Floating a) => Full vert horiz height width a -> ix -> Vector height a
- takeRows :: (C vert, C width, Floating a) => Int -> Full vert Big ZeroInt width a -> Full vert Big ZeroInt width a
- takeColumns :: (C horiz, C height, Floating a) => Int -> Full Big horiz height ZeroInt a -> Full Big horiz height ZeroInt a
- takeEqually :: (C vert, C horiz, Floating a) => Int -> Full vert horiz ZeroInt ZeroInt a -> Full vert horiz ZeroInt ZeroInt a
- dropRows :: (C vert, C width, Floating a) => Int -> Full vert Big ZeroInt width a -> Full vert Big ZeroInt width a
- dropColumns :: (C horiz, C height, Floating a) => Int -> Full Big horiz height ZeroInt a -> Full Big horiz height ZeroInt a
- dropEqually :: (C vert, C horiz, Floating a) => Int -> Full vert horiz ZeroInt ZeroInt a -> Full vert horiz ZeroInt ZeroInt a
- takeTopRows :: (C vert, C height0, C height1, C width, Floating a) => Full vert Big (height0 :+: height1) width a -> Full vert Big height0 width a
- takeBottomRows :: (C vert, C height0, C height1, C width, Floating a) => Full vert Big (height0 :+: height1) width a -> Full vert Big height1 width a
- takeLeftColumns :: (C vert, C height, C width0, C width1, Floating a) => Full Big vert height (width0 :+: width1) a -> Full Big vert height width0 a
- takeRightColumns :: (C vert, C height, C width0, C width1, Floating a) => Full Big vert height (width0 :+: width1) a -> Full Big vert height width1 a
- takeRowArray :: (Indexed height, C width, C sh, Floating a) => Array sh (Index height) -> General height width a -> General sh width a
- takeColumnArray :: (C height, Indexed width, C sh, Floating a) => Array sh (Index width) -> General height width a -> General height sh a
- swapRows :: (C vert, C horiz, Indexed height, C width, Floating a) => Index height -> Index height -> Full vert horiz height width a -> Full vert horiz height width a
- swapColumns :: (C vert, C horiz, C height, Indexed width, Floating a) => Index width -> Index width -> Full vert horiz height width a -> Full vert horiz height width a
- reverseRows :: (C vert, C horiz, C width, Floating a) => Full vert horiz ZeroInt width a -> Full vert horiz ZeroInt width a
- reverseColumns :: (C vert, C horiz, C height, Floating a) => Full vert horiz height ZeroInt a -> Full vert horiz height ZeroInt a
- fromRowMajor :: (C height, C width, Floating a) => Array (height, width) a -> General height width a
- toRowMajor :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Array (height, width) a
- flatten :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Vector ZeroInt a
- forceOrder :: (C vert, C horiz, C height, C width, Floating a) => Order -> Full vert horiz height width a -> Full vert horiz height width a
- adaptOrder :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Full vert horiz height width a
- (|||) :: (C vert, C height, Eq height, C widtha, C widthb, Floating a) => Full vert Big height widtha a -> Full vert Big height widthb a -> Full vert Big height (widtha :+: widthb) a
- (===) :: (C horiz, C width, Eq width, C heighta, C heightb, Floating a) => Full Big horiz heighta width a -> Full Big horiz heightb width a -> Full Big horiz (heighta :+: heightb) width a
- tensorProduct :: (C height, Eq height, C width, Eq width, Floating a) => Order -> Vector height a -> Vector width a -> General height width a
- outer :: (C height, Eq height, C width, Eq width, Floating a) => Order -> Vector height a -> Vector width a -> General height width a
- sumRank1 :: (C height, Eq height, C width, Eq width, Floating a) => (height, width) -> [(a, (Vector height a, Vector width a))] -> General height width a
- type family RealOf x
- add :: (C vert, C horiz, C height, C width, Eq height, Eq width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Full vert horiz height width a
- sub :: (C vert, C horiz, C height, C width, Eq height, Eq width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Full vert horiz height width a
- rowSums :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Vector height a
- columnSums :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Vector width a
- scaleRows :: (C vert, C horiz, C height, Eq height, C width, Floating a) => Vector height a -> Full vert horiz height width a -> Full vert horiz height width a
- scaleColumns :: (C vert, C horiz, C height, C width, Eq width, Floating a) => Vector width a -> Full vert horiz height width a -> Full vert horiz height width a
- scaleRowsComplex :: (C vert, C horiz, C height, Eq height, C width, Real a) => Vector height a -> Full vert horiz height width (Complex a) -> Full vert horiz height width (Complex a)
- scaleColumnsComplex :: (C vert, C horiz, C height, C width, Eq width, Real a) => Vector width a -> Full vert horiz height width (Complex a) -> Full vert horiz height width (Complex a)
- scaleRowsReal :: (C vert, C horiz, C height, Eq height, C width, Floating a) => Vector height (RealOf a) -> Full vert horiz height width a -> Full vert horiz height width a
- scaleColumnsReal :: (C vert, C horiz, C height, C width, Eq width, Floating a) => Vector width (RealOf a) -> Full vert horiz height width a -> Full vert horiz height width a
- multiply :: (C vert, C horiz, C height, C fuse, Eq fuse, C width, Floating a) => Full vert horiz height fuse a -> Full vert horiz fuse width a -> Full vert horiz height width a
- multiplyVector :: (C vert, C horiz, C height, C width, Eq width, Floating a) => Full vert horiz height width a -> Vector width a -> Vector height a
- class (C shapeA, C shapeB) => Multiply shapeA shapeB
- (<#>) :: (Multiply shapeA shapeB, Floating a) => Array shapeA a -> Array shapeB a -> Array (Multiplied shapeA shapeB) a
- class C shape => MultiplyLeft shape
- (<#) :: (MultiplyLeft shape, Floating a) => Vector (HeightOf shape) a -> Array shape a -> Vector (WidthOf shape) a
- class C shape => MultiplyRight shape
- (#>) :: (MultiplyRight shape, Floating a) => Array shape a -> Vector (WidthOf shape) a -> Vector (HeightOf shape) a
- class Box sh => Indexed sh
- (#!) :: (Indexed sh, Floating a) => Array sh a -> (Index (HeightOf sh), Index (WidthOf sh)) -> a
- class C shape => Solve shape
- solve :: (Solve shape, Floating a, HeightOf shape ~ height, Eq height, C horiz, C vert, C nrhs) => Array shape a -> Full vert horiz height nrhs a -> Full vert horiz height nrhs a
- solveVector :: (Solve shape, HeightOf shape ~ height, Eq height, Floating a) => Array shape a -> Vector height a -> Vector height a
- class Solve shape => Inverse shape
- inverse :: (Inverse shape, Floating a) => Array shape a -> Array shape a
Documentation
transpose :: (C vert, C horiz) => Full vert horiz height width a -> Full horiz vert width height a Source #
adjoint :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Full horiz vert width height a Source #
conjugate transpose
Problem: adjoint a # a
is always square,
but how to convince the type checker to choose the Square type?
Anser: Use Hermitian.toSquare $ Hermitian.covariance a
instead.
caseTallWide :: (C vert, C horiz, C height, C width) => Full vert horiz height width a -> Either (Tall height width a) (Wide height width a) Source #
Square matrices will be classified as Tall
.
fromScalar :: Storable a => a -> General () () a Source #
fromList :: (C height, C width, Storable a) => height -> width -> [a] -> General height width a Source #
mapExtent :: (C vertA, C horizA) => (C vertB, C horizB) => Map vertA horizA vertB horizB height width -> Full vertA horizA height width a -> Full vertB horizB height width a Source #
generalizeTall :: (C vert, C horiz) => Full vert Small height width a -> Full vert horiz height width a Source #
generalizeWide :: (C vert, C horiz) => Full Small horiz height width a -> Full vert horiz height width a Source #
mapHeight :: (C heightA, C heightB, GeneralTallWide vert horiz, GeneralTallWide horiz vert) => (heightA -> heightB) -> Full vert horiz heightA width a -> Full vert horiz heightB width a Source #
The number of rows must be maintained by the height mapping function.
mapWidth :: (C widthA, C widthB, GeneralTallWide vert horiz, GeneralTallWide horiz vert) => (widthA -> widthB) -> Full vert horiz height widthA a -> Full vert horiz height widthB a Source #
The number of columns must be maintained by the width mapping function.
fromRowsNonEmpty :: (C width, Eq width, Storable a) => T [] (Vector width a) -> General ZeroInt width a Source #
fromRowArray :: (C height, C width, Eq width, Storable a) => width -> Array height (Vector width a) -> General height width a Source #
fromRows :: (C width, Eq width, Storable a) => width -> [Vector width a] -> General ZeroInt width a Source #
fromColumnsNonEmpty :: (C height, Eq height, Storable a) => T [] (Vector height a) -> General height ZeroInt a Source #
fromColumnArray :: (C height, Eq height, C width, Storable a) => height -> Array width (Vector height a) -> General height width a Source #
fromColumns :: (C height, Eq height, Storable a) => height -> [Vector height a] -> General height ZeroInt a Source #
flattenRow :: General () width a -> Vector width a Source #
flattenColumn :: General height () a -> Vector height a Source #
liftRow :: Order -> (Vector height0 a -> Vector height1 b) -> General () height0 a -> General () height1 b Source #
liftColumn :: Order -> (Vector height0 a -> Vector height1 b) -> General height0 () a -> General height1 () b Source #
unliftRow :: Order -> (General () height0 a -> General () height1 b) -> Vector height0 a -> Vector height1 b Source #
unliftColumn :: Order -> (General height0 () a -> General height1 () b) -> Vector height0 a -> Vector height1 b Source #
toRows :: (C vert, C horiz, Indexed height, C width, Floating a) => Full vert horiz height width a -> [Vector width a] Source #
toColumns :: (C vert, C horiz, C height, Indexed width, Floating a) => Full vert horiz height width a -> [Vector height a] Source #
toRowArray :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Array height (Vector width a) Source #
toColumnArray :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Array width (Vector height a) Source #
takeRow :: (C vert, C horiz, Indexed height, C width, Index height ~ ix, Floating a) => Full vert horiz height width a -> ix -> Vector width a Source #
takeColumn :: (C vert, C horiz, C height, Indexed width, Index width ~ ix, Floating a) => Full vert horiz height width a -> ix -> Vector height a Source #
takeRows :: (C vert, C width, Floating a) => Int -> Full vert Big ZeroInt width a -> Full vert Big ZeroInt width a Source #
takeColumns :: (C horiz, C height, Floating a) => Int -> Full Big horiz height ZeroInt a -> Full Big horiz height ZeroInt a Source #
takeEqually :: (C vert, C horiz, Floating a) => Int -> Full vert horiz ZeroInt ZeroInt a -> Full vert horiz ZeroInt ZeroInt a Source #
Take a left-top aligned square or as much as possible of it. The advantange of this function is that it maintains the matrix size relation, e.g. Square remains Square, Tall remains Tall.
dropRows :: (C vert, C width, Floating a) => Int -> Full vert Big ZeroInt width a -> Full vert Big ZeroInt width a Source #
dropColumns :: (C horiz, C height, Floating a) => Int -> Full Big horiz height ZeroInt a -> Full Big horiz height ZeroInt a Source #
dropEqually :: (C vert, C horiz, Floating a) => Int -> Full vert horiz ZeroInt ZeroInt a -> Full vert horiz ZeroInt ZeroInt a Source #
Drop the same number of top-most rows and left-most columns. The advantange of this function is that it maintains the matrix size relation, e.g. Square remains Square, Tall remains Tall.
takeTopRows :: (C vert, C height0, C height1, C width, Floating a) => Full vert Big (height0 :+: height1) width a -> Full vert Big height0 width a Source #
takeBottomRows :: (C vert, C height0, C height1, C width, Floating a) => Full vert Big (height0 :+: height1) width a -> Full vert Big height1 width a Source #
takeLeftColumns :: (C vert, C height, C width0, C width1, Floating a) => Full Big vert height (width0 :+: width1) a -> Full Big vert height width0 a Source #
takeRightColumns :: (C vert, C height, C width0, C width1, Floating a) => Full Big vert height (width0 :+: width1) a -> Full Big vert height width1 a Source #
takeRowArray :: (Indexed height, C width, C sh, Floating a) => Array sh (Index height) -> General height width a -> General sh width a Source #
takeColumnArray :: (C height, Indexed width, C sh, Floating a) => Array sh (Index width) -> General height width a -> General height sh a Source #
swapRows :: (C vert, C horiz, Indexed height, C width, Floating a) => Index height -> Index height -> Full vert horiz height width a -> Full vert horiz height width a Source #
swapColumns :: (C vert, C horiz, C height, Indexed width, Floating a) => Index width -> Index width -> Full vert horiz height width a -> Full vert horiz height width a Source #
reverseRows :: (C vert, C horiz, C width, Floating a) => Full vert horiz ZeroInt width a -> Full vert horiz ZeroInt width a Source #
reverseColumns :: (C vert, C horiz, C height, Floating a) => Full vert horiz height ZeroInt a -> Full vert horiz height ZeroInt a Source #
fromRowMajor :: (C height, C width, Floating a) => Array (height, width) a -> General height width a Source #
toRowMajor :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Array (height, width) a Source #
flatten :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Vector ZeroInt a Source #
forceOrder :: (C vert, C horiz, C height, C width, Floating a) => Order -> Full vert horiz height width a -> Full vert horiz height width a Source #
adaptOrder :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Full vert horiz height width a Source #
adaptOrder x y
contains the data of y
with the layout of x
.
(|||) :: (C vert, C height, Eq height, C widtha, C widthb, Floating a) => Full vert Big height widtha a -> Full vert Big height widthb a -> Full vert Big height (widtha :+: widthb) a infixl 3 Source #
(===) :: (C horiz, C width, Eq width, C heighta, C heightb, Floating a) => Full Big horiz heighta width a -> Full Big horiz heightb width a -> Full Big horiz (heighta :+: heightb) width a infixl 2 Source #
tensorProduct :: (C height, Eq height, C width, Eq width, Floating a) => Order -> Vector height a -> Vector width a -> General height width a Source #
tensorProduct order x y = singleColumn order x <#> singleRow order y
outer :: (C height, Eq height, C width, Eq width, Floating a) => Order -> Vector height a -> Vector width a -> General height width a Source #
outer order x y = tensorProduct order x (Vector.conjugate y)
sumRank1 :: (C height, Eq height, C width, Eq width, Floating a) => (height, width) -> [(a, (Vector height a, Vector width a))] -> General height width a Source #
add :: (C vert, C horiz, C height, C width, Eq height, Eq width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Full vert horiz height width a Source #
sub :: (C vert, C horiz, C height, C width, Eq height, Eq width, Floating a) => Full vert horiz height width a -> Full vert horiz height width a -> Full vert horiz height width a Source #
rowSums :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Vector height a Source #
columnSums :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> Vector width a Source #
scaleRows :: (C vert, C horiz, C height, Eq height, C width, Floating a) => Vector height a -> Full vert horiz height width a -> Full vert horiz height width a Source #
scaleColumns :: (C vert, C horiz, C height, C width, Eq width, Floating a) => Vector width a -> Full vert horiz height width a -> Full vert horiz height width a Source #
scaleRowsComplex :: (C vert, C horiz, C height, Eq height, C width, Real a) => Vector height a -> Full vert horiz height width (Complex a) -> Full vert horiz height width (Complex a) Source #
scaleColumnsComplex :: (C vert, C horiz, C height, C width, Eq width, Real a) => Vector width a -> Full vert horiz height width (Complex a) -> Full vert horiz height width (Complex a) Source #
scaleRowsReal :: (C vert, C horiz, C height, Eq height, C width, Floating a) => Vector height (RealOf a) -> Full vert horiz height width a -> Full vert horiz height width a Source #
scaleColumnsReal :: (C vert, C horiz, C height, C width, Eq width, Floating a) => Vector width (RealOf a) -> Full vert horiz height width a -> Full vert horiz height width a Source #
multiply :: (C vert, C horiz, C height, C fuse, Eq fuse, C width, Floating a) => Full vert horiz height fuse a -> Full vert horiz fuse width a -> Full vert horiz height width a Source #
Multiply two matrices with the same dimension constraints.
E.g. you can multiply General
and General
matrices,
or Square
and Square
matrices.
It may seem to be overly strict in this respect,
but that design supports type inference the best.
You can lift the restrictions by generalizing operands
with toFull
, fromFull
,
generalizeTall
or generalizeWide
.
multiplyVector :: (C vert, C horiz, C height, C width, Eq width, Floating a) => Full vert horiz height width a -> Vector width a -> Vector height a Source #
class (C shapeA, C shapeB) => Multiply shapeA shapeB Source #
This class allows to multiply two matrices of arbitrary special features
and returns the most special matrix type possible.
At the first glance, this is handy.
At the second glance, this has some problems.
First of all, we may refine the types in future
and then multiplication may return a different, more special type than before.
Second, if you write code with polymorphic matrix types,
then <#>
may leave you with constraints like
ExtentPriv.Multiply vert vert ~ vert
.
That constraint is always fulfilled but the compiler cannot infer that.
Because of these problems
you may instead consider using specialised multiply
functions
from the various modules for production use.
Btw. MultiplyLeft
and MultiplyRight
are much less problematic,
because the input and output are always dense vectors.
Instances
(C shapeA, shapeA ~ shapeB, Eq shapeB) => Multiply (Hermitian shapeA) (Hermitian shapeB) Source # | |
(C vert, C horiz, C size, size ~ height, Eq height, C width) => Multiply (Hermitian size) (Full vert horiz height width) Source # | |
(Natural offDiagA, Natural offDiagB, C sizeA, sizeA ~ sizeB, C sizeB, Eq sizeB) => Multiply (BandedHermitian offDiagA sizeA) (BandedHermitian offDiagB sizeB) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (BandedHermitian offDiagA sizeA) (BandedHermitian offDiagB sizeB) :: Type (<#>) :: Floating a => Array (BandedHermitian offDiagA sizeA) a -> Array (BandedHermitian offDiagB sizeB) a -> Array (Multiplied (BandedHermitian offDiagA sizeA) (BandedHermitian offDiagB sizeB)) a Source # | |
(Natural offDiag, C vert, C horiz, C size, size ~ height, Eq height, C width, Eq width) => Multiply (BandedHermitian offDiag size) (Full vert horiz height width) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (BandedHermitian offDiag size) (Full vert horiz height width) :: Type | |
(Natural offDiag, Natural sub, Natural super, C vert, C horiz, C size, size ~ height, Eq height, C width, Eq width) => Multiply (BandedHermitian offDiag size) (Banded sub super vert horiz height width) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (BandedHermitian offDiag size) (Banded sub super vert horiz height width) :: Type | |
(C vert, C horiz, C size, size ~ width, Eq width, C height) => Multiply (Full vert horiz height width) (Hermitian size) Source # | |
(Natural offDiag, C vert, C horiz, C size, size ~ width, Eq width, C height, Eq height) => Multiply (Full vert horiz height width) (BandedHermitian offDiag size) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (Full vert horiz height width) (BandedHermitian offDiag size) :: Type | |
(C sizeA, sizeA ~ sizeB, Eq sizeB, MultiplyTriangular loA upA loB upB, TriDiag diagA, TriDiag diagB) => Multiply (Triangular loA diagA upA sizeA) (Triangular loB diagB upB sizeB) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (Triangular loA diagA upA sizeA) (Triangular loB diagB upB sizeB) :: Type (<#>) :: Floating a => Array (Triangular loA diagA upA sizeA) a -> Array (Triangular loB diagB upB sizeB) a -> Array (Multiplied (Triangular loA diagA upA sizeA) (Triangular loB diagB upB sizeB)) a Source # | |
(Content lo, Content up, TriDiag diag, C vert, C horiz, C size, size ~ height, Eq height, C width) => Multiply (Triangular lo diag up size) (Full vert horiz height width) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (Triangular lo diag up size) (Full vert horiz height width) :: Type | |
(Content lo, Content up, TriDiag diag, C vert, C horiz, C size, size ~ width, Eq width, C height) => Multiply (Full vert horiz height width) (Triangular lo diag up size) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (Full vert horiz height width) (Triangular lo diag up size) :: Type | |
(C heightA, C widthA, C widthB, widthA ~ heightB, Eq heightB, C vertA, C horizA, C vertB, C horizB) => Multiply (Full vertA horizA heightA widthA) (Full vertB horizB heightB widthB) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply | |
(Natural sub, Natural super, C vertA, C horizA, C vertB, C horizB, C heightA, C widthA, C widthB, widthA ~ heightB, Eq heightB) => Multiply (Full vertA horizA heightA widthA) (Banded sub super vertB horizB heightB widthB) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply | |
(Natural offDiag, Natural sub, Natural super, C vert, C horiz, C size, size ~ width, Eq width, C height, Eq height) => Multiply (Banded sub super vert horiz height width) (BandedHermitian offDiag size) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply type Multiplied (Banded sub super vert horiz height width) (BandedHermitian offDiag size) :: Type | |
(Natural sub, Natural super, C vertA, C horizA, C vertB, C horizB, C heightA, C widthA, C widthB, widthA ~ heightB, Eq heightB) => Multiply (Banded sub super vertA horizA heightA widthA) (Full vertB horizB heightB widthB) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply | |
(Natural subA, Natural superA, Natural subB, Natural superB, C vertA, C horizA, C vertB, C horizB, C heightA, C widthA, C widthB, widthA ~ heightB, Eq heightB) => Multiply (Banded subA superA vertA horizA heightA widthA) (Banded subB superB vertB horizB heightB widthB) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply |
(<#>) :: (Multiply shapeA shapeB, Floating a) => Array shapeA a -> Array shapeB a -> Array (Multiplied shapeA shapeB) a infixl 7 Source #
class C shape => MultiplyLeft shape Source #
Instances
(Eq shape, C shape) => MultiplyLeft (Hermitian shape) Source # | |
(Natural offDiag, C size, Eq size) => MultiplyLeft (BandedHermitian offDiag size) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply (<#) :: Floating a => Vector (HeightOf (BandedHermitian offDiag size)) a -> Array (BandedHermitian offDiag size) a -> Vector (WidthOf (BandedHermitian offDiag size)) a Source # | |
(Content lo, Content up, TriDiag diag, Eq shape, C shape) => MultiplyLeft (Triangular lo diag up shape) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply (<#) :: Floating a => Vector (HeightOf (Triangular lo diag up shape)) a -> Array (Triangular lo diag up shape) a -> Vector (WidthOf (Triangular lo diag up shape)) a Source # | |
(C vert, C horiz, Eq height, C width, C height) => MultiplyLeft (Full vert horiz height width) Source # | |
(Natural sub, Natural super, C vert, C horiz, Eq height, C width, C height) => MultiplyLeft (Banded sub super vert horiz height width) Source # | |
(<#) :: (MultiplyLeft shape, Floating a) => Vector (HeightOf shape) a -> Array shape a -> Vector (WidthOf shape) a infixl 7 Source #
class C shape => MultiplyRight shape Source #
Instances
(Eq shape, C shape) => MultiplyRight (Hermitian shape) Source # | |
(Natural offDiag, C size, Eq size) => MultiplyRight (BandedHermitian offDiag size) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply (#>) :: Floating a => Array (BandedHermitian offDiag size) a -> Vector (WidthOf (BandedHermitian offDiag size)) a -> Vector (HeightOf (BandedHermitian offDiag size)) a Source # | |
(Content lo, Content up, TriDiag diag, Eq shape, C shape) => MultiplyRight (Triangular lo diag up shape) Source # | |
Defined in Numeric.LAPACK.Matrix.Multiply (#>) :: Floating a => Array (Triangular lo diag up shape) a -> Vector (WidthOf (Triangular lo diag up shape)) a -> Vector (HeightOf (Triangular lo diag up shape)) a Source # | |
(C vert, C horiz, Eq width, C width, C height) => MultiplyRight (Full vert horiz height width) Source # | |
(Natural sub, Natural super, C vert, C horiz, Eq width, C width, C height) => MultiplyRight (Banded sub super vert horiz height width) Source # | |
(#>) :: (MultiplyRight shape, Floating a) => Array shape a -> Vector (WidthOf shape) a -> Vector (HeightOf shape) a infixr 7 Source #
class Box sh => Indexed sh Source #
Instances
Indexed size => Indexed (Hermitian size) Source # | |
(Natural off, Indexed size) => Indexed (BandedHermitian off size) Source # | |
Defined in Numeric.LAPACK.Matrix.Indexed (#!) :: Floating a => Array (BandedHermitian off size) a -> (Index (HeightOf (BandedHermitian off size)), Index (WidthOf (BandedHermitian off size))) -> a Source # | |
(Content lo, TriDiag diag, Content up, Indexed size) => Indexed (Triangular lo diag up size) Source # | |
Defined in Numeric.LAPACK.Matrix.Indexed (#!) :: Floating a => Array (Triangular lo diag up size) a -> (Index (HeightOf (Triangular lo diag up size)), Index (WidthOf (Triangular lo diag up size))) -> a Source # | |
(C vert, C horiz, Indexed height, Indexed width) => Indexed (Full vert horiz height width) Source # | |
(Natural sub, Natural super, C vert, C horiz, Indexed height, Indexed width) => Indexed (Banded sub super vert horiz height width) Source # | |
(#!) :: (Indexed sh, Floating a) => Array sh a -> (Index (HeightOf sh), Index (WidthOf sh)) -> a infixl 9 Source #
class C shape => Solve shape Source #
Instances
C shape => Solve (Hermitian shape) Source # | |
(Natural offDiag, C size) => Solve (BandedHermitian offDiag size) Source # | There is no solver for indefinite matrices. Thus the instance will fail for indefinite but solvable systems. |
Defined in Numeric.LAPACK.Matrix.Divide | |
(Content lo, Content up, TriDiag diag, C shape) => Solve (Triangular lo diag up shape) Source # | |
Defined in Numeric.LAPACK.Matrix.Divide | |
(vert ~ Small, horiz ~ Small, C width, C height, height ~ width) => Solve (Full vert horiz height width) Source # | |
(Natural sub, Natural super, vert ~ Small, horiz ~ Small, C width, C height, width ~ height) => Solve (Banded sub super vert horiz height width) Source # | |
solve :: (Solve shape, Floating a, HeightOf shape ~ height, Eq height, C horiz, C vert, C nrhs) => Array shape a -> Full vert horiz height nrhs a -> Full vert horiz height nrhs a Source #
solveVector :: (Solve shape, HeightOf shape ~ height, Eq height, Floating a) => Array shape a -> Vector height a -> Vector height a Source #
class Solve shape => Inverse shape Source #
Instances
C shape => Inverse (Hermitian shape) Source # | |
(DiagUpLo lo up, TriDiag diag, C shape) => Inverse (Triangular lo diag up shape) Source # | |
Defined in Numeric.LAPACK.Matrix.Divide inverse :: Floating a => Array (Triangular lo diag up shape) a -> Array (Triangular lo diag up shape) a Source # | |
(vert ~ Small, horiz ~ Small, C width, C height, height ~ width) => Inverse (Full vert horiz height width) Source # | |