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

◆ find_reduction_coeffs_ZZ()

bool GBRing::find_reduction_coeffs_ZZ ( const FreeModule * F,
const gbvector * f,
const gbvector * g,
ring_elem & v )

Definition at line 894 of file gbring.cpp.

898{
899 const ring_elem a = f->coeff;
900 const ring_elem b = g->coeff;
901 ring_elem rem;
902
903 assert(globalZZ == K);
905 if (globalZZ->is_zero(v)) return false;
906 v = globalZZ->negate(v);
907
909 {
913 gbvector_get_lead_exponents(F, f, EXP1); // Removes the Schreyer part
914 gbvector_get_lead_exponents(F, g, EXP2); // Removes the Schreyer part
915 divide_exponents(EXP1, EXP2, EXP3);
916 if (_skew.mult_sign(EXP3, EXP2) < 0) K->negate_to(v);
917 }
918
919 return globalZZ->is_zero(rem);
920}
exponents::Exponents exponents_t
bool is_skew_commutative() const
Definition gbring.hpp:240
void divide_exponents(const int *exp1, const int *exp2, int *result) const
Definition gbring.cpp:807
size_t exp_size
Definition gbring.hpp:169
SkewMultiplication _skew
Definition gbring.hpp:151
const Ring * K
Definition gbring.hpp:138
void gbvector_get_lead_exponents(const FreeModule *F, const gbvector *f, int *result)
Definition gbring.cpp:541
virtual ring_elem negate(const ring_elem f) const
Definition ZZ.cpp:243
virtual bool is_zero(const ring_elem f) const
Definition ZZ.cpp:155
virtual ring_elem remainderAndQuotient(const ring_elem f, const ring_elem g, ring_elem &quot) const
Definition ZZ.cpp:317
RingZZ * globalZZ
Definition relem.cpp:13
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
const mpreal rem(const mpreal &x, const mpreal &y, mp_rnd_t rnd_mode=mpreal::get_default_rnd())
Definition mpreal.h:2628
ring_elem coeff
Definition gbring.hpp:81

References _skew, ALLOCATE_EXPONENTS, gbvector::coeff, divide_exponents(), exp_size, gbvector_get_lead_exponents(), globalZZ, is_skew_commutative(), and K.

Referenced by gbvector_reduce_lead_term_ZZ().