PIPS
sc_list.c
Go to the documentation of this file.
1 
2 #line 23 "sc_list.w"
3 
4 
5 #line 335 "UNION.w"
6 
7 /* Package : C3/union
8  * Author : Arnauld LESERVOT (leservot(a)limeil.cea.fr)
9  * Date :
10  * Modified : 04 04 95
11  * Documents: UNION.tex : ``Extension de C3 aux unions de polyedres''
12  * Comments :
13  */
14 /*
15  * WARNING
16  *
17  * THOSE FUNCTIONS ARE AUTOMATICALLY DERIVED
18  *
19  * FROM THE WEB SOURCES !
20  */
21 #ifdef HAVE_CONFIG_H
22  #include "config.h"
23 #endif
24 
25 /* Ansi includes */
26 #include <stdlib.h>
27 #include <stdio.h>
28 #include <string.h>
29 #include "linear_assert.h"
30 #include <time.h>
31 #include <sys/time.h>
32 
33 /* Linear includes */
34 #include "boolean.h"
35 #include "arithmetique.h"
36 #include "vecteur.h"
37 #include "contrainte.h"
38 #include "sc.h"
39 #include "sommet.h"
40 #include "polyedre.h"
41 #include "union.h"
42 
43 
44 #line 24 "sc_list.w"
45 
46 
47 #ifdef DEBUG_UNION_LINEAR
48 extern char* entity_local_name(Variable);
49 char* (*union_variable_name)(Variable) = entity_local_name;
50 #else
51 char* (*union_variable_name)(Variable) = variable_default_name;
52 #endif
53 
54 
55 #line 50 "sc_list.w"
56 
57 /* Psysteme sc_full() similar to sc_new */
58 Psysteme sc_full() { return sc_new(); }
59 
60 /* Psysteme sc_full_p( in_ps ) similar to sc_new */
61 bool sc_full_p( in_ps )
62 Psysteme in_ps;
63 { return( (in_ps->nb_eq == 0) && (in_ps->nb_ineq == 0) &&
64  (in_ps->egalites == NULL) && (in_ps->inegalites == NULL) ); }
65 
66 #line 64 "sc_list.w"
67 
68 /* Psysteme sc_dup1( in_ps ) AL 30/05/94
69  * 1 depth copy of in_ps: no duplication of vectors (except for the base).
70  * Sharing !
71  */
73 Psysteme in_ps;
74 {
75  Psysteme cp = SC_UNDEFINED;
76  Pcontrainte eq, eq_cp;
77 
78  if (!SC_UNDEFINED_P(in_ps)) {
79  cp = sc_new();
80 
81  for (eq = in_ps->egalites; eq != NULL; eq = eq->succ) {
82  eq_cp = contrainte_new();
84  sc_add_egalite(cp, eq_cp);
85  }
86 
87  for(eq=in_ps->inegalites;eq!=NULL;eq=eq->succ) {
88  eq_cp = contrainte_new();
90  sc_add_inegalite(cp, eq_cp);
91  }
92 
93  if(in_ps->dimension==0) {
95  cp->dimension = 0;
96  cp->base = VECTEUR_UNDEFINED;
97  }
98  else {
99  assert(in_ps->dimension==vect_size(in_ps->base));
100  cp->dimension = in_ps->dimension;
101  cp->base = vect_dup(in_ps->base);
102  }
103  }
104  return(cp);
105 }
106 
107 #line 106 "sc_list.w"
108 
109 /* Psysteme sc_free( in_ps ) AL 30/05/94
110  * Free of in_ps. Returns NULL to be used as in_ps = sc_free( in_ps );
111  */
113 Psysteme in_ps;
114 { sc_rm( in_ps ); return( (Psysteme) NULL ); }
115 
116 #line 117 "sc_list.w"
117 
118 /* Psysteme sc_free1( in_ps ) AL 30/05/94
119  * Only pcontrainte of in_ps are freed.
120  */
122 Psysteme in_ps;
123 {
124  Pcontrainte pc, pc2;
125 
126  if (in_ps != NULL) {
127  for(pc = in_ps->inegalites; pc != NULL; ) {
128  pc2 = pc;
129  pc = pc->succ;
130  free(pc2);
131  pc2 = NULL;
132  }
133  for(pc = in_ps->egalites; pc != NULL; ) {
134  pc2 = pc;
135  pc = pc->succ;
136  free(pc2);
137  pc2 = NULL;
138  }
139  in_ps->nb_eq = 0;
140  in_ps->nb_ineq = 0;
141  in_ps->dimension = 0;
142  vect_rm( in_ps->base );
143  in_ps->base = NULL;
144 
145  free((char *) in_ps);
146  in_ps = (Psysteme) NULL;
147  }
148  return( (Psysteme) NULL );
149 }
150 
151 #line 155 "sc_list.w"
152 
153 /* Psysteme sc_concatenate( in_s1, in_s2 ) AL 30/05/94
154  * Append in_s2 to the end of in_s1 and returns in_s1.
155  * Freeable with sc_free1(). Sharing.
156  */
158 Psysteme in_s1, in_s2;
159 {
160  Pcontrainte eq;
161  Psysteme s1, s2;
162 
163  s1 = sc_dup1( in_s1 ); s2 = sc_dup1( in_s2 );
164  if (SC_UNDEFINED_P(in_s1)) {s1 = sc_free1(s1); return(s2);}
165  if (SC_UNDEFINED_P(in_s2)) {s2 = sc_free1(s2); return(s1);}
166 
167  if (s1->nb_eq != 0) {
168  for (eq = s1->egalites; eq->succ != (Pcontrainte)NULL; eq = eq->succ) ;
169  eq->succ = s2->egalites; s1->nb_eq += s2->nb_eq;
170  }
171  else { s1->egalites = s2->egalites; s1->nb_eq = s2->nb_eq; }
172 
173  if (s1->nb_ineq != 0) {
174  for (eq = s1->inegalites;eq->succ != (Pcontrainte)NULL;eq = eq->succ) ;
175  eq->succ = s2->inegalites; s1->nb_ineq += s2->nb_ineq;
176  }
177  else { s1->inegalites = s2->inegalites; s1->nb_ineq = s2->nb_ineq; }
178 
179  /* Memory management and returns */
180  vect_rm( s1->base ); vect_rm( s2->base ); free( s2 ); s2 = NULL;
181  s1->base = NULL; sc_creer_base( s1 );
182  return(s1);
183 }
184 
185 #line 33 "sc_list.w"
186 
187 
188 #line 202 "sc_list.w"
189 
190 /* int sl_length( (Psyslist) in_sl ) AL 26/04/95
191  * Returns length of in_sl.
192  */
193 bool sl_length( in_sl )
194 Psyslist in_sl;
195 {
196  int length; Psyslist sl = in_sl;
197  if (in_sl == NULL) return 0;
198  for(length = 0; sl != NULL; sl = sl->succ, length++);
199  return length;
200 }
201 
202 #line 220 "sc_list.w"
203 
204 /* int sl_max_constraints_nb( (Psyslist) in_sl )
205  * Give the maximum constraints nb among systems of in_sl.
206  */
208 Psyslist in_sl;
209 {
210  Psysteme ps;
211  int ret_int = 0;
212 
213  if (in_sl == NULL) return 0;
214 
215  for(; in_sl != NULL; in_sl = in_sl->succ) {
216  int loc;
217  ps = in_sl->psys;
218  if (sc_empty_p(ps)) continue;
219  loc = 2*(ps->nb_eq) + ps->nb_ineq;
220  if (loc > ret_int) ret_int = loc;
221  }
222  return ret_int;
223 }
224 
225 #line 246 "sc_list.w"
226 
227 /* bool sl_is_system_p( (Psyslist) in_sl ) AL 16/11/93
228  * Returns True if syslist in_sl has only one Psysteme in it.
229  */
230 bool sl_is_system_p( in_sl )
231 Psyslist in_sl;
232 { return ( sl_length(in_sl) == 1 ); }
233 #line 256 "sc_list.w"
234 
235 /* Psyslist sl_append_system( (Psyslist) in_sl, (Psysteme) in_ps )
236  * Input : A disjunct in_sl to wich in_ps will be added.
237  * Output : Disjunct in_sl with in_ps. => ! Sharing.
238  * Comment: Nothing is checked on result in_sl. AL 10/11/93
239  */
240 Psyslist sl_append_system( in_sl, in_ps )
241 Psyslist in_sl;
242 Psysteme in_ps;
243 {
244  Psyslist ret_sl;
245 
246  if (in_ps == NULL) return( in_sl );
247  ret_sl = sl_new(); ret_sl->psys = in_ps; ret_sl->succ = in_sl;
248  return( ret_sl );
249 }
250 
251 #line 277 "sc_list.w"
252 
253 /* Psyslist sl_append_system_first( in_sl, in_ps ) AL 23/03/95
254  * A new Psyslist with in_ps at the end of in_sl (sharing).
255  */
257 Psyslist in_sl;
258 Psysteme in_ps;
259 {
260  Psyslist new_sl = SL_NULL, sl = SL_NULL;
261 
262  if (in_ps == NULL) return( in_sl );
263  new_sl = sl_append_system(NULL, in_ps);
264  if (in_sl == SL_NULL) return new_sl;
265  if (in_sl->succ == NULL) { in_sl->succ = new_sl ; return in_sl; }
266  for(sl = in_sl; (sl->succ != NULL); sl = sl->succ) {}
267  sl->succ = new_sl;
268  return( in_sl );
269 }
270 
271 #line 298 "sc_list.w"
272 
273 /* Psyslist sl_new() AL 26/10/93
274  * Input : Nothing.
275  * Output : An empty syslist.
276  */
278 {
279  Psyslist p;
280 
281  p = (Psyslist) malloc(sizeof(Ssyslist));
282  if (p == NULL) {
283  (void) fprintf(stderr,"sl_new: Out of memory space\n");
284  exit(-1);
285  }
286  p->psys = (Psysteme ) NULL; p->succ = (Psyslist) NULL;
287  return(p);
288 }
289 
290 #line 318 "sc_list.w"
291 
292 /* Psyslist sl_dup( (Psyslist) in_sl ) AL 15/11/93
293  * w - 1 duplication : everything is duplicated, except entities.
294  * Duplicates input syslist.
295  */
296 Psyslist sl_dup( in_sl )
297 Psyslist in_sl;
298 {
299  Psyslist sl, ret_sl = SL_NULL;
300  for( sl = in_sl; sl != NULL; sl = sl->succ ) {
301  ret_sl = sl_append_system( ret_sl, sc_dup( sl->psys ) );
302  }
303  return ret_sl;
304 }
305 
306 #line 336 "sc_list.w"
307 
308 /* Psyslist sl_dup1( (Psyslist) in_sl ) AL 15/11/93
309  * Duplicates input syslist. Sharing.
310  */
312 Psyslist in_sl;
313 {
314  Psyslist sl, ret_sl = NULL;
315  for( sl = in_sl; sl != NULL; sl = sl->succ ) {
316  if ( sl->psys == SC_UNDEFINED ) continue;
317  ret_sl = sl_append_system( ret_sl, sl->psys );
318  }
319  return ret_sl;
320 }
321 
322 #line 354 "sc_list.w"
323 
324 /* Psyslist sl_free(Psyslist psl) BA, AL 30/05/94
325  * w - 1 depth free.
326  */
328 Psyslist psl;
329 {
330  if( psl != SL_NULL ) {
331  psl->psys = sc_free( psl->psys );
332  psl->succ = sl_free(psl->succ);
333  free( psl ); psl = NULL;
334  }
335  return SL_NULL;
336 }
337 
338 #line 373 "sc_list.w"
339 
340 /* Psyslist sl_free1(Psyslist psl) AL 30/05/94
341  * 1 depth free.
342  */
344 Psyslist psl;
345 {
346  if( psl != SL_NULL ) {
347  psl->psys = (Psysteme) NULL;
348  psl->succ = sl_free1(psl->succ);
349  free( psl );
350  }
351  return SL_NULL;
352 }
353 
354 #line 470 "sl_io.w"
355 
356 /* char* sl_set_variable_name( in_fu ) give the function to read variables */
357 void sl_set_variable_name( in_fu )
358 char* (*in_fu)();
359 {
360  union_variable_name = in_fu;
361 }
362 
363 #line 482 "sl_io.w"
364 
365 /* char* sl_get_tab_string( in_tab ) returns a string of in_tab \t */
366 char* sl_get_tab_string( in_tab )
367 int in_tab;
368 {
369  int d;
370  static char name[20];
371 #ifndef strdup
372  extern char* strdup();
373 #endif
374 
375  if (in_tab == 0) return strdup("");
376  assert( (in_tab > 0) && (in_tab < 20) );
377  for(d = 0; d < in_tab; d++){ sprintf(&name[d],"\t"); }
378  return strdup(name);
379 }
380 
381 #line 505 "sl_io.w"
382 
383 void sl_fprint_tab( in_fi, in_sl, in_fu, in_tab )
384 FILE* in_fi;
385 Psyslist in_sl;
386 char *(*in_fu)();
387 int in_tab;
388 {
389  Pcontrainte peq = NULL;
390  Psyslist sl = NULL;
391  Pbase b = NULL, b1;
392  char* tabs = sl_get_tab_string( in_tab );
393 
394  if (in_sl == SL_NULL) {
395  fprintf( in_fi, "\n%sSL_NULL\n", tabs );
396  free(tabs); return;
397  }
398 
399  /* Prints the VAR part */
400  for(sl = in_sl; sl != NULL; sl = sl->succ) {
401  if (sl->psys == NULL) continue;
402  b1 = b;
403  b = base_union( b, (sl->psys)->base );
404  if ( b != b1 ) { vect_rm( b1 ); b1 = (Pvecteur) NULL; }
405  }
406 
407  if (vect_size( b ) >= 1 ) {
408  fprintf( in_fi,"%s", tabs);
409  fprintf( in_fi,"VAR %s", (*in_fu)(vecteur_var(b)));
410  for (b1=b->succ; !VECTEUR_NUL_P(b1); b1 = b1->succ)
411  fprintf(in_fi,", %s",(*in_fu)(vecteur_var(b1)));
412  }
413 
414  vect_rm( (Pvecteur) b ); b = (Pvecteur) NULL;
415 
416  /* Prints Psysteme list */
417  for(sl = in_sl ; sl != NULL; sl = sl->succ) {
418  Psysteme ps = NULL;
419 
420  ps = sl->psys;
421 
422  /* Special cases */
423  if ( SC_UNDEFINED_P(ps) )
424  {fprintf( in_fi, "\n%sSC_UNDEFINED\n", tabs); continue; }
425  if ( sc_full_p(ps) )
426  {fprintf( in_fi, "\n%sSC_FULL\n", tabs); continue; }
427  if ( sc_empty_p(ps) )
428  {fprintf( in_fi, "\n%sSC_EMPTY\n", tabs); continue; }
429 
430 
431  /* General Cases */
432  fprintf(in_fi,"\n%s { \n", tabs);
433 
434  for (peq = ps->inegalites;peq!=NULL;
435  fprintf(in_fi,"%s", tabs),
436  inegalite_fprint(in_fi,peq,in_fu),peq=peq->succ);
437 
438  for (peq = ps->egalites;peq!=NULL;
439  fprintf(in_fi,"%s", tabs),
440  egalite_fprint(in_fi,peq,in_fu),peq=peq->succ);
441 
442  fprintf(in_fi,"%s } \n", tabs);
443  }
444  free( tabs );
445 }
446 
447 void sl_fprint( in_fi, in_sl, in_fu )
448 FILE* in_fi ;
449 Psyslist in_sl ;
450 char *(*in_fu)() ;
451 { sl_fprint_tab( in_fi, in_sl, in_fu, 0 ); }
452 
453 
454 
455 extern Psyslist sl_yacc; /* Psysteme construit par sl_gram.y */
456 extern FILE* slx_in; /* fichier lu par sl_lex.l */
457 extern int slx_parse(void);
458 extern void sl_init_lex(void);
459 
460 /* void sl_read(FILE*) reads a Psyslist */
461 Psyslist sl_read( nomfic )
462 char* nomfic;
463 {
464  if ((slx_in = fopen(nomfic, "r")) == NULL) {
465  (void) fprintf(stderr, "Ouverture du fichier %s impossible\n",nomfic);
466  exit(4);
467  }
468  sl_init_lex(); slx_parse(); fclose( slx_in );
469  return( sl_yacc );
470 }
471 
472 #line 677 "sl_io.w"
473 
474 /* void un_fprint_tab(FILE*, Pdisjunct, function, type, tab) prints a union */
475 void un_fprint_tab( in_fi, in_un, in_fu, in_ty, in_tab )
476 FILE* in_fi;
477 char* in_un;
478 char *(*in_fu)();
479 int in_ty;
480 int in_tab;
481 {
482  switch( in_ty ) {
483 
484  case IS_SC:
485  fprintf ( in_fi, "Systeme:\n");
486  sc_fprint( in_fi, (Psysteme) in_un, in_fu );
487  break;
488 
489  case IS_SL:
490  fprintf ( in_fi, "%sSyslist:\n", sl_get_tab_string( in_tab ));
491  sl_fprint_tab( in_fi, (Psyslist) in_un, in_fu, in_tab );
492  break;
493 
494  case IS_DJ:
495  dj_fprint( in_fi, (Pdisjunct) in_un, in_fu );
496  break;
497 
498  case IS_PA:
499  pa_fprint( in_fi, (Ppath) in_un, in_fu );
500  break;
501 
502  default: {}
503  }
504 }
505 
506 #line 34 "sc_list.w"
507 
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...
Definition: base.c:428
#define contrainte_vecteur(c)
passage au champ vecteur d'une contrainte "a la Newgen"
Pcontrainte contrainte_new(void)
package contrainte - allocations et desallocations
Definition: alloc.c:47
void egalite_fprint(FILE *, Pcontrainte, char *(*)(Variable))
void inegalite_fprint(FILE *, Pcontrainte, char *(*)(Variable))
if(!(yy_init))
Definition: genread_lex.c:1029
void * malloc(YYSIZE_T)
void free(void *)
int vect_size(Pvecteur v)
package vecteur - reductions
Definition: reductions.c:47
char * variable_default_name(Variable v)
char * variable_default_name(Variable v): returns the name of variable v
Definition: variable.c:81
#define exit(code)
Definition: misc-local.h:54
#define assert(ex)
Definition: newgen_assert.h:41
const char * entity_local_name(entity e)
entity_local_name modified so that it does not core when used in vect_fprint, since someone thought t...
Definition: entity.c:453
struct Ssysteme * Psysteme
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
Definition: sc_alloc.c:129
void sc_rm(Psysteme ps)
void sc_rm(Psysteme ps): liberation de l'espace memoire occupe par le systeme de contraintes ps;
Definition: sc_alloc.c:277
void sc_add_egalite(Psysteme p, Pcontrainte e)
void sc_add_egalite(Psysteme p, Pcontrainte e): macro ajoutant une egalite e a un systeme p; la base ...
Definition: sc_alloc.c:389
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
Definition: sc_alloc.c:55
bool sc_empty_p(Psysteme sc)
bool sc_empty_p(Psysteme sc): check if the set associated to sc is the constant sc_empty or not.
Definition: sc_alloc.c:350
void sc_add_inegalite(Psysteme p, Pcontrainte i)
void sc_add_inegalite(Psysteme p, Pcontrainte i): macro ajoutant une inegalite i a un systeme p; la b...
Definition: sc_alloc.c:406
Psysteme sc_dup(Psysteme ps)
Psysteme sc_dup(Psysteme ps): should becomes a link.
Definition: sc_alloc.c:176
Value b1
booleen indiquant quel membre est en cours d'analyse
Definition: sc_gram.c:105
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
Definition: sc_gram.c:108
Pvecteur cp
pointeur sur l'egalite ou l'inegalite courante
Definition: sc_read.c:87
void sc_fprint(FILE *fp, Psysteme ps, get_variable_name_t nom_var)
void sc_fprint(FILE * f, Psysteme ps, char * (*nom_var)()): cette fonction imprime dans le fichier po...
Definition: sc_io.c:220
Psyslist sl_append_system_first(Psyslist in_sl, Psysteme in_ps)
Psyslist sl_append_system_first( in_sl, in_ps ) AL 23/03/95 A new Psyslist with in_ps at the end of i...
Definition: sc_list.c:256
void sl_fprint(in_fi, in_sl, char *(*in_fu)())
Definition: sc_list.c:447
void sl_set_variable_name(char *(*in_fu)())
char* sl_set_variable_name( in_fu ) give the function to read variables
Definition: sc_list.c:357
Psysteme sc_dup1(Psysteme in_ps)
Psysteme sc_dup1( in_ps ) AL 30/05/94 1 depth copy of in_ps: no duplication of vectors (except for th...
Definition: sc_list.c:72
Psysteme sc_free(Psysteme in_ps)
Psysteme sc_free( in_ps ) AL 30/05/94 Free of in_ps.
Definition: sc_list.c:112
Psyslist sl_free1(Psyslist psl)
Psyslist sl_free1(Psyslist psl) AL 30/05/94 1 depth free.
Definition: sc_list.c:343
Psysteme sc_full()
Psysteme sc_full() similar to sc_new.
Definition: sc_list.c:58
Psyslist sl_free(Psyslist psl)
Psyslist sl_free(Psyslist psl) BA, AL 30/05/94 w - 1 depth free.
Definition: sc_list.c:327
bool sl_is_system_p(Psyslist in_sl)
bool sl_is_system_p( (Psyslist) in_sl ) AL 16/11/93 Returns True if syslist in_sl has only one Psyste...
Definition: sc_list.c:230
char *(* union_variable_name)(Variable)
Package : C3/union Author : Arnauld LESERVOT (leservot(a)limeil.cea.fr) Date : Modified : 04 04 95 ...
Definition: sc_list.c:51
Psyslist sl_append_system(Psyslist in_sl, Psysteme in_ps)
Psyslist sl_append_system( (Psyslist) in_sl, (Psysteme) in_ps ) Input : A disjunct in_sl to wich in_p...
Definition: sc_list.c:240
Psyslist sl_dup1(Psyslist in_sl)
Psyslist sl_dup1( (Psyslist) in_sl ) AL 15/11/93 Duplicates input syslist.
Definition: sc_list.c:311
Psysteme sc_concatenate(Psysteme in_s1, Psysteme in_s2)
Psysteme sc_concatenate( in_s1, in_s2 ) AL 30/05/94 Append in_s2 to the end of in_s1 and returns in_s...
Definition: sc_list.c:157
Psysteme sc_free1(Psysteme in_ps)
Psysteme sc_free1( in_ps ) AL 30/05/94 Only pcontrainte of in_ps are freed.
Definition: sc_list.c:121
int sl_max_constraints_nb(Psyslist in_sl)
int sl_max_constraints_nb( (Psyslist) in_sl ) Give the maximum constraints nb among systems of in_sl.
Definition: sc_list.c:207
char * sl_get_tab_string(int in_tab)
char* sl_get_tab_string( in_tab ) returns a string of in_tab \t
Definition: sc_list.c:366
Psyslist sl_yacc
Definition: sl_gram.c:113
Psyslist sl_read(char *nomfic)
void sl_read(FILE*) reads a Psyslist
Definition: sc_list.c:461
void un_fprint_tab(FILE *in_fi, char *in_un, char *(*in_fu)(), int in_ty, int in_tab)
void un_fprint_tab(FILE*, Pdisjunct, function, type, tab) prints a union
Definition: sc_list.c:475
bool sc_full_p(Psysteme in_ps)
Psysteme sc_full_p( in_ps ) similar to sc_new.
Definition: sc_list.c:61
void sl_init_lex(void)
Psyslist sl_dup(Psyslist in_sl)
Psyslist sl_dup( (Psyslist) in_sl ) AL 15/11/93 w - 1 duplication : everything is duplicated,...
Definition: sc_list.c:296
FILE * slx_in
Psysteme construit par sl_gram.y.
int slx_parse(void)
fichier lu par sl_lex.l
Psyslist sl_new()
Psyslist sl_new() AL 26/10/93 Input : Nothing.
Definition: sc_list.c:277
bool sl_length(Psyslist in_sl)
int sl_length( (Psyslist) in_sl ) AL 26/04/95 Returns length of in_sl.
Definition: sc_list.c:193
void sl_fprint_tab(FILE *in_fi, Psyslist in_sl, char *(*in_fu)(), int in_tab)
Definition: sc_list.c:383
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
char * strdup()
s1
Definition: set.c:247
struct Scontrainte * succ
Warning! Do not modify this file that is automatically generated!
Definition: union-local.h:3
Psysteme psys
Definition: union-local.h:4
struct Ssyslist * succ
Definition: union-local.h:5
Pcontrainte inegalites
Definition: sc-local.h:71
Pcontrainte egalites
Definition: sc-local.h:70
Pbase base
Definition: sc-local.h:75
int dimension
Definition: sc-local.h:74
int nb_ineq
Definition: sc-local.h:73
int nb_eq
Definition: sc-local.h:72
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
struct Svecteur * succ
Definition: vecteur-local.h:92
#define pa_fprint(fi, pa, fu)
Definition: union-local.h:109
#define dj_fprint(fi, dj, fu)
Definition: union-local.h:96
#define SL_NULL
Definition: union-local.h:8
#define IS_DJ
Definition: union-local.h:135
#define IS_SC
Definition: union-local.h:133
struct Ssyslist * Psyslist
#define IS_PA
Definition: union-local.h:136
#define IS_SL
Definition: union-local.h:134
#define vecteur_var(v)
#define VECTEUR_UNDEFINED
struct Svecteur * Pvecteur
#define VECTEUR_NUL_P(v)
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Definition: vecteur-local.h:60
#define VECTEUR_UNDEFINED_P(v)
Pvecteur vect_dup(Pvecteur v_in)
Pvecteur vect_dup(Pvecteur v_in): duplication du vecteur v_in; allocation de et copie dans v_out;.
Definition: alloc.c:51
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
Definition: alloc.c:78