Definition at line 1010 of file poly.cpp.
1014{
1016 Nterm *t = f;
1018 if (t ==
nullptr ||
s ==
nullptr)
return true;
1020 {
1021 coeff =
K_->divide(t->
coeff,
s->coeff);
1023 }
1025 {
1029 }
1030 else
1031 {
1032 throw exc::internal_error("should not get to this code in imp_attempt_to_cancel_lead_term");
1035
1036 }
1037 if (!
K_->is_zero(coeff))
1038 {
1040 {
1044 M_->to_expvector(t->
monom, EXP1);
1045 M_->to_expvector(
s->monom, EXP2);
1046 int sign =
skew_.divide(EXP1, EXP2, EXP3);
1047 M_->from_expvector(EXP3, monom);
1048 if (sign < 0)
K_->negate_to(coeff);
1050 }
1051 else
1052 {
1053 M_->divide(t->
monom,
s->monom, monom);
1055 }
1056 }
1058}
exponents::Exponents exponents_t
void imp_subtract_multiple_to(ring_elem &f, ring_elem a, const_monomial m, const ring_elem g) const
virtual bool is_zero(const ring_elem f) const
virtual ring_elem remainderAndQuotient(const ring_elem f, const ring_elem g, ring_elem ") const
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define ALLOCATE_EXPONENTS(byte_len)
References ALLOCATE_EXPONENTS, Nterm::coeff, PolynomialRing::exp_size, globalZZ, imp_subtract_multiple_to(), PolynomialRing::is_skew_, PolynomialRing::K_, PolynomialRing::M_, Nterm::monom, monomial, result(), s, and PolynomialRing::skew_.
Referenced by division_algorithm(), division_algorithm(), and powerseries_division_algorithm().