Stability | experimental |
---|---|
Maintainer | Patrick Perry <patperry@stanford.edu> |
An overloaded interface for solving matrix systems in a monad. The matrices can operate via inverse multiplication on immutable dense vectors and matrices.
- class (MatrixShaped a, BLAS3 e, Monad m) => MSolve a e m
- getSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => a (k, l) e -> y k e -> m (x l e)
- getSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => a (r, s) e -> c (r, t) e -> m (b (s, t) e)
- getSSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => e -> a (k, l) e -> y k e -> m (x l e)
- getSSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => e -> a (r, s) e -> c (r, t) e -> m (b (s, t) e)
- doSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => a (r, s) e -> y r e -> x s e -> m ()
- doSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => a (r, s) e -> c (r, t) e -> b (s, t) e -> m ()
- doSSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => e -> a (k, l) e -> y k e -> x l e -> m ()
- doSSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => e -> a (r, s) e -> c (r, t) e -> b (s, t) e -> m ()
- doSolve_ :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => a (k, k) e -> x k e -> m ()
- doSolveMat_ :: (MSolve a e m, WriteMatrix b e m) => a (k, k) e -> b (k, l) e -> m ()
- doSSolve_ :: (MSolve a e m, WriteVector x e m) => e -> a (k, k) e -> x k e -> m ()
- doSSolveMat_ :: (MSolve a e m, WriteMatrix b e m) => e -> a (k, k) e -> b (k, l) e -> m ()
The MSolve type class
class (MatrixShaped a, BLAS3 e, Monad m) => MSolve a e m Source
A type class for mutable matrices with inverses. The member functions of the type class do not perform any checks on the validity of shapes or indices, so in general their safe counterparts should be preferred.
BLAS3 e => MSolve (Tri IOMatrix) e IO | |
BLAS3 e => MSolve (Tri Matrix) e IO | |
BLAS3 e => MSolve (Tri IOBanded) e IO | |
BLAS3 e => MSolve (Tri Banded) e IO | |
BLAS3 e => MSolve (Tri Matrix) e (ST s) | |
BLAS3 e => MSolve (Tri (STMatrix s)) e (ST s) | |
BLAS3 e => MSolve (Tri Banded) e (ST s) | |
BLAS3 e => MSolve (Tri (STBanded s)) e (ST s) |
Solving linear systems
getSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => a (k, l) e -> y k e -> m (x l e)Source
Return x
such that a x = y
.
getSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => a (r, s) e -> c (r, t) e -> m (b (s, t) e)Source
Return b
such that a b = c
.
getSSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => e -> a (k, l) e -> y k e -> m (x l e)Source
Return x
such that a x = alpha y
.
getSSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => e -> a (r, s) e -> c (r, t) e -> m (b (s, t) e)Source
Return b
such that a b = alpha c
.
In-place operations
doSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => a (r, s) e -> y r e -> x s e -> m ()Source
Set x := a^{-1} y
.
doSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => a (r, s) e -> c (r, t) e -> b (s, t) e -> m ()Source
Set b := a^{-1} c
.
doSSolve :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => e -> a (k, l) e -> y k e -> x l e -> m ()Source
Set x := a^{-1} (alpha y)
.
doSSolveMat :: (MSolve a e m, ReadMatrix c e m, WriteMatrix b e m) => e -> a (r, s) e -> c (r, t) e -> b (s, t) e -> m ()Source
Set b := a^{-1} (alpha c)
.
doSolve_ :: (MSolve a e m, ReadVector y e m, WriteVector x e m) => a (k, k) e -> x k e -> m ()Source
Set x := a^{-1} x
.
doSolveMat_ :: (MSolve a e m, WriteMatrix b e m) => a (k, k) e -> b (k, l) e -> m ()Source
Set b := a^{-1} b
.
doSSolve_ :: (MSolve a e m, WriteVector x e m) => e -> a (k, k) e -> x k e -> m ()Source
Set x := a^{-1} (alpha x)
.
doSSolveMat_ :: (MSolve a e m, WriteMatrix b e m) => e -> a (k, k) e -> b (k, l) e -> m ()Source
Set b := a^{-1} (alpha b)
.