Plover is a language for matrix algebra on embedded systems.
Clone or download
scottswift Merge pull request #67 from swift-nav/fixes
docs: added new warnings page
Latest commit 3d00d70 Jun 30, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc
examples
plover
relics
src
test
.ghci
.gitignore
.travis.yml
LICENSE
OWNERS
README.md
TODO.md
plover.cabal
plover.vim
stack.yaml
todo2.md

README.md

Plover

Package version Build status Dependency status

Plover is an embedded Haskell DSL for compiling linear algebra into robust, efficient C code suitable for running on embedded systems.

Plover generates code free of dynamic memory allocation and provides compile time checking of matrix and vector shapes using a lightweight dependant type system.

Plover also aims to make use of sparse structure present in many real world linear algebra problems to generate more efficient code.

  • Plover.Types contains the AST for the DSL.
  • Plover.Expressions contains a number of example expressions.
  • Plover.Reduce contains the main compiler.
  • Plover.Macros contains DSL utilities.

Installation

First, install Stack or Haskell Platform. Key is having GHC 7.10+ available.

Check out the plover source:

$ git clone https://github.com/swift-nav/plover.git
$ cd plover

Then use one of the two available build methods.

Stack build

$ stack build

Run the test suite (requires gcc):

$ stack test

Installation of the plover binary into ~/.local/bin

$ stack build --copy-bins

or

# (equivalent to previous command)
$ stack install

(Alternative Installation Method) Cabal sandbox build

Using a cabal sandbox keeps any dependencies isolated so you don't have to worry about conflicts with other versions you may have on your system.

$ cabal sandbox init

Install the dependencies into the sandbox:

$ cabal install happy alex
$ cabal install --only-dependencies --enable-tests

Run the test suite (requires gcc):

$ cabal test --show-details=streaming

Usage

See http://swift-nav.github.io/plover/guide.html