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