The mathematical library
This library consists of the following files, all placed in the directory
general:
The object files are linked to the library libgen.a, which collects
also other methods.
Most class definitions are made in general/lmaths.h. These classes are:
- Matrix:
- This is the elementary class of all methods. It stores a Matrix with
rational entries, of arbitrary dimensions. Since the stored entry values are
only integers, there is an class entry denom, to store the common
divisor. There are many member functions, from elementary operations like
the overloaded +,-, unary -,*, row and column manipulation, to more complex
algorithms like echelon reduction, inversion (by Sabine Wetzel) or gauss
jordan elimination (by Peter Faber). The member functions can be found in
general/lmaths.cc.
- Ineq_system:
-
To store an inequality system one make the convention, that each such system
has the form G * x >= 0, where x is the vector of variables and G the matrix
that holds the coefficients. So its possible, to store a inequality system
giving the matrix G and some other information like the number of variables,
parameters and the number of inequations in the system. The member function can be found in
general/lmaths.cc.
- Eq_system:
- As to inequation system its possible to store equation systems choosing
the form G * x = 0. The member function can be found in
general/lmaths.cc.
- Affin_function:
- An affin function can be represented storing the coefficient matrix and
the number of variables and parameters, it works on. The member function can be found in
general/lmaths.cc.
- Quast_node:
- A quast node is used to build a quast (quasi affin selection tree). This
is a tree, that for example can be used to store a schedule produced with
Feautriers method. Each inner node represents a condition, each leaf is a
matrix representing an affin function in the case of scheduling. The member function can be found in general/quast.cc.
Another part of the mathematical library are functions, that compute the
lexicographic maximum and minimum of solutions of an inequation system with
PIP. The implementation of these
functions is placed in general/pipsolver.cc. The main parameters are an inequation system, and
eventually an inequation system, that makes constraints to the parameters of
the first system. As mentioned, the solution is found by calling PIP. PIP
produces an output file containing the solution in the form of a quast. So
its necessary to read this file in with a parser. This parser is implemented
in the file general/pipparser.cc. The result of the whole process is a pointer to the root of
the quast.