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

◆ mult_by_term()

ring_elem SkewPolynomialRing::mult_by_term ( const ring_elem f,
const ring_elem c,
const int * m ) const
protectedvirtual

Reimplemented from PolyRing.

Definition at line 67 of file skewpoly.cpp.

71{
72 Nterm head;
73 Nterm *inresult = &head;
74
77 M_->to_expvector(m, EXP1);
78
79 for (Nterm& s : f)
80 {
81 M_->to_expvector(s.monom, EXP2);
82 int sign = skew_.mult_sign(EXP1, EXP2);
83 if (sign == 0) continue;
84
85 Nterm *t = new_term();
86 t->next = nullptr;
87 t->coeff = K_->mult(c, s.coeff);
88 if (sign < 0) K_->negate_to(t->coeff);
89
90 M_->mult(m, s.monom, t->monom);
91 inresult->next = t;
92 inresult = inresult->next;
93 }
94 inresult->next = nullptr;
95 return head.next;
96}
exponents::Exponents exponents_t
Nterm * new_term() const
Definition poly.cpp:146
SkewMultiplication skew_
Definition polyring.hpp:104
const Ring * K_
Definition polyring.hpp:123
const Monoid * M_
Definition polyring.hpp:124
void size_t s
Definition m2-mem.cpp:271
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
Nterm * next
Definition ringelem.hpp:157
ring_elem coeff
Definition ringelem.hpp:158
int monom[1]
Definition ringelem.hpp:160

References ALLOCATE_EXPONENTS, Nterm::coeff, PolynomialRing::exp_size, PolynomialRing::K_, PolynomialRing::M_, Nterm::monom, PolyRing::new_term(), Nterm::next, s, and PolynomialRing::skew_.