AlVin  1.0
A C++ implementation of the Vinberg's algorithm for Q, Q( sqrt(d) ) and Q( cos(2 pi / 7) )
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
QuadraticInteger Class Reference

Quadratic integers. More...

#include <quadraticinteger.h>

Inheritance diagram for QuadraticInteger:
Inheritance graph
[legend]
Collaboration diagram for QuadraticInteger:
Collaboration graph
[legend]

Public Member Functions

 QuadraticInteger (const int &iVal)
 
 QuadraticInteger (const QuadraticInteger &qi)
 
 QuadraticInteger (int a, int b)
 
AlgebraicIntegercopy () const
 Create a copy of an algebraic integer. More...
 
AlgebraicIntegeraiCopyToInteger (const int &n) const
 Create an algebraic integer from an integer. More...
 
virtual void set (const int &n)
 Assign an integer to the algebraic integer. More...
 
virtual void set (AlgebraicInteger *ai)
 Assign an algebraic integer to the algebraic integer. More...
 
virtual void removeSquareFactors ()
 Remove all the square factors of the algebraic integer.
 
virtual bool bIsInvertible () const
 Check whether the number is invertible. More...
 
virtual bool bIsSquareOfIvertible () const
 Check whether the number is the square of an invertible element. More...
 
virtual void gcd (const AlgebraicInteger *ai)
 *this becomes the gcd of *this and the parameter More...
 
virtual bool bIsDivisbleBy (const AlgebraicInteger *) const
 Check whether *this is divisible by the parameter. More...
 
virtual void divideBy (const AlgebraicInteger *ai)
 Performs the division of *this by the parameter Remark: we do not check that the *this is divisible by *ai. If it is not the case, the division will be an approximation! More...
 
virtual bool divideByIfDivisible (const AlgebraicInteger *ai)
 
virtual void multiplyBy (const int &n)
 Performs the multiplication of *this by the parameter. More...
 
virtual void multiplyBy (const AlgebraicInteger *ai)
 Performs the multiplication of *this by the parameter. More...
 
virtual void add (const AlgebraicInteger *ai)
 Performs the addition of *this by the parameter. More...
 
virtual void substract (const AlgebraicInteger *ai)
 Substracts the parameter from *this. More...
 
virtual void opp ()
 Computes the opp.
 
virtual bool bIsLessThan (const int &n) const
 Check whether *this < n.
 
virtual bool bIsLessThan (const long int &n) const
 
virtual bool bIsLessThan (const AlgebraicInteger &ai) const
 Check whether *this < ai.
 
virtual bool bIsLessOEThan (const AlgebraicInteger &ai) const
 Check whether *this <= ai.
 
virtual bool bIsGreaterThan (const int &n) const
 Check whether *this > n.
 
virtual bool bIsGreaterThan (const long int &n) const
 
virtual bool bIsGreaterOEThan (const int &n) const
 Check whether *this >= n.
 
virtual bool bIsEqualTo (const AlgebraicInteger &ai) const
 Check whether *this == ai.
 
virtual bool bIsEqualTo (const int &n) const
 Check whether *this == n.
 
ostream & print (ostream &) const
 Print the number.
 
virtual string to_string (const string &strFormat="generic", const bool &bProtect=false) const
 Convert to string. More...
 
virtual double to_double () const
 Convert to double (approximation)
 
virtual string get_classname () const
 Return the type (string)
 
long int floor () const
 
void conjugate ()
 
long int iNorm () const
 
long int iTrace () const
 
int iValuation (const QuadraticInteger &qi)
 
vector< QuadraticIntegerqiPrimeFactors () const
 
map< QuadraticInteger, unsigned int > qiPrimeDecomposition () const
 
bool bIsAssociateTo (QuadraticInteger qi2)
 
QuadraticIntegeroperator= (const QuadraticInteger &)
 
QuadraticIntegeroperator/= (QuadraticInteger const &qi)
 
QuadraticIntegeroperator*= (QuadraticInteger const &qi)
 
QuadraticInteger operator+ (const QuadraticInteger &) const
 
QuadraticInteger operator* (const QuadraticInteger &) const
 
QuadraticInteger operator- (const QuadraticInteger &) const
 
QuadraticInteger operator- () const
 
bool operator> (const QuadraticInteger &)
 
- Public Member Functions inherited from AlgebraicInteger
bool operator== (const AlgebraicInteger &ai) const
 Check whether *this == ai.
 
bool operator!= (const int &n) const
 Check whether *this != n.
 
bool operator!= (const AlgebraicInteger &ai) const
 Check whether *this != ai.
 

Static Public Member Functions

static bool bIsDAdmissible (const unsigned int &d)
 
