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

◆ alg1_min_primes()

MonomialIdeal * MinimalPrimes::alg1_min_primes ( int maxcodim,
int count )

Definition at line 164 of file monideal-minprimes.cpp.

165{
166 // First, let's write out the (radical) monomial ideal in an array.
167 // We need to know how large to make it. So, we first add up all of the
168 // degrees of the gens
169
170 (void) count;
171 depth_limit = -maxcodim - 1;
172
173 long len = 1;
174 for (Bag& a : *mi)
175 {
176 long d = varpower::simple_degree(a.monom().data());
177 len += d;
178 }
179
180 len += mi->size();
181 len += mi->size();
182 monoms = newarray_atomic(int, len);
183
184 int next_monom = 0;
185
186 for (Bag& a : *mi)
187 {
188 int *m = a.monom().data();
189 int d = varpower::simple_degree(m);
190
191 monoms[next_monom++] = d + 2;
192
193 for (index_varpower j = m; j.valid(); ++j)
194 monoms[next_monom++] = j.var() + 1;
195 monoms[next_monom++] = 0;
196 }
197 monoms[next_monom] = 0;
198
199 exp = newarray_atomic_clear(int, nvars + 1);
201
203
205 freemem(exp);
206
207 buffer o;
208 o << "number of tentative minprimes is " << Q.size();
209
210 MonomialIdeal *result = new MonomialIdeal(mi->get_ring(), Q);
211
212 o << " actual number is " << result->size() << newline;
213 emit(o.str());
214
215 return result;
216}
ExponentListIterator< int, true > index_varpower
static Exponent simple_degree(ConstExponents m)
MonomialIdeal * mi
void alg1_min_prime_generator(int *which, int depth)
int size()
Definition buffer.hpp:70
char * str()
Definition buffer.hpp:72
int_bag Bag
Definition int-bag.hpp:70
void freemem(void *s)
Definition m2-mem.cpp:103
VALGRIND_MAKE_MEM_DEFINED & result(result)
char newline[]
Definition m2-types.cpp:49
#define newarray_atomic_clear(T, len)
Definition newdelete.hpp:93
#define newarray_atomic(T, len)
Definition newdelete.hpp:91
void emit(const char *s)
Definition text-io.cpp:41

References alg1_min_prime_generator(), depth_limit, emit(), exp, exp2, freemem(), mi, monoms, newarray_atomic, newarray_atomic_clear, newline, nvars, result(), ExponentList< int, true >::simple_degree(), buffer::size(), and buffer::str().

Referenced by rawMonomialMinimalPrimes().