PIPS
|
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "genC.h"
#include "misc.h"
#include "text.h"
#include "text-util.h"
#include "ri.h"
#include "ri-util.h"
#include "paf_ri.h"
#include "pip.h"
Go to the source code of this file.
Data Structures | |
struct | baseaux |
struct | pileaux |
struct | pilepredicat |
struct | pilequast |
Macros | |
#define | PREMIERE_VAR1_BASE premiere_var1 == 0 |
Name : solpip.c Package : pip Author : F. More... | |
#define | RESET_PREMIERE_VAR1 premiere_var1 = 0; |
#define | SET_PREMIERE_VAR1 premiere_var1 = 1; |
#define | PREMIERE_VAR_BASE premiere_var == 0 |
#define | RESET_PREMIERE_VAR premiere_var = 0; |
#define | SET_PREMIERE_VAR premiere_var = 1; |
#define | OLD_VAR(x) x->var==NULL |
#define | MY_MIN 0 |
#define | MY_MAX 1 |
#define | VARSUPP "Variable_pour_max_en_min_q" |
Typedefs | |
typedef struct baseaux | baseaux |
typedef struct baseaux * | Pbaseaux |
typedef struct pileaux | pileaux |
typedef struct pileaux * | Ppileaux |
typedef struct pilepredicat | pilepredicat |
typedef struct pilepredicat * | Ppilepredicat |
typedef struct pilequast | pilequast |
typedef struct pilequast * | Ppilequast |
Functions | |
void | ajoute_constante (int ent) |
Name: ajoute_constante More... | |
void | retire_par_de_pile () |
Name: retire_par_de_pile. More... | |
void | init_quast () |
Name: init_quast. More... | |
void | creer_quast_value () |
Name: creer_quast_value More... | |
void | creer_true_quast () |
Name: creer_true_quast. More... | |
void | creer_predicat () |
Name: creer_predicat. More... | |
void | fait_quast () |
Name: fait_quast. More... | |
void | fait_quast_value () |
Name: fait_quast_value. More... | |
void | init_liste_vecteur () |
Name: init_liste_vecteur. More... | |
void | init_vecteur () |
Name: init_vecteur. More... | |
void | ecrit_coeff1 (int ent) |
Name: ecrit_coeff1. More... | |
void | ecrit_resultat () |
TEMPORAIRE More... | |
void | creer_Psysteme () |
Name: creer_Psysteme. More... | |
void | init_new_base () |
Name: init_new_base. More... | |
entity | creer_nom_entite (char *module_name) |
Name: creer_nom_entite. More... | |
void | ajoute_new_var (int ent, int rang) |
Name: ajoute_new_var. More... | |
void | ecrit_liste_vecteur () |
Name: ecrit_liste_vecteur. More... | |
void | ecrit_une_var_neg (int ent) |
Name: ecrit_une_var_neg. More... | |
void | ecrit_une_var (int ent) |
Name: ecrire_une_var. More... | |
void | ecrit_coeff_neg2 (int ent) |
Name: ecrit_coeff_neg2. More... | |
void | ecrit_coeff2 (int ent) |
Name: ecrire_coeff2 . More... | |
#define PREMIERE_VAR1_BASE premiere_var1 == 0 |
Name : solpip.c Package : pip Author : F.
Dumontet Date : july 93 Historic :
Documents:
Comments :
#define PREMIERE_VAR_BASE premiere_var == 0 |
#define RESET_PREMIERE_VAR premiere_var = 0; |
#define RESET_PREMIERE_VAR1 premiere_var1 = 0; |
#define SET_PREMIERE_VAR premiere_var = 1; |
#define SET_PREMIERE_VAR1 premiere_var1 = 1; |
typedef struct pilepredicat pilepredicat |
typedef struct pilepredicat * Ppilepredicat |
typedef struct pilequast * Ppilequast |
void ajoute_constante | ( | int | ent | ) |
Name: ajoute_constante
Parameters: ent : entier, valeur de la constante cree.
Side effect : expression_act: est modifie, il lui est ajoute une
constante.
Result: void.
Aims: ajouter une constante a expression_act:
expression_act= expression_act+ent.
Author: F Dumontet.
Date of last change:
Definition at line 127 of file solpip.c.
References expression_act, int_to_expression(), make_op_exp(), MINUS_OPERATOR_NAME, and PLUS_OPERATOR_NAME.
Referenced by ecrit_coeff2(), ecrit_coeff_neg2(), ecrit_une_var(), and ecrit_une_var_neg().
Name: ajoute_new_var.
Parameters: ent: valeur du diviseur.
rang: position de la nouvelle variable dans le vecteur.
Side effect: new_base_ref: lorsque la nouvelle variable est ajoutee en tete de la base, recoit la nouvelle base modifiee.
pile: ajout du nouveau parametre sur la pile pour la gestion
de la localite de ces variables.
newparms_act: ajout du nouveau parametre a la liste.
Result: void.
Aims: ajouter un nouveau parametre dans la nouvelle base. Les piles de
gestion de la localite et de reference entre "entite" et "expression" sont mises a jour.
Author: F Dumontet.
Date of last change:
Definition at line 715 of file solpip.c.
References pileaux::act, aux, CONS, creer_nom_entite(), DIVIDE_OPERATOR_NAME, baseaux::ent, expression_act, int_to_expression(), make_op_exp(), make_var_val(), malloc(), new_base_ref, newparms_act, pile, pileaux::pred, return(), baseaux::succ, pileaux::succ, TOP_LEVEL_MODULE_NAME, baseaux::var, and VAR_VAL.
Referenced by integer_sol_edit(), and new_sol_edit().
entity creer_nom_entite | ( | char * | module_name | ) |
Name: creer_nom_entite.
Parameters: module_name: le nom du module?? TOP_LEVEL_MODULE_NAME.
Side effect: compteur_de_var: incrementation de 1.
Result: une "entite" dont le nom est cree automatiquement.
Aims: creer automatiquement des "entites" ayant pour nom nvarxxx.
Author: F Dumontet.
Date of last change:
Definition at line 657 of file solpip.c.
References compteur_de_var, concatenate(), debug(), entity_type, full_name, is_basic_int, make_basic(), make_entity, MakeTypeVariable(), malloc(), module_name(), MODULE_SEP_STRING, NIL, num, storage_undefined, strdup(), type_undefined, and value_undefined.
Referenced by ajoute_new_var().
void creer_predicat | ( | ) |
Name: creer_predicat.
Parameters:
Side effect: predicat_act: recoit le "predicat" cree sur le haut de la
pile.
Result: void.
Aims: creer un "predicat" a partir d'un "Psysteme", ce "predicat" est mis
sur le haut de la pile des "predicats".
Author: F Dumontet.
Date of last change:
Definition at line 296 of file solpip.c.
References Ssysteme::base, make_predicate(), malloc(), predicate_act, psyst_act, sc_creer_base(), pilepredicat::succ, and pilepredicat::x.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void creer_Psysteme | ( | ) |
Name: creer_Psysteme.
Parameters:
Side effect: psyst_act: recoit le "Psysteme" cree.
vect_aux: pointe sur le premier parametre de la base initiale.
new_base_aux: pointe sur le premier parametre de la base
contenant des les newparms.
Result: void.
Aims: initialiser le psysteme et les variables permettant de le construire. Author: F Dumontet.
Date of last change:
a changer par base_ref
Definition at line 558 of file solpip.c.
References contrainte_new(), Ssysteme::dimension, Ssysteme::inegalites, Ssysteme::nb_ineq, new_base_aux, new_base_ref, old_base, psyst_act, sc_new(), and vect_aux.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void creer_quast_value | ( | ) |
Name: creer_quast_value
Parameters:
Side effect: quast_value_act: recoit le "quast_value" cree.
Result: void.
Aims: creer un "quast_value" a partir d'une "solution".
Author: F. Dumontet
Date of last change:
Definition at line 232 of file solpip.c.
References is_quast_value_quast_leaf, leaf_label_undefined, make_quast_leaf(), make_quast_value(), NIL, quast_value_act, quast_value_undefined, and solution_act.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void creer_true_quast | ( | ) |
Name: creer_true_quast.
Parameters:
Side effect: quast_true: recoit le true "quast_cree" sur le haut de la
pile.
Result: void.
Aims: conserver le "true_quast" d'un IF dans la pile des "true_quast".
Author: F Dumontet.
Date of last change:
Definition at line 264 of file solpip.c.
References malloc(), pilequast::q, quast_act, quast_true, and pilequast::succ.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void ecrit_coeff1 | ( | int | ent | ) |
Name: ecrit_coeff1.
Parameters: ent: entier, coefficient de la variable pointee par
"new_base_aux", a entrer dans le "Psysteme".
Side effect: psyst_act: le "Psysteme" resultat avec une variable en plus
(dans la "base" et dans le "vecteur"). NON !!
vect_aux: pointe sur la variable suivante a traiter.
new_base_aux: pointe sur la variable suivante a traiter.
Result: void.
Aims: ajouter le coefficient et sa variable correspondante dans le
Psysteme a produire.
Author: F Dumontet.
Date of last change:
ect_add_elem(&psyst_act->base, TCST, (value) 1);
Definition at line 474 of file solpip.c.
References Ssysteme::base, Ssysteme::dimension, baseaux::ent, entity_local_name(), ind_min_max, Ssysteme::inegalites, MY_MAX, new_base_aux, psyst_act, Svecteur::succ, baseaux::succ, TCST, Svecteur::var, baseaux::var, VARSUPP, vect_add_elem(), vect_aux, and Scontrainte::vecteur.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void ecrit_coeff2 | ( | int | ent | ) |
Name: ecrire_coeff2 .
Parameters: ent: valeur du parametre.
Side effect: new_base_aux, vect_aux: pointent sur le prochain parametre
respectivement dans les bases initiale et actuelle.
expression_act: l'expression obtenue.
premiere_ver: mis a set.
Result: void.
Aims: ajouter un parametre et son coefficient a une "expression"
correspondant a un vecteur. Les pointeurs de base sont actualises .
Author: F Dumontet.
Date of last change:
Definition at line 1070 of file solpip.c.
References ajoute_constante(), ecrit_une_var(), ind_min_max, MY_MAX, MY_MIN, and new_base_aux.
Referenced by integer_sol_edit(), and new_sol_edit().
void ecrit_coeff_neg2 | ( | int | ent | ) |
Name: ecrit_coeff_neg2.
Parameters: ent: valeur du parametre.
Side effect: new_base_aux, vect_aux: pointent sur le prochain parametre
respectivement dans les bases initiale et actuelle.
expression_act: l'expression obtenue.
premiere_ver: mis a set.
Result: void.
Aims: ajouter un parametre et son coefficient a une "expression"
correspondant a un vecteur. Les pointeurs de base sont actualises .
Author: F Dumontet.
Date of last change:
Definition at line 1028 of file solpip.c.
References ajoute_constante(), ecrit_une_var_neg(), ind_min_max, MY_MAX, MY_MIN, and new_base_aux.
Referenced by integer_sol_edit(), and new_sol_edit().
void ecrit_liste_vecteur | ( | ) |
Name: ecrit_liste_vecteur.
Parameters:
Side effect: solution_act: ajout d'un "vecteur" a la "liste de vecteurs".
vect_var_aux: passe a la variable suivante.
Result: void.
Aims: mettre dans la "liste de vecteur" "l'expression" correspondant a un
"vecteur".
Author: F Dumontet.
Date of last change:
Definition at line 783 of file solpip.c.
References CONS, EXPRESSION, expression_act, gen_nconc(), NIL, solution_act, Svecteur::succ, and vect_var_aux.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void ecrit_resultat | ( | ) |
TEMPORAIRE
Name:
Parameters:
Side effect:
Result:
Aims:
Author: F Dumontet.
Date of last change:
Definition at line 529 of file solpip.c.
References quast_act, and write_quast().
void ecrit_une_var | ( | int | ent | ) |
Name: ecrire_une_var.
Parameters: ent: valeur du parametre.
Side effect: new_base_aux, vect_aux: pointent sur le prochain parametre
respectivement dans les bases initiale et actuelle.
expression_act: l'expression obtenue.
premiere_ver: mis a set.
Result: void.
Aims: ajouter un parametre et son coefficient a une "expression"
correspondant a un vecteur. Les pointeurs de base sont actualises .
Author: F Dumontet.
Date of last change:
Definition at line 823 of file solpip.c.
References ajoute_constante(), ecrit_une_var_neg(), entity_local_name(), expression_act, ind_min_max, int_to_expression(), make_factor_expression(), make_op_exp(), MULTIPLY_OPERATOR_NAME, MY_MAX, new_base_aux, OLD_VAR, PLUS_OPERATOR_NAME, premiere_var, PREMIERE_VAR_BASE, return(), SET_PREMIERE_VAR, Svecteur::succ, baseaux::succ, TCST, Svecteur::var, baseaux::var, VARSUPP, and vect_aux.
Referenced by ecrit_coeff2(), ecrit_une_var_neg(), integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void ecrit_une_var_neg | ( | int | ent | ) |
Name: ecrit_une_var_neg.
Parameters: ent: valeur du parametre negatif.
Side effect: new_base_aux, vect_aux: pointent sur le prochain parametre
respectivement dans les bases initiale et actuelle.
expression_act: l'expression obtenue.
premiere_ver: mis a set.
Result: void.
Aims: ajouter un parametre et son coefficient a une "expression"
correspondant a un vecteur. Les pointeurs de base sont actualises .
Author: F Dumontet.
Date of last change:
Definition at line 935 of file solpip.c.
References ajoute_constante(), ecrit_une_var(), entity_domain, entity_local_name(), expression_act, gen_find_tabulated(), ind_min_max, int_to_expression(), make_entity_fullname(), make_op_exp(), MakeUnaryCall(), MULTIPLY_OPERATOR_NAME, MY_MAX, MY_MIN, new_base_aux, OLD_VAR, PLUS_OPERATOR_NAME, premiere_var, PREMIERE_VAR_BASE, SET_PREMIERE_VAR, baseaux::succ, TCST, TOP_LEVEL_MODULE_NAME, UNARY_MINUS_OPERATOR_NAME, Svecteur::var, baseaux::var, VARSUPP, and vect_aux.
Referenced by ecrit_coeff_neg2(), ecrit_une_var(), integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void fait_quast | ( | ) |
Name: fait_quast.
Parameters:
Side effect: quast_false: recoit le second "quast" d'un IF.
quast_act: idem.
Result: void.
Aims: creer un "quast" a partir d'un "quast_value" et d'un "newparms".
Author: F Dumontet.
Date of last change:
Definition at line 331 of file solpip.c.
References gen_append(), make_quast(), newparms_act, NIL, quast_act, quast_false, and quast_value_act.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void fait_quast_value | ( | ) |
Name: fait_quast_value.
Parameters:
Side effect: quast_value_act: recoit le "quast_value" cree.
quast_true: on depile un element.
predicate_act: on depile un element.
conditional_act: recoit le "conditional" cree.
Result: void.
Aims: creer un "quast_value" a partir d'un "predicat", d'un "true_quast",
d'un "false_quast". le" true_quast" et le" predicat" sont consommes
et donc retires de leur pile respective.
Author: F Dumontet.
Date of last change:
Definition at line 365 of file solpip.c.
References conditional_act, free(), is_quast_value_conditional, make_conditional(), make_quast_value(), predicate_act, pilequast::q, quast_false, quast_true, quast_value_act, pilepredicat::succ, pilequast::succ, and pilepredicat::x.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void init_liste_vecteur | ( | ) |
Name: init_liste_vecteur.
Parameters:
Side effect: vect_var_aux: initialisation, pointe sur le debut de la base
des variables (au sens Psysteme) initiales du probleme.
solution_act: mise a vide de la file.
Result: void.
Aims: initialiser les variables necessaires a la construction d'une
"liste de vecteurs".
Author: F Dumontet.
Date of last change:
Definition at line 405 of file solpip.c.
References base_var_ref, NIL, solution_act, and vect_var_aux.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void init_new_base | ( | ) |
Name: init_new_base.
Parameters:
Side effect: new_base_ref: recoit la nouvelle base initialisee.
compteur de var: initialisation a 0.
newparms: initialisation de la liste a vide.
Result: void.
Aims: creer a partir de la base initiale , la nouvelle base contenant aussi les "newparms". Comme il s'agit de l'initialisation, il n'y a pas de "newparms" donc tous les champs "var" sont a NULL. Les autres "var"
permettant la construction future de cette base sont initialisees.
Author: F Dumontet.
Date of last change:
_ jan 5th 94, AP, new_base_ref MUST be initialized to NULL (when base_ref is empty)
Definition at line 601 of file solpip.c.
References base_ref, compteur_de_var, malloc(), new_base_ref, newparms_act, NIL, premiere_var, PREMIERE_VAR_BASE, RESET_PREMIERE_VAR, SET_PREMIERE_VAR, Svecteur::succ, and baseaux::succ.
Referenced by pip_solve(), and pip_solve_min_with_big().
void init_quast | ( | ) |
Name: init_quast.
Parameters:
Side effect: expression_act: remis a 0.
solution_act: remis a 0.
Result: void
Aims: initialiser les variables necessaires a la creation d'un "quast".
Author: F. Dumontet.
Date of last change:
Definition at line 205 of file solpip.c.
References expression_act, NIL, and solution_act.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void init_vecteur | ( | ) |
Name: init_vecteur.
Parameters:
Side effect: expression_act: mise a vide.
new_base_aux: pointe sur le premier element de la base locale c a d celle qui contient les "newparms".
vect_aux: pointe sur la base initiale des parametres du pb.
premiere_var: positionne a RESET.
Result: void.
Aims: initialiser les variables necessaires a l'ecriture d'un "vecteur"
sous forme d'une "expression".
Author: F Dumontet.
Date of last change:
Definition at line 438 of file solpip.c.
References base_ref, expression_act, new_base_aux, new_base_ref, premiere_var, RESET_PREMIERE_VAR, and vect_aux.
Referenced by integer_sol_edit(), new_sol_edit(), and rational_sol_edit().
void retire_par_de_pile | ( | ) |
Name: retire_par_de_pile.
Parameters:
Side effect: new_base_ref: on en retire le dernier "newparm" ajoute.
newparms_act: on retire le premier element de la liste.
pile: on retire l'element du haut de la pile de gestion de
localite des "newparms".
Result: void.
Aims: retirer les parametres crees par le newparm correspondant:gestion de la localite.
Author: F Dumontet.
Date of last change:
Definition at line 168 of file solpip.c.
References pileaux::act, CDR, free(), new_base_ref, newparms_act, pile, pileaux::pred, baseaux::succ, and pileaux::succ.
Referenced by integer_sol_edit(), and new_sol_edit().
int aux |
Definition at line 104 of file solpip.c.
Referenced by add_coeff_vect(), add_elt_to_sys_list(), add_elt_to_test_list(), add_lambda_list(), add_x_list(), ajoute_new_var(), atomizer_of_external(), chernikova(), ecrit_commentaire2(), ecrit_ligne(), ecrit_probleme2(), gen_list_and(), gen_list_and_not(), make_n_coef(), new_ecrit_ligne(), points_to_cell_list_and(), remove_redundants(), and zvec_min_notzero().
int compteur_de_var |
Definition at line 104 of file solpip.c.
Referenced by creer_nom_entite(), and init_new_base().
conditional conditional_act |
Definition at line 97 of file solpip.c.
Referenced by fait_quast_value().
expression expression_act |
Definition at line 94 of file solpip.c.
Referenced by ajoute_constante(), ajoute_new_var(), ecrit_liste_vecteur(), ecrit_une_var(), ecrit_une_var_neg(), init_quast(), init_vecteur(), and rational_sol_edit().
|
static |
Definition at line 101 of file solpip.c.
Referenced by creer_Psysteme(), ecrit_coeff1(), ecrit_coeff2(), ecrit_coeff_neg2(), ecrit_une_var(), ecrit_une_var_neg(), and init_vecteur().
|
static |
Definition at line 100 of file solpip.c.
Referenced by ajoute_new_var(), creer_Psysteme(), init_new_base(), init_vecteur(), and retire_par_de_pile().
list newparms_act |
Definition at line 91 of file solpip.c.
Referenced by ajoute_new_var(), fait_quast(), init_new_base(), and retire_par_de_pile().
|
static |
Definition at line 99 of file solpip.c.
Referenced by ajoute_new_var(), and retire_par_de_pile().
|
static |
Definition at line 93 of file solpip.c.
Referenced by creer_predicat(), and fait_quast_value().
int premiere_var |
Definition at line 104 of file solpip.c.
Referenced by ecrit_une_var(), ecrit_une_var_neg(), init_new_base(), and init_vecteur().
Psysteme psyst_act |
Definition at line 103 of file solpip.c.
Referenced by creer_predicat(), creer_Psysteme(), and ecrit_coeff1().
quast quast_false |
Definition at line 95 of file solpip.c.
Referenced by fait_quast(), and fait_quast_value().
|
static |
Definition at line 98 of file solpip.c.
Referenced by creer_true_quast(), and fait_quast_value().
quast_value quast_value_act |
Definition at line 96 of file solpip.c.
Referenced by creer_quast_value(), fait_quast(), and fait_quast_value().
list solution_act |
Definition at line 92 of file solpip.c.
Referenced by creer_quast_value(), ecrit_liste_vecteur(), init_liste_vecteur(), and init_quast().
Pvecteur vect_aux |
Definition at line 102 of file solpip.c.
Referenced by create_farkas_poly(), creer_Psysteme(), ecrit_coeff1(), ecrit_une_var(), ecrit_une_var_neg(), init_vecteur(), make_dual(), my_vect_var_subst(), and vect_var_subst().
Pvecteur vect_var_aux |
Definition at line 102 of file solpip.c.
Referenced by ecrit_liste_vecteur(), and init_liste_vecteur().