static void set_d (const unsigned int &d)
 
static vector< QuadraticIntegerqiFactorsRationalPrime (const unsigned int &iPrime, bool bWithMultiplicities=false)
 
static array< long int, 2 > iPellEquation (const unsigned int &iPrime)
 
static long int iSQRT_quotient (const QuadraticInteger &qiNum, const QuadraticInteger &qiDen)
 
static long int iSQRTsup_quotient (const QuadraticInteger &qiNum, const QuadraticInteger &qiDen)
 

Public Attributes

long int a
 First component of the quadratic integer (in the usual Z-basis)
 
long int b
 Second component of the quadratic integer (in the usual Z-basis)
 

Static Public Attributes

static int d = 0
 We work in Q[ sqrt d ].
 
static bool bIsOneMod4 = false
 True if d is 1 mod 4, false otherwise.
 
static int iDiscriminant = 0
 Discriminant of the quadratic field.
 
static map< unsigned int, vector< unsigned int > > iPellMinimalSolution
 Solutions for the Pell equations (used to compute the decompositions of rational prime numbers)
 
static map< unsigned int, vector< long int > > iFundamentalUnits
 Fundamental units.
 

Detailed Description

Quadratic integers.

Member Function Documentation

void QuadraticInteger::add ( const AlgebraicInteger ai)
virtual

Performs the addition of *this by the parameter.

Parameters
ai(const AlgebraicInteger* ) Pointer to the summand

Implements AlgebraicInteger.

AlgebraicInteger * QuadraticInteger::aiCopyToInteger ( const int &  n) const
virtual

Create an algebraic integer from an integer.

Parameters
n(const int ): Integer
Returns
Pointer to the algebraic integer created

Implements AlgebraicInteger.

bool QuadraticInteger::bIsDivisbleBy ( const AlgebraicInteger ai) const
virtual

Check whether *this is divisible by the parameter.

Parameters
ai(const AlgebraicInteger* ) Pointer to the divisor
Returns
True if *this is divisible by the parameter

Implements AlgebraicInteger.

bool QuadraticInteger::bIsInvertible ( ) const
virtual

Check whether the number is invertible.

Returns
True if invertible or not

Implements AlgebraicInteger.

bool QuadraticInteger::bIsSquareOfIvertible ( ) const
virtual

Check whether the number is the square of an invertible element.

Returns
True if invertible or not

Implements AlgebraicInteger.

AlgebraicInteger * QuadraticInteger::copy ( ) const
virtual

Create a copy of an algebraic integer.

Returns
Pointer to the algebraic integer created

Implements AlgebraicInteger.

void QuadraticInteger::divideBy ( const AlgebraicInteger ai)
virtual

Performs the division of *this by the parameter Remark: we do not check that the *this is divisible by *ai. If it is not the case, the division will be an approximation!

Parameters
ai(const AlgebraicInteger* ) Pointer to the divisor

Implements AlgebraicInteger.

void QuadraticInteger::gcd ( const AlgebraicInteger ai)
virtual

*this becomes the gcd of *this and the parameter

Parameters
ai(const AlgebraicInteger* ) The other algebraic integer

Implements AlgebraicInteger.

void QuadraticInteger::multiplyBy ( const int &  n)
virtual

Performs the multiplication of *this by the parameter.

Parameters
ai(const AlgebraicInteger* ) Pointer to the multiplicand

Implements AlgebraicInteger.

void QuadraticInteger::multiplyBy ( const AlgebraicInteger ai)
virtual

Performs the multiplication of *this by the parameter.

Parameters
ai(const AlgebraicInteger* ) Pointer to the multiplicand

Implements AlgebraicInteger.

void QuadraticInteger::set ( const int &  n)
virtual

Assign an integer to the algebraic integer.

Parameters
n(const int& ) Integer

Implements AlgebraicInteger.

void QuadraticInteger::set ( AlgebraicInteger ai)
virtual

Assign an algebraic integer to the algebraic integer.

Parameters
ai(AlgebraicInteger* ) Pointer to the algebraic integer

Implements AlgebraicInteger.

void QuadraticInteger::substract ( const AlgebraicInteger ai)
virtual

Substracts the parameter from *this.

Parameters
ai(const AlgebraicInteger* ) Pointer to the subtrahend

Implements AlgebraicInteger.

std::string QuadraticInteger::to_string ( const string &  strFormat = "generic",
const bool &  bProtect = false 
) const
virtual

Convert to string.

Parameters
strFormat(const string& ): Format for the output; can be: generic, mathematica, pari, latex
bProtect(const bool& ): If true, avoid certain characters (for example if the string is used in for a file name)

Implements AlgebraicInteger.


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