PIPS
|
#include <string.h>
#include <stdio.h>
#include "arithmetique.h"
#include "boolean.h"
#include "vecteur.h"
#include "contrainte.h"
#include "sc.h"
Go to the source code of this file.
Functions | |
void | sc_rm_empty_constraints (Psysteme ps, bool process_equalities) |
package sc: elimination de redondance simple More... | |
Psysteme | sc_kill_db_eg (Psysteme ps) |
Psysteme sc_kill_db_eg(Psysteme ps): elimination des egalites et des inegalites identiques ou inutiles dans le systeme; plus precisemment: More... | |
Psysteme | sc_safe_kill_db_eg (Psysteme ps) |
same as above, but returns an empty system if the system is not feasible More... | |
Psysteme sc_kill_db_eg(Psysteme ps): elimination des egalites et des inegalites identiques ou inutiles dans le systeme; plus precisemment:
Pour les egalites, on elimine une equation si on a un systeme d'egalites de la forme :
a1/ Ax - b == 0, ou b1/ Ax - b == 0,
Ax - b == 0, b - Ax == 0,
ou c1/ 0 == 0
Pour les inegalites, on elimine une inequation si on a un systeme d'inegalites de la forme :
a2/ Ax - b <= c, ou b2/ 0 <= const (avec const >=0) Ax - b <= c
resultat retourne par la fonction :
Psysteme : Le systeme initial est modifie (si necessaire) et renvoye Si le systeme est non faisable (0 <= const <0 ou 0 = b), il est desalloue et NULL est renvoye.
Attention, on ne teste pas les proportionalites: 2*i=2 est different de i = 1. Il faut reduire le systeme par gcd avant d'appeler cette fonction sc_kill_db_eg()
Notes:
so called triangular version, FC 28/09/94
b = 0
0 <= b < 0
Definition at line 133 of file sc_elim_eq.c.
References contrainte_equal(), egalite_equal(), eq_set_vect_nul(), sc_rm(), sc_rm_empty_constraints(), Scontrainte::succ, Svecteur::val, Svecteur::var, vect_rm(), vect_size(), and Scontrainte::vecteur.
Referenced by sc_build_triang_elim_redund(), sc_elim_redund(), and sc_triang_elim_redund().
package sc: elimination de redondance simple
void sc_rm_empty_constraints(Psysteme ps, bool process_equalities): elimination des "fausses" contraintes du systeme ps, i.e. les contraintes ne comportant plus de couple (variable,valeur), i.e. les contraintes qui ont ete eliminees par la fonction 'eq_set_vect_nul', i.e. 0 = 0 ou 0 <= 0
resultat retourne par la fonction: le systeme initial ps est modifie.
parametres de la fonction: !Psysteme ps: systeme lineaire bool egalite: true s'il faut traiter la liste des egalites false s'il faut traiter la liste des inegalites
Modifications:
Definition at line 56 of file sc_elim_eq.c.
References contrainte_free(), contrainte_vecteur, and Scontrainte::succ.
Referenced by elim_redund_sc_with_sc(), sc_add_normalize_eq(), sc_add_normalize_ineq(), sc_inequations_elim_redund(), sc_kill_db_eg(), sc_safe_kill_db_eg(), simplify_big_coeff(), and sys_int_redond().
same as above, but returns an empty system if the system is not feasible
b = 0
0 <= b < 0
Definition at line 191 of file sc_elim_eq.c.
References BASE_UNDEFINED, contrainte_equal(), egalite_equal(), eq_set_vect_nul(), sc_empty(), sc_rm(), sc_rm_empty_constraints(), Scontrainte::succ, Svecteur::val, Svecteur::var, vect_rm(), vect_size(), and Scontrainte::vecteur.
Referenced by sc_normalize().