Description
Typesafe library for linear algebra.
Description
Please see the README on GitHub at https://github.com/JuniorGarbageCollector/QLinear
README.md
QLinear
QLinear is type safe library for linear algebra based on "macro-constructors"
Constructors:
matrix
[matrix| a b ; c d |]
builds matrix 2x2[ [a, b], [c, d] ]
Example:
[matrix| 1 2; 3 4 |] ~+~ [matrix| 2 3; 4 5 |] == [matrix| 3 5; 7 9 |]
Also you can't, for example, add two matrix with different size.
[matrix| 1 2; 3 4 |] ~+~ [matrix| 1 2 3; 4 5 6; 7 8 9 |] -- will not be compiled
vector
[vector| a b c d |]
builds matrix 4x1[ [a], [b], [c], [d] ]
operator
[operator| (x, y) => (y, x) |]
builds matrix 2x2 of operator[ [0, 1], [1, 0] ]
that swaps coodrinates[operator| (x, y) => (2 * x, y) |]
builds matrix 2x2 of operator[ [2, 0], [0, 1] ]
that doublesx
coordinateExample:
[operator| (x, y) => (3 * y, x / 2) |] ~*~ [vector| 2 8 |] == [vector| 24 1 |]
Syntax:
- matrix:
val11 val12 .. val1n; val21 val22 .. val2n; ..; valm1 valm2 .. valmn
- vector:
val1 val2 .. valn
- operator:
(var1, var2, .., varn) => (exp1, exp2, .., expn)
whereval
isnumber literal
,variable
orany Haskell expression
between(
and)
var
is Haskell variableexp
is any Haskell expression
Also there are basic operations as determinant, transposition, etc.