> < ^ From:

< ^ Subject:

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[2]' 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

Alexander Hulpke

> < [top]