321{
322 auto& outcoeff =
result.getCoeffInserter();
323 auto& outmonom =
result.getMonomInserter();
324
325
326
327 while ((fBegin != fEnd) && (gBegin != gEnd))
328 {
329 auto fMon = fBegin.monom();
330 auto gMon = gBegin.monom();
331 auto fCoeff = fBegin.coeff();
332 auto gCoeff = gBegin.coeff();
333 ring_elem coeffResult;
335 {
339 {
340 outcoeff.push_back(coeffResult);
342 }
343 gBegin++;
344 break;
346 outcoeff.push_back(fCoeff);
348 fBegin++;
349 break;
354 {
355 outcoeff.push_back(coeffResult);
357 }
358 fBegin++;
359 gBegin++;
360 }
361 }
362 if (fBegin == fEnd)
363 {
364 for ( ; gBegin != gEnd; gBegin++)
365 {
366 auto gMon = gBegin.monom();
367 auto gCoeff = gBegin.coeff();
370 {
371 outcoeff.push_back(coeffResult);
373 }
374 }
375 }
376 if (gBegin == gEnd)
377 {
378 for ( ; fBegin != fEnd; fBegin++)
379 {
380 auto fMon = fBegin.monom();
381 auto fCoeff = fBegin.coeff();
382 outcoeff.push_back(fCoeff);
384 }
385 }
386}
const Ring * coefficientRing() const
const FreeMonoid & monoid() const
bool is_zero(const Poly &f) const
void copy(const Monom &m, MonomialInserter &result) const
virtual ring_elem add(const ring_elem f, const ring_elem g) const =0
virtual ring_elem mult(const ring_elem f, const ring_elem g) const =0
static int compare(const vecterm *t, const vecterm *s)
VALGRIND_MAKE_MEM_DEFINED & result(result)