Skip to content

Commit

Permalink
ENHANCE: Extended range of simple groups
Browse files Browse the repository at this point in the history
(based on work of Stefan Kohl)
  • Loading branch information
hulpke committed Jan 21, 2020
1 parent 1349f27 commit 6ac18ee
Show file tree
Hide file tree
Showing 3 changed files with 699 additions and 6 deletions.
26 changes: 20 additions & 6 deletions grp/simple.gi
Original file line number Diff line number Diff line change
Expand Up @@ -703,16 +703,30 @@ local NextL2PrimePowerInt;
fi;
end);

BindGlobal("LOADSIMPLE2",function()
local a;
if not IsBound(SIMPLEGPSNONL2[248]) then
MakeReadWriteGlobal("SIMPLEGPSNONL2");
a:=ReadAsFunction(Filename(List(GAPInfo.RootPaths,Directory),
"grp/simple2.g"));
SIMPLEGPSNONL2:=Immutable(Concatenation(SIMPLEGPSNONL2,a()));
MakeReadOnlyGlobal("SIMPLEGPSNONL2");
fi;
end);

BindGlobal("NextIterator_SimGp",function(it)
local a,l,pos,g,b;
if it!.done then return fail;fi;
a:=it!.b;
if a>1259903 then
# 1259903 is the last prime power whose L2 order is <10^18
Error("List of simple groups is only available up to order 10^18");
if a>=1316848669 then
# 1316848669 is the first prime power whose L2 order is beyond the
# simple2 list
Error(
"List of simple groups only available up to 1141767319822640065020315600");
fi;
l:=SizeL2Q(a);
pos:=it!.pos;
if pos>=245 then LOADSIMPLE2(); fi;
if l<SIMPLEGPSNONL2[pos][1] and not it!.nopsl2 then
# next is a L2
g:=SimpleGroup("L",2,a);
Expand Down Expand Up @@ -775,8 +789,8 @@ InstallGlobalFunction(SimpleGroupsIterator,function(arg)
stack:=a[3];
a:=a[2];
until SizeL2Q(b)>=start;
pos:=First([1..Length(SIMPLEGPSNONL2)],x->SIMPLEGPSNONL2[x][1]>=start);

if start>=10^18 then LOADSIMPLE2(); fi;
pos:=First([1..Length(SIMPLEGPSNONL2)],x->SIMPLEGPSNONL2[x][1]>=start);
return IteratorByFunctions(rec(
IsDoneIterator:=IsDoneIterator_SimGp,
NextIterator:=NextIterator_SimGp,
Expand Down Expand Up @@ -1165,7 +1179,7 @@ local a;
if n<168 then return 5;fi;
a:=Filtered(SIMPLEGPSNONL2,x->x[1]=n);
# we have degree data up to order 2^55
if n<=10^55 and Length(a)=0 then
if n<=2^55 and Length(a)=0 then
# L2 case
return 2*RootInt(n,3);
elif Length(a)>0 and ForAll(a,x->Length(x)>4) then
Expand Down
Loading

0 comments on commit 6ac18ee

Please sign in to comment.