John Cremona on Tue, 28 Mar 2023 15:16:09 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: finite fields -- choice of defining polynomial


Thanks, Bill.  

The reason we want to use Conway polynomials is that they are primitive (the root generates the multiplicative group), and also, crucially, that these roots form a coherent system of all roots of unity of prime-to-ell order in the algebraic closure of F_ell.

I do know that there is no known way to compute them, so that using precomputed lists (for some small values of ell and d) is desirable.  But I bet that a list of all known Conway polynomials would take up less space as an optional package than my database of ellipticcurves of conductor up to 500000! ( I did not check this reckless claim...)

Still, I am glad that ffinit() is deterministic so will not change. 

John

On Tue, 28 Mar 2023, 12:54 Bill Allombert, <Bill.Allombert@math.u-bordeaux.fr> wrote:
On Tue, Mar 28, 2023 at 10:47:39AM +0000, John Cremona wrote:
> The documentation for ffinit(p,n)  does not seem to allow the user to
> specify their own irreducible polynomial (of degree n over Fp).  Is that
> right?

Hello John,
The only thing ffinit does is to compute an irreducible polynomial.
(I did not choose the name of this function...)

> ffgen(k) does allow k to be an irreducible polynomial rather than the
> output of an ffinit().   If ffgen() is used with a polynomial, can one
> recover the associated ffinit structure, or in some other way do as much
> arithmetic in the field as with an ffinit?

Yes, ffgen does it for you.

> More specifically, has anyone implemented Conway Polynomials in PARI/GP?

Not that I know of.
They are very slow to compute. Magma use precomputed tables to work
around this. If you have such table already, then you can import the polynomial
in GP.

ffgen has the good property to be fast and deterministic.

For an alternative with similar speed but more functorial property I suggest
<https://arxiv.org/abs/2107.02257> by Franck Lübeck
which is implemented in GAP:
<https://www.gap-system.org/Packages/standardff.html>

Cheers,
Bill.