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.