Thank you very much! These were surprisingly fast replies! I tried to
run william's code, but appearently my version of sage does not
understand padded_list property:
z.polynomial().padded_list(5)
sage: z.polynomial().padded_list(5)
---------------------------------------------------------------------------
<type 'exceptions.AttributeError'> Traceback (most recent call
last)
/home/amadi/Programmes/Sage/sage-2.6.linux32bit-i686-Linux/<ipython
console> in <module>()
<type 'exceptions.AttributeError'>: 'Polynomial_dense_mod_p' object
has no attribute 'padded_list'
I'm writing it while I'm downloading Sage again.
On Sep 3, 4:29 pm, "William Stein" <[EMAIL PROTECTED]> wrote:
> On 9/3/07, Ahmad <[EMAIL PROTECTED]> wrote:
>
>
>
> > I'm new to sage and I don't know even if I'm supposed to post such
> > questions to this group or not. If it is a correct place:
>
> > Could you please tell me how can I change the basis in finite field
> > representation. As much as know sage represent the finite field
> > extension in:
>
> > [1, t, t^2, .., t^{n-1}]
>
> > for t being the root of irreducible polynomial used to extend the
> > field. I need to represent my field in normal basis (I have chosen my
> > irreducible polynomial such that [t, t^2, t^4 .., t^{2^{n-1}}] forms a
> > basis for the extension).
>
> > If it is not a correct place to ask such questions, please guide me to
> > the correct place.
>
> > Thank you very much for your attention and devotion of time!
>
> Here is an example session in which I create a finite field,
> find a normal basis, then explicitly represent elements in
> terms of it (by pushing everything over to vector spaces).
>
> I have to define two functions below in order to
> do this. If people think something like this would be generally
> useful, then it could be made "built in" to SAGE:
>
> sage: k.<a> = GF(2^5)
> sage: k
> Finite Field in a of size 2^5
> sage: V = k.vector_space()
> sage: z = (1+a)^17; z
> a^3 + a + 1
> sage: def to_V(w):
> ... return V(w.polynomial().padded_list(V.dimension()))
> sage: to_V(z)
> (1, 1, 0, 1, 0)
> sage: B2 = [(a+1)^(2^i) for i in range(k.degree())]
> sage: W = [to_V(b) for b in B2]
> sage: V.span(W).dimension()
> 5
> sage: W0 = V.span_of_basis(W)
> sage: def in_terms_of_normal_basis(z):
> ... return W0.coordinates(to_V(z))
> sage: in_terms_of_normal_basis(a+1)
> [1, 0, 0, 0, 0]
> sage: in_terms_of_normal_basis(1 + a + a^2 + a^3)
> [1, 0, 0, 1, 0]
>
> ----
>
> Or, in SAGE notebook text format:
>
> ahmad -- sage-support
> system:sage
>
> {{{id=0|
> k.<a> = GF(2^5)
>
> }}}
>
> {{{id=1|
> k
> ///
> Finite Field in a of size 2^5
>
> }}}
>
> {{{id=2|
> V = k.vector_space()
>
> }}}
>
> {{{id=3|
> z = (1+a)^17; z
> ///
> a^3 + a + 1
>
> }}}
>
> {{{id=4|
> def to_V(w):
> return V(w.polynomial().padded_list(V.dimension()))
>
> }}}
>
> {{{id=5|
> to_V(z)
> ///
> (1, 1, 0, 1, 0)
>
> }}}
>
> {{{id=6|
> B2 = [(a+1)^(2^i) for i in range(k.degree())]
>
> }}}
>
> {{{id=7|
> W = [to_V(b) for b in B2]
>
> }}}
>
> {{{id=8|
> V.span(W).dimension()
> ///
> 5
>
> }}}
>
> {{{id=9|
> W0 = V.span_of_basis(W)
>
> }}}
>
> {{{id=10|
> def in_terms_of_normal_basis(z):
> return W0.coordinates(to_V(z))
>
> }}}
>
> {{{id=11|
> in_terms_of_normal_basis(a+1)
> ///
> [1, 0, 0, 0, 0]
>
> }}}
>
> {{{id=12|
> in_terms_of_normal_basis(1 + a + a^2 + a^3)
> ///
> [1, 0, 0, 1, 0]}}}
>
> \
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/sage-support
URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/
-~----------~----~----~----~------~----~------~--~---