199{
201 gc_vector<int> vplcm;
205
206 GR->gbvector_get_lead_monomial(
F,
p->f, f_m);
207 if (
GR->is_skew_commutative())
208 {
210 M->to_expvector(f_m, find_pairs_exp);
211
212 for (
int v = 0; v <
GR->n_skew_commutative_vars(); v++)
213 {
214 int w =
GR->skew_variable(v);
215 if (find_pairs_exp[w] == 0) continue;
216
217 find_pairs_exp[w]++;
218 M->from_expvector(find_pairs_exp, find_pairs_lcm);
219 find_pairs_exp[w]--;
220
221 vplcm.resize(0);
222 M->to_varpower(find_pairs_lcm, vplcm);
224 elems.push_back(
new Bag(q, vplcm));
225 }
227 }
228
229
230
232 {
233 for (
int i = 0; i <
originalR->n_quotients(); i++)
234 {
235 const Nterm *f =
originalR->quotient_element(i);
236 M->lcm(f->
monom, f_m, find_pairs_lcm);
237 vplcm.resize(0);
238 M->to_varpower(find_pairs_lcm, vplcm);
240 elems.push_back(
new Bag(q, vplcm));
241 }
242 }
243
244
245 MonomialIdeal *mi1 = monideals[
p->f->comp]->mi;
247 {
248 M->from_varpower(a.monom().data(), find_pairs_m);
249 M->lcm(find_pairs_m, f_m, find_pairs_lcm);
250 vplcm.resize(0);
251 M->to_varpower(find_pairs_lcm, vplcm);
252 s_pair *q =
254 reinterpret_cast<gb_elem *>(a.basis_ptr()),
255 find_pairs_lcm);
256 elems.push_back(
new Bag(q, vplcm));
257 }
258
259
260 gc_vector<int> vp;
261 M->to_varpower(f_m, vp);
262 mi1->insert(
new Bag(
p, vp));
263
264
265
266
269 for (auto& b : rejects)
270 {
271 s_pair *q = reinterpret_cast<s_pair *>(b->basis_ptr());
273 delete b;
274 }
275
276 int is_ideal2 = (
F->rank() == 1 &&
orig_syz == 0);
278 {
280 s_pair *q = reinterpret_cast<s_pair *>(a.basis_ptr());
282 {
283
285 if (
M->is_one(find_pairs_m))
286 {
289 {
290 buffer o;
294 }
296 }
297 else
299 }
300 else
302 }
303
304 delete mi;
305
306 M->remove(find_pairs_m);
309}
exponents::Exponents exponents_t
s_pair * new_ring_pair(gb_elem *p, const int *lcm)
void remove_pair(s_pair *&p)
const PolynomialRing * originalR
s_pair * new_s_pair(gb_elem *p, gb_elem *q, const int *lcm)
typename std::vector< T, gc_allocator< T > > gc_vector
a version of the STL vector, which allocates its backing memory with gc.
#define newarray_atomic(T, len)