269{
271 gc_vector<int> vplcm;
276
277 _GR->gbvector_get_lead_monomial(
_F,
p->f, f_m);
278 if (
_GR->is_skew_commutative())
279 {
280 _M->to_expvector(f_m, find_pairs_exp);
281
282 for (
int v = 0; v <
_GR->n_skew_commutative_vars(); v++)
283 {
284 int w =
_GR->skew_variable(v);
285 if (find_pairs_exp[w] == 0) continue;
286
287 find_pairs_exp[w]++;
288 _M->from_expvector(find_pairs_exp, find_pairs_lcm);
289 find_pairs_exp[w]--;
290
291 vplcm.resize(0);
292 _M->to_varpower(find_pairs_lcm, vplcm);
294 elems.push_back(
new Bag(q, vplcm));
295 }
296 }
297
298
299
301 {
302 for (
int i = 0; i <
originalR->n_quotients(); i++)
303 {
304 const gbvector *f =
originalR->quotient_gbvector(i);
305 _M->lcm(f->
monom, f_m, find_pairs_lcm);
306 vplcm.resize(0);
307 _M->to_varpower(find_pairs_lcm, vplcm);
309 elems.push_back(
new Bag(q, vplcm));
310 }
311 }
312
313 MonomialIdeal *mi1 = _monideals[
p->f->comp]->mi;
315 {
316 _M->from_varpower(a.monom().data(), find_pairs_m);
317 _M->lcm(find_pairs_m, f_m, find_pairs_lcm);
318 vplcm.resize(0);
319 _M->to_varpower(find_pairs_lcm, vplcm);
320 s_pair *q =
322 reinterpret_cast<gb_elem *>(a.basis_ptr()),
323 find_pairs_lcm);
324 elems.push_back(
new Bag(q, vplcm));
325 }
326
327
328 gc_vector<int> vp;
329 _M->to_varpower(f_m, vp);
330 mi1->insert(
new Bag(
p, vp));
331
332
333
334
336 MonomialIdeal mi(
originalR, elems, rejects);
337 for (auto& b : rejects)
338 {
339 s_pair *q = reinterpret_cast<s_pair *>(b->basis_ptr());
341 delete b;
342 }
344 {
345 s_pair *q = reinterpret_cast<s_pair *>(a.basis_ptr());
347 {
349 if (
_M->is_one(find_pairs_m))
350 {
353 {
354 buffer o;
358 }
360 }
361 else
363 }
364 else
366 }
367
368
369 _M->remove(find_pairs_m);
373}
exponents::Exponents exponents_t
s_pair * new_ring_pair(gb_elem *p, const int *lcm)
void remove_pair(s_pair *&p)
s_pair * new_var_pair(gb_elem *p, const int *lcm)
s_pair * new_s_pair(gb_elem *p, gb_elem *q, const int *lcm)
const PolynomialRing * originalR
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)