[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Not all functions of type C library are interfaced; for instance, you can't manipulate saturation matrices in OCAML (buf of course, if someone asks me this feature, I can add it). The three datatypes that are interfaced are vectors, matrices, and polyhedra, and there is a corresponding module for each of these datatypes. All objects are properly finalized, thanks to the use of "custom" blocks.
The interface was developped with the CAMLIDL tool. Each `.idl' file produces a `_caml.c', a `.mli' and a `.ml' file. Each file is represents a module.
The interface is decomposed as follows:
Polka
.
Vector
.
Matrix
.
Poly
.
When invalid arguments are given to some function (incompatible
dimensions, out-of-bound access, ...), an Invalid_argument
exception is usually thrown.
We provide a unified type for coefficients, which is the OCAML
native integers. Converting to OCAML native integers coefficients
as used in the C library, which can be long int
, long
long int
or mpz_t
, may produce overflow. In this case, an
exception Polka.Overflow(str)
is raised, carrying the string
representation of the coefficient in base 10. This concerns only the
functions Vector.get
and Matrix.get
.