-
Notifications
You must be signed in to change notification settings - Fork 160
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
Added Documentation for DecomPoly and NormalizerViaRadical #2360
Conversation
Codecov Report
@@ Coverage Diff @@
## master #2360 +/- ##
==========================================
+ Coverage 73.21% 73.42% +0.21%
==========================================
Files 482 482
Lines 246200 246196 -4
==========================================
+ Hits 180251 180778 +527
+ Misses 65949 65418 -531
|
We disabled direct pushes to |
lib/algfld.gd
Outdated
## called an ideal decomposition. In the context of field | ||
## extensions, if <M>\alpha</M> is a root of <M>f</M> in a suitable extension | ||
## and <M>Q</M> the field of rational numbers, such a decomposition corresponds | ||
## to (proper) subfields <M>Q\lt Q(\beta)\lt Q(\alpha)</M>, where <M>g</M> is the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"such a decomposition" vs. "subfields" -- shouldn't either both be in plural, or both be in singular?
I guess technically you can argue that of course Q and Q(\alpha) are also subfields of Q(\alpha), but I still find this mildly irritating to read... But really only mildly, I think I got the gist, thanks :-)
## decomposition exists). If the option <A>onlyone</A> is given it returns at | ||
## most one such decomposition (and performs faster). | ||
## <Example><![CDATA[ | ||
## gap> x:=X(Rationals,"x");;pol:=x^8-24*x^6+144*x^4-288*x^2+144;; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Offtopic: the reference manual says this on X
:
X is simply a synonym for Indeterminate. However, we do not recommend to use this synonym which is supported only for the backwards compatibility.
Now, don't get me wrong, I am not suggesting you should change the examples; rather, I always use X
myself, so I am wondering if this last sentence in the manual should just be deleted?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. (At the time when this was written there was a push to make X
obsolete as operation.)
lib/algfld.gd
Outdated
@@ -188,3 +188,45 @@ DeclareGlobalFunction("AlgExtEmbeddedPol"); | |||
|
|||
DeclareGlobalFunction("AlgExtSquareHensel"); | |||
|
|||
############################################################################# | |||
## | |||
#F DecomPoly( <f> [:"onlyone"] ) finds ideal decompositions of rational f |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Open question: should the name of this function stay DecomPoly
? Wouldn't e.g. DecompositionsOfPolynomial
more "GAPish"? I don't mind much either way, but once we document the name, we are more or less stuck with it, so I just want this to be a conscious decision.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we want to change it, then IdealDecompositionsOfPolynomial
would be the longish name.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we document it, I'd kind of prefer the longish name (a shorter alias can still be added). That said, I don't terribly mind if you greatly prefer the shorter name.
lib/algfld.gd
Outdated
## [ [ x^2+72*x+144, x^6-20*x^4+60*x^2-36 ] ] | ||
## ]]></Example> | ||
## In this example the given polynomial is regular with Galois group | ||
## <M>Q_8</M>, thus exposing the four proper subfields. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand the last part of this sentence. How does the fact that the Galois group is Q_8 "expose" the four proper subfields?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Q8 is the only group of order 8 with four proper subgroups.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
With that hint, I see what you are getting at, but I still don't see how that sentence possibly could convey it... How about this formulation instead:
In this example the given polynomial is regular with Galois group Q_8, which has exactly four proper subgroups, and hence four proper subfields, which are exposed by the decompositions we obtained.
## gap> g:=TransitiveGroup(30,2030);; | ||
## gap> s:=SylowSubgroup(g,5);; | ||
## gap> Size(NormalizerViaRadical(g,s)); | ||
## 28800 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This example of course is slower than the backtrack Normalizer
. I have yet to find an example that is while being short enough for the manual.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's OK, I think (though we might want to mention that the given example is not actually one where NormalizerViaRadical
is faster?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The function thus provided as a
there is an is missing here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a line about example and inserted is
.
Just a general question: Is there any rough complexity estimate known for that algorithm @hulpke? |
@ssiccha As for best complexity there is a paper by Klüners, van Hoeij and Belabas (I think) that presents a better method (that is harder to implement). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other than a typo, this looks good. Ideally, fix that typo, then push again, then we can merge this. Thanks!
lib/grp.gd
Outdated
## non-automated tool for advanced users. | ||
## <Example><![CDATA[ | ||
## gap> g:=TransitiveGroup(30,2030);; | ||
## gap> s:=SylowSubgroup(g,5);; | ||
## gap> Size(NormalizerViaRadical(g,s)); | ||
## 28800 | ||
## ]]></Example> | ||
## Note that this example only demonstartes usage, but that in this case |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: demonstartes -> demonstrates
This is not what the title says. This results in new |
Apart from a minor syntax change, this PR installs DecomPoly and NormalizerViaRadical as proper functions and adds basic documentation.
This comes as a PR, since git told me I had to do a PR and could not just push the changes.