Basic Polynomial Algebra Subprograms (BPAS)  v. 1.791
BPASGCDPolynomial.hpp
1 
2 
3 
4 #ifndef _BPAS_GCDPOLY_H_
5 #define _BPAS_GCDPOLY_H_
6 
7 #include "Utils/TemplateHelpers.hpp"
8 
9 
10 /**
11  * An abstract class defining the interface of a polynomial ring which
12  * is also an GCD domain. E.g., a polynomial over a GCD domain.
13  *
14  * This class is automatically determined to be a superclass of
15  * a BPASPolynomial based on a template specialization of the Ring
16  * parameter.
17  */
18 template <class Ring, class Derived>
19 class BPASGCDPolynomial : public virtual BPASIntegralPolynomial<Ring, Derived>,
20  public virtual BPASGCDDomain<Derived>,
21  private Derived_from<Ring, BPASGCDDomain<Ring>> {
22  virtual Ring content() const = 0;
23  virtual Derived primitivePart() const = 0;
24 };
25 
26 
27 
28 
29 
30 #endif
An abstract class defining the interface of a GCD domain.
Definition: BPASGCDDomain.hpp:14
An abstract class defining the interface of a polynomial ring which is also an GCD domain...
Definition: BPASGCDPolynomial.hpp:19
An abstract class defining the interface of a polynomial ring which is also an integral domain...
Definition: BPASIntegralPolynomial.hpp:19