Example #1
0
void ReducerPackDedup<Q>::removeLeadTerm() {
  if (!mLeadTermKnown) {
    NewConstTerm dummy;
    leadTerm(dummy);
  }
  mLeadTermKnown = false;
}
Example #2
0
void TournamentReducer::removeLeadTerm()
{
  if (!mLeadTermKnown) {
    const_term dummy;
    leadTerm(dummy);
  }
  mLeadTermKnown = false;
}
Example #3
0
void TournamentReducer::value(Poly &result)
{
  const_term t;
  while (leadTerm(t)) {
    result.appendTerm(t.coeff, t.monom);
    removeLeadTerm();
  }
  resetReducer();
}
Example #4
0
void PolyHashReducer::value(Poly &result)
// keep extracting lead term until done
{
  const_term t;
  for ( ; f_iter_ != f_->end(); ++f_iter_)
    if (leadTerm(t))
      result.appendTerm(t.coeff, t.monom);
  resetReducer();
}
Example #5
0
 virtual bool leadTerm(const_term& result) {
   NewConstTerm t;
   auto hasLead = leadTerm(t);
   if (hasLead) {
     result.monom = Monoid::toOld(*t.mono);
     result.coeff = t.coef;
   }
   return hasLead;
 }
Example #6
0
void PolyHashReducer::resetReducer()
{
  const_term t;
  for ( ; f_iter_ != f_->end(); ++f_iter_)
    leadTerm(t);

  delete f_;
  f_ = new HashPoly;
  f_iter_ = f_->begin();

  H_.reset();
}
Example #7
0
void ReducerHash<Q>::resetReducer()
{
  MATHICGB_ASSERT(mNodeCount == mHashTable.getNodeCount());
  const_term t;
  while (leadTerm(t))
    {
      mQueue.pop();
      mNodeCount--;
    }
  MATHICGB_ASSERT(mNodeCount == mHashTable.getNodeCount());
  mHashTable.reset();
  MATHICGB_ASSERT(mNodeCount == mHashTable.getNodeCount());
  // how to reset mQueue ?
}