42 #define MALLOC(s,t,f) malloc(s)
235 if (!SC_UNDEFINED_P(ps)) {
239 for (j=ps->
nb_eq;j>0;j--) {
240 for (
eq = ps->
egalites,i=1;i<j; eq = eq->succ,i++) {}
281 if (ps->inegalites != NULL) {
283 ps->inegalites = NULL;
286 if (ps->egalites != NULL) {
355 assert(!SC_UNDEFINED_P(sc));
356 if(sc_nbre_inegalites(sc)==0 && sc_nbre_egalites(sc)==1) {
372 assert(!SC_UNDEFINED_P(sc));
373 return sc_nbre_inegalites(sc)==0 && sc_nbre_egalites(sc)==0;
422 for(ineq = sc_egalites(p);
435 sc_inegalites(p) = i;
439 for(ineq = sc_inegalites(p);
static hash_table seen
static function to store whether a module has been seen during the recursive generation of the daVinc...
#define CONTRAINTE_UNDEFINED_P(c)
#define contrainte_succ(c)
#define contrainte_vecteur(c)
passage au champ vecteur d'une contrainte "a la Newgen"
#define CONTRAINTE_UNDEFINED
struct Scontrainte * Pcontrainte
Pcontrainte contraintes_free(Pcontrainte pc)
Pcontrainte contraintes_free(Pcontrainte pc): desallocation de toutes les contraintes de la liste pc.
Pcontrainte contrainte_make(Pvecteur pv)
Pcontrainte contrainte_make(Pvecteur pv): allocation et initialisation d'une contrainte avec un vecte...
Pcontrainte contrainte_new(void)
package contrainte - allocations et desallocations
int nb_elems_list(Pcontrainte)
int nb_elems_list(Pcontrainte list): nombre de contraintes se trouvant dans une liste de contraintes
bool linear_hashtable_isin(linear_hashtable_pt h, void *k)
void linear_hashtable_put_once(linear_hashtable_pt h, void *k, void *v)
linear_hashtable_pt linear_hashtable_make(void)
constructor.
void linear_hashtable_free(linear_hashtable_pt h)
destructor
int vect_size(Pvecteur v)
package vecteur - reductions
Pvecteur vect_chain(Pvecteur v_in, Variable var, Value coeff)
package vecteur routines internes au package
struct Ssysteme * Psysteme
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...
Psysteme sc_rn(Pbase b)
Psysteme sc_rn(Pbase b): build a Psysteme without constraints to define R^n, where n is b's dimension...
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
void sc_fix(Psysteme s)
fix system s for coherency of the base and number of things.
void sc_rm(Psysteme ps)
void sc_rm(Psysteme ps): liberation de l'espace memoire occupe par le systeme de contraintes ps;
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 ...
void sc_add_inegalites(Psysteme p, Pcontrainte i)
Pbase sc_to_minimal_basis(Psysteme ps)
creation d'une base contenant toutes les variables apparaissant avec des coefficients non-nuls dans l...
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_dup(Psysteme ps)
Psysteme sc_dup(Psysteme ps): should becomes a link.
Pbase sc_base_dup(int nbv, Pbase b)
Variable * sc_base_dup(int nbv, Variable * b): duplication de la table des variables base,...
void sc_add_egalites(Psysteme p, Pcontrainte i)
Psysteme sc_copy(Psysteme ps)
Psysteme sc_copy(Psysteme ps): duplication d'un systeme (allocation et copie complete des champs sans...
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
Pvecteur cp
pointeur sur l'egalite ou l'inegalite courante
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
hidden structure to store the hashtable.
@ empty
b1 < bj -> h1/hj = empty
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
#define VECTEUR_UNDEFINED
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define base_dimension(b)
#define BASE_NULLE
MACROS SUR LES BASES.
Pbase vect_copy(Pvecteur b)
direct duplication.
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
Pbase base_copy(Pbase b)
Direct duplication.
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;