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

◆ vec_is_scalar_multiple()

bool Ring::vec_is_scalar_multiple ( vec f,
vec g ) const

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

954{
955 if (f == nullptr) return true;
956 if (g == nullptr) return true;
957 const PolynomialRing *PR = cast_to_PolynomialRing();
958 if (PR == nullptr) return true;
959 const PolyRing *PR1 = PR->getNumeratorRing();
960#ifdef DEVELOPMENT
961#warning "use numerator only"
962#endif
963 if (f->comp != g->comp) return false;
964 Nterm *f1 = f->coeff;
965 Nterm *g1 = g->coeff;
966 ring_elem c = f1->coeff;
967 ring_elem d = g1->coeff;
968 vec p, q;
969 for (p = f, q = g; p != nullptr && q != nullptr; p = p->next, q = q->next)
970 {
971 if (p->comp != q->comp) return 0;
972 if (!check_nterm_multiples(PR1, p->coeff, q->coeff, c, d)) return false;
973 }
974 if (q == nullptr && p == nullptr) return true;
975 return false;
976}
virtual const PolyRing * getNumeratorRing() const
Definition polyring.hpp:259
virtual const PolynomialRing * cast_to_PolynomialRing() const
Definition ring.hpp:243
int p
static bool check_nterm_multiples(const PolyRing *R, ring_elem f1, ring_elem g1, ring_elem c, ring_elem d)
ring_elem coeff
Definition ringelem.hpp:158

References cast_to_PolynomialRing(), check_nterm_multiples(), Nterm::coeff, PolynomialRing::getNumeratorRing(), and p.