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

◆ mult_by_term1()

gbvector * GBRingPoly::mult_by_term1 ( const FreeModule * F,
const gbvector * f,
ring_elem u,
const int * monom,
int comp )
virtual

Implements GBRing.

Definition at line 98 of file gbring.cpp.

103{
104 (void) F;
105 // Remember: this multiplies w/o regard to any quotient elements
106 gbvector head;
107 gbvector *inresult = &head;
108 int monlen = M->monomial_size();
109
110 for (const gbvector *s = f; s != nullptr; s = s->next)
111 {
112 gbvector *t = new_raw_term();
113 t->next = nullptr;
114 t->comp = s->comp + comp;
115 t->coeff = K->mult(u, s->coeff);
116 exponents::mult(monlen, monom, s->monom, t->monom);
117 inresult->next = t;
118 inresult = inresult->next;
119 }
120 inresult->next = nullptr;
121 return head.next;
122}
static void mult(int nvars, ConstExponents a, ConstExponents b, Exponents result)
const Monoid * M
Definition gbring.hpp:137
gbvector * new_raw_term()
Definition gbring.cpp:28
const Ring * K
Definition gbring.hpp:138
void size_t s
Definition m2-mem.cpp:271
ring_elem coeff
Definition gbring.hpp:81
gbvector * next
Definition gbring.hpp:80
int monom[1]
Definition gbring.hpp:83
int comp
Definition gbring.hpp:82

References gbvector::coeff, gbvector::comp, GBRing::K, GBRing::M, gbvector::monom, ExponentVector< int, true >::mult(), GBRing::new_raw_term(), gbvector::next, and s.