Differences between revisions 6 and 7
Revision 6 as of 2007-03-30 04:19:19
Size: 980
Editor: AlexGhitza
Comment:
Revision 7 as of 2007-05-20 20:52:16
Size: 1860
Comment:
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
== Tips, Tricks, and Pitfalls ==
 * `GivaroGFq` only supports finite fields $k$ of $\#k \leq 2^{16}$
= Integration into SAGE =
`GivaroGFq` is the default implementation for finite extension fields of order $\leq 2^{16}$.

= Examples and Performance =
On [http://sage.math.washington.edu sage.math] and with SAGE 2.5.1 we get the following timings:

{{{#!python
sage: k.<a> = GF(2^8)
sage: type(k)
<type 'sage.rings.finite_field_givaro.FiniteField_givaro'>
sage: e = a^10
sage: f = a^20

# extract the loop time
sage: time for i in range(10^6): _ = e
CPU times: user 0.28 s, sys: 0.01 s, total: 0.29 s
Wall time: 0.29

# the actual task
sage: time for i in range(10^6): _ = e*f
CPU times: user 0.77 s, sys: 0.07 s, total: 0.84 s
}}}

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
}}}

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 [http://sage.math.washington.edu 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 range(10^6): _ = e 
   9 CPU times: user 0.28 s, sys: 0.01 s, total: 0.29 s
  10 Wall time: 0.29
  11 
  12 # the actual task
  13 sage: time for i in range(10^6): _ = e*f
  14 CPU times: user 0.77 s, sys: 0.07 s, total: 0.84 s

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