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] [Publish]

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

Versions 0.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 log CHANGES.md
Dependencies array (>=0.4), base (>=4.5 && <5), binary (>=0.5), cpphs (>=1.18), deepseq (>=1.3), template-haskell (>=2.7) [details]
License MIT
Author Julian Fleischer <julian.fleischer@fu-berlin.de>
Maintainer Julian Fleischer <julian.fleischer@fu-berlin.de>
Category Numeric, Math, Linear Algebra
Home page https://hackage.haskell.org/package/bed-and-breakfast
Source repo head: git clone https://github.com/scravy/bed-and-breakfast.git
Uploaded by JulianFleischer at 2018-10-22T10:56:09Z

Modules

[Index]

Downloads

Maintainer's 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