Software
On this page, you will find libraries for the OCaml (Objective Caml) language, a strongly typed functional language with great abstraction and performance characteristics.
Lacaml
Lacaml is a binding to the famous
BLAS and
LAPACK libraries which offer
linear algebra routines. It is developed in collaboration with
Markus
Mottl and several other people. To use it you should be
familiar with BLAS and LAPACK. The following
quick reference
guide for the BLAS,
LAPACK
quick reference, and
LAPACK Documentation
may be useful to you. For the precise
description of the functions, consult the man pages
online
or, if you installed them on your machine (if you use Linux, they
should be in the packages of your distribution), read them with
Emacs: M-x man
(under Unix) ou M-x
woman
(all systems; you must first set
(add-to-list 'woman-manpath "C:/path/to/lapack/manpages/blas/man")
(add-to-list 'woman-manpath "C:/path/to/lapack/manpages/man")
in your ~/.emacs
).
Delimited overloading
Delimited
overloading (pa_do
) is a syntax extension
(thanks to camlp4) to allow (an extensible) operator and
function overloading in OCaml. It also performs some
optimizations, for example for expressions involving complex
numbers.
OCaml odepack
OCaml odepack is a binding to odepack, a collection of solvers for the initial value problem for ordinary differential equation systems.
Mesh
Mesh is a simple module allowing to call various 2D mesh generators (in particular triangle) in a unified fashion. It also provides useful functions to visualize the mesh as well as P1 functions defined on it.
L-BFGS-B
The module lbfgs is a binding to the L-BFGS-B FORTRAN code. It is a limited-memory quasi-Newton code for unsconstrained and bound-constrained optimization.
1D integration
The module Integration1D gathers various integration routines inspired from QUADPACK. This is pure OCaml code.
1D optimization
The findlib
package optimization1d is made of two modules,
Min1D
and Max1D
, that provide
functions to seek minimums or maximums of mathematical
functions f : R → R.
This is pure OCaml code.
1D root finding
The module Root1D provides functions, in particular Brent's method, to seek roots of mathematical functions f : R → R. This is pure OCaml code.
Module FFTW 3
The Fftw3 module is a binding to the famous fast Fourier transform library FFTW.
The bindings to the old FFTW2 library are not longer developed.
oasis2opam
oasis2opam is a Tool to convert OASIS metadata to OPAM package descriptions.
OCaml Lego Mindstorm library
The Mindstorm module allows to control Lego® Mindstorm NXT bricks through the bluetooth protocol. It was used by three students in mathematics to program two robots: the first finds its way out of a maze and the second solves the Rubik's cube. You can read their interview (in French).
OCaml CSV
OCaml CSV is a module to read and write CSV (comma separated values) files. It understands Excel peculiarities (which do not conform to the standard).
Benchmark
Benchmark is a module to measure and compare running times of functions written in OCaml.
Rope library
The Rope module
implements the
"rope datastructure", an efficient immutable equivalent of
strings. This module is ready to replace String
for most applications.
OCamlDBI
OCamlDBI is a generic interface to databases inspired by Perl DBI.
OCaml-FreeTDS
The Freetds module offers a binding to the DB-lib API of FreeTDS as well as a deprecated binding to ct. It is recommended to use OCamlDBI (which uses this module as a driver) to benefit for higher level functions.
Lpd
The Lpd (Line Printer Deamon) library is a server for the LPD protocol completely written in OCaml (and therefore fully working on windows).
ANSITerminal
ANSITerminal is a module allowing to use the colors and cursor movements on ANSI terminals. Here is its interface.
OCaml-gnuplot
OCaml-gnuplot is a module which uses gnuplot to graph scientific data from OCaml.
This module is obsolete and only bugs will be corrected. It will be replaced by Archimedes (under development) which does not depend anymore on gnuplot.