Basic Polynomial Algebra Subprograms (BPAS)
v. 1.548

An abstract class defining the interface of a Euclidean domain. More...
#include <BPASEuclideanDomain.hpp>
Public Member Functions  
virtual Derived  euclideanSize () const =0 
Get the euclidean size of *this.  
virtual Derived  euclideanDivision (const Derived &b, Derived *q=NULL) const =0 
Perform the eucldiean division of *this and b. More...  
virtual Derived  extendedEuclidean (const Derived &b, Derived *s=NULL, Derived *t=NULL) const =0 
Perofrm the extended euclidean division on *this and b. More...  
virtual Derived  quotient (const Derived &b) const =0 
Get the quotient of *this and b.  
virtual Derived  remainder (const Derived &b) const =0 
Get the remainder of *this and b.  
virtual Derived  operator% (const Derived &b) const =0 
Get the remainder of *this and b;.  
virtual Derived &  operator%= (const Derived &b)=0 
Assign *this to be the remainder of *this and b.  
Public Member Functions inherited from BPASGCDDomain< Derived >  
virtual Derived  gcd (const Derived &other) const =0 
Get GCD of *this and other.  
virtual Factors< Derived >  squareFree () const =0 
Compute squarefree factorization of *this.  
Public Member Functions inherited from BPASIntegralDomain< Derived >  
virtual Derived  operator/ (const Derived &) const =0 
Exact division.  
virtual Derived &  operator/= (const Derived &)=0 
Exact division assignment.  
Public Member Functions inherited from BPASRing< Derived >  
virtual mpz_class  characteristic () 
The characteristic of this ring class.  
virtual bool  isZero () const =0 
Determine if *this ring element is zero, that is the additive identity. More...  
virtual void  zero ()=0 
Make *this ring element zero.  
virtual bool  isOne () const =0 
Determine if *this ring element is one, that is the multiplication identity. More...  
virtual void  one ()=0 
Make *this ring element one.  
virtual Derived  unitCanonical (Derived *u=NULL, Derived *v=NULL) const =0 
Obtain the unit normal (a.k.a canonical associate) of an element. More...  
virtual Derived &  operator= (const Derived &)=0 
Copy assignment.  
virtual Derived  operator+ (const Derived &) const =0 
Addition.  
virtual Derived &  operator+= (const Derived &)=0 
Addition assignment.  
virtual Derived  operator (const Derived &) const =0 
Subtraction.  
virtual Derived &  operator= (const Derived &)=0 
Subtraction assignment.  
virtual Derived  operator () const =0 
Negation.  
virtual Derived  operator* (const Derived &) const =0 
Multiplication.  
virtual Derived &  operator*= (const Derived &)=0 
Multiplication assignment.  
virtual Derived  operator^ (long long int e) const =0 
Exponentiation.  
virtual Derived &  operator^= (long long int e)=0 
Exponentiation assignment.  
virtual bool  operator== (const Derived &) const =0 
Equality test,. More...  
virtual bool  operator!= (const Derived &) const =0 
Inequality test,. More...  
virtual void  print (std::ostream &ostream) const 
Print the Ring element. More...  
Public Member Functions inherited from ExpressionTreeConvert  
virtual ExpressionTree  convertToExpressionTree () const =0 
Convert this to an expression tree. More...  
Additional Inherited Members  
Static Public Attributes inherited from BPASRing< Derived >  
static RingProperties  properties 
Static element describing the properties of this ring class.  
An abstract class defining the interface of a Euclidean domain.

pure virtual 
Perform the eucldiean division of *this and b.
Returns the remainder. If q is not NULL, then returns the quotient in q.
Implemented in DenseUnivariatePolynomial< Field >, DenseUnivariateRationalPolynomial, SmallPrimeField, GeneralizedFermatPrimeField, UnivariateRationalFunction< UnivariatePolynomialOverField, Field >, BigPrimeField, Integer, ComplexRationalNumber, RationalNumber, SmartFraction< Domain >, and Fraction< Domain >.

pure virtual 
Perofrm the extended euclidean division on *this and b.
Returns the GCD. If s and t are not NULL, returns the bezout coefficients in them.
Implemented in DenseUnivariatePolynomial< Field >, DenseUnivariateRationalPolynomial, SmallPrimeField, GeneralizedFermatPrimeField, UnivariateRationalFunction< UnivariatePolynomialOverField, Field >, BigPrimeField, Integer, ComplexRationalNumber, RationalNumber, SmartFraction< Domain >, and Fraction< Domain >.