aghitza / hlinear

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HLinear

HLinear is a Haskell implementation of the PLE decomposition of matrices over division rings. It writes an arbitrary matrix as a product of a permutation matrix, a lower unitriangular matrix, and an echelon matrix.

Installation

git clone https://github.com/martinra/hlinear.git
  • Build HLinear:
cd hlinear
stack build
  • Test HLinear:
stack test

The log file with the test results can be found at .stack-work/logs/hlinear-0.0.1-test.log

  • Run a simple benchmark:
stack bench

The log file with the benchmark results can be found at .stack-work/logs/hlinear-0.0.1-bench.log

How to use

This is just a sketchy illustration of how to interact with HLinear from Haskell. For details and code you can immediately start adapting to your needs, see HLinear-example.

(...various imports...)

main :: IO ()
main = do
  let m = M.fromListsUnsafe [[1,2,3],[4,5,6]] :: Matrix FMPQ
      (p, l, e) = D.toMatrices $ D.pleDecomposition m
  putStrLn "echelon form:"
  print e

Output:

echelon form:
[ 1/1 2/1 3/1 ]
[ 0/1 1/1 2/1 ]

License

GPLv3, see LICENSE.

About

License:GNU General Public License v3.0


Languages

Language:Haskell 100.0%