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 compiledvector
[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 doublesxcoordinateExample:
[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)
wherevalisnumber literal,variableorany Haskell expressionbetween(and)varis Haskell variableexpis any Haskell expression
Also there are basic operations as determinant, transposition, etc.