Skip to content

Commit 86aaa9c

Browse files
authored
Compute power maps when irreducibles were computed without them (#6141)
- add a helper function `ComputeAllPowerMaps`, - compute all power maps in `InducedCyclic` if they are not yet available, - compute all power maps in the `Irr` methods based on `IrrBaumClausen` Since #6134, more character tables use `IrrBaumClausen`, and the power maps are not automatically computed fr such tables. Thus we call `ComputeAllPowerMaps` in this situation, because computing individual power map values later on is more expensive. (The way *how* `ComputeAllPowerMaps` proceeds is just a temporary hack.)
1 parent 9628fc7 commit 86aaa9c

File tree

5 files changed

+41
-7
lines changed

5 files changed

+41
-7
lines changed

lib/ctblfuns.gi

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3133,6 +3133,11 @@ InstallMethod( InducedCyclic,
31333133
j,
31343134
single;
31353135

3136+
if HasUnderlyingGroup( tbl ) then
3137+
# Precompute the power maps if possible.
3138+
ComputeAllPowerMaps( tbl );
3139+
fi;
3140+
31363141
centralizers:= SizesCentralizers( tbl );
31373142
orders:= OrdersClassRepresentatives( tbl );
31383143
independent:= List( orders, ReturnTrue );

lib/ctblgrp.gd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,3 +470,5 @@ DeclareGlobalFunction("RepresentationsPermutationIrreducibleCharacters");
470470
## <#/GAPDoc>
471471
##
472472
DeclareGlobalFunction("NthRootsInGroup");
473+
474+
DeclareGlobalName( "ComputeAllPowerMaps" );

lib/ctblgrp.gi

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,10 @@ local p,primes,i,cl,spr,j,allpowermaps,pm,ex;
139139
od;
140140

141141
for p in primes do
142-
allpowermaps[p]:=List(D.classrange,i->ShallowCopy(D.classrange));
143-
allpowermaps[p][1]:=1;
144-
#allpowermaps[p]:=InitPowerMap(D.characterTable,p);
142+
if not IsBound( allpowermaps[p] ) then
143+
allpowermaps[p]:=List(D.classrange,i->ShallowCopy(D.classrange));
144+
allpowermaps[p][1]:=1;
145+
fi;
145146
od;
146147

147148
for p in primes do
@@ -200,6 +201,27 @@ fi;
200201
od;
201202
end );
202203

204+
205+
#############################################################################
206+
##
207+
#F ComputeAllPowerMaps( <tbl> )
208+
##
209+
## Computing all power maps is cheaper than successively computing some
210+
## values of individual power maps.
211+
## The current code is a hack.
212+
## (Apparently 'DxCalcAllPowerMaps' is much faster than other available
213+
## functions.)
214+
## It should be improved as soon as we have a general tool for the
215+
## identification of conjugacy classes.
216+
##
217+
BindGlobal( "ComputeAllPowerMaps", function( tbl )
218+
tbl:= UnderlyingGroup( tbl );
219+
if not HasDixonRecord( tbl ) then
220+
DxCalcAllPowerMaps( DixonRecord( tbl ) );
221+
fi;
222+
end );
223+
224+
203225
#############################################################################
204226
##
205227
#F DxCalcPrimeClasses(<D>)

lib/ctblsolv.gi

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -848,19 +848,23 @@ InstallMethod( Irr,
848848
"for a supersolvable group (Baum-Clausen algorithm)",
849849
[ IsGroup and IsSupersolvableGroup, IsZeroCyc ],
850850
function( G, zero )
851-
local irr;
851+
local irr, tbl;
852852
irr:= IrrBaumClausen( G );
853-
SetIrr( OrdinaryCharacterTable( G ), irr );
853+
tbl:= OrdinaryCharacterTable( G );
854+
SetIrr( tbl, irr );
855+
ComputeAllPowerMaps( tbl );
854856
return irr;
855857
end );
856858

857859
InstallMethod( Irr,
858860
"for a supersolvable group with known `IrrBaumClausen'",
859861
[ IsGroup and IsSupersolvableGroup and HasIrrBaumClausen, IsZeroCyc ],
860862
function( G, zero )
861-
local irr;
863+
local irr, tbl;
862864
irr:= IrrBaumClausen( G );
863-
SetIrr( OrdinaryCharacterTable( G ), irr );
865+
tbl:= OrdinaryCharacterTable( G );
866+
SetIrr( tbl, irr );
867+
ComputeAllPowerMaps( tbl );
864868
return irr;
865869
end );
866870

tst/testinstall/ctbl.tst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ C2
313313
2 1 1
314314

315315
1a 2a
316+
2P 1a 1a
316317
2
317318
X.1 ? 1 1
318319
X.2 ? 1 -1

0 commit comments

Comments
 (0)