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

◆ check_nterm_multiples()

bool check_nterm_multiples ( const PolyRing * R,
ring_elem f1,
ring_elem g1,
ring_elem c,
ring_elem d )
static

Definition at line 929 of file ring-vecs.cpp.

934{
935 Nterm *f;
936 Nterm *g;
937 const Monoid *M = R->getMonoid();
938 const Ring *K = R->getCoefficients();
939 for (f = f1, g = g1; f != nullptr && g != nullptr; f = f->next, g = g->next)
940 {
941 if (M->compare(f->monom, g->monom) != 0) return false;
942 ring_elem c1 = K->mult(c, g->coeff);
943 ring_elem d1 = K->mult(d, f->coeff);
944 int isequal = K->is_equal(c1, d1);
945 if (!isequal) return false;
946 }
947 if (f == nullptr && g == nullptr) return true;
948 return false;
949}
int compare(int nslots, const_monomial m, const_monomial n) const
Definition monoid.hpp:226
Engine-side commutative monomial monoid: variable names, ordering, multidegree machinery,...
Definition monoid.hpp:89
virtual const Monoid * getMonoid() const
Definition polyring.hpp:282
virtual const Ring * getCoefficients() const
Definition polyring.hpp:277
virtual bool is_equal(const ring_elem f, const ring_elem g) const =0
virtual ring_elem mult(const ring_elem f, const ring_elem g) const =0
xxx xxx xxx
Definition ring.hpp:102
Nterm * next
Definition ringelem.hpp:157
ring_elem coeff
Definition ringelem.hpp:158
int monom[1]
Definition ringelem.hpp:160
Singly linked-list node carrying one term of a polynomial-ring element.
Definition ringelem.hpp:156

References Nterm::coeff, Monoid::compare(), PolynomialRing::getCoefficients(), PolynomialRing::getMonoid(), Ring::is_equal(), Nterm::monom, Ring::mult(), and Nterm::next.

Referenced by Ring::vec_is_scalar_multiple().