2579{
2580 if (v == nullptr) return nullptr;
2581
2583
2584 int firstcomp = v->
comp;
2585 int lastcomp = firstcomp;
2586 for (
const gbvector *t = v->
next; t !=
nullptr; t = t->
next)
2587 {
2588 if (firstcomp > t->comp)
2589 firstcomp = t->comp;
2590 else if (lastcomp < t->comp)
2591 lastcomp = t->comp;
2592 }
2593
2594 Nterm **vec_comps =
newarray(Nterm *, lastcomp - firstcomp + 1);
2595 Nterm **vec_last =
newarray(Nterm *, lastcomp - firstcomp + 1);
2596 for (int i = 0; i < lastcomp - firstcomp + 1; i++)
2597 {
2598 vec_comps[i] = nullptr;
2599 vec_last[i] = nullptr;
2600 }
2601
2602
2603 for (const gbvector *t = v; t != nullptr; t = t->next)
2604 {
2609 int x = t->comp - firstcomp;
2611 {
2614 }
2615 else
2616 {
2619 }
2620 }
2621
2622
2624 for (
int x = 0;
x < lastcomp - firstcomp + 1;
x++)
2626 {
2627 vec w =
make_vec(
x + firstcomp - 1, vec_comps[
x]);
2630 }
2631
2632
2635
2637}
void gbvector_get_lead_monomial(const FreeModule *F, const gbvector *f, int *result)
ring_elem fraction(ring_elem top, ring_elem bottom) const
virtual GBRing * get_gb_ring() const
vec make_vec(int r, ring_elem a) const
VALGRIND_MAKE_MEM_DEFINED & result(result)