81{
82#ifdef DEVELOPMENT
83#warning "the logic in SchreyerOrder creation is WRONG!"
84#endif
85 int i;
93 if (rk == 0)
return result;
94
98 for (i = 0; i < rk; i++)
99 {
100 gbvector *v = m->
elems[i];
101 if (v == nullptr || S == nullptr)
102 tiebreaks[i] = i;
103 else
105 }
106
107 std::sort<int *>(tiebreaks, tiebreaks + rk);
108 for (i = 0; i < rk; i++) ties[tiebreaks[i] % rk] = i;
109 for (i = 0; i < rk; i++)
110 {
111 gbvector *v = m->
elems[i];
112 if (v == nullptr)
114 else
116#ifdef DEVELOPMENT
117#warning "Schreyer unencoded case not handled here"
118#endif
119#if 0
120
121
122#endif
124 }
125
131}
const Ring * get_ring() const
const SchreyerOrder * get_schreyer_order() const
virtual const Monoid * getMonoid() const
virtual const PolynomialRing * cast_to_PolynomialRing() const
SchreyerOrder(const Monoid *m)
int compare_num(int i) const
static CanonicalForm base
void intern_SchreyerOrder(SchreyerOrder *G)
VALGRIND_MAKE_MEM_DEFINED & result(result)
#define newarray_atomic(T, len)
const FreeModule * get_free_module() const
gc_vector< gbvector * > elems