ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Mon, 13 Jan 2014 05:32:33 +0100Representing finite field elements in terms of subfield elementshttps://ask.sagemath.org/question/10904/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.Sat, 11 Jan 2014 15:36:15 +0100https://ask.sagemath.org/question/10904/representing-finite-field-elements-in-terms-of-subfield-elements/Answer by Luca for <p>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.</p>
<p>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.</p>
<pre><code>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]
</code></pre>
<p>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.</p>
<p>Any help in this, even just pointing me in the right direction, would be very much appreciated.</p>
https://ask.sagemath.org/question/10904/representing-finite-field-elements-in-terms-of-subfield-elements/?answer=15912#post-id-15912This 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)$.
Sun, 12 Jan 2014 16:03:19 +0100https://ask.sagemath.org/question/10904/representing-finite-field-elements-in-terms-of-subfield-elements/?answer=15912#post-id-15912Comment by hds for <p>This is not supported yet. Your best option, for the moment, is use linear algebra:</p>
<pre><code>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)
</code></pre>
<p>which, of course, says $a$ equals $1 + w_4(1+w_2)$.</p>
https://ask.sagemath.org/question/10904/representing-finite-field-elements-in-terms-of-subfield-elements/?comment=16451#post-id-16451Fantastic! Thanks Luca, that's exactly what I needed.Mon, 13 Jan 2014 05:32:33 +0100https://ask.sagemath.org/question/10904/representing-finite-field-elements-in-terms-of-subfield-elements/?comment=16451#post-id-16451