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

◆ ass_prime_generator()

void AssociatedPrimes::ass_prime_generator ( Nmi_node * p,
int codim )
private

Definition at line 89 of file assprime.cpp.

90{
91 int i = codim + 1;
92 if (exps[i] == nullptr) exps[i] = newarray_atomic(int, nvars);
93 exponents_t exp = exps[i];
94 for (int j = 0; j < nvars; j++) exp[j] = exps[codim][j];
95 for (;;)
96 {
97 if (p == nullptr)
98 {
99 if (state == do_codim)
100 {
101 if (codim < min_codim) min_codim = codim;
102 }
103 else
104 {
105 to_prime_ideal(nvars, exp);
106 Bag *b = new Bag(0);
108 ass_primes->insert(b);
109 n_minprimes++;
110 if (minprime_limit > 0 && n_minprimes >= minprime_limit) return;
111 }
112 return;
113 }
114 const int *m = p->monom().data();
115 switch (reduce_exp(m, exp))
116 {
117 case 0:
118 p = mi->next(p);
119 break;
120 case -1:
121 return;
122 case 1:
123 if (codim < min_codim)
124 for (index_varpower i2 = m; i2.valid(); ++i2)
125 if (exp[i2.var()] == 0)
126 {
127 exp[i2.var()] = 1;
128 ass_prime_generator(mi->next(p), codim + 1);
129 exp[i2.var()] = -1;
131 return;
132 }
133 return;
134 }
135 }
136}
ExponentListIterator< int, true > index_varpower
exponents::Exponents exponents_t
static int reduce_exp(const int *m, const int *exp)
Definition assprime.cpp:59
static void to_prime_ideal(int n, int *exp)
Definition assprime.cpp:80
MonomialIdeal * mi
Definition assprime.hpp:56
enum AssociatedPrimes::@177063233203262365233110357323144202102263177177 state
MonomialIdeal * ass_primes
Definition assprime.hpp:58
void ass_prime_generator(Nmi_node *p, int codim)
Definition assprime.cpp:89
static void from_expvector(int n, exponents::ConstExponents a, Vector &result)
gc_vector< int > & monom()
Definition int-bag.hpp:60
int p
int_bag Bag
Definition int-bag.hpp:70
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition mpreal.h:2298
#define newarray_atomic(T, len)
Definition newdelete.hpp:91

References ass_prime_generator(), ass_primes, do_codim, exps, ExponentList< int, true >::from_expvector(), mi, min_codim, minprime_limit, int_bag::monom(), n_minprimes, newarray_atomic, nvars, p, reduce_exp(), state, and to_prime_ideal().

Referenced by ass_prime_generator(), associated_primes(), and codimension().