-
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
Speed up calculation of character tables, in particular for solvable groups #4836
Conversation
lib/claspcgs.gi
Outdated
# Calculate a (central) elementary abelian series with all pcgs induced | ||
# w.r.t. <homepcgs>. | ||
|
||
if IsPrimePowerInt(Size(G)) then |
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 IsPrimePowerInt(Size(G)) then | |
if IsPGroup(G) then |
lib/claspcgs.gi
Outdated
home:=PcgsElementaryAbelianSeries(G); | ||
eas:=EANormalSeriesByPcgs(home); | ||
|
||
# AH, 26-4-99: Test centrality not via `in' but via exponents |
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 comment really confused me, but it seems you copy&pasted this from elsewhere... indeed, there are two places in the GAP library this code already appears in, with this PR 3. Perhaps time to put it into its own helper function instead of duplicating it more?
Fixed the multi-element class identification in pc groups that had been broken for decades. Provided alternative function `MultiClassIdsPc` for use in the character table code, that will partically cache intermediate results. Use this in pc group Dixon-Schneider
It can happen (e.g. when storing level indices) that routines use pcgs that are not the HomePcgs identically, but the same pces as induced by the HomePcgs. The code for checking whether an induced pcgs is already cached thus tests for equality, not identity with the HomePcgs. The cost of the extra test is neglegible over computing an induced pcgs.
Also don't hope for universal splitting matric if there are many (>20) spaces, the test ends up far too expensive.
External name to duplicate local function, use IsPGroup
Faster class ID, avoiding redundancy in computing induced Pcgs (should also help in other situations), and some further MatrixObj cleanup in Dixon/Schneider.
Overall (e.g. measured for Weyl(B4)\wr S4) this gives a speedup of close to 2 compared with 4.11.1
Release Notes:
The calculation of character tables, in particular for solvable groups, now is often significantly faster.