New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Construct finite fields with primitive defining polynomial #8373
Comments
Replying to @rkirov: In your example,
It would be a mistake to insist on having a primitive generator. Of your options: (1) could slow Sage down unnecessarily, and what should it do if a user wanted to use a non-primitive generator? (2) yes, if the documentation is confusing, it should be clarified. (3) I don't quite understand. If you mean ignore a given modulus if it is not primitive, that would be very confusing. What is needed, for non-prime fields of large characteristic, is a much better way of finding a multiplicative generator:
What's taking the time here is that the current algorithm, after deciding that |
comment:2
I guess you are right, it is a generator as an algebra. Somehow I assumed F. gives you 'a' as a multiplicative generator. So it is really a renaming of 'x'(poly var)->'a'. I didn't see the convenient function F.multiplicative_generator. I checked that Magma has similar behavior.
It also seems to have different algorithm for primitive element,
In any case I am leaving this open so someone can work on the bug you found. |
comment:3
This is certainly not a bug, but possibly a feature request. I would propose adding the option |
This comment has been minimized.
This comment has been minimized.
comment:6
Replying to @jdemeyer: The idea of allowing modulus='primitive' is good. But a problem with the modified description is that the discussion in comments 1 and 2 is now out of context. |
comment:7
Replying to @sagetrac-fwclarke:
And sufficient for you to consider this issue fixed?
Sure, but that's not really a problem, right? |
Dependencies: #16927 |
Author: Jeroen Demeyer |
This comment has been minimized.
This comment has been minimized.
Replying to @rkirov:
This already exists in Some finite field implementations accept a string |
comment:12
Thanks for the pointer, I was confused by |
comment:13
Replying to @pjbruin:
Why should it be obsolete? I think the syntax
is very good to have. Note that the actual modulus polynomial is computed before the implementation is even considered. So it's not that every finite field implementation needs to be aware of this. |
This comment has been minimized.
This comment has been minimized.
comment:15
Replying to @jdemeyer:
Yes, it is certainly not this syntax that needs to be made obsolete!
That is what I meant; the individual implementation should never need to consider the case where |
Branch: u/jdemeyer/ticket/8373 |
Commit: |
comment:19
Looks good and passes tests. |
Reviewer: Peter Bruin |
comment:20
I got this on arando (linux 32-bit):
|
Branch pushed to git repo; I updated commit sha1. New commits:
|
Changed branch from u/jdemeyer/ticket/8373 to |
Add an argument
modulus="primitive"
to the finite field generatorGF()
such that the chosen generator is guaranteed to be a generator of the multiplicative group.Depends on #16927
CC: @pjbruin
Component: finite rings
Author: Jeroen Demeyer
Branch/Commit:
e6c0c58
Reviewer: Peter Bruin
Issue created by migration from https://trac.sagemath.org/ticket/8373
The text was updated successfully, but these errors were encountered: