ZEN

A toolbox for fast computation in finite extension over finite rings

BACK
Acknowledgements
Authors
Links
PIPS
documentation
example
license
sourceforge
sources
zen
zenfact

Overview

Many computational problems need arithmetic operations in polynomial finite rings over Z/nZ, where n is an integer (n>1). Integer factorization and primality testing are examples of such applications. To solve them, programmers either use general symbolic mathematical software packages or write specific programs (most of the time in C).

Symbolic mathematical software packages (e.g. Maple, Mathematica,...) usually handle with difficulty computations in finite fields. In the worst cases, such programs perform computations with rationals before finally reducing the objects modulo the characteristic n, or such reductions are performed but extensions of a finite ring can't be implemented. In any case, applications written with such packages are ten to hundred times slower than an ad hoc implementation in C. On the other hand, optimized C libraries (PARI, Lidia, ...) deal only with limited classes of finite fields, mainly Z/nZ or GF(2n).

We believe it is possible to keep the efficiency of these C libraries while working in any polynomial extension of Z/nZ. We designed the ZEN library to perform efficient arithmetic operations in these sets. That means one can work not only in any polynomial extension of Z/nZ, but also in any polynomial extension of another finite ring even if n is not a prime or even if the polynomial which defines the extension is not irreducible.

In addition, these functionalities are provided without loss of simplicity. Of course, a compromise had to be made between simplicity and efficiency. Therefore, this library can be used at two levels.

  • For a standard usage, the functions ZENFcts of the library can be used to perform operations on elements, polynomials, matrices, series and elliptic curves over every polynomial extension over Z/nZ. Here, you only have to include zen.h in your C sources and link your object files with the library libzen.a.
  • For advanced users who need to gain more efficiency, it is possible to replace procedure calls by macros in their own functions. Such users have to know the internal data structures of the library and to write specific functions for each structure if they still want to handle any finite ring. These users are then sure that their applications are not penalized by inoportune procedure calls.

Features

The main features of the library are as follows:

  • Basic operations on elements over any finite ring, including Karatsuba multiplication for large integers;
  • Operations on polynomials over any finite ring, including Karatsuba multiplication for all polynomials;
  • Operations on matrices over any finite ring, including inversion, and kernel computation;
  • Operations on truncated series over any finite ring;
  • Operations on elliptic curves over any finite ring, mainly the group law.
  • Montgomery's representation for modular finite fields;
  • Chinese remainder representations;
We have also developed high level procedures on top of ZEN : the zenfact package.

BACK
Acknowledgements
Authors
Links
PIPS
documentation
example
license
sourceforge
sources
zen
zenfact

Florent Chabaud
E-mail: florent.chabaud@m4x.org
GPG key: KEY