PIPS
|
#include <stdio.h>
#include "linear_assert.h"
#include "arithmetique.h"
#include "boolean.h"
#include "vecteur.h"
#include "contrainte.h"
#include "sc.h"
#include "sommet.h"
#include "matrix.h"
#include "plint.h"
Go to the source code of this file.
Functions | |
void | sys_mat_conv (Psysteme ps, Pmatrix A, Pmatrix B, int n, int m) |
package sur les polyedres More... | |
void | mat_sys_conv (Psysteme ps, Pmatrix B, int n, int m, int nbl) |
void mat_sys_conv(Psysteme ps, matrice B, int n, int m, int nbl) remplissage du champ des egalites ps->egalites en fonction de la matrice B qui contient les coefficients et les termes constant More... | |
char * | variable_name (Variable v) |
polynome_ri.c More... | |
void | egalites_to_matrice (Pmatrix a, int n, int m, Pcontrainte leg, Pbase b) |
void egalites_to_matrice(matrice a, int n, int m, Pcontrainte leg, Pbase b): conversion d'une liste d'egalites leg representees par des vecteurs creux en une matrice pleine a de n lignes representant les egalites et de m colonnes representant les variables. More... | |
Pcontrainte | matrice_to_contraintes (Pmatrix a, int n, int m, Pbase b) |
Pcontrainte matrice_to_contraintes(matrice a, int n, int m, Pbase b): fonction inverse de la precedente; les termes constants sont pris en colonne 0; les contraintes, egalites ou inegalites, sont allouees en fonction des besoins. More... | |
void egalites_to_matrice | ( | Pmatrix | a, |
int | n, | ||
int | m, | ||
Pcontrainte | leg, | ||
Pbase | b | ||
) |
void egalites_to_matrice(matrice a, int n, int m, Pcontrainte leg, Pbase b): conversion d'une liste d'egalites leg representees par des vecteurs creux en une matrice pleine a de n lignes representant les egalites et de m colonnes representant les variables.
Les lignes sont assignees suivant l'ordre dans lequel les egalites apparaissent dans la liste leg. Les colonnes sont assignees suivant les rang des variables dans la base b.
Les termes constants sont pris en compte et stockes (arbitrairement) dans la colonne 0.
La matrice a est supposees avoir ete allouees en memoire avec des dimensions suffisantes. Elle est initialisee a 0. Ni la liste d'egalites leg, ni la base b ne sont modifiees.
Les nombres effectifs d'egalites et de variables ne sont pas retournes.
L'implementation n'est pas propre, meme je ne vois pas ce qu'on peut faire de mieux sans un iterateurs sur les coefficients non nuls d'un vecteur. De plus, cette conversion de format est typiquement implementation dependante. L'implementation faite par Corinne pour syst_mat_conv() est cependante correcte. En plus, je parcours plein de fois la base... I'm lost!
Francois Irigoin, 17 avril 1990
Definition at line 168 of file sc_to_matrice.c.
References assert, base_find_variable_rank(), CONTRAINTE_NULLE_P, contrainte_vecteur, MATRIX_ELEM, matrix_nulle(), rank, Scontrainte::succ, Svecteur::succ, TCST, variable_name(), VECTEUR_UNDEFINED_P, vecteur_val, and vecteur_var.
void mat_sys_conv(Psysteme ps, matrice B, int n, int m, int nbl) remplissage du champ des egalites ps->egalites en fonction de la matrice B qui contient les coefficients et les termes constant
La matrice B passee en parametres est celle calculee a l'aide de la fonction "matrice_smith"
Les parametres de la fonction :
!Psysteme ps : systeme lineaire avec un champ base initialise int B[] : matrice de dimension (m,m+1) correspondant a la matrice solution du systeme d'egalites du systeme lineaire int n : nombre de lignes de la matrice (FI laquelle?) int m : nombre de colonnes de la matrice int nbl : nombre de variables non contraintes ajoutees a la matrice
Modifications:
Definition at line 103 of file sc_to_matrice.c.
References B, b1, contrainte_new(), cp, creat_new_var(), MATRIX_DENOMINATOR, MATRIX_ELEM, Svecteur::succ, TCST, value_notzero_p, value_uminus, vect_chg_coeff(), vect_new(), VECTEUR_NUL_P, and vecteur_var.
Referenced by sc_resol_smith().
Pcontrainte matrice_to_contraintes | ( | Pmatrix | a, |
int | n, | ||
int | m, | ||
Pbase | b | ||
) |
Pcontrainte matrice_to_contraintes(matrice a, int n, int m, Pbase b): fonction inverse de la precedente; les termes constants sont pris en colonne 0; les contraintes, egalites ou inegalites, sont allouees en fonction des besoins.
`
Comme on ne sait pas representer des contraintes rationnelles avec le type de donnees "contrainte", le denominateur de la matrice doit valoir 1.
Definition at line 204 of file sc_to_matrice.c.
References CONTRAINTE_UNDEFINED.
package sur les polyedres
Francois Irigoin void sys_mat_conv(Psysteme ps, matrice A, matrice B, int n, int m): calcul de la matrice A correspondant a la partie lineaire des egalites (ou des inegalites?) du systeme lineaire ps et de la matrice B correspondant aux termes constants de ps
Les parametres de la fonction :
Psysteme ps : systeme lineaire !int A[] : matrice !int B[] : matrice int n : nombre de lignes de la matrice int m : nombre de colonnes de la matrice
Modifications:
Definition at line 65 of file sc_to_matrice.c.
References B, eq, MATRIX_ELEM, matrix_nulle(), Scontrainte::succ, Svecteur::succ, TCST, vect_coeff(), Scontrainte::vecteur, VECTEUR_NUL_P, and vecteur_var.
Referenced by sc_resol_smith(), and smith_int().
char* variable_name | ( | Variable | var | ) |
This file gathers some functions interfacing polynomial library and the RI.
The "Variable" type used by polynomials is casted to "entity", the "Value" type, to int.
char *variable_name(Variable var) return the complete name of the entity var
char *variable_local_name(Variable var) return the abbreviated, local name of var
bool is_inferior_var(Variable var1, var2) return true if the complete name of var1 is lexicographically before var2's one.
Variable name_to_variable(char *name) inverse function of variable_name. name must be the complete name of the variable. Modif: – entity_local_name is replaced by module_local_name. LZ 230993
FI: no longer useful
Definition at line 73 of file polynome_ri.c.
References chunk_undefined, entity_name, malloc(), pips_internal_error, strdup(), TCST, and TCST_NAME.
Referenced by add_parameter_variable_to_module(), add_private_variable_to_module(), adg_contrainte_fprint(), adg_egalite_fprint(), adg_inegalite_fprint(), adg_vecteur_fprint(), base_find_variable_name(), base_find_variable_rank(), base_fprint(), complexity_sprint(), complexity_var_subst(), contrainte_fprint(), contrainte_sprint(), contrainte_sprint_format(), contrainte_text_format(), contrainte_to_text_1(), contrainte_to_text_2(), contrainte_translate(), contraintes_text_format(), egalite_fprint(), egalite_sprint(), egalite_sprint_format(), egalite_text_format(), egalites_fprint(), egalites_to_matrice(), fprint_contrainte_vecteur(), generate_variable_with_unique_name_to_module(), generic_make_entity_copy_with_new_name(), heuristique_1(), heuristique_3(), inegalite_fprint(), inegalite_sprint(), inegalite_sprint_format(), inegalite_text_format(), inegalites_fprint(), make_new_derived_entity_with_prefix(), make_new_scalar_variable_with_prefix(), make_variable_from_name_and_entity(), monome_fprint(), monome_sprint(), polynome_fprint(), polynome_sprint(), print_homogeneous_arguments(), prp(), prv(), pu_contrainte_fprint(), pu_egalite_fprint(), pu_inegalite_fprint(), pvecteur_to_polynome(), relation_to_string(), replace_formal_parameters_by_real_ones(), sc_strong_normalize4(), sc_strong_normalize5(), sc_strong_normalize_and_check_feasibility2(), sc_translate(), sc_variables_rename(), signed_operation_to_textline(), system_sorted_text_format(), system_text_format(), translate_complexity_from_local_to_current_name(), unsigned_operation_to_textline(), vect_fprint(), vect_fprint_as_monome(), vect_print(), vect_rename(), vect_sprint_as_monome(), vect_translate(), and vecteur_fprint().