Skip to content

Commit 34cfdde

Browse files
committed
Add more wordrep tests
1 parent e7c7377 commit 34cfdde

File tree

1 file changed

+138
-27
lines changed

1 file changed

+138
-27
lines changed

tst/testinstall/wordrep.tst

Lines changed: 138 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,208 @@
1+
#
2+
gap> START_TEST("wordrep.tst");
3+
4+
#
15
gap> f := FreeGroup(IsSyllableWordsFamily,4);;
26
gap> fam := FamilyObj(f.1);
37
<Family: "FreeGroupElementsFamily">
48

59
#
6-
gap> w8:=ObjByExtRep(fam,[1,1]); Is8BitsAssocWord(w8);
7-
f1
10+
gap> w8:=ObjByExtRep(fam,[1,1,2,-10,1,4]); Is8BitsAssocWord(w8);
11+
f1*f2^-10*f1^4
812
true
913
gap> ExtRepOfObj(w8);
10-
[ 1, 1 ]
11-
gap> w16:=ObjByExtRep(fam,[1,2^10]); Is16BitsAssocWord(w16);
12-
f1^1024
14+
[ 1, 1, 2, -10, 1, 4 ]
15+
gap> w16:=ObjByExtRep(fam,[1,2^10,2,-10,1,4]); Is16BitsAssocWord(w16);
16+
f1^1024*f2^-10*f1^4
1317
true
1418
gap> ExtRepOfObj(w16);
15-
[ 1, 1024 ]
16-
gap> w32:=ObjByExtRep(fam,[1,2^20]); Is32BitsAssocWord(w32);
17-
f1^1048576
19+
[ 1, 1024, 2, -10, 1, 4 ]
20+
gap> w32:=ObjByExtRep(fam,[1,2^20,2,-10,1,4]); Is32BitsAssocWord(w32);
21+
f1^1048576*f2^-10*f1^4
1822
true
1923
gap> ExtRepOfObj(w32);
20-
[ 1, 1048576 ]
21-
gap> winf:=ObjByExtRep(fam,[1,2^40]);; IsInfBitsAssocWord(winf);
24+
[ 1, 1048576, 2, -10, 1, 4 ]
25+
gap> winf:=ObjByExtRep(fam,[1,2^40,2,-10,1,4]);; IsInfBitsAssocWord(winf);
2226
true
2327
gap> ExtRepOfObj(winf);
24-
[ 1, 1099511627776 ]
28+
[ 1, 1099511627776, 2, -10, 1, 4 ]
29+
30+
#
31+
# ExponentSums
32+
#
33+
34+
#
35+
gap> ExponentSums(w8);
36+
[ 5, -10, 0, 0 ]
37+
gap> ExponentSums(w8, 3, 4);
38+
[ 0, 0 ]
39+
gap> ExponentSums(w8, 4, 1);
40+
[ ]
41+
gap> ExponentSums(w8, 0, 1);
42+
Error, <start> must be a positive integer
43+
gap> ExponentSums(w8, 1, 0);
44+
Error, <end> must be a positive integer
45+
46+
#
47+
gap> ExponentSums(w16);
48+
[ 1028, -10, 0, 0 ]
49+
gap> ExponentSums(w16, 3, 4);
50+
[ 0, 0 ]
51+
gap> ExponentSums(w16, 4, 1);
52+
[ ]
53+
gap> ExponentSums(w16, 0, 1);
54+
Error, <start> must be a positive integer
55+
gap> ExponentSums(w16, 1, 0);
56+
Error, <end> must be a positive integer
57+
58+
#
59+
gap> ExponentSums(w32);
60+
[ 1048580, -10, 0, 0 ]
61+
gap> ExponentSums(w32, 3, 4);
62+
[ 0, 0 ]
63+
gap> ExponentSums(w32, 4, 1);
64+
[ ]
65+
gap> ExponentSums(w32, 0, 1);
66+
Error, <start> must be a positive integer
67+
gap> ExponentSums(w32, 1, 0);
68+
Error, <end> must be a positive integer
69+
70+
#
71+
gap> ExponentSums(winf);
72+
[ 1099511627780, -10, 0, 0 ]
73+
gap> ExponentSums(winf, 3, 4);
74+
[ 0, 0 ]
75+
gap> ExponentSums(winf, 4, 1);
76+
[ ]
77+
gap> ExponentSums(winf, 0, 1);
78+
Error, <from> must be a positive integer
79+
gap> ExponentSums(winf, 1, 0);
80+
Error, <to> must be a positive integer
81+
82+
#
83+
# syllables
84+
#
85+
86+
#
87+
gap> words := [w8, w16, w32, winf];;
88+
gap> ForAll(words, w -> GeneratorSyllable(w, 2) = 2);
89+
true
90+
gap> ForAll(words, w -> ExponentSyllable(w, 2) = -10);
91+
true
92+
93+
#
94+
gap> 8Bits_ExponentSyllable(w8, 0);
95+
Error, <i> must be an integer between 1 and 3
96+
gap> 16Bits_ExponentSyllable(w16, 0);
97+
Error, <i> must be an integer between 1 and 3
98+
gap> 32Bits_ExponentSyllable(w32, 0);
99+
Error, <i> must be an integer between 1 and 3
100+
101+
#
102+
gap> 8Bits_GeneratorSyllable(w8, 0);
103+
Error, <i> must be an integer between 1 and 3
104+
gap> 16Bits_GeneratorSyllable(w16, 0);
105+
Error, <i> must be an integer between 1 and 3
106+
gap> 32Bits_GeneratorSyllable(w32, 0);
107+
Error, <i> must be an integer between 1 and 3
25108

