9 #include "../poly/umvpoly/functions/SeparablePart.h"
20 template<
typename Polynomial>
32 q.setReasons(p.getReasons());
38 size_t index = gb->addGenerator(p);
45 template<
typename Polynomial>
51 template<
typename Polynomial>
68 q.setReasons(p.getReasons());
72 else if(p.nr_terms() == 1)
74 assert(!p.is_constant());
76 #ifdef BUCHBERGER_STATISTICS
77 if(q.lterm().tdeg() != p.lterm().tdeg()) mStats->SingleTermSFP();
79 q.setReasons(p.getReasons());
80 size_t index = gb->addGenerator(q);
85 if(p.has_constant_term())
87 #ifdef BUCHBERGER_STATISTICS
88 if(p.nrOfTerms() > 1) mStats->TSQWithConstant();
92 q.setReasons(p.getReasons());
98 #ifdef BUCHBERGER_STATISTICS
99 mStats->TSQWithoutConstant();
105 #ifdef BUCHBERGER_STATISTICS
106 if(
remainder.lterm().tdeg() != r1.lterm().tdeg()) mStats->SingleTermSFP();
108 r1.setReasons(p.getReasons());
110 size_t index = gb->addGenerator(r1);
115 else if(p.is_reducible_identity())
117 #ifdef BUCHBERGER_STATISTICS
118 mStats->ReducibleIdentity();
124 size_t index = gb->addGenerator(p);
129 size_t index = gb->addGenerator(p);
#define CARL_LOG_NOTIMPLEMENTED()
carl is the main namespace for the library.
Monomial::Arg separable_part(const Monomial &m)
Calculates the separable part of this monomial.
bool is_zero(const Interval< Number > &i)
Check if this interval is a point-interval containing 0.
cln::cl_I remainder(const cln::cl_I &a, const cln::cl_I &b)
Calculate the remainder of the integer division.
virtual void operator()(std::size_t index)=0
virtual ~UpdateFnc()=default
bool addToGb(const Polynomial &p, std::shared_ptr< Ideal< Polynomial >> gb, UpdateFnc *update)
virtual ~StdAdding()=default
virtual ~RealRadicalAwareAdding()
bool addToGb(const Polynomial &p, std::shared_ptr< Ideal< Polynomial >> gb, UpdateFnc *update)