PIPS
sc_minmax.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "linear_assert.h"
#include "boolean.h"
#include "arithmetique.h"
#include "vecteur.h"
#include "contrainte.h"
#include "sc.h"
+ Include dependency graph for sc_minmax.c:

Go to the source code of this file.

Functions

int main (int argc, const char **argv)
 

Function Documentation

◆ main()

int main ( int  argc,
const char **  argv 
)

Definition at line 15 of file sc_minmax.c.

16 {
17  if (argc != 2) {
18  fprintf(stderr, "Usage: %s sc1\n", argv[0]);
19  exit(1);
20  }
21 
22  const char *n1 = argv[1];
23 
24  // open input files
25  FILE *f1;
26  if ((f1 = fopen(n1,"r")) == NULL) {
27  fprintf(stderr, "cannot open file: %s\n", n1);
28  exit(4);
29  }
30 
31 
32  Psysteme s1 = sc_new();
33  if (sc_fscan(f1, &s1)) {
34  fprintf(stderr,"file syntax is ok: %s\n", n1);
37  }
38  else {
39  fprintf(stderr, "syntax error in file: %s\n", n1);
40  exit(1);
41  }
42 
43  Value min=0;
44  Value max=0;
45  Psysteme sc= sc_new();
46  Psysteme scd= sc_new();
47  Pvecteur pv;
48  bool bl;
49  Variable v;
50 
51  sc = sc_copy(s1);
52  for (pv =sc->base;!VECTEUR_NUL_P(pv); pv=pv->succ){
53  v=pv->var;
54  scd=sc_copy(sc);
56  // sc_minmax_of_variable detruit le systeme
57 
58  if (!(bl = sc_minmax_of_variable(scd,v,&min,&max))) {
59 
60  printf("Pb computing loop bounds for v= %s\n",variable_default_name(v));
61  sc_fprint(stdout,scd , *variable_default_name);
62  }
63  else {
64  printf("Loop bounds for %s= [%d,%d]\n",variable_default_name(v), (int)min,(int)max);
65  }
66  sc_rm(scd);
67  }
68 
69  return 0;
70 }
#define VALUE_ZERO
int Value
#define min(a, b)
#define max(a, b)
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
bool sc_weak_consistent_p(Psysteme sc)
check that sc is well defined, that the numbers of equalities and inequalities are consistent with th...
Definition: sc.c:362
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
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
Definition: sc_alloc.c:55
Psysteme sc_copy(Psysteme ps)
Psysteme sc_copy(Psysteme ps): duplication d'un systeme (allocation et copie complete des champs sans...
Definition: sc_alloc.c:230
bool sc_minmax_of_variable(Psysteme ps, Variable var, Value *pmin, Value *pmax)
void sc_minmax_of_variable(Psysteme ps, Variable var, Value *pmin, *pmax): examine un systeme pour tr...
Definition: sc_eval.c:143
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
bool sc_fscan(FILE *f, Psysteme *ps)
bool sc_fscan(FILE * f, Psysteme * ps): construit un systeme d'inegalites et d'egalites lineaires a p...
Definition: sc_io.c:121
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
int printf()
s1
Definition: set.c:247
Pbase base
Definition: sc-local.h:75
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
Variable var
Definition: vecteur-local.h:90
struct Svecteur * succ
Definition: vecteur-local.h:92
#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

References assert, Ssysteme::base, exit, fprintf(), max, min, printf(), s1, sc_copy(), sc_fprint(), sc_fscan(), sc_minmax_of_variable(), sc_new(), sc_rm(), sc_weak_consistent_p(), Svecteur::succ, VALUE_ZERO, Svecteur::var, variable_default_name(), and VECTEUR_NUL_P.

+ Here is the call graph for this function: