# A library for formal and numerical calculus
in OCaml

## abstract:

This library uses functors to provide the beginning of formal an
numerical calculus in Ocaml. It shows that strong typing and
functors are really adequate because they match the mathematical
notion of structure. It was implemented by some students of the DESS
d'ingéniérie mathématique de l'université
de Savoie (Gisèle George, Pierre-André Poussard)

It is just a first version. Feel free to submit modifications and
extensions, cooperative development could lead that library
quite far ...

feel free to download it !

The only available documentation at the moment are the .mli file. Here
they are:

- algebra.mli usual algebraic
structure (Ring, Field, ...) and some implementation of these
structures (Field of float, Ring of int, ...). It also
provides quotient of a Ring by one element (as a Field if
you known that this element is prime)
- polynomial.mli implementation of polynomials over a Ring or a Field.
- expression.mli implementation of mathematical expressions over a Field
(rational fractions with extra function which can be added by
the user).
- vector.mli Implementation of vectors. Two implementations are provided:
using arrays and using pairs of existing vectors.
- matrix.mli Parts which are
common to all matrices implementation. Two signatures are
provided: Light_Matrix which have the minimum function to
program iterative solver and Matrix which are Ring but also Vector.
- full_matrix.mli Implementation of full matrices (represented as array of
array).
- morse_matrix.mli Implementation of morse matrices (using columns indexes and an
arrays for all non zero values).
- band_matrix.mli Implementation of band matrices (represented as array of
diagonals).
- solver.mli Two iterative
solvers: a conjugate gradient and an adaptation of the conjugate
gradient for non symmetric matrices

Here are a TODO list for that library and
a wishes list of modification in Ocaml that
would make possible to improve a lot this library.