Polynomial GCD and factorization interface routines via Factory and MPSolve
Definition at line 488 of file factory.cpp.
492{
496 if (P == nullptr)
497 {
499
500 ERROR(
"expected polynomial ring");
501 return nullptr;
502 }
503 if (P != P2)
504 {
505 ERROR(
"encountered different rings");
506 return nullptr;
507 }
508 {
511 {
512 algebraicElement_M2 = nullptr;
513 return nullptr;
514 }
516 {
517 assert(!inExtension);
518 set_GF_minimal_poly(P);
519 }
520 if (inExtension)
521 {
524 }
527 CanonicalForm h = gcd(
p, q);
528 if (inExtension)
529 {
530 assert(foo.mode !=
modeGF);
533
534
535 }
538 {
540 return nullptr;
541 }
542 }
543 if (ret->
is_zero())
return ret;
551}
ring_elem preferred_associate_divisor(ring_elem ff) const
virtual ring_elem var(int v) const =0
virtual void mult_coeff_to(ring_elem a, ring_elem &f) const =0
virtual const Ring * getCoefficients() const
virtual const PolyRing * getNumeratorRing() const
Abstract base for the engine's polynomial-ring hierarchy.
virtual ring_elem invert(const ring_elem f) const =0
virtual const PolynomialRing * cast_to_PolynomialRing() const
virtual const Tower * cast_to_Tower() const
ring_elem get_value() const
static RingElement * make_raw(const Ring *R, ring_elem f)
const Ring * get_ring() const
Front-end-visible "ring element" value: an engine ring_elem paired with the Ring* that gives it meani...
static const RingElement * convertToM2(const PolynomialRing *R, CanonicalForm h)
static CanonicalForm convertToFactory(mpz_srcptr p)
CanonicalForm algebraicElement_Fac
const RingElement * algebraicElement_M2
const RingElement * towerGCD(const RingElement *F, const RingElement *G)
References algebraicElement_Fac, algebraicElement_M2, Ring::cast_to_PolynomialRing(), Ring::cast_to_Tower(), convertToFactory(), convertToM2(), ERROR, error(), RingElement::get_ring(), RingElement::get_value(), PolynomialRing::getCoefficients(), PolynomialRing::getNumeratorRing(), Ring::invert(), RingElement::is_zero(), RingElement::make_raw(), enter_factory::mode, modeError, modeGF, PolynomialRing::mult_coeff_to(), p, PolyRing::preferred_associate_divisor(), and towerGCD().
Referenced by LocalRing::lift_up(), FractionField::lower_content(), LocalRing::lower_content(), FractionField::simplify(), and LocalRing::simplify().