47 #define ifdebug(n) if((n)<sg_debug_level)
49 #define MALLOC(s,t,f) malloc(s)
50 #define FREE(p,t,f) free(p)
141 (void)
fprintf(stderr,
"sg_without_line: begin\n");
142 (void)
fprintf(stderr,
"sg_without_line: sg_in\n");
150 for(rd_prec=rd=sg_out->
dtes_sg.
vsg; rd!=NULL; rd_prec=rd, rd=rd->
succ) {
173 (void)
fprintf(stderr,
"sg_without_line: sg_out\n");
175 (void)
fprintf(stderr,
"sg_without_line: end\n");
264 (void)
fprintf(
f,
"Generating system:\n");
278 (void)
fprintf(
f,
"\nEnd of generating system ****\n");
303 (void)
fprintf(
f,
"Generating system:\n");
321 (void)
fprintf(
f,
"\nEnd of generating system ****\n");
326 #define LESSER_DIRECTION 4
327 #define GREATER_DIRECTION 1
328 #define ZERO_DIRECTION 2
329 #define ANY_DIRECTION 7
330 #define NO_DIRECTION 0
399 if (sgs1->nb_s != sgs2->nb_s)
return(
false);
400 if (sgs1->nb_s == 0)
return(
true);
414 if (rdgs1->nb_v != rdgs2->nb_v)
return(0);
437 if (!
egal_soms(&(sg1->soms_sg) ,&(sg2->soms_sg) ) )
return(
false);
439 if (!
egal_rd(&(sg1->rays_sg),&(sg2->rays_sg)))
return(
false);
440 if (!
egal_rd(&(sg1->dtes_sg),&(sg2->dtes_sg)))
return(
false);
479 (void)
fprintf(stderr,
"mk_rn: end\n");
573 for (ps =
sg->
soms_sg.
ssg, ps_tmp = ps; ps != NULL ; ps_tmp = ps, ps=ps->
succ)
575 for (ps = sg2->soms_sg.ssg; ps != NULL; ps=ps->
succ) {
589 for (pr =
sg->
rays_sg.
vsg, pr_tmp=pr; pr!= NULL; pr_tmp = pr, pr = pr->
succ)
591 for (pr = sg2->rays_sg.vsg; pr != NULL; pr=pr->
succ) {
599 pr_tmp = pr_tmp->
succ;
608 for (pr = sg2->dtes_sg.vsg; pr != NULL; pr=pr->
succ) {
616 pr_tmp = pr_tmp->
succ;
#define value_sign(v)
trian operators on values
Pbase base_union(Pbase b1, Pbase b2)
Pbase base_union(Pbase b1, Pbase b2): compute a new basis containing all elements of b1 and all eleme...
bool vect_equal(Pvecteur v1, Pvecteur v2)
bool vect_equal(Pvecteur v1, Pvecteur v2): test a egalite de deux vecteurs
char * variable_dump_name(Variable v)
variable_dump_name() returns an unambiguous name for variable v, based on the pointer used to really ...
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
#define RAY_DTE
package ray_dte: structure de donnees representant les rayons et les droites d'un systeme generateur;...
void fprint_lray_dte_as_dense(FILE *f, Pray_dte listrd, Pbase b)
void fprint_lray_dte_as_dense(FILE * f, Pray_dte listrd): impression d'une liste de rayons ou de droi...
Pray_dte ray_dte_make(Pvecteur v)
Pray_dte ray_dte_make(Pvecteur v): allocation et initialisation d'une structure ray_dte;.
void fprint_lray_dte(FILE *f, Pray_dte listrd, char *(*nom_var)(Variable))
void fprint_lray_dte(FILE * f, Pray_dte listrd, char * (*nom_var)()): impression d'une liste de rayon...
bool egaliste_rd(Pray_dte l1, Pray_dte *ad_l2)
bool egaliste_rd(Pray_dte l1, Pray_dte * l2): egalite de deux listes de rayons ou de droites
Pray_dte ray_dte_dup(Pray_dte rd_in)
Pray_dte ray_dte_dup(Pray_dte rd_in): duplication (allocation et copie) d'une structure ray_dte;.
Pray_dte ray_oppose(Pray_dte r)
Pray_dte ray_oppose(Pray_dte r): transformation d'un rayon en son oppose (effet de bord)
void elim_tt_rd(Pray_dte listrd)
void elim_tt_rd(Pray_dte listrd): suppression d'une liste de rayons ou d'une liste de droites
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
#define sg_sommets(sg)
vieilles definitions des fonctions d'impression void sg_fprint(); #define print_sg(sg) sg_fprint(stdo...
#define sg_rayons(sg)
acces au premier rayon de la liste des rayons d'un systeme generateur defini par un pointeur: sg_rayo...
struct type_sg * Ptsg
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites.
#define sg_nbre_sommets(sg)
nombre de sommets: int sg_nbre_sommets(Ptsg)
#define TSG
package sur les systemes generateur sg
#define SG_UNDEFINED_P(sg)
#define sg_nbre_droites(sg)
nombre de droites: int sg_nbre_droites(Ptsg)
#define sg_nbre_rayons(sg)
nombre de rayons: int sg_nbre_rayons(Ptsg)
#define sg_droites(sg)
acces a la premiere droite de la liste des droites d'un systeme generateur defini par un pointeur: sg...
void sg_print(Ptsg sg, char *(*nom_var)(Variable))
For debugging.
Ptsg ajout_dte(Ptsg sg, Variable v)
Ptsg ajout_dte(Ptsg sg, Variable v): ajoute une droite dans la direction correspondant a la variable ...
Ptsg sg_dup(Ptsg sg_in)
Ptsg sg_dup(Ptsg sg_in): allocation d'un systeme generateur sg_out et copie sans sharing des ensemble...
Ptsg sg_new()
Ptsg sg_new(): allocation d'un systeme generateur et initialisation a la valeur ensemble vide.
static int ray_to_direction[3]
void sg_fprint(FILE *f, Ptsg sg, char *(*nom_var)(Variable))
void sg_fprint(FILE * f, Ptsg sg, char * (*nom_var)()): impression d'un systeme generateur
static char * direction_to_representation[8]
static int vertex_to_direction[3]
static bool egal_soms(Ptsg_soms sgs1, Ptsg_soms sgs2)
bool egal_soms(Ptsg_soms sgs1, Ptsg_soms sgs2): test de l'egalite de deux listes de sommets associees...
static int line_to_direction[3]
bool sg_egal(Ptsg sg1, Ptsg sg2)
bool sg_egal(Ptsg sg1, Ptsg sg2): test de l'egalite de deux systemes generateur sg1 et sg2
Ptsg mk_rn(Pbase b)
Ptsg mk_rn(Pbase b): construction du systeme generateur du polyedre qui represente l'espace entier; l...
Ptsg sg_add_ray(Ptsg sg, Pray_dte ray)
Ptsg sg_add_ray(Ptsg sg, Pray_dte ray): ajout d'un rayon a un syteme generateur; aucune allocation n'...
static int sg_debug_level
package pour la structure de donnees tsg (systeme generateur) et pour les deux structures de donnees ...
void sg_rm(Ptsg sg)
void sg_rm(Ptsg sg): liberation de l'espace memoire occupe par un systeme generateur
#define LESSER_DIRECTION
Print a generating system as a dependence direction vector.
void sg_fprint_as_dense(FILE *f, Ptsg sg, Pbase b)
void sg_fprint_as_dense(FILE * f, Ptsg sg): impression d'un systeme generateur
void sg_fprint_as_ddv(FILE *fd, Ptsg sg)
void sg_rm_droites(Ptsg sg)
void sg_rm_droites(Ptsg sg): desallocation d'une liste de droites d'un systeme generateur
bool sommet_in_sg_p(Psommet som, Ptsg sg)
static bool egal_rd(Ptsg_vects rdgs1, Ptsg_vects rdgs2)
bool egal_rd(Ptsg_vects rdgs1, Ptsg_vects rdgs2): test de de l'egalite des deux objets representes pa...
#define GREATER_DIRECTION
void sg_dump(Ptsg sg)
For debugging.
bool dte_in_sg_p(Pray_dte dte, Ptsg sg)
bool ray_in_sg_p(Pray_dte ray, Ptsg sg)
void sg_rm_sommets(Ptsg sg)
void sg_rm_sommets(Ptsg sg): desallocation d'une liste de sommets d'un systeme generateur
Ptsg sg_without_line(Ptsg sg_in)
Ptsg sg_without_line(Ptsg sg_in): allocation d'un systeme generateur et copie d'un systeme generateur...
Ptsg sg_union(Ptsg sg1, Ptsg sg2)
void sg_rm_rayons(Ptsg sg)
void sg_rm_rayons(Ptsg sg): desallocation d'une liste de rayons d'un systeme generateur
#define SOMMET_RM(s, function_name)
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
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
Psommet sommet_make(Value d, Pvecteur v)
Psommet sommet_make(int d, Pvecteur v): allocation et initialisation d'un sommet de denominateur d et...
bool egaliste_s(Psommet l1, Psommet *ad_l2)
bool egaliste_s(Psommet l1, Psommet * ad_l2): test d'egalite de listes de sommets
Psommet sommet_dup(Psommet s_in)
Psommet sommet_dup(Psommet s_in): allocation et copie de la valeur d'un sommet.
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
struct Svecteur * vecteur
Representation d'un ensemble de sommets.
Representation d'un ensemble de droites.
structure de donnees Sommet
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define base_dimension(b)
#define BASE_NULLE
MACROS SUR LES BASES.
Pbase base_dup(Pbase b)
Pbase base_dup(Pbase b) Note: this function changes the value of the pointer.
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...