Ok, I was wrong. I'm convinced that sage has the correct behavior, which
I think is:

GF(q).gen() returns an element x of GF(q) such that the smallest
subfield of GF(q) containing x is GF(q).

In this case, the docstring needs to be corrected, because the statement
that "All elements x of self are expressed as log_{self.gen()}(p)
internally" is not true, right? (Extrapolating from this sentence and my
two examples led me to make my previous statements.) Probably it is true
that all elements are expressible as polynomials in x, and perhaps this
is also the internal representation.


On Mon, 2008-01-21 at 00:32 -0800, David Kohel wrote:
> Hi,
> 
> It is probably a bias of the choice of (additive) generators for
> finite field
> extensions which results in the primitive field element also being a
> generator for the multiplicative group (confusingly called a
> "primitive
> element of the finite field").
> 
> It is not possible to set GF(q).gen() to always be a generator for
> the
> multiplicative group, since it is not always computationally feasible
> to
> determine it.  In particular requires a factorization of q-1.  The
> finite
> field constructor for non-prime fields would then also have to be
> changed to ONLY use primitive elements (since GF(q).gen() must
> certainly return the generator with respect the the defining
> polynomial).
> This would conflict with the desire to allow user-chosen polynomials
> or polynomials of SAGE's choice which are selected for sparseness
> (hence speed) rather than as generator of the multiplicative group.
> Moreover, any such definition for convenience of the user would
> have to be turned off for q > [some arbitrary bound] and could not
> be reliable.  Thus I don't see how it would be possible to make the
> definition that GF(q).gen() is a generator for the multiplicative
> group.
> 
> For small finite fields, one could set GF(q).gen() to be such a
> generator.  This could either be convenient, or confuse users into
> thinking that this is more generally True.
> 
> --David
> 
> P.S. On the other hand, I find (additive) order confusing and there
> should
> be some checking of the index for FF.i below (i.e. give an error if i !
> = 0).
> 
> sage: FF.<x> = GF(7^100);
> sage: x.order()
> 7
> sage: x
> x
> sage: x.multiplicative_order()
> 323447650962475799134464776910021681085720319890462540093389533139169145963692806000
> sage: FF.0
> x
> sage: FF.1
> x
> sage: FF.2
> x
> sage: FF.100
> x
> sage: FF.101
> x
> > 
> 
> 


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to