# Representing finite field elements in terms of subfield elements

I am trying to do something along the lines of magma's Eltseq function between two finite fields of the same characteristic. I'm hoping that this will be easier now that the conway polynomial work has been included in sage.

Given an element of a finite field, I would like to be able to get that element as a polynomial in the generator of the finite field, but with coefficients in a non-prime subfield.

K.<w2> = FiniteField(2^2, conway=True, prefix="w")
L.<w4> = FiniteField(2^4, conway=True, prefix="w")
a = (w2+1)*w4 + 1 # a = w4^3 + w4^2 + w4 + 1

# Currently we can do this to get a polynomial with coefficients in the prime subfield:
a.polynomial().list() # returns [1, 1, 1, 1]

# I would like this same, but for any subfield:
a.polynomial(K).list() # would return [1, w2+1]


Does anything like this exist? I've been wracking my brain trying to work out how to do this in an efficient manner, but I can't come up with anything.

Any help in this, even just pointing me in the right direction, would be very much appreciated.

edit retag close merge delete

Sort by » oldest newest most voted

This is not supported yet. Your best option, for the moment, is use linear algebra:

sage: M = matrix([vector(w4^i*w2^j) for i in range(2) for j in range(2)])
sage: M
[1 0 0 0]
[0 1 1 0]
[0 1 0 0]
[0 0 1 1]
sage: vector(a) * M^-1
(1, 0, 1, 1)


which, of course, says $a$ equals $1 + w_4(1+w_2)$.

more

Fantastic! Thanks Luca, that's exactly what I needed.