Macaulay2 Engine
Loading...
Searching...
No Matches

◆ gbvector_auto_reduce()

void GBRing::gbvector_auto_reduce ( const FreeModule * F,
const FreeModule * Fsyz,
gbvector *& f,
gbvector *& fsyz,
const gbvector * g,
const gbvector * gsyz )

Definition at line 1428 of file gbring.cpp.

1438{
1439 const gbvector *t;
1440 if ((t = find_coeff(F, f, g)) != nullptr)
1441 {
1442 ring_elem u, v;
1443 K->syzygy(t->coeff, g->coeff, u, v);
1444 if (!K->is_equal(u, _one))
1445 {
1448 }
1449 gbvector *g1 = gbvector_mult_by_coeff(g, v);
1450 gbvector *gsyz1 = gbvector_mult_by_coeff(gsyz, v);
1451 gbvector_add_to(F, f, g1);
1452 gbvector_add_to(Fsyz, fsyz, gsyz1);
1453 gbvector_remove_content(f, fsyz);
1454
1455 if (M2_gbTrace == 10)
1456 {
1457 buffer o;
1458 o << "auto reducing by ";
1459 gbvector_text_out(o, F, g);
1460 o << "\n -- giving ";
1461 gbvector_text_out(o, F, f);
1462 emit_line(o.str());
1463 }
1464 }
1465}
void gbvector_mult_by_coeff_to(gbvector *f, ring_elem u)
Definition gbring.cpp:557
ring_elem _one
Definition gbring.hpp:164
void gbvector_text_out(buffer &o, const FreeModule *F, const gbvector *f, int nterms=-1) const
Definition gbring.cpp:779
void gbvector_remove_content(gbvector *f, gbvector *fsyz, bool use_denom, ring_elem &denom)
Definition gbring.cpp:1369
const Ring * K
Definition gbring.hpp:138
void gbvector_add_to(const FreeModule *F, gbvector *&f, gbvector *&g)
Definition gbring.cpp:668
const gbvector * find_coeff(const FreeModule *F, const gbvector *f, const gbvector *g) const
Definition gbring.cpp:1409
gbvector * gbvector_mult_by_coeff(const gbvector *f, ring_elem u)
Definition gbring.cpp:567
char * str()
Definition buffer.hpp:72
int M2_gbTrace
Definition m2-types.cpp:52
ring_elem coeff
Definition gbring.hpp:81
void emit_line(const char *s)
Definition text-io.cpp:47

References _one, gbvector::coeff, emit_line(), find_coeff(), gbvector_add_to(), gbvector_mult_by_coeff(), gbvector_mult_by_coeff_to(), gbvector_remove_content(), gbvector_text_out(), K, M2_gbTrace, and buffer::str().