bed-and-breakfast: Efficient Matrix and Vector operations in 100% Haskell.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Warnings:

Efficient Matrix and Vector operations in 100% Haskell.

This library uses boxed and unboxed arrays in the ST monad, in order to achieve efficiency.


[Skip to ReadMe]

Properties

Versions0.1, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.2, 0.2.1, 0.2.2, 0.2.3, 0.3, 0.3.1, 0.3.2, 0.4, 0.4.1, 0.4.2, 0.4.3, 0.5, 0.5
Change logCHANGES.md
Dependenciesarray (>=0.4), base (>=4.5 && <5), binary (>=0.5), cpphs (>=1.18), deepseq (>=1.3), template-haskell (>=2.7) [details]
LicenseMIT
AuthorJulian Fleischer <julian.fleischer@fu-berlin.de>
MaintainerJulian Fleischer <julian.fleischer@fu-berlin.de>
CategoryNumeric, Math, Linear Algebra
Home pagehttps://hackage.haskell.org/package/bed-and-breakfast
Source repositoryhead: git clone https://github.com/scravy/bed-and-breakfast.git
UploadedMon Oct 22 10:56:09 UTC 2018 by JulianFleischer

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for bed-and-breakfast-0.5

[back to package description]

bed-and-breakfast Build Status

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.

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