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

◆ invert()

ring_elem M2FreeAlgebra::invert ( const ring_elem f) const
virtual

Implements Ring.

Definition at line 260 of file M2FreeAlgebra.cpp.

261{
262 if (not is_unit(f))
263 throw exc::engine_error("attempting to divide by a non-unit");
264
265 ring_elem cf = lead_coefficient(coefficientRing(), f);
266 // At this point, f should be an element of the coefficient ring, times the monomial 1.
267 // The following will throw an error if it cannot invert the element.
268 ring_elem finv = coefficientRing()->invert(cf);
269 return from_coefficient(finv);
270}
virtual ring_elem from_coefficient(const ring_elem a) const
ring_elem lead_coefficient(const Ring *coeffRing, const Poly *f) const
const Ring * coefficientRing() const
virtual bool is_unit(const ring_elem f) const
virtual ring_elem invert(const ring_elem f) const =0

References coefficientRing(), from_coefficient(), Ring::invert(), is_unit(), and lead_coefficient().

Referenced by divide(), and M2FreeAlgebraQuotient::invert().