Participants : Pierrick Gaudry, Emmanuel Thomé [ contact ] .
mp is (yet another) library for computing in finite fields. The purpose of mp is not to provide a software layer for accessing finite fields determined at runtime within a computer algebra system like Magma, but rather to give a very efficient, optimized code for computing in finite fields precisely known at compile time . mp is not restricted to a finite field in particular, and can adapt to finite fields of any characteristic and any extension degree. However, one of the targets being the use in cryptology, mp somehow focuses on prime fields and on fields of characteristic two.
mp 's ability to generate specialized code for desired finite fields differentiates this library from its competitors. The performance achieved is far superior. For example, mp can be readily used to assess the throughput of an efficient software implementation of a given cryptosystem. Such an evaluation is the purpose of the “EBats” benchmarking tool(http://www.ecrypt.eu.org/ebats/ ). mp entered this trend in 2007, establishing reference marks for fast elliptic curve cryptography: the authors improved over the fastest examples of key-sharing software in genus 1 and 2, both over binary fields and prime fields. These timings are now comparison references for other implementations  .
The library's purpose being the generation of code rather than its execution, the working core of mp consists of roughly 18,000 lines of Perl code, which generate most of the C code. Some part of mp is distributed at http://mpfq.gforge.inria.fr/ .
In 2009, some experimental code for polynomials over prime fields has been added to mp . Although not yet distributed it has been used for the record in genus 2 point counting (see below).