 # Documentation

Arageli is the C++ library and the package of programs for computations in arithmetic, algebra, geometry, linear and integer linear programming. Arageli is a library for dealing with precise, i.e. symbolic or algebraic, computations. It contains a definition to model basic algebraic structures such as integer numbers with arbitrary precision, rational numbers, vectors, matrices, polynomials etc. Arageli is written in C++ and use power and expressiveness of the language.

The library supports the following structures (including basic operations on them): integer number with arbitrary precision, floating point number with arbitrary precision, rings of fractions (including rational numbers, rational functions etc), univariate polynomials (dense and sparse representations), multivariate polynomials (dense and sparse representations), vectors, matrices, finite fields, residue rings (modular arithmetic), algebraic numbers, convex polyhedra.

In respect to algorithms, the library includes the following: Euclidean and extended Euclidean algorithm for GCD; Euclidean binary algorithm; Gaussian elimination and Gauss-Bareiss algorithm for the reduced row echelon form of a matrix for field and integer domain respectively; Smith diagonal form for integer and polynomial matrices; Solovay-Strassen, Miller-Rabin and Agrawal-Kayal-Saxena test for primality; integer number factorization by Pollard's rho-method and Pollard's p-1 method; solving to linear programming problem by simplex method, integer linear programming problem by Gomory's methods; location of roots with rational bounds by Sturm's algorithm; RSA encryption; double description method for polyhedral cone; triangulation of polyhedral cone; LLL algorithm for finding reduced basis of a lattice.

Almost all structures and algorithms listed above are represented as generic (templated) classes and functions. User can construct any combinations of basic structures. But not all structuress listed above are completely implemented yet. Arageli is being developed and we are trying to make the library better and better every single day.

## Documentation Files

The following list corresponds to almost all content of 'doc' directory of Arageli Package after building all types of documentation. The documentation is actual for the latest released version of the library, 2.2.1.191. You can download all documentation files as a single archive.

You can also read reference guide online.