This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
129
unikernel/duniverse/Zarith/README.md
Normal file
129
unikernel/duniverse/Zarith/README.md
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# The Zarith library
|
||||
|
||||
## OVERVIEW
|
||||
|
||||
This library implements arithmetic and logical operations over
|
||||
arbitrary-precision integers.
|
||||
|
||||
The module is simply named `Z`. Its interface is similar to that of
|
||||
the `Int32`, `Int64` and `Nativeint` modules from the OCaml standard
|
||||
library, with some additional functions. See the file `z.mli` for
|
||||
documentation.
|
||||
|
||||
The implementation uses GMP (the GNU Multiple Precision arithmetic
|
||||
library) to compute over big integers.
|
||||
However, small integers are represented as unboxed Caml integers, to save
|
||||
space and improve performance. Big integers are allocated in the Caml heap,
|
||||
bypassing GMP's memory management and achieving better GC behavior than e.g.
|
||||
the MLGMP library.
|
||||
Computations on small integers use a special, faster path (in C or OCaml)
|
||||
eschewing calls to GMP, while computations on large intergers use the
|
||||
low-level MPN functions from GMP.
|
||||
|
||||
Arbitrary-precision integers can be compared correctly using OCaml's
|
||||
polymorphic comparison operators (`=`, `<`, `>`, etc.).
|
||||
|
||||
Additional features include:
|
||||
* a module `Q` for rationals, built on top of `Z` (see `q.mli`)
|
||||
* a compatibility layer `Big_int_Z` that implements the same API as Big_int from the legacy `Num` library, but uses `Z` internally
|
||||
|
||||
Support for [js_of_ocaml](https://github.com/ocsigen/js_of_ocaml/) is
|
||||
provided by [Zarith_stubs_js](https://github.com/janestreet/zarith_stubs_js).
|
||||
|
||||
## REQUIREMENTS
|
||||
|
||||
* OCaml, version 4.04.0 or later.
|
||||
* Either the GMP library or the MPIR library, including development files.
|
||||
* GCC or Clang or a gcc-compatible C compiler and assembler (other compilers may work).
|
||||
* The Findlib package manager (optional, recommended).
|
||||
|
||||
|
||||
## INSTALLATION
|
||||
|
||||
1) First, run the "configure" script by typing:
|
||||
```
|
||||
./configure
|
||||
```
|
||||
The `configure` script has a few options. Use the `-help` option to get a
|
||||
list and short description of each option.
|
||||
|
||||
2) It creates a Makefile, which can be invoked by:
|
||||
```
|
||||
make
|
||||
```
|
||||
This builds native and bytecode versions of the library.
|
||||
|
||||
3) The libraries are installed by typing:
|
||||
```
|
||||
make install
|
||||
```
|
||||
or, if you install to a system location but are not an administrator
|
||||
```
|
||||
sudo make install
|
||||
```
|
||||
If Findlib is detected, it is used to install files.
|
||||
Otherwise, the files are copied to a `zarith/` subdirectory of the directory
|
||||
given by `ocamlc -where`.
|
||||
|
||||
The libraries are named `zarith.cmxa` and `zarith.cma`, and the Findlib module
|
||||
is named `zarith`.
|
||||
|
||||
Compiling and linking with the library requires passing the `-I +zarith`
|
||||
option to `ocamlc` / `ocamlopt`, or the `-package zarith` option to `ocamlfind`.
|
||||
|
||||
4) (optional, recommended) Test programs are built and run by the additional command
|
||||
```
|
||||
make tests
|
||||
```
|
||||
(but these are not installed).
|
||||
|
||||
5) (optional) HTML API documentation is built (using `ocamldoc`) by the additional command
|
||||
```
|
||||
make doc
|
||||
```
|
||||
|
||||
## ONLINE DOCUMENTATION
|
||||
|
||||
The documentation for the latest release is hosted on [GitHub Pages](https://antoinemine.github.io/Zarith/doc/latest/index.html).
|
||||
|
||||
|
||||
## LICENSE
|
||||
|
||||
This Library is distributed under the terms of the GNU Library General
|
||||
Public License version 2, with a special exception allowing unconstrained
|
||||
static linking.
|
||||
See LICENSE file for details.
|
||||
|
||||
|
||||
## AUTHORS
|
||||
|
||||
* Antoine Miné, Sorbonne Université, formerly at ENS Paris.
|
||||
* Xavier Leroy, Collège de France, formerly at Inria Paris.
|
||||
* Pascal Cuoq, TrustInSoft.
|
||||
* Christophe Troestler (toplevel module)
|
||||
|
||||
|
||||
## COPYRIGHT
|
||||
|
||||
Copyright (c) 2010-2011 Antoine Miné, Abstraction project.
|
||||
Abstraction is part of the LIENS (Laboratoire d'Informatique de l'ENS),
|
||||
a joint laboratory by:
|
||||
CNRS (Centre national de la recherche scientifique, France),
|
||||
ENS (École normale supérieure, Paris, France),
|
||||
INRIA Rocquencourt (Institut national de recherche en informatique, France).
|
||||
|
||||
|
||||
## CONTENTS
|
||||
|
||||
Source files | Description
|
||||
--------------------|-----------------------------------------
|
||||
configure | configuration script
|
||||
z.ml[i] | Z module and implementation for small integers
|
||||
caml_z.c | C implementation
|
||||
big_int_z.ml[i] | wrapper to provide a Big_int compatible API to Z
|
||||
q.ml[i] | rational library, pure OCaml on top of Z
|
||||
zarith_top.ml | toplevel module to provide pretty-printing
|
||||
projet.mak | builds Z, Q and the tests
|
||||
zarith.opam | package description for opam
|
||||
z_mlgmpidl.ml[i] | conversion between Zarith and MLGMPIDL
|
||||
tests/ | simple regression tests and benchmarks
|
||||
Loading…
Add table
Add a link
Reference in a new issue