74 volatile bool catch_performed =
false;
77 assert(!SC_UNDEFINED_P(
s1) && !SC_UNDEFINED_P(s2));
83 catch_performed =
true;
91 fprintf(stderr,
"[sc_enveloppe_chernikova_ofl_ctrl] "
92 "arithmetic error occured\n" );
98 if (SC_RN_P(s2) ||
sc_rn_p(s2) || sc_dimension(s2)==0
102 sc2 = sc_elim_redond(sc2);
111 sc1 = sc_elim_redond(sc1);
140 int d1 = sc_dimension(
s1), d2 = sc_dimension(s2), du =
vect_size(bu);
143 sc_dimension(
s1) = du;
145 sc_dimension(s2) = du;
154 sc_dimension(
s1) = d1;
156 sc_dimension(s2) = d2;
219 bool modified =
false;
234 for (; v; v = v->
succ)
249 bool modified =
false;
262 c->
succ = *ex, *ex = c;
263 if (
cp)
cp->
succ = cn;
else *pc = cn;
372 int current_overflow_count;
386 sc_extract_exact_common_equalities(stc, sc,
s1, s2);
410 if (su)
sc_rm(su), su = NULL;
411 if (sc)
sc_rm(sc), sc = NULL;
429 sc_project_very_simple_equalities(sc);
438 if (sc_base(sc))
base_rm(sc_base(sc));
445 sc_dimension(sc) =
vect_size(sc_base(sc));
457 volatile Psysteme rectangular = SC_UNDEFINED;
458 rectangular = sc_projection_on_variables(sc,pb,pb);
464 sc_nredund(&rectangular);
int linear_number_of_exception_thrown
Pbase base_union(Pbase b1, Pbase b2)
Pbase base_union(Pbase b1, Pbase b2): compute a new basis containing all elements of b1 and all eleme...
Psysteme sc_convex_hull(Psysteme sc1, Psysteme sc2)
#define CONTRAINTE_UNDEFINED
bool linear_hashtable_isin(linear_hashtable_pt h, void *k)
void linear_hashtable_put(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
static int is2(Pproblem XX, Pproblem VV, struct rproblem *RR)
=======================================================================
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...
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_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;
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.
static Psysteme transitive_closure_from_two_bases(Psysteme s, Pbase b1, Pbase b2)
returns constraints from s which may depend on variables in b1 and b2.
Psysteme sc_cute_convex_hull(Psysteme is1, Psysteme is2)
returns s1 v s2.
static Psysteme actual_convex_union(Psysteme s1, Psysteme s2)
call chernikova with compatible base.
Psysteme sc_rectangular_hull(Psysteme sc, Pbase pb)
take the rectangular bounding box of the systeme sc, by projecting each constraint of the systeme aga...
static bool transitive_closure_pass(Pcontrainte *pc, Pcontrainte *ex, linear_hashtable_pt vars)
one pass only of transitive closure.
static Psysteme transitive_closure_system(Psysteme s, linear_hashtable_pt vars)
transtitive extraction of constraints.
Psysteme sc_enveloppe_chernikova_ofl_ctrl(Psysteme s1, Psysteme s2, int ofl_ctrl)
package polyedre: enveloppe convexe de deux systemes lineaires
Psysteme sc_enveloppe_chernikova(Psysteme s1, Psysteme s2)
Psysteme elementary_convex_union(Psysteme s1, Psysteme s2)
implements FC basic idea of simple fast cases...
static bool contains_variables(Pvecteur v, linear_hashtable_pt vars)
returns whether c contains variables of vars.
static bool base_to_set(linear_hashtable_pt s, Pvecteur b)
put base variables in set.
Value b1
booleen indiquant quel membre est en cours d'analyse
Pvecteur cp
pointeur sur l'egalite ou l'inegalite courante
Psysteme extract_common_syst(Psysteme s1, Psysteme s2)
returns the common subsystem if appropriate...
Psysteme sc_fusion(Psysteme s1, Psysteme s2)
package sc
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
hidden structure to store the hashtable.
#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.
bool vect_common_variables_p(Pvecteur v1, Pvecteur v2)
bool vect_common_variables_p(Pvecteur v1, v2) BA 19/05/94 input : two vectors.