PIPS
|
#include <stdlib.h>
#include <stdio.h>
#include "boolean.h"
#include "linear_assert.h"
#include "arithmetique.h"
#include "vecteur.h"
#include "ray_dte.h"
#include "sommet.h"
Go to the source code of this file.
Macros | |
#define | MALLOC(s, t, f) malloc(s) |
package pour la structure de donnees sommet (sommet d'un systeme generateur) More... | |
#define | FREE(s, t, f) free(s) |
Functions | |
Psommet | sommet_new () |
Creation d'un sommet More... | |
Psommet | sommet_make (Value d, Pvecteur v) |
Psommet sommet_make(int d, Pvecteur v): allocation et initialisation d'un sommet de denominateur d et de vecteur v; le vecteur v est utilise directement; ca peut introduire du sharing;. More... | |
Psommet | sommet_dup (Psommet s_in) |
Psommet sommet_dup(Psommet s_in): allocation et copie de la valeur d'un sommet. More... | |
void | sommet_rm (Psommet s) |
void sommet_rm(Psommet s): desallocation complete d'une structure sommet More... | |
void | dbg_sommet_rm (Psommet s, char *f) |
void | sommet_fprint (FILE *f, Psommet s, char *(*nom_var)(Variable)) |
void sommet_fprint(FILE * f, Psommet s, char * (*nom_var)()): impression d'un sommet More... | |
void | sommet_fprint_as_dense (FILE *f, Psommet s, Pbase b) |
void sommet_fprint_as_dense(FILE * f, Psommet s): impression d'un sommet More... | |
void | sommet_dump (Psommet s) |
void sommet_dump(Psommet s): impression d'un sommet sur stderr avec variable_debug_name() More... | |
void | fprint_lsom (FILE *f, Psommet ls, char *(*nom_var)(Variable)) |
void fprint_lsom(FILE * f, Psommet s, char * (*nom_var)()): impression d'une liste de sommets More... | |
void | fprint_lsom_as_dense (FILE *f, Psommet ls, Pbase b) |
void fprint_lsom_as_dense(FILE * f, Psommet s): impression d'une liste de sommets More... | |
void | sommet_normalize (Psommet ns) |
void sommet_normalize(Psommet ns): normalisation des coordonnees d'un sommet par le pgcd des coordonnees et du denominateur More... | |
bool | som_in_liste (Psommet s, Psommet listes) |
bool som_in_liste(Psommet s, Psommet l): test de l'appartenance du sommet s a la liste de sommets l More... | |
bool | sommet_egal (Psommet s1, Psommet s2) |
bool sommet_egal(Psommet s1, Psommet s2): test de l'egalite de representation de deux sommets More... | |
bool | egaliste_s (Psommet l1, Psommet *ad_l2) |
bool egaliste_s(Psommet l1, Psommet * ad_l2): test d'egalite de listes de sommets More... | |
void | sommet_add (Psommet *ps, Psommet som, int *nb_som) |
void sommet_add(Psommet *ps, Psommet som, int *nb_soms): Ajout d'un sommet a une liste de sommets Le sommet est ajoute a la fin de la liste. More... | |
void dbg_sommet_rm | ( | Psommet | s, |
char * | f | ||
) |
Definition at line 117 of file sommet.c.
References dbg_vect_rm(), f(), fprintf(), FREE, SOMMET, sommet_fprint(), and variable_debug_name.
bool egaliste_s(Psommet l1, Psommet * ad_l2): test d'egalite de listes de sommets
nous proposons un test direct au lieu d'un test en deux etapes d'inclusion dans les deux sens; ceci justifie le second parametre qui est l'adresse du pointeur de liste (Malik Imadache)
elements pour lesquels il reste a trouver un "jumeau" dans l1
adresse a laquelle il faudra raccrocher les elements de l2 successivement testes
on a trouve un element (eq21) de eq2 egal a l'element courant de l1; on remet donc eq21 dans l2, en distingant 2 cas suivant qu'il est en tete de eq2 ou pas
eq23 est le predecesseur de eq21 dans eq2 il faut le conserver pour enlever eq21 de eq2
eq21 est different de l'element de l1 qui est teste; il faut voir le reste de la liste eq2
on a trouve un element de l1 qui n'a pas de "jumeau" dans l2 => reformer l2 et sortir
tous les elements de l1 ont un jumeau (=> l1 est inclus dans l2) si tous les elements de l2 sont jumeaux (inclusion inverse) => egalite
dans le cas inverse reformer l2 et sortir
l1 | 1 |
ad_l2 | d_l2 |
Definition at line 258 of file sommet.c.
References sommet_egal(), and typ_som::succ.
Referenced by egal_soms().
void fprint_lsom(FILE * f, Psommet s, char * (*nom_var)()): impression d'une liste de sommets
Definition at line 177 of file sommet.c.
References f(), nom_var, sommet_fprint(), and typ_som::succ.
Referenced by sg_fprint().
void fprint_lsom_as_dense(FILE * f, Psommet s): impression d'une liste de sommets
ls | s |
Definition at line 191 of file sommet.c.
References f(), sommet_fprint_as_dense(), and typ_som::succ.
Referenced by prettyprint_dependence_graph(), prettyprint_dot_dependence_graph(), and sg_fprint_as_dense().
bool som_in_liste(Psommet s, Psommet l): test de l'appartenance du sommet s a la liste de sommets l
Les coordonnees du sommet s et des sommets de la liste l sont supposees normalisees (fractions reduites)
listes | istes |
Definition at line 222 of file sommet.c.
References typ_som::denominateur, s1, vect_equal(), and typ_som::vecteur.
void sommet_add(Psommet *ps, Psommet som, int *nb_soms): Ajout d'un sommet a une liste de sommets Le sommet est ajoute a la fin de la liste.
ps | s |
som | om |
nb_som | b_som |
Definition at line 342 of file sommet.c.
References typ_som::succ.
Referenced by eq_in_ineq(), plint_degen(), and plint_pas().
void sommet_dump | ( | Psommet | s | ) |
void sommet_dump(Psommet s): impression d'un sommet sur stderr avec variable_debug_name()
Definition at line 168 of file sommet.c.
References sommet_fprint(), and variable_debug_name.
Psommet sommet_dup(Psommet s_in): allocation et copie de la valeur d'un sommet.
s_in | _in |
Definition at line 82 of file sommet.c.
References abort, typ_som::denominateur, typ_som::eq_sat, fprintf(), MALLOC, SOMMET, typ_som::succ, vect_dup(), and typ_som::vecteur.
Referenced by sg_dup(), sg_union(), sommets_dup(), and sommets_dupc().
bool sommet_egal(Psommet s1, Psommet s2): test de l'egalite de representation de deux sommets
Il faut en normaliser les coordonnees d'abord si on veut une egalite de valeur
s1 | 1 |
s2 | 2 |
Definition at line 242 of file sommet.c.
References s1, sommet_denominateur, and vect_equal().
Referenced by egaliste_s().
void sommet_fprint(FILE * f, Psommet s, char * (*nom_var)()): impression d'un sommet
malgre le clash de type, je kludge...
ray_dte_fprint(f, s, nom_var);
Definition at line 130 of file sommet.c.
References typ_som::denominateur, f(), fprint_Value(), fprintf(), nom_var, value_notone_p, vect_fprint(), and typ_som::vecteur.
Referenced by dbg_sommet_rm(), fprint_lsom(), and sommet_dump().
void sommet_fprint_as_dense(FILE * f, Psommet s): impression d'un sommet
Definition at line 152 of file sommet.c.
References typ_som::denominateur, f(), fprint_Value(), fprintf(), value_notone_p, vect_fprint_as_dense(), and typ_som::vecteur.
Referenced by fprint_lsom_as_dense().
Psommet sommet_make(int d, Pvecteur v): allocation et initialisation d'un sommet de denominateur d et de vecteur v; le vecteur v est utilise directement; ca peut introduire du sharing;.
Definition at line 67 of file sommet.c.
References typ_som::denominateur, sommet_new(), and typ_som::vecteur.
Referenced by mk_rn(), and sg_of_rays().
Psommet sommet_new | ( | void | ) |
Creation d'un sommet
SOMMET.
Definition at line 51 of file sommet.c.
References typ_som::denominateur, typ_som::eq_sat, MALLOC, SOMMET, typ_som::succ, and typ_som::vecteur.
Referenced by fonct_init(), fonct_max(), fonct_max_all(), fonct_max_d(), fonct_min(), fonct_min_all(), fonct_min_d(), fonct_read(), and sommet_make().
void sommet_normalize | ( | Psommet | ns | ) |
void sommet_normalize(Psommet ns): normalisation des coordonnees d'un sommet par le pgcd des coordonnees et du denominateur
ns | s |
Definition at line 205 of file sommet.c.
References assert, pgcd, value_division, value_pos_p, vect_div(), and vect_pgcd_all().
Referenced by sommets_normalize().
void sommet_rm | ( | Psommet | s | ) |
void sommet_rm(Psommet s): desallocation complete d'une structure sommet
Definition at line 110 of file sommet.c.
References FREE, SOMMET, and vect_rm().