45 #define MALLOC(s,t,f) malloc(s)
102 char * (*variable_name)();
107 if(!SC_UNDEFINED_P(s)) {
135 if(!SC_UNDEFINED_P(s)) {
167 if(!SC_UNDEFINED_P(s))
205 if(SC_UNDEFINED_P(s))
return(s);
207 for(c=sc_egalites(s); c!=NULL; c=c->
succ)
211 for(c=sc_inegalites(s); c!=NULL; c=c->
succ)
266 sc_dimension(sc)++; }
287 consistent = !SC_UNDEFINED_P(sc);
291 fprintf(stderr,
"Inconsistent number of equalities\n");
295 fprintf(stderr,
"Inconsistent number of inequalities\n");
299 fprintf(stderr,
"Inconsistent dimension\n");
303 fprintf(stderr,
"Inconsistent base\n");
307 consistent = consistent && !flawed;
328 fprintf(stderr,
"The base does not cover all the constraints\n");
329 fprintf(stderr,
"Current base\n");
331 fprintf(stderr,
"Necessary base\n");
333 fprintf(stderr,
"Base difference\n");
364 bool weak_consistent;
366 weak_consistent = !SC_UNDEFINED_P(sc);
368 if(weak_consistent) {
376 weak_consistent = (sc->
nb_eq == neq);
377 weak_consistent = weak_consistent
379 weak_consistent = weak_consistent
380 && (sc_dimension(sc) == dim);
383 if(weak_consistent && sc_dimension(sc) != 0) {
384 Pbase b = sc_base(sc);
388 if(weak_consistent) {
409 return weak_consistent;
429 *pwith =
sc_make(e_with, i_with),
430 *pwithout =
sc_make(e_without, i_without);
Pbase base_difference(Pbase b1, Pbase b2)
Pbase base_difference(Pbase b1, Pbase b2): allocate b; b = b1 - b2 – with the set meaning return b;.
Pbase base_remove_variable(Pbase b, Variable v)
Pbase base_remove_variable(b, v): remove basis vector relative to v from b; abort if v is not in b;.
Variable base_find_variable_name(Pbase b, Variable v, char *(*variable_name)(Variable))
Variable base_find_variable_name(Pbase b, Variable v, char * (*variable_name)()): returns the variabl...
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_rename_variables(Pvecteur v, bool(*renamed_p)(Variable), Variable(*new_variable)(Variable))
Pvecteur vect_rename_variables(v, renamed_p, new_variable) Pvecteur v; bool (*renamed_p)(Variable); V...
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...
bool base_included_p(Pbase b1, Pbase b2)
Pbase base_included_p(Pbase b1, Pbase b2): include_p = b1 is included in b2 – with the set meaning re...
bool base_normalized_p(Pbase b)
#define CONTRAINTE_UNDEFINED_P(c)
#define contrainte_vecteur(c)
passage au champ vecteur d'une contrainte "a la Newgen"
#define CONTRAINTE_UNDEFINED
Pcontrainte contrainte_substitute_dimension(Pcontrainte e, Variable i, Pvecteur v)
int nb_elems_list(Pcontrainte)
int nb_elems_list(Pcontrainte list): nombre de contraintes se trouvant dans une liste de contraintes
void norm_eq(Pcontrainte)
unaires.c
int safe_nb_elems_list(Pcontrainte, int)
Compute the number of elements in the list if it is less than n.
Pcontrainte contrainte_variable_rename(Pcontrainte, Variable, Variable)
Pcontrainte contrainte_variable_rename(Pcontrainte c, Variable v_old, Variable v_new): rename the pot...
void Pcontrainte_separate_on_vars(Pcontrainte, Pbase, Pcontrainte *, Pcontrainte *)
void Pcontrainte_separate_on_vars(initial, vars, pwith, pwithout) Pcontrainte initial; Pbase vars; Pc...
Pcontrainte contrainte_translate(Pcontrainte, Pbase, char *(*)(void))
static entity new_variable
entity to be replaced, the primary?
void vect_dump(Pvecteur v)
void vect_dump(Pvecteur v): print sparse vector v on stderr.
bool variable_equal(Variable v1, Variable v2)
package vecteur - routines sur les variables
#define MALLOC(s, t, f)
package matrice
int bool
we cannot use an enum or stdbool because we need to be compatible with newgen, thus boolean need to h...
struct Ssysteme * Psysteme
#define SYSTEME
package sc sur les Systemes de Contraintes lineaires.
void sc_base_add_variable(Psysteme sc, Variable var)
void sc_base_remove_variable(Psysteme sc, Variable v)
void norm_syst(Psysteme sc)
norm_syst(Psysteme): division des contraintes, egalites ou inegalites, par le PGCD des coefficients d...
bool sc_consistent_p(Psysteme sc)
bool sc_consistent_p(Psysteme sc): check that sc is well defined, that the numbers of equalities and ...
Psysteme sc_rename_variables(Psysteme s, bool(*renamed_p)(), Variable(*new_variable)())
Psysteme sc_rename_variables(s, renamed_p, new_variable) Psysteme s; bool (*renamed_p)(Variable); Var...
Psysteme sc_translate(Psysteme s, Pbase b, char *(*variable_name)())
Psysteme sc_translate(Psysteme s, Pbase b, char * (*variable_name)()): reecriture du systeme s dans l...
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg)
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg): allocation et initialisation d'un systeme d'equ...
void sc_separate_on_vars(Psysteme s, Pbase b, Psysteme *pwith, Psysteme *pwithout)
Psysteme sc_variables_rename(Psysteme s, Pvecteur pv_old, Pvecteur pv_new, get_variable_name_t variable_name)
Psysteme sc_variables_rename(Psysteme s, Pvecteur pv_old, Pvecteur pv_new): reecriture du systeme s r...
Psysteme sc_variable_rename(Psysteme s, Variable v_old, Variable v_new)
Psysteme sc_variable_rename(Psysteme s, Variable v_old, Variable v_new): reecriture du systeme s remp...
bool sc_weak_consistent_p(Psysteme sc)
check that sc is well defined, that the numbers of equalities and inequalities are consistent with th...
Psysteme sc_substitute_dimension(Psysteme s, Variable i, Pvecteur v)
Psysteme sc_substitute_dimension(Psysteme s, Variable i, Pvecteur v): The ith dimension of all constr...
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
Value b1
booleen indiquant quel membre est en cours d'analyse
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
char * variable_name(Variable v)
polynome_ri.c
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_UNDEFINED
char *(* get_variable_name_t)(Variable)
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define VARIABLE_UNDEFINED_P(v)
#define base_dimension(b)
#define BASE_NULLE
MACROS SUR LES BASES.
#define VECTEUR_UNDEFINED_P(v)
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...
void vect_chg_coeff(Pvecteur *ppv, Variable var, Value val)
void vect_chg_coeff(Pvecteur *ppv, Variable var, Value val): mise de la coordonnee var du vecteur *pp...