30{
31 int i;
35 if (P == nullptr)
36 {
37 throw exc::engine_error("expected polynomial ring");
38 }
42 if (rk == 0)
return result;
46 for (i = 0; i < rk; i++)
47 {
48 vec v = (*m)[i];
49 if (v == nullptr || S == nullptr)
50 tiebreaks[i] = i;
51 else
53 }
54
55 std::sort<int *>(tiebreaks, tiebreaks + rk);
56 for (i = 0; i < rk; i++) ties[tiebreaks[i] % rk] = i;
57 for (i = 0; i < rk; i++)
58 {
59 vec v = (*m)[i];
60 if (v == nullptr)
62 else if (S == nullptr)
64 else
65 {
68 }
69
71 }
72
78}
const SchreyerOrder * get_schreyer_order() const
const Ring * get_ring() const
const FreeModule * rows() const
virtual const Monoid * getMonoid() const
virtual const_monomial lead_flat_monomial(const ring_elem f) const =0
virtual const PolynomialRing * cast_to_PolynomialRing() const
SchreyerOrder(const Monoid *m)
int compare_num(int i) const
const_monomial base_monom(int i) const
static CanonicalForm base
void intern_SchreyerOrder(SchreyerOrder *G)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define newarray_atomic(T, len)