Basic Polynomial Algebra Subprograms (BPAS)  v. 1.791
Public Member Functions | List of all members
BPASEuclideanDomain< Derived > Class Template Referenceabstract

An abstract class defining the interface of a Euclidean domain. More...

#include <BPASEuclideanDomain.hpp>

Simplified semantic inheritance diagram for BPASEuclideanDomain< Derived >:
- Full inheritance diagram for BPASEuclideanDomain< Derived >:
[legend]

Public Member Functions

virtual Integer 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
 Perform the extended euclidean division on *this and b. More...
 
virtual Derived quotient (const Derived &b) const =0
 Get the quotient of *this and b. More...
 
virtual Derived remainder (const Derived &b) const =0
 Get the remainder of *this and b. More...
 
virtual Derived operator% (const Derived &b) const =0
 Get the remainder of *this and b;. More...
 
virtual Derived & operator%= (const Derived &b)=0
 Assign *this to be the remainder of *this and b. More...
 
- Public Member Functions inherited from BPASGCDDomain< Derived >
virtual Derived gcd (const Derived &other) const =0
 Get GCD of *this and other. More...
 
virtual Factors< Derived > squareFree () const =0
 Compute squarefree factorization of *this. More...
 
- Public Member Functions inherited from BPASIntegralDomain< Derived >
virtual Derived operator/ (const Derived &d) const =0
 Exact division. More...
 
virtual Derived & operator/= (const Derived &d)=0
 Exact division assignment. More...
 
- Public Member Functions inherited from BPASRing< Derived >
virtual mpz_class getCharacteristic () const
 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...
 
virtual std::string toString () const
 Convert the Ring element to a string. More...
 
- Public Member Functions inherited from ExpressionTreeConvert
virtual ExpressionTree convertToExpressionTree () const =0
 Convert this to an expression tree. More...
 

Detailed Description

template<class Derived>
class BPASEuclideanDomain< Derived >

An abstract class defining the interface of a Euclidean domain.

Member Function Documentation

◆ euclideanDivision()

template<class Derived>
virtual Derived BPASEuclideanDomain< Derived >::euclideanDivision ( const Derived &  b,
Derived *  q = NULL 
) const
pure virtual

Perform the eucldiean division of *this and b.

Returns the remainder. If q is not NULL, then returns the quotient in q.

Parameters
bthe divisor.
[out]qa pointer to store the quotient in.
Returns
the remainder.

Implemented in DenseUnivariatePolynomial< Field >, SmallPrimeField, GeneralizedFermatPrimeField, UnivariateRationalFunction< UnivariatePolynomialOverField, Field >, BigPrimeField, Integer, ComplexRationalNumber, RationalNumber, SmartFraction< Domain >, and Fraction< Domain >.

◆ extendedEuclidean()

template<class Derived>
virtual Derived BPASEuclideanDomain< Derived >::extendedEuclidean ( const Derived &  b,
Derived *  s = NULL,
Derived *  t = NULL 
) const
pure virtual

Perform the extended euclidean division on *this and b.

Returns the GCD. If s and t are not NULL, returns the bezout coefficients in them.

Parameters
bthe divisor.
[out]sthe bezout coefficient of this.
[out]tthe bezout coefficient of b.
Returns
the remainder.

Implemented in DenseUnivariatePolynomial< Field >, SmallPrimeField, GeneralizedFermatPrimeField, UnivariateRationalFunction< UnivariatePolynomialOverField, Field >, BigPrimeField, Integer, ComplexRationalNumber, RationalNumber, SmartFraction< Domain >, and Fraction< Domain >.

◆ operator%()

template<class Derived>
virtual Derived BPASEuclideanDomain< Derived >::operator% ( const Derived &  b) const
pure virtual

◆ operator%=()

template<class Derived>
virtual Derived& BPASEuclideanDomain< Derived >::operator%= ( const Derived &  b)
pure virtual

◆ quotient()

template<class Derived>
virtual Derived BPASEuclideanDomain< Derived >::quotient ( const Derived &  b) const
pure virtual

◆ remainder()

template<class Derived>
virtual Derived BPASEuclideanDomain< Derived >::remainder ( const Derived &  b) const
pure virtual

The documentation for this class was generated from the following file: