42 std::vector<int>{1, 1, 1, 1},
47 std::vector<int>{1, 2, 3, 4},
48 std::vector<int>{1, 1, 1, 1, 1, 1, 0, 0},
52 std::vector<int>{1, 1, 1, 1},
56 EXPECT_EQ(4, M1.n_vars());
57 std::vector<res_monomial_word> monomspace(100);
58 EXPECT_EQ(100, monomspace.size());
64 std::vector<int>{1, 1, 1, 1},
70 for (
int i = 0; i < M.n_vars(); i++)
71 for (
int j = i; j < M.n_vars(); j++)
73 int exp[]{0, 0, 0, 0};
76 int mon[]{0, 0, 0, 0, 0, 0, 0, 0};
78 M.from_expvector(exp, 3, mon);
81 int exp2[]{0, 0, 0, 0};
82 M.to_expvector(mon, exp2, comp);
84 for (
int k = 0; k < M.n_vars(); k++) EXPECT_EQ(exp[k], exp2[k]);
85 std::cout <<
"i=" << i <<
" j=" << j <<
" mon = ";
86 M.dump(std::cout, mon);
87 std::cout << std::endl;
94 std::vector<int>{1, 1, 1, 1},
100 for (
int i = 0; i < M.n_vars(); i++)
101 for (
int j = i; j < M.n_vars(); j++)
103 int exp[]{0, 0, 0, 0};
104 int mon[]{0, 0, 0, 0, 0, 0, 0, 0};
106 int exp2[]{0, 0, 0, 0};
107 int mon2[]{0, 0, 0, 0, 0, 0, 0, 0};
112 M.from_expvector(exp, 3, mon);
114 M.to_expvector(mon, exp2, comp);
116 for (
int k = 0; k < M.n_vars(); k++) EXPECT_EQ(exp[k], exp2[k]);
118 M.from_expvector(exp2, 3, mon2);
119 EXPECT_TRUE(M.is_equal(mon, mon2));
121 std::cout <<
"i=" << i <<
" j=" << j <<
" mon = ";
122 M.dump(std::cout, mon);
123 std::cout << std::endl;
130 std::vector<int>{1, 1, 1, 1},
134 int exp1[]{0, 0, 0, 0};
135 int exp2[]{0, 1, 0, 3};
136 int exp3[]{0, 0, 0, 0};
137 int mon1[]{0, 0, 0, 0, 0, 0};
138 int mon2[]{0, 0, 0, 0, 0, 0, 0, 0, 0};
139 int mon3[]{0, 0, 0, 0, 0, 0, 0, 0, 0};
140 int mon[]{0, 0, 0, 0, 0, 0, 0, 0, 0};
142 M.from_expvector(exp1, 0, mon1);
143 M.from_expvector(exp2, 0, mon2);
144 M.mult(mon1, mon2, mon);
145 M.to_expvector(mon, exp3, comp);
146 EXPECT_EQ(6, M.monomial_size(mon1));
147 EXPECT_EQ(6, M.monomial_size(mon2));
148 EXPECT_EQ(6, M.monomial_size(mon));
150 for (
int i = 0; i < M.n_vars(); i++)
151 for (
int j = i; j < M.n_vars(); j++)
152 for (
int k = 0; k < M.n_vars(); k++)
154 int exp1[]{0, 0, 0, 0};
157 int exp2[]{0, 0, 0, 0};
159 M.from_expvector(exp1, 0, mon1);
160 M.from_expvector(exp2, 0, mon2);
161 M.mult(mon1, mon2, mon);
162 M.mult(mon1, mon2, mon3);
163 EXPECT_TRUE(M.is_equal(mon, mon3));
164 M.to_expvector(mon, exp3, comp);
165 int exp3a[]{0, 0, 0, 0};
169 for (
int ell = 0; ell < M.n_vars(); ell++)
170 EXPECT_EQ(exp3[ell], exp3a[ell]);
171 EXPECT_EQ(M.monomial_size(mon), M.monomial_size(mon1));
172 EXPECT_EQ(M.monomial_size(mon), M.monomial_size(mon2));
179 std::vector<int>{1, 1, 1, 1},
183 int exp1[]{0, 0, 0, 0};
184 int exp2[]{0, 1, 0, 3};
185 int exp3[]{0, 0, 0, 0};
186 int mon1[]{0, 0, 0, 0, 0, 0};
187 int mon2[]{0, 0, 0, 0, 0, 0, 0, 0, 0};
188 int mon3[]{0, 0, 0, 0, 0, 0, 0, 0, 0};
189 int mon[]{0, 0, 0, 0, 0, 0, 0, 0, 0};
191 M.from_expvector(exp1, 0, mon1);
192 M.from_expvector(exp2, 0, mon2);
193 M.mult(mon1, mon2, mon);
194 M.to_expvector(mon, exp3, comp);
195 EXPECT_EQ(3, M.monomial_size(mon1));
196 EXPECT_EQ(7, M.monomial_size(mon2));
197 EXPECT_EQ(7, M.monomial_size(mon));
199 for (
int i = 0; i < M.n_vars(); i++)
200 for (
int j = i; j < M.n_vars(); j++)
201 for (
int k = 0; k < M.n_vars(); k++)
203 int exp1[]{0, 0, 0, 0};
206 int exp2[]{0, 0, 0, 0};
208 M.from_expvector(exp1, 0, mon1);
209 M.from_expvector(exp2, 0, mon2);
210 M.mult(mon1, mon2, mon);
211 M.mult(mon1, mon2, mon3);
212 EXPECT_TRUE(M.is_equal(mon, mon3));
213 M.to_expvector(mon, exp3, comp);
214 int exp3a[]{0, 0, 0, 0};
218 for (
int ell = 0; ell < M.n_vars(); ell++)
219 EXPECT_EQ(exp3[ell], exp3a[ell]);
220 EXPECT_EQ(M.monomial_size(mon),
221 M.monomial_size(mon1) + M.monomial_size(mon2) - 3);