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

◆ exterior()

SchreyerOrder * SchreyerOrder::exterior ( int p) const

Definition at line 219 of file schorder.cpp.

221{
222 // This routine is only called from FreeModule::exterior.
223 // Therefore: p is in the range 0 < p <= rk.
225 int rk = rank();
226
227 assert(pp > 0);
228 assert(pp <= rk);
229 size_t p = static_cast<size_t>(pp);
230
231 Subset a(p, 0);
232 for (size_t i = 0; i < p; i++) a[i] = i;
233
234 monomial base = M->make_one();
235 int next = 0;
236 do
237 {
238 M->one(base);
239 for (size_t r = 0; r < p; r++)
240 M->mult(base, base_monom(static_cast<int>(a[r])), base);
241
242 result->append(next++, base);
243 }
244 while (Subsets::increment(rk, a));
245
246 M->remove(base);
247 return result;
248}
const Monoid * M
Definition schorder.hpp:69
SchreyerOrder(const Monoid *m)
Definition schorder.hpp:77
int rank() const
Definition schorder.hpp:89
const_monomial base_monom(int i) const
Definition schorder.hpp:91
static bool increment(size_t n, Subset &s)
Definition comb.cpp:124
std::vector< size_t > Subset
Definition comb.hpp:58
static CanonicalForm base
Definition factory.cpp:289
#define monomial
Definition gb-toric.cpp:11
int p
VALGRIND_MAKE_MEM_DEFINED & result(result)

References base, base_monom(), Subsets::increment(), M, monomial, p, rank(), result(), and SchreyerOrder().