PIPS
sommet-local.h
Go to the documentation of this file.
1 /*
2 
3  $Id: sommet-local.h 1641 2016-03-02 08:20:19Z coelho $
4 
5  Copyright 1989-2016 MINES ParisTech
6 
7  This file is part of Linear/C3 Library.
8 
9  Linear/C3 Library is free software: you can redistribute it and/or modify it
10  under the terms of the GNU Lesser General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  any later version.
13 
14  Linear/C3 Library is distributed in the hope that it will be useful, but WITHOUT ANY
15  WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  FITNESS FOR A PARTICULAR PURPOSE.
17 
18  See the GNU Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with Linear/C3 Library. If not, see <http://www.gnu.org/licenses/>.
22 
23 */
24 
25 /* package sommet: structure de donnees representant les sommets
26  * d'un systeme generateur; elle contient:
27  * - le vecteur correspondant, a un coefficient multiplicatif pret qui le
28  * rend entier,
29  * - son denominateur,
30  * - un eventuel tableau de saturation (par rapport a une liste implicite
31  * de contraintes),
32  * - le chainage vers les autres rayons ou droites.
33  *
34  * Francois Irigoin, Mai 1989
35  *
36  * Cette structure de donnees est aussi utilisee dans plint.dir pour
37  * representer la fonction economique, les contraintes lineaires et
38  * les systemes de contraintes lineaires.
39  *
40  * FI: commentaires a completer par Corinne, declaration d'un type
41  * synonyme pour eviter les conflits?
42  */
43 
44 #ifndef SOMMET
45 
46 /* valeur numerique utilise pour flagger les structures de donnees de type
47  * sommet */
48 #define SOMMET 1004
49 
50 /* structure de donnees Sommet
51  * - eq_sat: eventuel tableau des saturations du sommets par rapport a un
52  * eventuel systeme de contraintes; inutilisable quand on ne connait pas
53  * le nombre de contraintes, egalites ou inegalites
54  * - vecteur: coordonnees entieres du sommet, a un coefficient multiplicatif
55  * pres; l'inverse de ce coefficient est donne par le champ suivant
56  * - denominateur: coefficient permettant de garder les coordonnees du
57  * sommet sous forme rationnelle; les numerateurs des coordonnees se
58  * trouvent dans "vecteur"; le denominateur est unique, pour le sommet,
59  * i.e. c'est le PGCD des coordonnees; le denominateur doit toujours
60  * etre strictement positif
61  * - succ: pointeur vers le sommet suivant; on s'interesse a l'ensemble
62  * des sommets du systeme generateur plutot qu'a un sommet particulier
63  */
64 typedef struct typ_som {
65  int *eq_sat;
68  struct typ_som *succ;
70 
71 #define print_som(s) sommet_fprint(stdout,s)
72 
73 #define print_lsom(ls) fprint_lsom(stdout,ls)
74 
75 #define VERSION_FINALE
76 #ifdef VERSION_FINALE
77 #define SOMMET_RM(s,function_name) sommet_rm(s)
78 #else
79 #define SOMMET_RM(s,function_name) dbg_sommet_rm(s,function_name)
80 #endif
81 
82 /* macros d'acces */
83 
84 /* int sommet_denominateur(Psommet): denominateur des coordonnees d'un
85  * sommet; ex den_of()
86  */
87 #define sommet_denominateur(s) ((s)->denominateur)
88 
89 #endif /* SOMMET */
int Value
struct typ_som * Psommet
structure de donnees Sommet
struct typ_som Ssommet
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
structure de donnees Sommet
Definition: sommet-local.h:64
struct typ_som * succ
Definition: sommet-local.h:68
Pvecteur vecteur
Definition: sommet-local.h:66
int * eq_sat
Definition: sommet-local.h:65
Value denominateur
Definition: sommet-local.h:67