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

◆ mult_vec_to()

void Ring::mult_vec_to ( vec & v,
const ring_elem r,
bool opposite_mult ) const

Definition at line 408 of file ring-vecs.cpp.

409{
410 if (this->is_zero(r))
411 {
412 remove_vec(v);
413 v = nullptr;
414 return;
415 }
416 vecterm head;
417 head.next = v;
418 vec p = &head;
419 while (p->next != nullptr)
420 {
421 // old version: this->mult_to(p->next->coeff, a);
422 ring_elem c;
423 if (opposite_mult)
424 c = this->mult(p->next->coeff, r);
425 else
426 c = this->mult(r, p->next->coeff);
427 p->next->coeff = c;
428 if (this->is_zero(p->next->coeff))
429 {
430 vec tmp = p->next;
431 p->next = tmp->next;
432 remove_vec_node(tmp);
433 }
434 else
435 p = p->next;
436 }
437 v = head.next;
438}
void remove_vec_node(vec n) const
Definition ring-vecs.cpp:55
void remove_vec(vec v) const
virtual bool is_zero(const ring_elem f) const =0
virtual ring_elem mult(const ring_elem f, const ring_elem g) const =0
int p

References is_zero(), mult(), vec::next, p, remove_vec(), and remove_vec_node().

Referenced by mult_vec_matrix(), and tensor().