@@ -2627,7 +2627,13 @@ local d,iso,a,b,c,o,s,two,rt,r,z,e,y,re,m,gens,cnt,lim,p,
26272627 a:= PseudoRandom(gp);
26282628 fi ;
26292629 e:= Order(a);
2630- if e in r then
2630+ # `r` is either a list or a record,
2631+ # the latter describing the range
2632+ # `[ r.first, r.first + r.offset .. r.last ]`,
2633+ # also if this range cannot be created in GAP.
2634+ if ( IsList( r ) and e in r ) or
2635+ ( IsRecord( r ) and r.first <= e and e <= r.last
2636+ and ( e - r.first ) mod r.offset = 0 ) then
26312637 a:= a^ QuoInt(e,o);
26322638 if z= fail or Size(Centralizer(gp,a))= z then
26332639 return a;
@@ -2731,7 +2737,7 @@ local d,iso,a,b,c,o,s,two,rt,r,z,e,y,re,m,gens,cnt,lim,p,
27312737 if gens= fail then
27322738 Info (InfoMorph,1 ," Isomorphism simple: ad-hoc" );
27332739 # not found by table or other -- try a 2/something ad-hoc
2734- rt:= [ 2 , 4 .. Size(g)] ;
2740+ rt:= rec ( first := 2 , offset := 2 , last := Size(g) ) ;
27352741 gens:= [ findElm(g,2 ,fail ,rt)] ;
27362742 z:= Size(Centralizer(g,gens[ 1 ] ));
27372743
@@ -2740,7 +2746,7 @@ local d,iso,a,b,c,o,s,two,rt,r,z,e,y,re,m,gens,cnt,lim,p,
27402746 m:= Maximum(Filtered(Factors(Size(g)),x-> x< 100 ));
27412747 cnt:= 0 ;
27422748 repeat
2743- gens[ 2 ] := findElm(g,m,fail ,[ m, 2 * m .. Size(g)] );
2749+ gens[ 2 ] := findElm(g,m,fail , rec ( first := m, offset := m, last := Size(g) ) );
27442750 if isFull(SubgroupNC(g,gens)) then
27452751 b:= gens;
27462752 y:= Size(Centralizer(g,gens[ 2 ] ));
@@ -2765,7 +2771,7 @@ local d,iso,a,b,c,o,s,two,rt,r,z,e,y,re,m,gens,cnt,lim,p,
27652771 od ;
27662772 gens:= b;
27672773 e:= Order(gens[ 2 ] );
2768- re:= [ e, 2 * e .. Size(g)] ;
2774+ re:= rec ( first := e, offset := e, last := Size(g) ) ;
27692775 y:= Size(Centralizer(g,gens[ 2 ] ));
27702776 fi ;
27712777 Info (InfoMorph,1 ," generators " ,List(gens,Order));
0 commit comments