26109
#
27110
# test powering (esp. 8Bits_Power), with various shapes
28111
#
29112

30113
# special case: w * gi^n * w^-1
31-
gap> w:=ObjByExtRep(fam,[1,1, 2,1, 1,-1]); w^0; w^1; w^-1; w^3; w^100;
114+
gap> u8:=ObjByExtRep(fam,[1,1, 2,1, 1,-1]); u8^0; u8^1; u8^-1; u8^3; u8^-3; u8^100;
32115
f1*f2*f1^-1
33116
<identity ...>
34117
f1*f2*f1^-1
35118
f1*f2^-1*f1^-1
36119
f1*f2^3*f1^-1
120+
f1*f2^-3*f1^-1
37121
f1*f2^100*f1^-1
38-
gap> w:=ObjByExtRep(fam,[1,1, 2,2^10, 1,-1]); w^0; w^1; w^-1; w^3; w^100;
122+
gap> u16:=ObjByExtRep(fam,[1,1, 2,2^10, 1,-1]); u16^0; u16^1; u16^-1; u16^3; u16^-3; u16^100;
39123
f1*f2^1024*f1^-1
40124
<identity ...>
41125
f1*f2^1024*f1^-1
42126
f1*f2^-1024*f1^-1
43127
f1*f2^3072*f1^-1
128+
f1*f2^-3072*f1^-1
44129
f1*f2^102400*f1^-1
45-
gap> w:=ObjByExtRep(fam,[1,1, 2,2^10, 1,-1]); w^0; w^1; w^-1; w^3; w^100;
46-
f1*f2^1024*f1^-1
130+
gap> u32:=ObjByExtRep(fam,[1,1, 2,2^20, 1,-1]); u32^0; u32^1; u32^-1; u32^3; u32^-3; u32^100;;
131+
f1*f2^1048576*f1^-1
47132
<identity ...>
48-
f1*f2^1024*f1^-1
49-
f1*f2^-1024*f1^-1
50-
f1*f2^3072*f1^-1
51-
f1*f2^102400*f1^-1
52-
gap> w:=ObjByExtRep(fam,[1,1, 2,2^40, 1,-1]);; w^0; w^1;; w^-1;; w^3;; w^100;;
133+
f1*f2^1048576*f1^-1
134+
f1*f2^-1048576*f1^-1
135+
f1*f2^3145728*f1^-1
136+
f1*f2^-3145728*f1^-1
137+
gap> uinf:=ObjByExtRep(fam,[1,1, 2,2^40, 1,-1]);; uinf^0; uinf^1;; uinf^-1;; uinf^3;; uinf^-3;; uinf^100;;
53138
<identity ...>
54139

