Skip to content

Commit 6199507

Browse files
committed
build/pkgs/gap: backport patch to fix optional GRAPE test failures
Fixes gap-system/gap#5796 This is the patch I'm using on Gentoo, it combines the upstream fix and one of its dependencies (without which the desired fix does not apply). Without it, you'll get some test failures with gap-4.13.x when GRAPE happens to be installed.
1 parent ddfad68 commit 6199507

File tree

1 file changed

+178
-0
lines changed

1 file changed

+178
-0
lines changed
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
diff --git a/lib/dicthf.gi b/lib/dicthf.gi
2+
index 5ee7341..e4349ac 100644
3+
--- a/lib/dicthf.gi
4+
+++ b/lib/dicthf.gi
5+
@@ -152,16 +152,37 @@ end);
6+
##
7+
InstallMethod(SparseIntKey,"for bounded tuples",true,
8+
[ IsList,IsList and IsCyclotomicCollection ], 0,
9+
-function(m,v)
10+
-local c;
11+
- if Length(m)<>3 or m[1]<>"BoundedTuples" then
12+
+function(m, v)
13+
+ if Length(m)<> 3 or m[1]<>"BoundedTuples" then
14+
TryNextMethod();
15+
fi;
16+
- c:=[1,Maximum(m[2])+1];
17+
- return function(a)
18+
- return a*c;
19+
+ # Due to the way BoundedTuples are presently implemented we expect the input
20+
+ # to the hash function to always be a list of positive immediate integers. This means
21+
+ # that using HashKeyWholeBag should be safe.
22+
+ return function(x)
23+
+ Assert(1, IsPositionsList(x));
24+
+ if not IsPlistRep(x) then
25+
+ x := AsPlist(x);
26+
+ fi;
27+
+ return HashKeyWholeBag(x, 1);
28+
end;
29+
30+
+ # alternative code w/o HashKeyBag
31+
+ ## build a weight vector to distinguish lists. Make entries large while staying clearly within
32+
+ ## immediate int (2^55 replacing 2^60, since we take subsequent primes).
33+
+ #step:=NextPrimeInt(QuoInt(2^55,Maximum(m[2])*m[3]));
34+
+ #weights:=[1];
35+
+ #len:=Length(v);
36+
+ ## up to 56 full, then increasingly reduce
37+
+ #len:=Minimum(len,8*RootInt(len));
38+
+ #while Length(weights)<len do
39+
+ # Add(weights,weights[Length(weights)]+step);
40+
+ # step:=NextPrimeInt(step);
41+
+ #od;
42+
+ #return function(a)
43+
+ # return a*weights;
44+
+ #end;
45+
+
46+
end);
47+
48+
BindGlobal( "SparseIntKeyVecListAndMatrix", function(d,m)
49+
diff --git a/lib/oprt.gi b/lib/oprt.gi
50+
index c1def0b..00e2953 100644
51+
--- a/lib/oprt.gi
52+
+++ b/lib/oprt.gi
53+
@@ -3565,6 +3565,7 @@ InstallMethod(DomainForAction,"permutations on lists of integers",true,
54+
function(pnt,acts,act)
55+
local m;
56+
if not (Length(pnt)>0 and ForAll(pnt,IsPosInt) and
57+
+ ForAll(acts,IsPerm) and
58+
(act=OnSets or act=OnPoints or act=OnRight or act=\^)) then
59+
TryNextMethod();
60+
fi;
61+
diff --git a/lib/vecmat.gi b/lib/vecmat.gi
62+
index 017c3c6..93ba828 100644
63+
--- a/lib/vecmat.gi
64+
+++ b/lib/vecmat.gi
65+
@@ -2142,7 +2142,8 @@ InstallMethod(DomainForAction,"matrix/matrix",IsElmsCollsX,
66+
function(pnt,acts,act)
67+
local l,f;
68+
if (not ForAll(acts,IsMatrix)) or
69+
- (act<>OnPoints and act<>OnSubspacesByCanonicalBasis and act<>OnRight) then
70+
+ (act<>OnPoints and act<>OnSubspacesByCanonicalBasis and act<>OnRight and act<>OnSets and
71+
+ act<>OnTuples) then
72+
TryNextMethod(); # strange operation, might extend the domain
73+
fi;
74+
l:=NaturalActedSpace(acts,pnt);
75+
diff --git a/tst/testbugfix/2024-09-14-actdomain.tst b/tst/testbugfix/2024-09-14-actdomain.tst
76+
new file mode 100644
77+
index 0000000..84f8b50
78+
--- /dev/null
79+
+++ b/tst/testbugfix/2024-09-14-actdomain.tst
80+
@@ -0,0 +1,85 @@
81+
+# Fix #5786 and error reported by Len Soicher in support list
82+
+gap> gg:=SpecialUnitaryGroup(4,2);;
83+
+gap> hl:=Z(2)*[
84+
+> [0,0,1,0],
85+
+> [1,1,0,0],
86+
+> [0,1,0,1],
87+
+> [0,1,1,0],
88+
+> [1,1,0,1]];;
89+
+gap> o:=Orbit(gg,Set(hl),OnSets);;
90+
+gap> Length(o);
91+
+216
92+
+gap> set:=[ 1,10,15,24,29,33,38,40,44,59, 60, 63, 69, 74, 77,79,85, 86, 90,
93+
+> 95, 99, 103, 105, 110, 122, 125, 143, 148, 149, 153, 162, 165, 174, 182,
94+
+> 185, 191, 197, 198, 202, 218, 223, 227, 228, 235, 236, 240, 243, 248,
95+
+> 254,
96+
+> 256, 259, 270, 275, 288, 291, 295, 298, 302, 305, 310, 312, 315, 325,
97+
+> 329,
98+
+> 333, 340, 341, 350, 356, 366, 369, 381, 385, 390, 397, 402, 412, 414,
99+
+> 419,
100+
+> 421, 425, 428, 433, 436, 445, 447, 451, 452, 453, 454, 461, 466, 474,
101+
+> 479,
102+
+> 481, 489, 490, 493, 497, 507, 509, 512, 513, 519, 521 ];;
103+
+gap> gp:=Group(
104+
+> ( 1,340,124,306,216,492,100, 25,108,270,220,332)( 2,138, 54,161,132,159,198,
105+
+> 336,439,269, 89,419)( 3,467,177,404,505,437,379,312,481,271,223,135)
106+
+> ( 4,510, 79,504,259,234,378,251,272,268,360,303)( 5,278,176,191,231,275,263,
107+
+> 190,230,146,265,192)( 6,486,126,523,490,448,375,237,288,400,243,329)
108+
+> ( 7,131,123,516, 48,392,350,333,418, 16,139,175)( 8,289,125,386,241, 29,376,
109+
+> 334,242,417,442,331)( 9,430, 32, 59,446,367,377,335,411,416,515,330)
110+
+> ( 10,391, 56,407,475,414,200,328,165,473, 86,119)( 11,368, 35,390,522,408,199,
111+
+> 415,440,326, 87,503)( 12,412, 55,457,399,245,201, 33,438,431, 88,317)
112+
+> ( 13,471, 40,348,452,292, 43,346,373, 77, 41,347)( 14,137,174,162, 60, 69,321,
113+
+> 487, 61,158,322,370)( 15,101,114,109,130,160,488,489,352,351,420, 17)
114+
+> ( 18,339,167,290,202,385, 99, 22, 90,323,217,129)( 19, 26, 93,304, 96,342)
115+
+> ( 20,338,166,305,215,141, 97, 24, 51,150,219,507)( 21,337, 63,186,214,424, 98,
116+
+> 23,107,382,218,349)( 27, 91,445,451,525, 67,519,239,144,203,155,353)
117+
+> ( 28,324,444,128, 70,428,496,238,286,300,283, 64)( 30,236,287,441,387,354)
118+
+> ( 31,345,366,517, 45,344,413,521, 46,248,244,121)( 34,314,394,402,222,447, 81,
119+
+> 282,262,173,246,435)( 36,482,178,364,148,495,179,363,140,102,113,111)
120+
+> ( 37,253,273,168,294,302,226,183, 72,480,154,233)( 38,483,520,393,403,465,362,
121+
+> 298,143,356,153,369)( 39,157,320,472)( 42,228,277,264)( 44,343,147,501)
122+
+> ( 47, 73,308,380,184,389,310,327,163,295,151,425)( 49,221,456, 80,474,260,405,
123+
+> 325,164,524,152,449)( 50,479,365,477,461,459,497,169,296,247,134,117)
124+
+> ( 52,361,299,285,355,188,423,464,434,453,133,118)( 53,257,509, 68,511,458,293,
125+
+> 204,384,374, 75, 82)( 57,116,112,149,514,396,470,485,493,249,421,120)
126+
+> ( 58,500,266,250,429,122)( 62,156,319,311)( 65,187,225,357,127, 71,388,235,
127+
+> 460,252,274,371)( 66,106,462,291,205,383,372, 76, 92,410,280,498)
128+
+> ( 74,401,381,476,409,281,171,104,297,307,426,182)( 78, 84,261,256,180,436,512,
129+
+> 313,181,491,224,499)( 83,466,255,508,506,395,469,422,142,103,115,110)
130+
+> ( 85,468,258,502,267,136)( 94,341)( 95,211)(105,478,195,432,518,316,197,484,
131+
+> 494,455,196,170)(145,513,359,232,227,254)(172,209,398,207,279,206)
132+
+> (185,194,309,443)(189,406,463,318,450,427,433,454,315,301,284,358)
133+
+> (193,229,276,240)(208,397)(210,213,212)
134+
+> ,( 1,379,148, 48,128,430,416)( 2, 34,338, 35,235,131,521)( 3,512,352, 47,
135+
+> 318,289,237)( 4,272,506, 49,434,486,282)( 5,524,485, 10,483,340, 55)
136+
+> ( 6,458, 36,487, 60,121, 16)( 7,313,140,336,127,435,270)( 8, 85,147,489,
137+
+> 98,201,417)( 9,469, 94,488,129,329,400)( 11,291, 26, 54,234,473,169)
138+
+> ( 12,207,339, 56,233,503,515)( 13,426,337, 40,232,295,500)( 14, 32,414, 27,
139+
+> 167,130,472)( 15, 33,188, 38,382,109,501)( 17, 31,459, 37,496,132,517)
140+
+> ( 18,263,294,446,451,134,497)( 19,198,525,241,441,244,470)( 20,100,199,490,
141+
+> 242,429,413)( 21,378,403,216,523,421, 58)( 22,124,159, 77, 63,123,292)
142+
+> ( 23,176,275,431,168, 86,293)( 24,177,492,326,104,151,290)( 25, 79,437,269,
143+
+> 163,152,144)( 28,462,150,162, 62,120,415)( 29,239, 83,311, 61,117,260)
144+
+> ( 30,452,149,370, 39,122,389)( 41,468, 73,254,277,432,371)( 42,210,319,502,
145+
+> 373,205,283)( 43,387,194,212,320,508, 99)( 44,396,349,331,399,250,420)
146+
+> ( 45,411,461,375,475,377,418)( 46,344,409,519,522,477,419)( 50,253,278,433,
147+
+> 231, 88,422)( 51,482,138,358,229,463,381)( 52, 91,467,221,230,518,484)
148+
+> ( 53,390,510,494,228,454, 92)( 57,310,460,118,259,367,363)( 59,281,227,274,
149+
+> 505,402,215)( 64,125,245, 76, 93,160,471)( 65,126,408, 75,166, 69,264)
150+
+> ( 66,302,186,116,257,424,327)( 67,187,297,479,217,425,171)( 68,303,296,345,
151+
+> 280,226,273)( 70,240,359,366,364, 97,200)( 71,265,360,394,393,133,423)
152+
+> ( 72,251,146,164,268, 87,312)( 74,252,276,406,513, 89,181)( 78,395,158,185,
153+
+> 315,287,333)( 80,136,351,156,316,286,334)( 81,511,350,184,317,288,335)
154+
+> ( 82,261,392,183,105,309,238)( 84,224,439,182,284,193,236)( 90,466,391,357,
155+
+> 443,170,465)( 95,321,509,353,203,243,197)( 96,516,498,354,300,246,401)
156+
+> (101,405,453,464,154,112,341)(102,139,450,208,388,365,111)(103,440,520,285,
157+
+> 192,266,343)(106,308,218,119,262,448,298)(107,219,368,356,442,301,209)
158+
+> (108,514,412,355,376,474,222)(110,495,137,478,361,444,380)(113,255,342,175,
159+
+> 173,247,305)(114,256,141,328,153,307,304)(115,258,385,325,172,214,306)
160+
+> (135,493,157,455,362,445,407)(142,346,189,398,323,161,499)(143,190,145,436,
161+
+> 271,165,314)(155,195,211,174,404,374,204)(178,507,332,330,248,249,179)
162+
+> (180,372,202,386,196,213,322)(191,267,491,384,438,279,225)(206,428,299,369,
163+
+> 480,220,449)(223,481,383,427,397,324,504)(347,457,447,410,348,456,476));;
164+
+gap> Length(Orbit(gp,set,OnSets));
165+
+241920
166+
diff --git a/tst/teststandard/hash2.tst b/tst/teststandard/hash2.tst
167+
index 6bfa4d3..d47452e 100644
168+
--- a/tst/teststandard/hash2.tst
169+
+++ b/tst/teststandard/hash2.tst
170+
@@ -32,4 +32,8 @@ gap> Length(Orbit(h,h.1[1],OnRight));
171+
2079
172+
gap> Length(Orbit(h,h.2^5,OnPoints));
173+
693
174+
+gap> Length(Orbit(SymmetricGroup(14), [1 .. 7], OnSets));
175+
+3432
176+
+gap> Length(Orbit(SymmetricGroup(16), [1 .. 8], OnSets));
177+
+12870
178+
gap> STOP_TEST( "hash2.tst", 1);

0 commit comments

Comments
 (0)