61 &condition, &enumeration,
false);
65 result =
sc_fusion(condition, enumeration);
94 assert(!SC_UNDEFINED_P(*psyst));
101 vars, &egsyst, &egothers);
103 vars, &insyst, &inothers);
108 return sc_make(egothers, inothers);
142 Psysteme ps_interm, ps_project, ps_tmp;
150 *penumeration =
sc_rn(NULL);
151 *pcondition =
sc_dup(scn);
161 ps_project = sc_elim_redond(ps_project);
163 if (SC_UNDEFINED_P(ps_project))
168 *penumeration =
sc_empty(base_index);
169 *pcondition = ps_project;
181 ps_project = sc_projection(ps_project, pb->
var);
187 if (ps_project==NULL ||
sc_empty_p(ps_project))
189 *penumeration =
sc_empty(base_index);
190 *pcondition = ps_project;
200 ps_interm =
sc_make(NULL, ineq);
212 *penumeration = ps_interm;
230 ps_interm =
sc_append(ps_interm, ps_tmp);
236 *penumeration = ps_interm;
242 assert(!SC_UNDEFINED_P(*pcondition) && !SC_UNDEFINED_P(*penumeration));
255 (scn, base_index, pcondition, penumeration,
false);
300 Psysteme sc = SC_UNDEFINED, transfer = SC_UNDEFINED;
float a2sf[2] __attribute__((aligned(16)))
USER generates a user error (i.e., non fatal) by printing the given MSG according to the FMT.
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;.
bool vect_in_basis_p(Pvecteur v, Pbase b)
Pvecteur vect_in_basis_p(Pvecteur v, Pbase b): check that all coordinates in v are in b,...
Pbase base_reversal(Pbase b_in)
Pbase base_reversal(Pbase b_in): produces a basis b_out, having the same basis vectors as b_in,...
struct Scontrainte * Pcontrainte
Pcontrainte contrainte_append(Pcontrainte c1, Pcontrainte c2)
Pcontrainte contrainte_append(c1, c2) Pcontrainte c1, c2;.
Pcontrainte contrainte_dup_extract(Pcontrainte, Variable)
Pcontrainte contrainte_dup_extract(c, var) Pcontrainte c; Variable var;.
void Pcontrainte_separate_on_vars(Pcontrainte, Pbase, Pcontrainte *, Pcontrainte *)
void Pcontrainte_separate_on_vars(initial, vars, pwith, pwithout) Pcontrainte initial; Pbase vars; Pc...
int vect_size(Pvecteur v)
package vecteur - reductions
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg)
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg): allocation et initialisation d'un systeme d'equ...
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_rm(Psysteme ps)
void sc_rm(Psysteme ps): liberation de l'espace memoire occupe par le systeme de contraintes ps;
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.
Psysteme sc_dup(Psysteme ps)
Psysteme sc_dup(Psysteme ps): should becomes a link.
Psysteme sc_append(Psysteme s1, Psysteme s2)
Psysteme sc_append(Psysteme s1, Psysteme s2): calcul de l'intersection des polyedres definis par s1 e...
Psysteme sc_safe_intersection(Psysteme s1, Psysteme s2, Psysteme s3)
Psysteme sc_safe_intersection(Psysteme s1, Psysteme s2, Psysteme s3) input : output : calcul d'un sys...
Psysteme sc_fusion(Psysteme s1, Psysteme s2)
package sc
void sc_set_row_echelon_redundancy(bool b __attribute__((unused)))
void algorithm_tiling(Psysteme syst, Pbase outer, Pbase inner, Psysteme *pcondition, Psysteme *ptile_enum, Psysteme *piter_enum)
Psysteme new_loop_bound(Psysteme scn, Pbase base_index)
Psysteme new_loop_bound(Psysteme scn, Pbase base_index) computation of the new iteration space (given...
void algorithm_row_echelon_generic(Psysteme scn, Pbase base_index, Psysteme *pcondition, Psysteme *penumeration, bool redundancy)
each variable should be at least within one <= and one >=; scn IS NOT modified.
Psysteme get_other_constraints(Psysteme *psyst, Pbase vars)
Psysteme get_other_constraints(psyst, vars) Psysteme *psyst; Pbase vars;.
void algorithm_row_echelon(Psysteme scn, Pbase base_index, Psysteme *pcondition, Psysteme *penumeration)
see comments above.
Psysteme sc_sort_constraints(Psysteme ps, Pbase base_index)
Psysteme sc_triang_elim_redund(Psysteme ps, Pbase base_index)
sort contrainte c, base b, relatively to sort_base, as defined by the switches.
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
#define BASE_NULLE
MACROS SUR LES BASES.
void vect_erase_var(Pvecteur *ppv, Variable v)
void vect_erase_var(Pvecteur * ppv, Variable v): projection du vecteur *ppv selon la direction v (i....