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

◆ mult_by_term_left_and_right() [2/4]

void FreeAlgebra::mult_by_term_left_and_right ( Poly & result,
const Poly & f,
const ring_elem c,
const Monom leftM,
const Monom rightM ) const

Definition at line 594 of file FreeAlgebra.cpp.

599{
600 // return (c*leftM)*f*rightM
601 auto& outcoeff = result.getCoeffInserter();
602 auto& outmonom = result.getMonomInserter();
603 for(auto i=f.cbegin(); i != f.cend(); i++)
604 {
605 ring_elem d = coefficientRing()->mult(c, i.coeff());
606 if (coefficientRing()->is_zero(d))
607 continue;
608 outcoeff.push_back(d);
609 monoid().mult3(leftM, i.monom(), rightM, outmonom);
610 }
611}
const Ring * coefficientRing() const
const FreeMonoid & monoid() const
bool is_zero(const Poly &f) const
void mult3(const Monom &m1, const Monom &m2, const Monom &m3, MonomialInserter &result) const
virtual ring_elem mult(const ring_elem f, const ring_elem g) const =0
VALGRIND_MAKE_MEM_DEFINED & result(result)

References coefficientRing(), is_zero(), monoid(), Ring::mult(), FreeMonoid::mult3(), and result().

Referenced by mult_by_term_left_and_right(), mult_by_term_left_and_right(), TEST(), and NCGroebner::twoSidedReduction().