Dear GAP Forum,
In his letter, Derek Holt raised some questions concerning finite fields
and extensions. As I had to deal with similar problems recently, when
writing a routine to factor a polynomial over an algebraic extension, I
probably can give some advices on this them.
As I'm not the author of the finite fields routines, I cannot comment,
on modifying the 'root' component (however, I assume, that one might
create quite weird errors by setting this field to an element, which is
*not* a primitive root), myself I just would not dare to do such things.
This is serious, because a lot of the GAP code that I have written for finite
fields uses the .root component. Is there any way that I can define F.root
in such a case without causing problems? Or do I have to make sure that I
only call the function for primitive elements?
The question is: What will your code need the '.root' component for ?
Will it just need a primitive element of the extension, or does it rely
on the 'primitive root' property?
In the first case, I just would refer
to the component '.generators' instead, which contains a root of the
generating polynomial, i.e. a primitive element. Otherwise of course,
you will have to select special polynomials (as the Conway polynomials).
My main problem is how to refer to the field elements once the field is
constructed. I want to refer to them as polynomials over the ground
field in the indeterminate w, where 'pol' is the minimal polynomial of w
that I have specified. But how do I refer to w?
By F.operations.Coefficients (Do *not* use Coefficients, which contains
a bug) you can get the coefficients of a field element with respect to
the selected base. As GF selects a base to be powers ([0..d-1]) of a
primitive element, you will get exactly what you wanted, if you regard the
obtained coefficient list again as a polynomial.
Maybe this is of help. Yours