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

◆ mult_by_term1()

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

Implements GBRing.

Definition at line 154 of file gbring.cpp.

160{
161 gbvector head;
162 gbvector *inresult = &head;
163
166
167 M->to_expvector(m, EXP1);
168
169 for (const gbvector *s = f; s != nullptr; s = s->next)
170 {
172 int sign = _skew.mult_sign(EXP1, EXP2);
173 if (sign == 0) continue;
174
175 gbvector *t = new_raw_term();
176 t->next = nullptr;
177 t->comp = s->comp + comp;
178 t->coeff = K->mult(c, s->coeff);
179 if (sign < 0) K->negate_to(t->coeff);
180
181 M->mult(m, s->monom, t->monom);
182 inresult->next = t;
183 inresult = inresult->next;
184 }
185 inresult->next = nullptr;
186 return head.next;
187}
exponents::Exponents exponents_t
size_t exp_size
Definition gbring.hpp:169
SkewMultiplication _skew
Definition gbring.hpp:151
const Monoid * M
Definition gbring.hpp:137
gbvector * new_raw_term()
Definition gbring.cpp:28
const Ring * K
Definition gbring.hpp:138
void gbvector_get_lead_exponents(const FreeModule *F, const gbvector *f, int *result)
Definition gbring.cpp:541
void size_t s
Definition m2-mem.cpp:271
#define ALLOCATE_EXPONENTS(byte_len)
Definition monoid.hpp:62
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 GBRing::_skew, ALLOCATE_EXPONENTS, gbvector::coeff, gbvector::comp, GBRing::exp_size, GBRing::gbvector_get_lead_exponents(), GBRing::K, GBRing::M, gbvector::monom, GBRing::new_raw_term(), gbvector::next, and s.