HomepagePublicationsTalksTeXmacsMathemagix |
Let be a prime of the form
with
small and let
denote the finite field with
elements. Let
be a
polynomial of degree
in
with
distinct roots in
.
For
we can compute the roots
of such polynomials of degree
.
We believe we are the first to factor such polynomials of size one
billion. We used a multi-core computer with two 10 core Intel Xeon E5
2680 v2 CPUs and 128 gigabytes of RAM. The factorization takes just
under 4,000 seconds on 10 cores and uses 121 gigabytes of RAM.
We used the tangent Graeffe root finding algorithm from ISSAC
2016 and ICMS 2020 which is a factor of faster than the Cantor–Zassenhaus
algorithm. We implemented the tangent Graeffe algorithm in C using our
own library of 64 bit integer FFT based in-place polynomial algorithms
then parallelized the FFT and main steps using Cilk C.
In this article we discuss the steps of the tangent Graeffe algorithm,
the sub-algorithms that we used, how we parallelized them, and how we
organized the memory so we could factor a polynomial of degree . We give both a theoretical and
practical comparison of the tangent Graeffe algorithm with the
Cantor–Zassenhaus algorithm for root finding. We improve the
complexity of the tangent Graeffe algorithm by a factor of 2. We present
a new in-place product tree multiplication algorithm that is fully
parallelizable. We present some timings comparing our software with
Magma's polynomial factorization command.
Polynomial root finding over smooth finite fields is a key ingredient for algorithms for sparse polynomial interpolation that are based on geometric sequences. This application was also one of our main motivations for the present work.
Authors: