a research project in Computer Algebra
by Ludovic Brieulle, Luca De Feo, Javad Doliskani, Jean-Pierre Flori and Éric Schost.
Let 𝔽q be a finite field. Given two irreducible polynomials f, g over 𝔽q, with deg f dividing deg g, the finite field embedding problem asks to compute an explicit description of a field embedding of 𝔽q[X]/f(X) into 𝔽q[Y]/g(Y). When deg f = deg g, this is also known as the isomorphism problem.
This problem, a special instance of polynomial factorization, plays a central role in computer algebra software. We review previous algorithms, due to Lenstra, Allombert, Rains, and Narayanan, and propose improvements and generalizations. Our detailed complexity analysis shows that our newly proposed variants are at least as efficient as previously known algorithms, and in many cases significantly better.
We also implement most of the presented algorithms, compare them with the state of the art computer algebra software, and make the code available as open source. Our experiments show that our new variants consistently outperform available software.
The research paper has been submitted for publication in AMS Mathematics of Computation.
A preprint version is available at https://arxiv.org/abs/1705.01221.
The LaTeX sources to the paper can be found in the paper
folder. They are subject to the copying restriction enforced by the
editor.
The implementation
folder contains source code for
the algorithms implemented by the project. See the folder README.md
for instructions on compiling and running the software on your own
machine.
The notebooks
folder contains Jupyter notebooks showing
sample usage of the software and benchmarks. Notebooks can be
statically viewed on GitHub, or executed in
Binder,
thus saving you the time to compile and install the software.
All source code is distributed under the MIT license.
The misc
folder contains material related to the project,
such as
- conference posters,
- presentation slides,
- experimental data gathered on the conjecture formulated in the paper.
We do not accept pull requests, but if you see any problem with this repository, plese open an issue.