Givaro, a C++ library for arithmetic and algebraic computations.

Description

Key Features

In the joint CNRS-INRIA / INPG-UJF project APACHE, Givaro is a C++ library for arithmetic and algebraic computations. Its main features are implementations of the basic arithmetic of many mathematical entities: Primes fields, Extensions Fields, Finite Fields, Finite Rings, Polynomials, Algebraic numbers, Arbitrary precision integers and rationals (C++ wrappers over gmp) It also provides data-structures and templated classes for the manipulation of basic algebraic objects, such as vectors, matrices (dense, sparse, structured), univariate polynomials (and therefore recursive multivariate). It contains different program modules and is fully compatible with the LinBox linear algebra library and the KAAPI kernel for Adaptative, Asynchronous Parallel and Interactive programming.

  • Integers and Number Theory : Arithmetic with arbitrary precision over Z; Primality Testing, Factorization (Lenstra elliptic curves, Pollard's rho), Cryptography (RSA module), Euler's phi, Primitive roots, Chinese Remainder.
  • GF(q) and Z/pZ : Fast arithmetic in finite fields (representations as machine integers, floating point numbers, polynomials, Zech logarithms, Montgomery reduction, centered representation and fully tabulated).
  • Rationals : Arithmetic with arbitrary precision over Q.
  • Fractions
  • Vectors
  • Matrices (bi dimensional containers), linear algebra is done with the LinBox library.
  • Polynomials : Karatsuba Arithmetic over K[X]; Square-free, Sturm-Query, Factorization (Berlekamp, Cantor-Zassenhaus), truncated arithmetics.
More Details. Givaro Integers' are based upon GNU Multiprecision Package. Therefore, GMP is required to install Givaro. This library is also available from the Gnu web site and via ftp.

Benchmarks

We give more detailed timing comparisons of the library on several architectures. (in construction)

  • a
  • bi

Bibliography