Skip to content

goosedb/QLinear

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published