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

◆ dot_product()

ring_elem Ring::dot_product ( const vecterm * v,
const vecterm * w ) const

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

621{
622 ring_elem result = this->from_long(0);
623 while (true)
624 {
625 if (v == nullptr) return result;
626 if (w == nullptr) return result;
627 if (v->comp > w->comp)
628 v = v->next;
629 else if (v->comp < w->comp)
630 w = w->next;
631 else
632 {
633 ring_elem a = this->mult(v->coeff, w->coeff);
634 result = this->add(result, a);
635 v = v->next;
636 w = w->next;
637 }
638 }
639}
virtual ring_elem add(const ring_elem f, const ring_elem g) const =0
virtual ring_elem from_long(long n) const =0
virtual ring_elem mult(const ring_elem f, const ring_elem g) const =0
VALGRIND_MAKE_MEM_DEFINED & result(result)
ring_elem coeff
Definition ringelem.hpp:172

References add(), vec::coeff, vec::comp, from_long(), mult(), vec::next, and result().