102 char * (*variable_name)();
156 new->
succ = *pwithout,
188 for(c = *pinit, next=(c==NULL ? NULL : c->
succ);
190 c=next, next=(c==NULL ? NULL : c->
succ))
195 c->
succ = upper, upper = c;
197 c->
succ = lower, lower = c;
199 c->
succ = remain, remain = c;
223 for (pc=c; pc!=NULL; pc=pc->succ)
224 if ((var==NULL) ||
vect_coeff(var, pc->vecteur)!=0)
274 cprev=(cprev==NULL) ? *pc : cprev->
succ;
303 for (pv = pc->vecteur;
307 for (i=1, trouve=
false, pb=base_index;
310 if (pv->
var == pb->var)
327 for (; c!=NULL; c=c->succ)
349 bool rm_if_not_first_p;
354 if (contraintes == NULL)
357 result = pred = eq1 = NULL;
375 if (rm_if_not_first_p && pred != NULL) {
506 for (elem=table; n>1; elem++, n--)
507 (*elem)->succ=*(elem+1);
527 case 1:
if (v->
var)
return v->
var;
else return NULL;
#define value_sign(v)
trian operators on values
#define value_notzero_p(val)
void const char const char const int
#define value_zero_p(val)
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,...
Pvecteur vect_translate(Pvecteur v, Pbase b, char *(*variable_name)(Variable))
Pvecteur vect_translate(Pvecteur v, Pbase b, char * (*variable_name)()): modify vector v so that its ...
Pvecteur vect_variable_rename(Pvecteur v, Variable v_old, Variable v_new)
Pvecteur vect_variable_rename(Pvecteur v, Variable v_old, Variable v_new): rename the potential coord...
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...
bdt base
Current expression.
#define CONTRAINTE_UNDEFINED_P(c)
#define contrainte_vecteur(c)
passage au champ vecteur d'une contrainte "a la Newgen"
#define CONTRAINTE_UNDEFINED
struct Scontrainte * Pcontrainte
Pcontrainte contrainte_make(Pvecteur pv)
Pcontrainte contrainte_make(Pvecteur pv): allocation et initialisation d'une contrainte avec un vecte...
Pcontrainte contrainte_dup(Pcontrainte c_in)
Pcontrainte contrainte_dup(Pcontrainte c_in): allocation d'une contrainte c_out prenant la valeur de ...
void Pcontrainte_separate_on_vars(Pcontrainte initial, Pbase vars, Pcontrainte *pwith, Pcontrainte *pwithout)
void Pcontrainte_separate_on_vars(initial, vars, pwith, pwithout) Pcontrainte initial; Pbase vars; Pc...
void contrainte_reverse(Pcontrainte c)
void contrainte_reverse(Pcontrainte eq): changement de signe d'une contrainte, i.e.
Pcontrainte contrainte_var_min_coeff(Pcontrainte contraintes, Variable v, Value *coeff, bool rm_if_not_first_p)
Pcontrainte contrainte_var_min_coeff(Pcontrainte contraintes, Variable v, int *coeff) input : a list ...
int equation_lexicographic_compare(Pcontrainte c1, Pcontrainte c2, int(*compare)(Pvecteur *, Pvecteur *))
int inequality_lexicographic_compare(Pcontrainte c1, Pcontrainte c2, int(*compare)(Pvecteur *, Pvecteur *))
Pcontrainte equations_lexicographic_sort(Pcontrainte cl, int(*compare)(Pvecteur *, Pvecteur *))
void constraints_for_bounds(Variable var, Pcontrainte *pinit, Pcontrainte *plower, Pcontrainte *pupper)
void constraints_for_bounds(var, pinit, plower, pupper) Variable var; Pcontrainte *pinit,...
void contrainte_vect_sort(Pcontrainte c, int *compare)
it sorts the vectors as expected.
void contrainte_chg_sgn(Pcontrainte c)
void contrainte_chg_sgn(Pcontrainte eq): changement de signe d'une contrainte, i.e.
static int internal_equation_compare(Pcontrainte *pc1, Pcontrainte *pc2)
Pcontrainte contrainte_dup_extract(Pcontrainte c, Variable var)
Pcontrainte contrainte_dup_extract(c, var) Pcontrainte c; Variable var;.
static int internal_inequality_compare(Pcontrainte *pc1, Pcontrainte *pc2)
int level_contrainte(Pcontrainte pc, Pbase base_index)
int level_contrainte(Pcontrainte pc, Pbase base_index) compute the level (rank) of the constraint pc ...
void eq_set_vect_nul(Pcontrainte c)
void_eq_set_vect_nul(Pcontrainte c): transformation d'une contrainte en une contrainte triviale 0 == ...
Pcontrainte constraints_lexicographic_sort_generic(Pcontrainte cl, int(*compare)(Pvecteur *, Pvecteur *), bool is_equation)
Pcontrainte contrainte_variable_rename(Pcontrainte c, Variable v_old, Variable v_new)
Pcontrainte contrainte_variable_rename(Pcontrainte c, Variable v_old, Variable v_new): rename the pot...
static int(* lexicographic_compare)(Pvecteur *, Pvecteur *)
Required because qsort (and C) do no let us parametrize the comparison function (no lambda closure).
Pcontrainte constraints_lexicographic_sort(Pcontrainte cl, int(*compare)(Pvecteur *, Pvecteur *))
For historical reasons, equal to equations_lexicographic_sort()
Pcontrainte contrainte_extract(Pcontrainte *pc, Pbase base, Variable var)
Pcontrainte contrainte_extract(pc, base, var) Pcontrainte *pc; Pbase base; Variable var;.
Pcontrainte inequalities_lexicographic_sort(Pcontrainte cl, int(*compare)(Pvecteur *, Pvecteur *))
Pcontrainte contrainte_translate(Pcontrainte c, Pbase b, char *(*variable_name)())
Pcontrainte contrainte_translate(Pcontrainte c, Pbase b, char * (*variable_name)()): normalisation de...
Variable contrainte_simple_equality(Pcontrainte e)
returns whether a constraint is a simple equality: X == 12 the system is expected to be normalized?
void norm_eq(Pcontrainte nr)
PACKAGE CONTRAINTE - OPERATIONS UNAIRES.
int nb_elems_list(Pcontrainte)
int nb_elems_list(Pcontrainte list): nombre de contraintes se trouvant dans une liste de contraintes
bool constraint_without_vars(Pcontrainte, Pbase)
bool constraint_without_vars(c, vars) Pcontrainte c; Pbase vars;
int vect_size(Pvecteur v)
package vecteur - reductions
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
char * variable_name(Variable v)
polynome_ri.c
void vect_chg_sgn(Pvecteur v)
void vect_chg_sgn(Pvecteur v): multiplie v par -1
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#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....
Pvecteur vect_dup(Pvecteur v_in)
Pvecteur vect_dup(Pvecteur v_in): duplication du vecteur v_in; allocation de et copie dans v_out;.
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
void vect_add_elem(Pvecteur *pvect, Variable var, Value val)
void vect_add_elem(Pvecteur * pvect, Variable var, Value val): addition d'un vecteur colineaire au ve...
int vect_lexicographic_compare(Pvecteur v1, Pvecteur v2, int(*compare)(Pvecteur *, Pvecteur *))
qsort() is not safe if the comparison function is not antisymmetric.
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...
void vect_sort_in_place(Pvecteur *pv, int *compare)
void vect_sort_in_place(pv, compare) Pvecteur *pv; int (*compare)(Pvecteur *, Pvecteur *);
int vect_lexicographic_compare2(Pvecteur v1, Pvecteur v2, int(*compare)(Pvecteur *, Pvecteur *))
Version for inequalities.
void vect_normalize(Pvecteur v)
void vect_normalize(Pvecteur v): division de tous les coefficients de v par leur pgcd; "normalisation...