140 for(c=sc_inegalites(
s1);
152 for(c=sc_egalites(
s1);
161 return(sc_nredund(&
new),
new);
236 fprintf(stderr,
"[build_sc_nredund_1pass_ofl_ctrl] "
237 "too many exceptions in redundancy elimination... function stopped.\n");
280 static int francois_check = 0;
282 if(francois_check && !SC_UNDEFINED_P(ps))
292 fprintf(stderr,
"after normalize: \n");
295 assert(!SC_UNDEFINED_P(*psc));
300 fprintf(stderr,
"after first nredund: \n");
333 if (SC_UNDEFINED_P(*psc))
350 (pc2,index_base,ineq,var_hr,tab_info,rank_max)
365 if (tab_info[rank_hr][1]) {
373 if (((sign >0) && (tab_info[rank_hr][2]>1))
374 || ((sign <0) && (tab_info[rank_hr][3]>1)))
386 int right_rank, left_rank;
387 Value right_coeff, left_coeff;
392 &right_var,&right_rank,&right_coeff,
393 &left_var,&left_rank,&left_coeff);
394 *rank_max =
MAX(right_rank,left_rank);
395 if (((right_rank>left_rank)
397 (tab_info[right_rank][2] <=1))
399 (tab_info[right_rank][3] <=1))))
400 || ((right_rank<left_rank)
402 (tab_info[left_rank][2]<=1))
404 (tab_info[left_rank][3] <=1)))))
408 if (!trouve) result =
true;
446 int rank_hr,rank_max = 0;
451 if (SC_UNDEFINED_P(ps) || SC_EMPTY_P(ps) ||
sc_empty_p(ps) )
480 (ps->
inegalites,index_base,ineq, var_hr,tab_info, &rank_max)
481 && (rank_max >= loop_level)) {
509 if (sign >0) tab_info[rank_hr][2] --;
510 else if (sign <0) tab_info[rank_hr][3]--;
559 ineg = sc_integer_inequalities_combination_ofl_ctrl
float a2sf[2] __attribute__((aligned(16)))
USER generates a user error (i.e., non fatal) by printing the given MSG according to the FMT.
#define value_sign(v)
trian operators on values
#define value_notzero_p(val)
int linear_number_of_exception_thrown
int rank_of_variable(Pbase base, Variable var)
this function returns the rank of the variable var in the base 0 encodes TCST, but I do not know why,...
int search_higher_rank(Pvecteur vect, Pbase base)
int search_higher_rank(): this fonction returns the rank of the variable of higher rank in the vecteu...
#define CONTRAINTE_UNDEFINED_P(c)
#define CONTRAINTE_NULLE_P(c)
contrainte nulle (non contrainte 0 == 0 ou 0 <= 0)
#define CONTRAINTE_UNDEFINED
#define contrainte_rm(c)
the standard xxx_rm does not return a value
Pcontrainte contraintes_copy(Pcontrainte c_in)
Pcontrainte contraintes_copy(Pcontrainte c_in) a list of constraints is copied with the same order In...
Pcontrainte contrainte_free(Pcontrainte c)
Pcontrainte contrainte_free(Pcontrainte c): liberation de l'espace memoire alloue a la contrainte c a...
Pcontrainte contrainte_copy(Pcontrainte c_in)
Have a look at contrainte_dup and contraintes_dup which reverse the order of the list This copy versi...
void contrainte_reverse(Pcontrainte)
void contrainte_reverse(Pcontrainte eq): changement de signe d'une contrainte, i.e.
void contrainte_chg_sgn(Pcontrainte)
void contrainte_chg_sgn(Pcontrainte eq): changement de signe d'une contrainte, i.e.
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg)
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg): allocation et initialisation d'un systeme d'equ...
bool sc_rn_p(Psysteme sc)
bool sc_rn_p(Psysteme sc): check if the set associated to sc is the whole space, rn
Psysteme sc_empty(Pbase b)
Psysteme sc_empty(Pbase b): build a Psysteme with one unfeasible constraint to define the empty subsp...
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
void sc_rm(Psysteme ps)
void sc_rm(Psysteme ps): liberation de l'espace memoire occupe par le systeme de contraintes ps;
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
Psysteme sc_init_with_sc(Psysteme sc)
This function returns a new empty system which has been initialized with the same dimension and base ...
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.
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...
Psysteme sc_copy(Psysteme ps)
Psysteme sc_copy(Psysteme ps): duplication d'un systeme (allocation et copie complete des champs sans...
bool sc_belongs_p(Psysteme ps, Pvecteur v)
package sc
void build_sc_nredund_1pass(Psysteme volatile *ps)
Computation of a new system sc from the system ps, where each constraint of the system ps is added to...
static bool sc_elim_triang_integer_redund_constraint_p(Pcontrainte pc2, Pbase index_base, Pcontrainte ineq, Variable var_hr, tab_info, int *rank_max)
This function returns true if the constraint ineq can be eliminated from the system sc and false oter...
void build_sc_nredund_2pass_ofl_ctrl(Psysteme volatile *psc, int ofl_ctrl)
bool ineq_redund_with_sc_p(Psysteme sc, Pcontrainte ineq)
This function returns true if the inequation ineq is redundant for the system ps and false otherwise.
void sc_safe_build_sc_nredund_2pass(Psysteme volatile *ps)
void build_sc_nredund_2pass(Psysteme volatile *psc)
void build_sc_nredund_2pass Psysteme *psc;
Psysteme build_integer_sc_nredund(volatile Psysteme ps, Pbase index_base, int tab_info[][4], int loop_level, int dim_h __attribute__((unused)), int n __attribute__((unused)))
Computation of a new system sc from the system ps, where each constraint of the system ps is added to...
bool bound_redund_with_sc_p(Psysteme sc, Pcontrainte ineq1, Pcontrainte ineq2, Variable var)
This function returns true if the constraint C (resulting of the combination of the two constraints i...
Psysteme extract_nredund_subsystem(Psysteme s1, Psysteme s2)
Psysteme extract_nredund_subsystem(s1, s2) Psysteme s1, s2;.
bool eq_redund_with_sc_p(Psysteme sc, Pcontrainte eq)
bool eq_redund_with_sc_p(sc, eq) Psysteme sc; Pcontrainte eq;
void sc_safe_build_sc_nredund_1pass(Psysteme volatile *ps)
void build_sc_nredund_1pass_ofl_ctrl(Psysteme volatile *psc, int ofl_ctrl)
Psysteme build_sc_nredund_1pass_ofl_ctrl(Psysteme ps, int ofl_ctrl) input : a system in which redunda...
bool sc_rational_feasibility_ofl_ctrl(Psysteme sc, int ofl_ctrl, bool ofl_res)
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
Variable variable_of_rank()
void constraint_integer_combination(Pbase index_base, Pcontrainte ineq1, Pcontrainte ineq2, int rank, Variable *right_var, int *right_rank, Value *right_coeff, Variable *left_var, int *left_rank, Value *left_coeff)
This function computes the coefficients of the constraint resulting from the elimination of the varia...
void sc_default_dump(Psysteme sc)
void sc_default_dump(Psysteme sc): dump to stderr
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
Psysteme sc_normalize(Psysteme ps)
Psysteme sc_normalize(Psysteme ps): normalisation d'un systeme d'equation et d'inequations lineaires ...
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define BASE_NULLE
MACROS SUR LES BASES.
#define OFL_CTRL
I do thing that overflows are managed in a very poor manner.
Pbase base_dup(Pbase b)
Pbase base_dup(Pbase b) Note: this function changes the value of the pointer.
Pvecteur vect_make_dense(Pbase b, Value val,...)
Allocate a new vector v whose coefficient are given by the list of values ad whose dimension is given...
Pbase base_copy(Pbase b)
Direct duplication.
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...