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

◆ lead_coeff()

RingElement * RingElement::lead_coeff ( const Ring * coeffR) const

Definition at line 165 of file relem.cpp.

166{
167 if (is_zero())
168 {
169 return new RingElement(coeffR, coeffR->zero());
170 }
171 const PolynomialRing *P = R->cast_to_PolynomialRing();
172 if (P != nullptr)
173 {
174 return new RingElement(coeffR, P->lead_logical_coeff(coeffR, val));
175 }
176 const M2FreeAlgebra* A = dynamic_cast<const M2FreeAlgebra*>(R);
177 if (A != nullptr)
178 {
179 return new RingElement(coeffR, A->lead_coefficient(coeffR, val));
180 }
181 ERROR("expected polynomial ring");
182 return nullptr;
183}
ring_elem lead_coefficient(const Ring *coeffRing, const Poly *f) const
virtual ring_elem lead_logical_coeff(const Ring *coeffR, const ring_elem f) const =0
ring_elem zero() const
Definition ring.hpp:359
RingElement(const Ring *R, ring_elem f)
Definition relem.hpp:166
ring_elem val
Definition relem.hpp:69
bool is_zero() const
Definition relem.hpp:167
const Ring * R
Definition relem.hpp:68
const int ERROR
Definition m2-mem.cpp:55

References ERROR, is_zero(), M2FreeAlgebra::lead_coefficient(), PolynomialRing::lead_logical_coeff(), R, RingElement(), val, and Ring::zero().

Referenced by IM2_RingElement_lead_coeff().