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

◆ strip_gb() [1/2]

void GBKernelComputation::strip_gb ( const GBMatrix * m)
private

Definition at line 158 of file Eschreyer.cpp.

159{
160 const gc_vector<gbvector*> &g = m->elems;
161 int i;
162 int *components = newarray_atomic_clear(int, F->rank());
163 for (i = 0; i < g.size(); i++)
164 if (g[i] != nullptr) components[g[i]->comp - 1]++;
165
166 for (i = 0; i < g.size(); i++)
167 {
168 gbvector head;
169 gbvector *last = &head;
170 for (gbvector *v = g[i]; v != nullptr; v = v->next)
171 if (components[v->comp - 1] > 0)
172 {
173 gbvector *t = GR->gbvector_copy_term(v);
174 last->next = t;
175 last = t;
176 }
177 last->next = nullptr;
178 gb.push_back(head.next);
179 }
180 for (i = 0; i < F->rank(); i++) mi.push_back(new MonomialIdeal(R));
181 freemem(components);
182}
const FreeModule * F
Definition Eschreyer.hpp:93
const PolynomialRing * R
Definition Eschreyer.hpp:87
gc_vector< gbvector * > gb
Definition Eschreyer.hpp:98
gc_vector< MonomialIdeal * > mi
Definition Eschreyer.hpp:97
void freemem(void *s)
Definition m2-mem.cpp:103
#define newarray_atomic_clear(T, len)
Definition newdelete.hpp:93
gc_vector< gbvector * > elems
Definition Eschreyer.hpp:56
gbvector * next
Definition gbring.hpp:80

References GBMatrix::elems, F, freemem(), gb, GR, mi, newarray_atomic_clear, gbvector::next, and R.