55140
# special case: w * gj^x * t * gj^y * w^-1, x != -y
56-
gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1, 2,2, 1,-1]); w^0; w^1; w^-1; w^3; w^100;
141+
gap> v8:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1, 2,2, 1,-1]); v8^0; v8^1; v8^-1; v8^3; v8^-3; v8^100;
57142
f1*f2*f3*f4^-1*f2^2*f1^-1
58143
<identity ...>
59144
f1*f2*f3*f4^-1*f2^2*f1^-1
60145
f1*f2^-2*f4*f3^-1*f2^-1*f1^-1
61146
f1*(f2*f3*f4^-1*f2^2)^3*f1^-1
147+
f1*(f2^-2*f4*f3^-1*f2^-1)^3*f1^-1
62148
f1*(f2*f3*f4^-1*f2^2)^100*f1^-1
63-
gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1, 2,2, 1,-1]); w^0; w^1; w^-1; w^3; w^100;
149+
gap> v16:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1, 2,2, 1,-1]); v16^0; v16^1; v16^-1; v16^3; v16^-3; v16^100;;
64150
f1*f2*f3^1024*f4^-1*f2^2*f1^-1
65151
<identity ...>
66152
f1*f2*f3^1024*f4^-1*f2^2*f1^-1
67153
f1*f2^-2*f4*f3^-1024*f2^-1*f1^-1
68154
f1*(f2*f3^1024*f4^-1*f2^2)^3*f1^-1
69-
f1*(f2*f3^1024*f4^-1*f2^2)^100*f1^-1
70-
gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1, 2,2, 1,-1]); w^0; w^1; w^-1; w^3;
155+
f1*(f2^-2*f4*f3^-1024*f2^-1)^3*f1^-1
156+
gap> v32:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1, 2,2, 1,-1]); v32^0; v32^1; v32^-1; v32^3; v32^-3; v32^100;;
71157
f1*f2*f3^1048576*f4^-1*f2^2*f1^-1
72158
<identity ...>
73159
f1*f2*f3^1048576*f4^-1*f2^2*f1^-1
74160
f1*f2^-2*f4*f3^-1048576*f2^-1*f1^-1
75161
f1*(f2*f3^1048576*f4^-1*f2^2)^3*f1^-1
162+
f1*(f2^-2*f4*f3^-1048576*f2^-1)^3*f1^-1
76163

77164
# general case: w * t * w^-1
78-
gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1]); w^0; w^1; w^-1; w^3; w^100;
165+
gap> x8:=ObjByExtRep(fam,[1,1, 2,1, 3,1, 4,-1]); x8^0; x8^1; x8^-1; x8^3; x8^-3; x8^100;
79166
f1*f2*f3*f4^-1
80167
<identity ...>
81168
f1*f2*f3*f4^-1
82169
f4*f3^-1*f2^-1*f1^-1
83170
(f1*f2*f3*f4^-1)^3
171+
(f4*f3^-1*f2^-1*f1^-1)^3
84172
(f1*f2*f3*f4^-1)^100
85-
gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1]); w^0; w^1; w^-1; w^3; w^100;
173+
gap> x16:=ObjByExtRep(fam,[1,1, 2,1, 3,2^10, 4,-1]); x16^0; x16^1; x16^-1; x16^3; x16^-3; x16^100;
86174
f1*f2*f3^1024*f4^-1
87175
<identity ...>
88176
f1*f2*f3^1024*f4^-1
89177
f4*f3^-1024*f2^-1*f1^-1
90178
(f1*f2*f3^1024*f4^-1)^3
179+
(f4*f3^-1024*f2^-1*f1^-1)^3
91180
(f1*f2*f3^1024*f4^-1)^100
92-
gap> w:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1]); w^0; w^1; w^-1; w^3;
181+
gap> x32:=ObjByExtRep(fam,[1,1, 2,1, 3,2^20, 4,-1]); x32^0; x32^1; x32^-1; x32^3; x32^-3;
93182
f1*f2*f3^1048576*f4^-1
94183
<identity ...>
95184
f1*f2*f3^1048576*f4^-1
96185
f4*f3^-1048576*f2^-1*f1^-1
97186
(f1*f2*f3^1048576*f4^-1)^3
187+
(f4*f3^-1048576*f2^-1*f1^-1)^3
188+
189+
#
190+
# quotients
191+
#
192+
gap> words8 := [u8,v8,w8,x8];; ForAll(words8, Is8BitsAssocWord);
193+
true
194+
gap> words16 := [u16,v16,w16,x16];; ForAll(words16, Is16BitsAssocWord);
195+
true
196+
gap> words32 := [u32,v32,w32,x32];; ForAll(words32, Is32BitsAssocWord);
197+
true
198+
199+
#
200+
gap> SetX(words8, words8, {a,b} -> (a/b) = 8Bits_Quotient(a,b));
201+
[ true ]
202+
gap> SetX(words16, words16, {a,b} -> (a/b) = 16Bits_Quotient(a,b));
203+
[ true ]
204+
gap> SetX(words32, words32, {a,b} -> (a/b) = 32Bits_Quotient(a,b));
205+
[ true ]
206+
207+
#
208+
gap> STOP_TEST("wordrep.tst", 1);

0 commit comments

Comments
 (0)