Description
Efficient Matrix and Vector operations in 100% Haskell.
Description
Efficient Matrix and Vector operations in 100% Haskell.
This library uses boxed and unboxed arrays in the ST monad, in order to achieve efficiency.
README.md
bed-and-breakfast
Matrix operations in 100% pure awesome Haskell.
Bed and Breakfast is a linear algebra library written in Haskell. It provides fast matrix operations like finding the determinant or the inverse of a matrix.
- API documentation
- bed-and-breakfast on Hackage
Example (GHCi Session)
*Numeric.Matrix> let m = fromList [[0,3,2],[5,6,10],[4,3,2.0]] :: Matrix Double
*Numeric.Matrix> inv m
Just -0.2499999999999999 0.0 0.25
0.4166666666666667 -0.11111111111111112 0.1388888888888889
-0.12500000000000006 0.16666666666666669 -0.20833333333333334
*Numeric.Matrix> let m = fromList [[0,3,2],[5,6,10],[4,3,2.0]] :: Matrix Rational
*Numeric.Matrix> inv m
Just (-1) % 4 0 % 1 1 % 4
5 % 12 (-1) % 9 5 % 36
(-1) % 8 1 % 6 (-5) % 24
Example (with Template Haskell Syntactic Sugar)
{-# LANGUAGE Haskell2010, TemplateHaskell, QuasiQuotes #-}
import Numeric.Matrix
import Numeric.Matrix.Sugar
m :: Matrix Double
m = [dMatrix| 20 30 40
40.5 71 23
20 20 27 |]
mInv = maybe (error "not invertible") id $ inv m