Basic Polynomial Algebra Subprograms (BPAS)  v. 1.791
BPASIntegralDomain.hpp
1 
2 #ifndef _BPAS_INTEGRAL_DOMAIN_H_
3 #define _BPAS_INTEGRAL_DOMAIN_H_
4 
5 
6 #include "BPASRing.hpp"
7 #include "../Utils/TemplateHelpers.hpp"
8 
9 
10 /**
11  * An abstract class defining the interface of an integral domain.
12  */
13 template <class Derived>
14 class BPASIntegralDomain : public virtual BPASRing<Derived> {
15 
16 public:
17 
18  /**
19  * Exact division.
20  *
21  * @param d: the divisor.
22  * @return the equotient.
23  */
24  virtual Derived operator/ (const Derived& d) const = 0;
25 
26  /**
27  * Exact division assignment.
28  *
29  * @param d: the divisor.
30  * @return a reference to this after assignment.
31  */
32  virtual Derived& operator/= (const Derived& d) = 0;
33 
34 };
35 
36 #endif
An abstract class defining the interface of a commutative ring.
Definition: BPASRing.hpp:19
virtual Derived operator/(const Derived &d) const =0
Exact division.
An abstract class defining the interface of an integral domain.
Definition: BPASIntegralDomain.hpp:14
virtual Derived & operator/=(const Derived &d)=0
Exact division assignment.