43 #include "CoxIter/coxiter.h" 44 #include "CoxIter/lib/math_tools.h" 55 vector< AlgebraicInteger* > aiQF;
74 vector< vector< unsigned int > > iCoxeterMatrix;
80 string strOuputMathematicalFormat;
94 AlVin(
const string& strOuputMathematicalFormat,
const bool& bWriteInfo,
const bool& bDebug );
101 virtual bool PreRun() = 0;
109 bool Run(
unsigned int iMinVectors = 0,
unsigned int iMaxVectors = 0,
bool bLastCheckFV =
true );
114 AlgebraicInteger* aiBilinearProduct(
const vector< AlgebraicInteger* >& v1,
const vector< AlgebraicInteger* >& v2 );
119 void print_iQF()
const;
124 void print_vectors()
const;
129 vector< vector< unsigned int > > get_iCoxeterMatrix()
const;
134 unsigned int get_iDimension()
const;
139 string get_strFinalInformation()
const;
144 string get_strCoxeterMatrix()
const;
149 virtual string get_strField()
const = 0;
156 string get_strQF(
const string& strSeparator =
", " )
const;
161 string get_strAlgebraicIntegerType()
const;
166 vector< vector< AlgebraicInteger* > > get_aiVectors()
const;
171 unsigned int get_iVectorsCount()
const;
176 vector< AlgebraicInteger* > get_aiQF()
const;
181 vector< AlgebraicInteger* > get_aiPossibleNorm2()
const;
186 const vector< AlgebraicInteger* >* get_ptraiPossibleNorm2()
const;
191 CoxIter* get_ptrCI()
const;
199 void set_iCreateImage(
const int& iValue );
204 void set_bComputeInvariantsPolyhedron(
const bool& bValue );
207 void initializations();
209 void print_initialInformation()
const;
210 virtual void print_initialInformationChild()
const;
211 void print_finallInformation()
const;
214 virtual void findPossibleNorms2() = 0;
217 void findFirstVectors();
219 void addVector(
const vector< AlgebraicInteger* >& aiVect );
222 void printFoundVector( vector< AlgebraicInteger* > aiV,
const unsigned int& iIndex,
const bool& bFirst =
false )
const;
224 virtual void addVectorChild(
const vector< AlgebraicInteger* >& aiVector ) = 0;
236 for(
unsigned int j( 1 ); j <= iDimension; j++ )
238 aiTemp->
set( aiQF[j] );
241 aiProduct->
add( aiTemp );
bool bComputeInvariantsPolyhedron
If yes, we compute the invariants of the final polyhedron.
Definition: alvin.h:58
unsigned int iVectorsCount
Number of vectors found.
Definition: alvin.h:69
virtual void add(const AlgebraicInteger *ai)=0
Performs the addition of *this by the parameter.
AlgebraicInteger * aiBilinearProduct(const vector< AlgebraicInteger * > &v1, const vector< AlgebraicInteger * > &v2)
Compute the product between two vectors.
Definition: alvin.h:227
vector< vector< AlgebraicInteger * > > aiVectors
The vectors.
Definition: alvin.h:68
Main class for AlVin.
Definition: alvin.h:52
virtual void multiplyBy(const int &n)=0
Performs the multiplication of *this by the parameter.
virtual void opp()=0
Computes the opp.
vector< unsigned int > iComponentLessThan
The entry [ i ] = j means x_i <= x_j, [ i ] = 0 means no information for x_i.
Definition: alvin.h:66
vector< unsigned int > iQBlocksSize
Sizes of blocks of coefficients.
Definition: alvin.h:65
unsigned int iVectorsCount_second
Number of vectors found (second batch)
Definition: alvin.h:70
unsigned int iDimension
Dimension of the space.
Definition: alvin.h:56
Parent class for rational, quadratic and rc7 integers.
Definition: algebraicinteger.h:43
bool bWriteInfo
If we want to write informations (false if AlVin is used "as a plugin")
Definition: alvin.h:60
int iCreateImage
-1: not specified (i.e. yes if possible and if the number of vectors is <= 25), 0: no...
Definition: alvin.h:61
string strAlgebraicIntegerType
RationalInteger, QuadraticInteger.
Definition: alvin.h:63
string strFinalInformation
Final information that will be displayed.
Definition: alvin.h:82
virtual void set(const int &n)=0
Assign an integer to the algebraic integer.
vector< vector< AlgebraicInteger * > > aiVectors_candidates
Vectors which are compatiable with the previous.
Definition: alvin.h:72
vector< AlgebraicInteger * > iBilinearProducts
To control during findVector_simple that the vector has negative product with the preceding ones...
Definition: alvin.h:76
bool bDebug
If true, more information are displayed.
Definition: alvin.h:59
This class represents a set of possible fractions x_0^2 / (e,e) We generate series of the type: (x0 +...
Definition: alvinfractions.h:46