Definition at line 1308 of file res-a0.cpp.
1316{
1317
1320
1321 res2term *lastterm = (fsyz->
next ==
nullptr ? fsyz : fsyz->
next);
1322 res2term head;
1323 res2term *red = &head;
1324 res2_pair *
result =
nullptr;
1325 res2_pair *q;
1326 ring_elem rg;
1328
1329 fb.add(f);
1330 f = nullptr;
1331 res2term *lead;
1332
1333
1334 int count = 0;
1336
1337 while ((lead = fb.remove_lead_term()) != nullptr)
1338 {
1340 M->to_expvector(REDUCE_mon, REDUCE_exp);
1342 {
1343
1344 Nterm *r = rg;
1346 ring_elem c =
K->negate(lead->
coeff);
1347 res2term *h =
1348 R->ring_mult_by_term(r->
next, c, REDUCE_mon, lead->
comp);
1351 fb.add(h);
1353 count++;
1354 }
1356 {
1357
1359 {
1361 {
1364 lastterm = lastterm->
next;
1365 pivot = lastterm;
1367 }
1370 continue;
1371 }
1372 else
1373 {
1374 ring_elem c =
K->negate(lead->
coeff);
1376 res2term *h =
R->mult_by_term(q->
syz->
next, c, REDUCE_mon);
1377 lastterm->
next =
R->new_term(c, lead->
monom, q);
1378 lastterm = lastterm->
next;
1380 fb.add(h);
1382 count++;
1383 }
1384 }
1385 else
1386 {
1389 }
1390 }
1391 red->
next =
nullptr;
1394 {
1395 buffer o;
1396 o << count;
1398 }
1400}
exponents::Exponents exponents_t
int find_ring_divisor(const int *exp, ring_elem &result) const
int find_divisor(const MonomialIdeal *mi, const int *exp, res2_pair *&result)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
#define ALLOCATE_MONOMIAL(byte_len)
geobucket< const res2_poly, res2term * > respolyHeap
void emit_wrapped(const char *s)
References geobucket< FREEMODULETYPE, VECTYPE >::add(), ALLOCATE_EXPONENTS, ALLOCATE_MONOMIAL, res2term::coeff, res2term::comp, emit_wrapped(), exp_size, find_divisor(), find_ring_divisor(), K, M, M2_gbTrace, res2_pair::mi, Nterm::monom, res2term::monom, monom_size, monomial, Nterm::next, res2term::next, R, geobucket< FREEMODULETYPE, VECTYPE >::remove_lead_term(), result(), buffer::str(), res2_pair::syz, SYZ2_MAYBE_MINIMAL, SYZ2_S_PAIR, res2_pair::syz_type, and total_reduce_count.
Referenced by handle_pair().