2641{
2642 if (v == nullptr) return nullptr;
2643
2647
2648 int firstcomp = v->
comp;
2649 int lastcomp = firstcomp;
2650 for (
const gbvector *t = v->
next; t !=
nullptr; t = t->
next)
2651 {
2652 if (firstcomp > t->comp)
2653 firstcomp = t->comp;
2654 else if (lastcomp < t->comp)
2655 lastcomp = t->comp;
2656 }
2657
2658 Nterm **vec_comps =
newarray(Nterm *, lastcomp - firstcomp + 1);
2659 Nterm **vec_last =
newarray(Nterm *, lastcomp - firstcomp + 1);
2660 for (int i = 0; i < lastcomp - firstcomp + 1; i++)
2661 {
2662 vec_comps[i] = nullptr;
2663 vec_last[i] = nullptr;
2664 }
2665
2666
2667 for (const gbvector *t = v; t != nullptr; t = t->next)
2668 {
2671 s->coeff = t->coeff;
2673 int x = t->comp - firstcomp;
2675 {
2678 }
2679 else
2680 {
2683 }
2684 }
2685
2686
2688 for (
int x = 0;
x < lastcomp - firstcomp + 1;
x++)
2690 {
2691 vec w =
make_vec(
x + firstcomp - 1, vec_comps[
x]);
2694 }
2695
2696
2699
2701}
void gbvector_get_lead_monomial(const FreeModule *F, const gbvector *f, int *result)
vec translate_gbvector_to_vec_QQ(const FreeModule *F, const gbvector *v, const ring_elem denom) const
virtual GBRing * get_gb_ring() const
virtual const Ring * getCoefficients() const
vec make_vec(int r, ring_elem a) const
VALGRIND_MAKE_MEM_DEFINED & result(result)