1 #ifndef _BPAS_POLYNOMIAL_H_ 2 #define _BPAS_POLYNOMIAL_H_ 6 #include "BPASPolynomialTesters.hpp" 7 #include "BPASIntegralPolynomial.hpp" 8 #include "BPASGCDPolynomial.hpp" 9 #include "Utils/TemplateHelpers.hpp" 10 #include "Symbol/Symbol.hpp" 31 template <
class Ring,
class Derived>
46 template <
class Ring,
class Derived>
48 private Derived_from<Ring, BPASRing<Ring>>
58 virtual Derived& operator= (
const Ring& r) = 0;
66 virtual Derived operator+ (
const Ring& r)
const = 0;
74 virtual Derived& operator+= (
const Ring&) = 0;
82 virtual Derived operator- (
const Ring&)
const = 0;
90 virtual Derived& operator-= (
const Ring&) = 0;
97 virtual Derived operator- ()
const = 0;
105 virtual Derived operator* (
const Ring&)
const = 0;
113 virtual Derived& operator*= (
const Ring&) = 0;
120 virtual Integer degree()
const = 0;
128 virtual Ring leadingCoefficient()
const = 0;
136 virtual Ring trailingCoefficient()
const = 0;
143 virtual bool isConstantTermZero()
const = 0;
150 virtual Integer numberOfTerms()
const = 0;
An abstract class defining the interface of a commutative ring.
Definition: BPASRing.hpp:19
An abstract class defining the interface of a polynomial over an arbitrary BPASRing.
Definition: BPASPolynomial.hpp:32
An arbitrary-precision Integer.
Definition: Integer.hpp:22
An abstract class defining the interface of polynomial over an arbitrary BPASRing.
Definition: BPASPolynomial.hpp:47
Via conditional inheritance, determine if the ground ring template parameter Ring is a GCD domain or ...
Definition: BPASPolynomialTesters.hpp:43