Skip to content

rleonid/oml

Repository files navigation

OCaml Math Library

%%VERSION%%

Build Status Coverage Status Gitter

A collection of OCaml Math and Statistics functions. The API is available online.

Goals

  1. Perform simple and sophisticated mathematical and statistical analysis inside of (mostly) OCaml. Please see 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.
  • make build will compile source.
  • make test for tests. - We use Kaputt 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 instrumented test coverage.

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 for BLAS/LAPACK bindings.
  • LBFGS for bindings to LBFGS optimization routines.
  • ocephes for special functions.

And for testing:

Contributing

Anything within the problem domain is welcome.

Questions, Bugs, Issues

The best place to discuss Oml is within Github's issues (even for questions).

Guideline

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