25 #include "pips_config.h"
86 #include "constants.h"
102 #define STRING_FOUR_OPERATION_P(s) ( \
103 (strcmp(s,PLUS_OPERATOR_NAME) == 0) || \
104 (strcmp(s,MINUS_OPERATOR_NAME) == 0) || \
105 (strcmp(s,MULTIPLY_OPERATOR_NAME) == 0) || \
106 (strcmp(s,DIVIDE_OPERATOR_NAME) == 0) )
107 #define ENTITY_FOUR_OPERATION_P(s) (ENTITY_PLUS_P(s) || ENTITY_MINUS_P(s) || ENTITY_MULTIPLY_P(s) || ENTITY_DIVIDE_P(s))
359 Value cst,coeff,dena,denb;
365 for (i=n;i>=1; i--) {
375 for (vect = b,j=1;j<=m;vect=vect->
succ,j++) {
422 for(pv = b, j=1; pv != NULL; pv = pv->
succ, j++){
448 Pbase index_base,const_base;
462 for(pv = index_base, j=1; pv != NULL; pv = pv->
succ, j++){
465 for(pv = const_base, j=1; pv != NULL; pv = pv->
succ, j++){
505 Pbase index_base,const_base;
512 Value cst,coeff,dena,denb;
518 for (i=n;i>=1; i--) {
528 for (vect =
base_union(index_base, const_base),j=1;
529 j<=m1;vect=vect->
succ,j++) {
543 for (j=1;j<=m2-1;vect=vect->
succ,j++) {
634 if ( prov_i == in )
return( ver );
661 if ( prov_i == in )
return( ver );
675 string exp_full_name;
762 if( (strncmp(exp_op,
"aref", 4) == 0) || (strncmp(exp_op,
"aset", 4) == 0) )
769 exp_args =
CDR(exp_args);
774 for(; exp_args !=
NIL; exp_args =
CDR(exp_args))
838 for(l = exp_l; l !=
NIL; l =
CDR(l))
850 printf(
"\nNon linear expression :");
882 list loop_l, dfg_edge_l;
886 for(; dfg_edge_l !=
NIL; dfg_edge_l =
CDR(dfg_edge_l)) {
894 (
char *) ((
long)
stmt)));
896 for( ; loop_l !=
NIL; loop_l =
CDR(loop_l))
938 for(l = le; l !=
NIL; l =
CDR(l))
950 printf(
"\nNon linear expression :");
1043 for( ; lo_l !=
NIL; lo_l =
CDR(lo_l))
1068 for(ppp = pp; ppp != NULL; ppp = ppp->
succ) {
1075 else if(pv->
succ != NULL)
1123 for( ; l !=
NIL; l =
CDR(l))
1166 for( ; l !=
NIL; l =
CDR(l))
1220 fprintf(stdout,
"\t\t\tAvant Sub: \n");
1263 ps->base = (
Pbase) NULL;
1267 fprintf(stdout,
"\t\t\tApres Sub: \n");
1283 bool is_in_list =
false;
1284 for( ; (l !=
NIL) && (! is_in_list); l =
CDR(l))
1376 bool coeff_one_not_found, var_found;
1392 coeff_one_not_found =
true;
1394 for(l = vl ; (l !=
NIL) && coeff_one_not_found; l =
CDR(l))
1401 coeff_one_not_found =
false;
1463 sc_elim->
base = NULL;
1539 list *init_l, *elim_l;
1551 for(l = vl; !
ENDP(l);
POP(l)) {
1559 fprintf(stderr,
"System is :");
1569 sc_nbre_egalites(ps)--;
1570 if (
eq == (ps->egalites)) ps->egalites =
eq->
succ;
1574 for(eg = ps->egalites; eg != NULL; eg = eg->
succ)
1576 for(eg = ps->inegalites; eg != NULL; eg = eg->
succ)
1591 sc_elim->
base = NULL;
1595 fprintf(stderr,
"[new_elim_var_with_eg] Results:\n");
1596 fprintf(stderr,
"Elim sys:\n");
1599 fprintf(stderr,
"Remnants sys:\n");
1630 for( ; v != NULL; v = v->
succ)
1652 for( ; vec != NULL; vec = vec->
succ)
1667 bool (*compare_obj)();
1672 else if(
ENDP(l2) ) {
1677 meld(
CDR(l1), l2, compare_obj)));
1681 meld(l1,
CDR(l2), compare_obj)));
1722 bool (*compare_obj)();
1750 bool (*compare_obj)();
1752 list ch1, ch2, ch, ch_t, aux_l, head =
NIL, tail =
NIL;
1753 void * crt_obj, * prev_obj;
1764 for(aux_l =
CDR(ch_t); !
ENDP(aux_l); aux_l =
CDR(ch_t), prev_obj = crt_obj) {
1766 if(compare_obj(crt_obj, prev_obj)) {
1797 for( ; !
ENDP(
CDR(head)) ; ) {
1802 ch =
meld(ch1, ch2, compare_obj);
1849 entity op_ent, unary_minus_ent;
1865 user_error(
"rational_op_exp",
"operation must be : +, -, * or /");
1882 if((val1 % val2) == 0)
1916 user_error(
"rational_op_exp",
"division by zero");
1935 return (result_exp);
1990 for(ppp = newpp; ppp != NULL; ppp = ppp->
succ) {
2032 for(pv1 = v1; pv1 != NULL; pv1 = pv1->
succ) {
2035 for(pv2 = v2; pv2 != NULL; pv2 = pv2->
succ) {
2043 else if(var2 ==
TCST)
2049 ppv = (new_pp->monome)->
term;
2076 else if(var ==
TCST)
2084 for(ppp = pp; ppp != NULL; ppp = ppp->
succ) {
2089 bool factor_found =
true;
2106 factor_found =
false;
2121 #define MINMAX_REF_NAME "MMREF"
2164 string exp_full_name;
2181 for(apc = pc,
count = 0; apc != NULL; apc = apc->
succ,
count++) {
2186 if(min_or_max ==
IS_MIN) {
2219 for(apc = new_pc; apc != NULL; apc = apc->
succ) {
2230 aapc->
succ = newnew_pc;
2236 aapc->
succ = newnew_pc;
2251 for(apc = pc; apc != NULL; apc = apc->
succ) {
2367 for(ineg = aux_ps->
inegalites; ineg != NULL; ineg = ineg->
succ) {
2383 fprintf(stderr,
"Equation implicit : ");
2501 debug(9,
"stco_common_loops_of_statements",
"doing\n");
call make_call(entity a1, list a2)
loop copy_loop(loop p)
LOOP.
value make_value_unknown(void)
expression make_expression(syntax a1, normalized a2)
predicate make_predicate(Psysteme a1)
storage make_storage(enum storage_utype tag, void *val)
basic make_basic_int(intptr_t _field_)
expression copy_expression(expression p)
EXPRESSION.
reference make_reference(entity a1, list a2)
variable make_variable(basic a1, list a2, list a3)
syntax make_syntax(enum syntax_utype tag, void *val)
type make_type(enum type_utype tag, void *val)
struct _newgen_struct_entity_ * entity
static hash_table STS
The "STS" global variable is the hash table that maps the static_control on the statements.
#define value_mone_p(val)
#define value_oppose(ref)
#define value_notzero_p(val)
#define float_to_value(f)
#define value_zero_p(val)
#define VALUE_TO_FLOAT(val)
#define value_mult(v, w)
whether the default is protected or not this define makes no sense any more...
#define value_mod(v1, v2)
#define value_div(v1, v2)
Value pgcd_slow(Value, Value)
pgcd.c
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...
#define A(i, j)
comp_matrice.c
#define CONTRAINTE_UNDEFINED_P(c)
#define CONTRAINTE_UNDEFINED
Pcontrainte contrainte_make(Pvecteur pv)
Pcontrainte contrainte_make(Pvecteur pv): allocation et initialisation d'une contrainte avec un vecte...
Pcontrainte contrainte_dup(Pcontrainte c_in)
Pcontrainte contrainte_dup(Pcontrainte c_in): allocation d'une contrainte c_out prenant la valeur de ...
Pcontrainte contrainte_new(void)
package contrainte - allocations et desallocations
int contrainte_subst_ofl_ctrl(Variable v, Pcontrainte def, Pcontrainte c, bool eq_p, int ofl_ctrl)
int contrainte_subst_ofl_ctrl(Variable v, Pcontrainte def, Pcontrainte c Boolean eq_p,...
Pcontrainte contrainte_var_min_coeff(Pcontrainte, Variable, Value *, bool)
Pcontrainte contrainte_var_min_coeff(Pcontrainte contraintes, Variable v, int *coeff) input : a list ...
bool egalite_normalize(Pcontrainte)
bool egalite_normalize(Pcontrainte eg): reduction d'une equation diophantienne par le pgcd de ses coe...
#define dg_vertex_label_statement(x)
string make_entity_fullname(const char *module_name, const char *local_name)
END_EOLE.
#define successor_arc_label(x)
#define vertex_vertex_label(x)
#define vertex_successors(x)
#define SUCCESSOR(x)
SUCCESSOR.
#define graph_vertices(x)
#define ENDP(l)
Test if a list is empty.
void gen_remove(list *cpp, const void *o)
remove all occurences of item o from list *cpp, which is thus modified.
#define POP(l)
Modify a list pointer to point on the next element of the list.
#define NIL
The empty list (nil in Lisp)
list gen_copy_seq(list l)
Copy a list structure.
size_t gen_length(const list l)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#define CAR(pcons)
Get the value of the first element of a list.
#define CDR(pcons)
Get the list less its first element.
list gen_append(list l1, const list l2)
void gen_sort_list(list l, gen_cmp_func_t compare)
Sorts a list of gen_chunks in place, to avoid allocations...
void * hash_get(const hash_table htp, const void *key)
this function retrieves in the hash table pointed to by htp the couple whose key is equal to key.
bool expression_constant_p(expression)
HPFC module by Fabien COELHO.
void fprint_entity_list(FILE *fp, list l)
void fprint_entity_list(FILE *fp,list l): prints a list of entities on file fp.
#define ADD_ELEMENT_TO_LIST(_list, _type, _element)
static void term(Pproblem XX, int s, Value k, int x)
Value vect_pgcd_all(Pvecteur v)
Value vect_pgcd(Pvecteur v): calcul du pgcd de tous les coefficients non nul d'un vecteur v.
int vect_size(Pvecteur v)
package vecteur - reductions
#define DENOMINATOR(matrix)
int DENOMINATEUR(matrix): acces au denominateur global d'une matrice matrix La combinaison *(&()) est...
#define ACCESS(matrix, column, i, j)
Macros d'acces aux elements d'une matrice.
Value * matrice
package matrice
void matrice_nulle(matrice Z, int n, int m)
void matrice_nulle(matrice Z, int n, int m): Initialisation de la matrice Z a la valeur matrice nulle
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
#define user_error(fn,...)
int get_debug_level(void)
GET_DEBUG_LEVEL returns the current debugging level.
void debug(const int the_expected_debug_level, const char *calling_function_name, const char *a_message_format,...)
ARARGS0.
#define TOP_LEVEL_MODULE_NAME
Module containing the global variables in Fortran and C.
#define MODULE_SEP_STRING
#define GET_STATEMENT_MAPPING(map, stat)
string concatenate(const char *,...)
Return the concatenation of the given strings.
#define hash_table_undefined
Value of an undefined hash_table.
void * gen_find_tabulated(const char *, int)
int bool
we cannot use an enum or stdbool because we need to be compatible with newgen, thus boolean need to h...
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
#define PAF_UTIL_MODULE_NAME
dataflow first_df_of_succ(successor s)
===========================================================================
expression rational_op_exp(string op_name, expression exp1, expression exp2)
========================================================================
#define ENTITY_FOUR_OPERATION_P(s)
void substitute_var_with_vec(Psysteme ps, entity var, Value val, Pvecteur vec)
===========================================================================
dfg_arc_label arc_label
Name : utils.c Package : paf-util Author : Alexis Platonoff Date : july 1993.
void matrices_to_contraintes_with_sym_cst(Pcontrainte *pc, Pbase index_base, Pbase const_base, matrice A, matrice B, int n, int m1, int m2)
vertex in_dg_vertex_list(list l, vertex v)
======================================================================
bool is_entity_in_list_p(entity e, list l)
===========================================================================
expression make_id_expression(string s)
===========================================================================
Ppolynome old_vecteur_to_polynome(Pvecteur vec)
===========================================================================
Pvecteur polynome_to_vecteur(Ppolynome pp)
========================================================================
Pcontrainte expressions_to_vectors(list lexp)
=================================================================
list vecteur_to_list(Pvecteur v)
===========================================================================
successor first_succ_of_vertex(vertex v)
===========================================================================
list general_merge_sort(list l, bool(*compare_obj)())
I guess there is some kind of memory leaks here...
Psysteme better_elim_var_with_eg(Psysteme ps, list *init_l, list *elim_l)
===========================================================================
list static_control_to_indices(static_control stct)
package mapping : Alexis Platonoff, july 1993
Ppolynome vecteur_mult(Pvecteur v1, Pvecteur v2)
========================================================================
int stco_common_loops_of_statements(statement_mapping in_map, statement in_s, statement in_s2)
AP, sep 25th 1995 : I have added a function from static_controlise/utils.c.
void pu_matrices_to_contraintes(Pcontrainte *pc, Pbase b, matrice A, matrice B, int n, int m)
Global variables
Psysteme find_implicit_equation(Psysteme ps)
========================================================================
expression negate_expression(expression exp)
===========================================================================
loop loop_dup(loop l)
===========================================================================
dfg_vertex_label vertex_label
Pcontrainte simplify_minmax_contrainte(Pcontrainte pc, Psysteme ps_cont, int min_or_max)
==================================================================
static statement_mapping current_stco_map
These three functions respectively initialize, return and reset the static map of the static control ...
list vectors_to_expressions(Pcontrainte pc)
=================================================================
Psysteme make_expression_equalities(list le)
===========================================================================
expression make_array_ref(list l)
===========================================================================
static int compare_objects(gen_chunk **p1, gen_chunk **p2)
list meld(list l1, list l2, bool(*compare_obj)())
===========================================================================
Ppolynome prototype_var_subst(Ppolynome pp, Variable var, Ppolynome ppsubst)
=================================================================
Pbase make_base_of_nest(int stmt)
===========================================================================
void reset_current_stco_map(void)
========================================================================
int vertex_int_stmt(vertex v)
===========================================================================
list new_general_merge_sort(list l, bool(*compare_obj)())
no way validate Prgm_mapping with this function...
expression make_rational_exp(Pvecteur v, Value d)
=====================================================================
static_control get_stco_from_current_map(statement s)
========================================================================
Pvecteur prototype_factorize(Ppolynome pp, Variable var)
========================================================================
Psysteme polynome_to_sc(Ppolynome pp, list l)
===========================================================================
void contraintes_with_sym_cst_to_matrices(Pcontrainte pc, Pbase index_base, Pbase const_base, matrice A, matrice B, int n, int m1, int m2)
Creation de la matrice A correspondant au systeme lineaire et de la matrice correspondant a la partie...
#define STRING_FOUR_OPERATION_P(s)
Macro functions.
static list find_el_with_num(int stmt)
===========================================================================
bool single_var_vecteur_p(Pvecteur pv)
===========================================================================
predicate expressions_to_predicate(list exp_l)
===========================================================================
expression make_func_op(string func_name, list args)
===========================================================================
vertex in_dfg_vertex_list(list l, vertex v)
===========================================================================
static bool(* bool_compare_objects)()
===========================================================================
list simplify_minmax(list lexp, Psysteme ps_cont, int min_or_max)
=================================================================
expression lisp_exp_to_ri_exp(lisp_expression le)
===========================================================================
Psysteme elim_var_with_eg(Psysteme ps, list *init_l, list *elim_l)
===========================================================================
void pu_contraintes_to_matrices(Pcontrainte pc, Pbase b, matrice A, matrice B, int n, int m)
===========================================================================
void comp_exec_domain(graph g, hash_table STS)
===========================================================================
void set_current_stco_map(statement_mapping scm)
========================================================================
statement_mapping get_current_stco_map(void)
========================================================================
Psysteme old_polynome_to_sc(Ppolynome pp, list l)
===========================================================================
Pvecteur vect_var_subst(Pvecteur vect, Variable var, Pvecteur new_vect)
=================================================================
Pcontrainte polynome_to_contrainte(Ppolynome pp)
========================================================================
void pu_vect_fprint(FILE *, Pvecteur)
===========================================================================
void pu_egalite_fprint(FILE *, Pcontrainte, const char *(*)(entity))
void fprint_psysteme(FILE *, Psysteme)
===========================================================================
#define static_control_loops(x)
#define DATAFLOW(x)
DATAFLOW.
struct _newgen_struct_static_control_ * static_control
#define dfg_arc_label_dataflows(x)
#define lisp_expression_operation(x)
struct _newgen_struct_dfg_vertex_label_ * dfg_vertex_label
#define dfg_vertex_label_statement(x)
#define lisp_expression_args(x)
#define dfg_vertex_label_exec_domain(x)
void unnormalize_expression(void *st)
void unnormalize_expression(expression exp): puts all the normalized field of expressions in "st" to ...
Ppolynome make_polynome(float coeff, Variable var, Value expo)
Ppolynome make_polynome(float coeff, Variable var, Value expo) PRIVATE allocates space for,...
Ppolynome polynome_dup(Ppolynome pp)
Ppolynome polynome_dup(Ppolynome pp) creates and returns a copy of pp.
void polynome_add(Ppolynome *ppp, Ppolynome pp2)
void polynome_add(Ppolynome* ppp, Ppolynome pp2) (*ppp) = (*ppp) + pp2.
float polynome_TCST(Ppolynome pp)
float polynome_TCST(Ppolynome pp) returns the constant term of polynomial pp.
Ppolynome polynome_var_subst(Ppolynome pp, Variable var, Ppolynome ppsubst)
Ppolynome polynome_var_subst(Ppolynome pp, Variable var, Ppolynome ppsubst) creates and returns a Ppo...
Ppolynome polynome_factorize(Ppolynome pp, Variable var, int n)
Ppolynome polynome_factorize(Ppolynome pp, Variable var, int n) returns the (polynomial) coefficient ...
#define POLYNOME_UNDEFINED
#define POLYNOME_UNDEFINED_P(pp)
#define POLYNOME_NUL_P(pp)
string expression_to_string(expression e)
#define ENTITY_DIVIDE_P(e)
#define ENTITY_MINUS_P(e)
#define ENTITY_MULTIPLY_P(e)
#define NORMALIZE_EXPRESSION(e)
#define make_entity(n, t, s, i)
#define DIVIDE_OPERATOR_NAME
#define UNARY_MINUS_OPERATOR_NAME
const char * entity_local_name(entity e)
entity_local_name modified so that it does not core when used in vect_fprint, since someone thought t...
bool same_entity_p(entity e1, entity e2)
predicates on entities
expression make_vecteur_expression(Pvecteur pv)
make expression for vector (Pvecteur)
expression make_lin_op_exp(entity op_ent, expression exp1, expression exp2)
================================================================
int expression_to_int(expression exp)
================================================================
expression MakeBinaryCall(entity f, expression eg, expression ed)
Creates a call expression to a function with 2 arguments.
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
expression Value_to_expression(Value v)
added interface for linear stuff.
expression MakeUnaryCall(entity f, expression a)
Creates a call expression to a function with one argument.
bool expression_equal_integer_p(expression exp, int i)
================================================================
#define normalized_undefined
#define syntax_reference_p(x)
#define syntax_reference(x)
#define normalized_complex_p(x)
#define normalized_linear_p(x)
#define EXPRESSION(x)
EXPRESSION.
#define expression_undefined
#define normalized_tag(x)
#define predicate_undefined
#define reference_indices(x)
#define normalized_linear(x)
#define expression_syntax(x)
#define entity_domain
newgen_syntax_domain_defined
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
void sc_add_egalite(Psysteme p, Pcontrainte e)
void sc_add_egalite(Psysteme p, Pcontrainte e): macro ajoutant une egalite e a un systeme p; la base ...
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
void sc_add_inegalite(Psysteme p, Pcontrainte i)
void sc_add_inegalite(Psysteme p, Pcontrainte i): macro ajoutant une inegalite i a un systeme p; la b...
Psysteme sc_dup(Psysteme ps)
Psysteme sc_dup(Psysteme ps): should becomes a link.
Psysteme sc_elim_redund(Psysteme ps)
Psysteme sc_elim_redund(Psysteme ps): elimination des contraintes lineaires redondantes dans le syste...
Psysteme sc_elim_db_constraints(Psysteme ps)
Psysteme sc_elim_db_constraints(Psysteme ps): elimination des egalites et des inegalites identiques o...
bool sc_rational_feasibility_ofl_ctrl(Psysteme sc, int ofl_ctrl, bool ofl_res)
Pcontrainte eq
element du vecteur colonne du systeme donne par l'analyse
Pvecteur cp
pointeur sur l'egalite ou l'inegalite courante
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
Psysteme sc_normalize(Psysteme ps)
Psysteme sc_normalize(Psysteme ps): normalisation d'un systeme d'equation et d'inequations lineaires ...
void vect_chg_sgn(Pvecteur v)
void vect_chg_sgn(Pvecteur v): multiplie v par -1
Pvecteur vect_div(Pvecteur v, Value x)
Pvecteur vect_div(Pvecteur v, Value x): division du vecteur v par le scalaire x, si x est different d...
Pvecteur vect_multiply(Pvecteur v, Value x)
Pvecteur vect_multiply(Pvecteur v, Value x): multiplication du vecteur v par le scalaire x,...
list stco_same_loops(statement_mapping in_map, statement in_s, statement in_s2)
======================================================================
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
A gen_chunk is used to store every object.
#define exp
Avoid some warnings from "gcc -Wshadow".
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
struct Svecteur * Pvecteur
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define VARIABLE_UNDEFINED
Pvecteur vect_dup(Pvecteur v_in)
Pvecteur vect_dup(Pvecteur v_in): duplication du vecteur v_in; allocation de et copie dans v_out;.
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
void vect_rm(Pvecteur v)
void vect_rm(Pvecteur v): desallocation des couples de v;
Pvecteur vect_cl2_ofl_ctrl(Value x1, Pvecteur v1, Value x2, Pvecteur v2, int ofl_ctrl)
Pvecteur vect_cl2_ofl(Value x1, Pvecteur v1, Value x2, Pvecteur v2): allocation d'un vecteur v dont l...
Pvecteur vect_add(Pvecteur v1, Pvecteur v2)
package vecteur - operations binaires
Pvecteur vect_substract(Pvecteur v1, Pvecteur v2)
Pvecteur vect_substract(Pvecteur v1, Pvecteur v2): allocation d'un vecteur v dont la valeur est la di...
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....
void vect_add_elem(Pvecteur *pvect, Variable var, Value val)
void vect_add_elem(Pvecteur * pvect, Variable var, Value val): addition d'un vecteur colineaire au ve...
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...
void vect_chg_coeff(Pvecteur *ppv, Variable var, Value val)
void vect_chg_coeff(Pvecteur *ppv, Variable var, Value val): mise de la coordonnee var du vecteur *pp...
void vect_normalize(Pvecteur v)
void vect_normalize(Pvecteur v): division de tous les coefficients de v par leur pgcd; "normalisation...