ZEN

A toolbox for fast computation in finite extension over finite rings


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.


Features

The main features of the library are as follows: We have also developed high level procedures on top of ZEN : the zenfact package.


License

The ZEN library is built on top packages for big integer arithmetic. Currently, two packages can be used: The ZEN library can be freely redistributed for non commercial usage provided the above licenses are not violated. It is provided as is with no warranty of correctness or efficiency. As mentioned above, we shall in no event be liable for any indirect, incidental or consequential damages resulting from its use. You may copy the zen package in whole or in part as long as you don't try to make money from it, or pretend that you wrote it, or make commercial use of it.
Commercial use is subject to authorization.
Contact us.


We currently provide ZEN with the GMP package only.


Source files


Documentation

The LaTeX source files for the documentation for this library are contained in the C source files. The command make doc produces a dvi file. You can also download a PostScript version of the documentation (compressed version using gzip).


Examples

We have already used the library intensively to implement various applications on a lot of architectures. These examples are listed in the ZENFACT page. Some problems that can occur using ZEN are listed in bugs.html


Last modified: 31 12 1998 16:28 MET