573{
574 auto& myframe =
level(lev);
576 myorder.mTieBreaker.resize(myframe.size());
577
578
579 if (lev == 0)
580 {
582 myorder.mTieBreaker[i] = i;
583 return;
584 }
585
587 long* tiebreakers = new long[myframe.size()];
588
589 auto n_frame_elems = myframe.size();
591 {
593 tiebreakers[i] = i + n_frame_elems * prevorder.mTieBreaker[comp];
594 }
595 std::stable_sort(tiebreakers, tiebreakers + n_frame_elems);
596
598 {
599 myorder.mTieBreaker[tiebreakers[i] % n_frame_elems] = i;
600 }
601 delete[] tiebreakers;
602
603}
component_index get_component(res_const_packed_monomial m) const
const ResMonoid & monoid() const
std::vector< FrameElement > & level(int lev)
ResSchreyerOrder & schreyerOrder(int lev)