535{
536 try {
538 if (P != nullptr)
539 {
547 }
549 if (Q != nullptr)
550 {
551 if (Q->coefficientRing() != a->
get_ring())
552 {
553 ERROR(
"wrong coefficient ring");
554 return nullptr;
555 }
559 }
560 ERROR(
"requires a polynomial ring");
561 return nullptr;
562 }
565 return nullptr;
566 }
567}
exponents::Exponents exponents_t
static void to_expvector(int n, ConstExponents a, exponents::Exponents result)
Abstract Ring subclass that lifts either a FreeAlgebra or a FreeAlgebraQuotient into the engine's Rin...
virtual const Ring * getCoefficients() const
virtual ring_elem make_logical_term(const Ring *coeffR, const ring_elem a, const_exponents exp) const =0
Abstract base for the engine's polynomial-ring hierarchy.
virtual const PolynomialRing * cast_to_PolynomialRing() const
ring_elem get_value() const
static RingElement * make_raw(const Ring *R, ring_elem f)
const Ring * get_ring() const
const mpreal exp(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
#define newarray_atomic(T, len)