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

◆ gbvector_auto_reduce_ZZ()

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

Definition at line 1467 of file gbring.cpp.

1478{
1479 assert(globalZZ == K);
1480 const gbvector *t;
1481 if ((t = find_coeff(F, f, g)) != nullptr)
1482 {
1483 ring_elem v = globalZZ->quotient(t->coeff, g->coeff);
1484 if (globalZZ->is_zero(v)) return;
1485 v = globalZZ->negate(v);
1486 gbvector *g1 = gbvector_mult_by_coeff(g, v);
1487 gbvector *gsyz1 = gbvector_mult_by_coeff(gsyz, v);
1488 gbvector_add_to(F, f, g1);
1489 gbvector_add_to(Fsyz, fsyz, gsyz1);
1490
1491 if (M2_gbTrace == 10)
1492 {
1493 buffer o;
1494 o << "auto reducing by ";
1495 gbvector_text_out(o, F, g);
1496 o << "\n -- giving ";
1497 gbvector_text_out(o, F, f);
1498 emit_line(o.str());
1499 }
1500 }
1501}
void gbvector_text_out(buffer &o, const FreeModule *F, const gbvector *f, int nterms=-1) const
Definition gbring.cpp:779
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
virtual ring_elem negate(const ring_elem f) const
Definition ZZ.cpp:243
virtual ring_elem quotient(const ring_elem f, const ring_elem g) const
Definition ZZ.cpp:353
virtual bool is_zero(const ring_elem f) const
Definition ZZ.cpp:155
char * str()
Definition buffer.hpp:72
RingZZ * globalZZ
Definition relem.cpp:13
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 gbvector::coeff, emit_line(), find_coeff(), gbvector_add_to(), gbvector_mult_by_coeff(), gbvector_text_out(), globalZZ, K, M2_gbTrace, and buffer::str().