Description

From the Givaro website:

"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 Athapascan environment, which permits parallel programming."

Website

http://www-lmc.imag.fr/Logiciels/givaro/

Integration into SAGE

GivaroGFq is the default implementation for finite extension fields of order \leq 2^{16}.

Examples and Performance

On sage.math and with SAGE 2.5.1 we get the following timings:

   1 sage: k.<a> = GF(2^8)
   2 sage: type(k)
   3 <type 'sage.rings.finite_field_givaro.FiniteField_givaro'>
   4 sage: e = a^10
   5 sage: f = a^20
   6 
   7 # extract the loop time
   8 sage: time for i in xrange(10^6): _ = e 
   9 CPU times: user 0.24 s, sys: 0.03 s, total: 0.27 s
  10 Wall time: 0.27
  11 
  12 # the actual task
  13 sage: time for i in xrange(10^6): _ = e*f
  14 CPU times: user 0.64 s, sys: 0.00 s, total: 0.64 s
  15 Wall time: 0.63

To put this in perspective, the same task in MAGMA 2.13-5 on the same machine:

> k<a> := FiniteField(2^8);
> e := a^10;
> f := a^20;
> t:= Cputime(); 
> for i in [1..1000000] do; r := e; end for; 
> Cputime(t);
0.190
> t:= Cputime(); 
> for i in [1..1000000] do; r := e*f; end for; 
> Cputime(t);
0.280

Givaro (last edited 2008-11-14 13:42:11 by localhost)