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

◆ isZero()

bool PriorityQueuePolynomialHeap::isZero ( )
inlineoverridevirtual

Implements PolynomialHeap.

Definition at line 1031 of file NCReduction.cpp.

1032 {
1033 if (mLeadTermSet) return false;
1034 if (mQueue.empty()) return true;
1035 Entry lt = mQueue.top();
1036 mQueue.pop();
1037 while (not mQueue.empty())
1038 {
1039 Entry e = mQueue.top();
1040 if (mRing.monoid().compare(e.first, lt.first) == EQ)
1041 {
1042 lt.second = mRing.coefficientRing()->add(lt.second, e.second);
1043 mQueue.pop();
1044 }
1045 else
1046 {
1047 if (not mRing.coefficientRing()->is_zero(lt.second))
1048 {
1049 mLeadTermSet = true;
1050 mLeadTerm = lt;
1051 return false;
1052 }
1053 else
1054 {
1055 lt = mQueue.top();
1056 mQueue.pop();
1057 }
1058 }
1059 }
1060 if (not mRing.coefficientRing()->is_zero(lt.second))
1061 {
1062 mLeadTermSet = true;
1063 mLeadTerm = lt;
1064 return false;
1065 }
1066 return true;
1067 }
std::priority_queue< Entry, Container, EntryConfig > mQueue
std::pair< Monom, ring_elem > Entry
const int EQ
Definition style.hpp:40

References EQ, mLeadTerm, mLeadTermSet, mQueue, and mRing.

Referenced by removeLeadTerm(), value(), and viewLeadTerm().