Definition at line 1359 of file gb-default.cpp.
1360{
1361
1362
1363 int tmf, wt;
1364 int count = -1;
1365
1367
1369 {
1370 buffer o;
1371 o << "considering ";
1373 o << " : ";
1375 }
1377
1378 while (!
R->gbvector_is_zero(
p->f()))
1379 {
1381 {
1383 return false;
1384 }
1386 {
1388 {
1389 buffer o;
1390 o << "ERROR: degree of polynomial is too high: deg " << wt
1391 <<
" termwt " << tmf <<
" expectedeg " <<
this_degree
1394 }
1395 }
1396
1397 int gap, w;
1398 R->gbvector_get_lead_exponents(
_F,
p->f(), EXP);
1399 int x =
p->f()->comp;
1401
1402
1403 if (w < 0) break;
1404 if (gap > 0)
1405 {
1407 h.
f =
R->gbvector_copy(
p->x.f.f);
1408 h.
fsyz =
R->gbvector_copy(
p->x.f.fsyz);
1410 }
1412
1413 R->gbvector_reduce_lead_term(
_F,
1415 nullptr,
1420
1423 {
1424 buffer o;
1425 o << " reducing by g" << w;
1426 o << ", yielding ";
1427 R->gbvector_text_out(o,
_F,
p->f(), 3);
1429 }
1430 if (
R->gbvector_is_zero(
p->f()))
break;
1431 if (gap > 0)
1432 {
1435 {
1436 buffer o;
1437 o <<
" deferring to degree " <<
p->deg;
1439 }
1441 return false;
1442 }
1443 }
1445 {
1446 buffer o;
1447 o << "." << count;
1449 }
1450 return true;
1451}
exponents::Exponents exponents_t
void compute_s_pair(spair *p)
void spair_text_out(buffer &o, spair *p)
void spair_set_insert(spair *p)
int find_good_divisor(exponents_t e, int x, int degf, int &result_gap)
const GBWeight * weightInfo_
void insert_gb(POLY f, gbelem_type minlevel)
void spair_set_defer(spair *&p)
void gb(IntermediateBasis &F, int n)
#define ALLOCATE_EXPONENTS(byte_len)
void emit_wrapped(const char *s)
void emit_line(const char *s)
References _F, _Fsyz, ALLOCATE_EXPONENTS, compute_s_pair(), ELEM_MINGEN, emit(), emit_line(), emit_wrapped(), exp_size, POLY::f, find_good_divisor(), POLY::fsyz, gb(), insert_gb(), M2_gbTrace, max_reduction_count, newline, p, POLY, R, SPAIR_GEN, spair_set_defer(), spair_set_insert(), spair_text_out(), stats_nreductions, buffer::str(), this_degree, weightInfo_, and x.
Referenced by reduceit().