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

◆ computeNextLevel()

component_index SchreyerFrame::computeNextLevel ( )

Definition at line 545 of file res-schreyer-frame.cpp.

546{
547 if (currentLevel() == 1) return 0;
548 if (currentLevel() >= mFrame.mLevels.size()) return 0;
549 // std::cout << "computeNextLevel: level = " << currentLevel() << std::endl;
550 // loop through all the elements at level currentLevel()-2
551 int level0 = currentLevel() - 2;
552 int level1 = level0 + 1;
553 component_index n_elems_added = 0;
554 for (auto i = level(level0).begin(); i != level(level0).end(); ++i)
555 {
556 component_index begin = (*i).mBegin;
557 component_index end = (*i).mEnd;
558 for (component_index i = begin; i < end; ++i)
559 {
560 auto& elem = level(level1)[i];
561 elem.mBegin = n_elems_added;
562 n_elems_added += computeIdealQuotient(level1, begin, i);
563 elem.mEnd = n_elems_added;
564 }
565 }
568
569 return n_elems_added;
570}
void setSchreyerOrder(int lev)
component_index computeIdealQuotient(int lev, component_index begin, component_index elem)
std::vector< FrameElement > & level(int lev)
myword component_index
TermIterator< Nterm > begin(Nterm *ptr)
Definition ringelem.cpp:4
TermIterator< Nterm > end(Nterm *)
Definition ringelem.cpp:5

References begin(), computeIdealQuotient(), currentLevel(), end(), level(), mCurrentLevel, mFrame, and setSchreyerOrder().

Referenced by computeFrame(), and start_computation().