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

◆ sub_vector()

vec Ring::sub_vector ( const vecterm * v,
M2_arrayint r ) const

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

261{
262 if (v == nullptr) return nullptr;
263 // Largest component which occurs in v occurs first.
264 VECTOR(int) trans(v->comp + 1);
265 for (int i = 0; i < v->comp; i++) trans.push_back(-1);
266
267 for (unsigned j = 0; j < r->len; j++)
268 if (r->array[j] >= 0 && r->array[j] <= v->comp) trans[r->array[j]] = j;
269
270 vecterm head;
271 vecterm *result = &head;
272 for (; v != nullptr; v = v->next)
273 if (trans[v->comp] != -1)
274 {
275 result->next = new_vec();
276 result = result->next;
277 result->next = nullptr;
278 result->coeff = v->coeff;
279 result->comp = trans[v->comp];
280 }
281 result->next = nullptr;
282 result = head.next;
283
285 return result;
286}
void vec_sort(vecterm *&f) const
vec new_vec() const
vector operations ////////////////////
Definition ring-vecs.cpp:54
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define VECTOR(T)
Definition newdelete.hpp:78
ring_elem coeff
Definition ringelem.hpp:172

References vec::coeff, vec::comp, new_vec(), vec::next, result(), vec_sort(), and VECTOR.