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

◆ popular_var()

int popular_var ( const MonomialIdeal & I,
int & npure,
exponents_t pure,
int & nhits,
const_varpower & non_pure_power,
int & exp_of_popular )
static

Definition at line 172 of file hilb.cpp.

182{
183 int k;
184 npure = 0;
185 int nvars = I.topvar() + 1;
186 for (k = 0; k < nvars; k++) pure[k] = -1;
187
188 exponents_t hits = newarray_atomic_clear(int, nvars);
189 exponents_t minnonzero = newarray_atomic(int, nvars);
190 for (k = 0; k < nvars; k++) hits[k] = 0;
191 for (k = 0; k < nvars; k++) minnonzero[k] = MAX_EXP;
192
193 non_pure_power = nullptr;
194
195 for (Bag& a : I)
196 {
197 const_varpower m = a.monom().data();
198 index_varpower j = m;
199 assert(j.valid()); // The monomial cannot be '1'.
200 int v = j.var();
201 int e = j.exponent();
202 ++j;
203 if (j.valid())
204 {
205 non_pure_power = m;
206 for (; j.valid(); ++j)
207 {
208 v = j.var();
209 e = j.exponent();
210 if (minnonzero[v] > e) minnonzero[v] = e;
211 hits[v]++;
212 }
213 }
214 else
215 {
216 if (pure[v] == -1)
217 {
218 npure++;
219 pure[v] = e;
220 }
221 else if (pure[v] > e)
222 pure[v] = e;
223 }
224 }
225
226 int popular = 0;
227 for (k = 1; k < nvars; k++)
228 if (hits[k] > hits[popular]) popular = k;
229 nhits = hits[popular];
230 exp_of_popular = minnonzero[popular];
231 freemem(hits);
232 freemem(minnonzero);
233 return popular;
234}
#define MAX_EXP
varpower::ConstExponents const_varpower
ExponentListIterator< int, true > index_varpower
exponents::Exponents exponents_t
int topvar() const
Definition monideal.hpp:187
int_bag Bag
Definition int-bag.hpp:70
void freemem(void *s)
Definition m2-mem.cpp:103
#define newarray_atomic_clear(T, len)
Definition newdelete.hpp:93
#define newarray_atomic(T, len)
Definition newdelete.hpp:91

References ExponentListIterator< E, L >::exponent(), freemem(), MAX_EXP, newarray_atomic, newarray_atomic_clear, MonomialIdeal::topvar(), ExponentListIterator< E, L >::valid(), and ExponentListIterator< E, L >::var().

Referenced by find_pivot().