@hackage qlinear0.1.0.1

Typesafe library for linear algebra

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 doubles x coordinate

    Example:

    [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)
    where
    • val is number literal, variable or any Haskell expression between ( and )
    • var is Haskell variable
    • exp is any Haskell expression

Also there are basic operations as determinant, transposition, etc.