2 4ti2 -- A software package for algebraic, geometric and combinatorial
3 problems on linear spaces.
5 Copyright (C) 2006 4ti2 team.
6 Main author(s): Matthias Walter.
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 #ifndef _LINEARSYSTEM_H
24 #define _LINEARSYSTEM_H
29 #include "varproperties.h"
31 #define EQUATION_EQUAL 0
32 #define EQUATION_MODULO 1
33 #define EQUATION_LESSER 2
34 #define EQUATION_GREATER 3
35 #define EQUATION_LESSEREQUAL 4
36 #define EQUATION_GREATEREQUAL 5
37 typedef unsigned char EquationType
;
39 typedef struct equationproperty_t
45 /* Modulus for congruences */
47 typedef equationproperty_t
*EquationProperties
;
49 typedef struct linearsystem_t
51 /* Ax = b with equations, inequations, congruences and limitations on variables */
58 VariableProperties VarProperties
;
59 EquationProperties EqProperties
;
62 typedef linearsystem_t
*LinearSystem
;
64 LinearSystem
createLinearSystem();
67 void deleteLinearSystem(LinearSystem
);
68 /* Free memory (system)*/
70 void setLinearSystemSize(LinearSystem
, int, int);
71 /* Sets the number of equations and variables (system, variables, equations) */
73 void setLinearSystemMatrix(LinearSystem
, Matrix
);
74 /* Fills the matrix from a given array (system, matrix) */
76 void setLinearSystemRHS(LinearSystem
, Vector
);
77 /* Copies the contents from Vector to RHS (system, rhs) */
79 void setLinearSystemLimit(LinearSystem
, int, int, int, bool);
80 /* Sets limits for one variable (system, var, lower, upper, free?) */
82 void setLinearSystemBound(LinearSystem
, int, char, int);
83 /* Sets limits for one variable (system, var, type, value) */
85 void setLinearSystemEquationType(LinearSystem
, int, EquationType
, int);
86 /* Sets equation type for one equation (system, id, type, modulus) */
88 void fprintLinearSystem(FILE *, LinearSystem
);
89 /* Print to stream (stream, system) */
91 void printLinearSystem(LinearSystem
);
92 /* Print to stdout (system) */
94 LinearSystem
homogenizeLinearSystem(LinearSystem
);
95 /* Create a new homogeneous equation system from a general one */