Skip to content
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

Merged
merged 4 commits into from
Mar 24, 2022

Conversation

hulpke
Copy link
Contributor

@hulpke hulpke commented Mar 22, 2022

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.

@hulpke hulpke added kind: enhancement Label for issues suggesting enhancements; and for pull requests implementing enhancements release notes: to be added PRs introducing changes that should be (but have not yet been) mentioned in the release notes labels Mar 22, 2022
lib/claspcgs.gi Outdated
# Calculate a (central) elementary abelian series with all pcgs induced
# w.r.t. <homepcgs>.

if IsPrimePowerInt(Size(G)) then
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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
Copy link
Member

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
@hulpke hulpke merged commit afc8d9d into gap-system:master Mar 24, 2022
@fingolfin fingolfin added the topic: performance bugs or enhancements related to performance (improvements or regressions) label Aug 17, 2022
@fingolfin fingolfin changed the title Further improvements to pc group character table computation Speed up calculation of character tables, in particular for solvable groups Aug 17, 2022
@fingolfin fingolfin added release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes and removed release notes: to be added PRs introducing changes that should be (but have not yet been) mentioned in the release notes labels Aug 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: enhancement Label for issues suggesting enhancements; and for pull requests implementing enhancements release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes topic: performance bugs or enhancements related to performance (improvements or regressions)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants