Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rleonid/oml

OCaml Math Library
https://github.com/rleonid/oml

Last synced: about 2 months ago
JSON representation

OCaml Math Library

Awesome Lists containing this project

README

        

OCaml Math Library
------------------

%%VERSION%%

[![Build Status](https://travis-ci.org/hammerlab/oml.svg?branch=master)](https://travis-ci.org/hammerlab/oml/)
[![Coverage Status](https://coveralls.io/repos/hammerlab/oml/badge.svg?branch=HEAD&service=github)](https://coveralls.io/github/hammerlab/oml?branch=HEAD)
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/hammerlab/oml?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

A collection of OCaml Math and Statistics functions.
The API is available [online](http://hammerlab.github.io/oml/index.html).

### Goals

1. Perform simple and sophisticated mathematical and statistical analysis
inside of (mostly) OCaml. Please see [Oml_full](#oml_full) section
for details.
2. Have a descriptive, simple, and typed approach to those algorithms.
- _descriptive_: what a function does should be easy to understand from
the type and name.
- _simple_: don't worry about the corner cases of the algorithms, until
you have to.
- __typed__: obviously.
3. Well tested. There are a subtle dependency between `float` capabilities
and these algorithms. The test suite aims to provide bounds as well as a
benchmark for comparing algorithms.
4. Informative examples.

### Building

- `make setup` will `opam install` the necessary packages for
[Oml_full](#oml_full).
- `make build` will compile source.
- `make test` for tests.
- We use [Kaputt](http://kaputt.x9c.fr/) as the testing framework. Tests
are found in `*.mlt` files and are joined with their respective source
files only when building a test target.
- `make TEST={ModuleName} test` will run the test in `ModuleName`,
ex `make TEST=Descriptive test`
- `make setup_test` will install packages necessary for testing.
- `make covered_test` for [Bisect_ppx](https://github.com/rleonid/bisect_ppx)
instrumented test coverage.

### Oml_full

Oml_full is a superset of Oml that includes `C` and/or `Fortran` dependencies.
It is generally more useful and incorporates `Oml` in a typed equivalent way.
The goal is to provide a flexible end-user target for those who don't need
`C` dependent functionality.

### Dependencies

For the "full" Oml package `make setup` will `opam install` these:

- [Lacaml](https://github.com/mmottl/lacaml) for BLAS/LAPACK bindings.
- [LBFGS](https://github.com/Chris00/L-BFGS-ocaml) for bindings to LBFGS
optimization routines.
- [ocephes](https://github.com/rleonid/ocephes) for special functions.

And for testing:

- [Kaputt](http://kaputt.x9c.fr/) for testing.
- [Bisect_ppx](https://github.com/rleonid/bisect_ppx) for code coverage.

### Contributing

Anything within the problem domain is welcome.

#### Questions, Bugs, Issues

The best place to discuss Oml is within Github's
[issues](https://github.com/hammerlab/oml/issues) (even for questions).

#### Guideline

"Favor readers over writers" and _Favor users over readers_.