25 #include "pips_config.h"
34 #include "constants.h"
72 #include "resources.h"
73 #include "array_dfg.h"
76 #include "scheduling.h"
82 #define my_polynome_fprint(fp,p) \
83 polynome_fprint(fp,p,entity_local_name,default_is_inferior_var);
149 if (ls == NULL) ls =
aux;
176 for (; ls != NULL; ls = ls->
next)
219 if (p == NULL) l1 = l2;
222 while (p->
next != NULL) p = p->
next;
293 if (!strncmp(name,
"LAMBDA", 6))
315 for (; lu !=
NIL; lu =
CDR(lu))
321 for (; l !=
NIL; l =
CDR(l))
370 name = (
char*)
malloc(10);
372 for (i = 0; i <= c; i++)
374 sprintf(name,
"X_%d", i);
427 for ( ; lc != NULL; lc = lc->next)
483 name = (
char*)
malloc(10);
485 for (i = 1; i <= c; i++)
487 sprintf(name,
"%s%d", n, i);
516 for ( ; l !=
NIL; l =
CDR(l)) {
549 for (; lent !=
NIL; lent =
CDR(lent))
599 fprintf(stderr,
"\nXXX creer equation farkas XXX\n");
611 if (!SC_UNDEFINED_P(Psys))
614 cont = Psys->inegalites;
618 for (i = 0 ; i < Psys->nb_ineq ; i++)
639 if (!SC_UNDEFINED_P(Psys))
642 cont = Psys->inegalites;
646 for (i = 0 ; i< Psys->nb_ineq ; i++)
670 fprintf(stderr,
"\nP[%d] = ",source);
696 int this_stat,
count;
717 this_node->
n_poly = this_poly;
719 this_node->
n_var = lvar;
721 hash_put(h, (
char *) this_stat, (
char *) this_node);
773 list lver_a, lver_b, lsucc;
777 lver_b =
CDR(lver_a);
781 if ((lver_b ==
NIL) && (lsucc ==
NIL))
803 if (!SC_UNDEFINED_P(p))
805 for (cont = p->inegalites ; cont != NULL ; cont = cont->
succ)
843 int count = 0, den = 1;
854 name = (
char*)
malloc(100);
857 for (lind = lindice; lind !=
NIL; lind =
CDR(lind))
860 sprintf(name,
"myownprivatevariable_%d",
count);
873 for (lv = lvar; lv !=
NIL; lv =
CDR(lv))
916 while ((c != NULL) && (l !=
NIL))
1042 bool is_equal =
true;
1048 fprintf(stderr,
"\nPremiere liste: ");
1050 fprintf(stderr,
"\nDeuxieme liste: ");
1060 for (i = 1; (i <= (n-1))&&(is_equal) ; i++)
1184 for (; m !=
NIL; m =
CDR(m))
1211 for ( ; lindice !=
NIL; lindice =
CDR(lindice))
1292 for (; n_lvar != NULL; n_lvar =
CDR(n_lvar))
1318 stat_pred, sys_pred, poly_source,\
1321 int stat_dest, stat_pred;
1328 list ltrans, lvar, llambda, llambda_el;
1330 Psysteme psys_aux, sys_edge, pred_sys = SC_RN;
1331 Ppolynome poly_lambda, poly_res, p_source, poly_x;
1335 int co = *c, d, ppc;
1346 pred_sys =
sc_dup(sys_pred);
1357 fprintf(stderr,
"\nTRANSFORMATION :\n");
1359 fprintf(stderr,
"\n\nPoly_source : ");
1374 fprintf(stderr,
"\nInequation de causalite :\n");
1389 sys_edge =
sc_dup(sys_dest);
1390 sys_edge =
sc_append(sys_edge, pred_sys);
1395 if (!SC_UNDEFINED_P(sys_edge))
1399 &poly_lambda, &llam1, &co);
1407 if (!SC_UNDEFINED_P(sys_edge))
1411 &poly_lambda, &llam2, &co);
1436 fprintf(stderr,
"\nPoly_resultat : ");
1461 stat_pred, sys_pred, poly_source, c, den)
1463 int stat_dest, stat_pred;
1469 list ltrans, lvar, llambda, llambda_el;
1471 Psysteme psys_aux, sys_edge, pred_sys = SC_RN;
1472 Ppolynome poly_lambda, poly_res, p_source;
1475 int co = *c, d, ppc;
1487 pred_sys =
sc_dup(sys_pred);
1495 fprintf(stderr,
"\nTRANSFORMATION :\n");
1497 fprintf(stderr,
"\nPred_sys :");
1499 fprintf(stderr,
"\n\nPoly_source : ");
1512 fprintf(stderr,
"\nInequation de causalite :\n");
1527 sys_edge =
sc_dup(sys_dest);
1528 sys_edge =
sc_append(sys_edge, pred_sys);
1533 if (!SC_UNDEFINED_P(sys_edge))
1537 &poly_lambda, &llam1, &co);
1546 if (!SC_UNDEFINED_P(sys_edge))
1550 &poly_lambda, &llam2, &co);
1573 fprintf(stderr,
"\nPoly_resultat : ");
1615 for (i = 1; i <= (
col-lin); i++)
1646 for (le = l; le !=
NIL; le =
CDR(le))
1703 for (l = lx_r; l !=
NIL; l =
CDR(l))
1734 list *lvar_u, *lvp, lxe;
1743 fprintf(stderr,
"\nPsysteme primal:\n");
1748 lin = psys->nb_ineq;
1871 for (ls = *lsys; ls != NULL; ls = ls->
next)
1958 bool not_found =
true;
1962 while ((lver !=
NIL) && (not_found))
1994 lsys_aux->
psys = sc;
1995 lsys_aux->
succ = lsys;
2015 Value coi, coe, ppc;
2019 for (lv = l; lv !=
NIL; lv =
CDR(lv))
2063 Value coi, coe, ppc;
2068 bool change =
false;
2071 for (ldi = ld; ldi !=
NIL; ldi =
CDR(ldi))
2075 cte = ps_eq->egalites;
2079 fprintf(stderr,
"\nExpression en entree :");
2098 for (lv = l; lv !=
NIL; lv =
CDR(lv))
2103 fprintf(stderr,
"\nEntite a eliminer :");
2113 ppc =
ppcm(coe, coi);
2139 fprintf(stderr,
"\nd = %d", d);
2140 fprintf(stderr,
"\nExpression en sortie :");
2166 list ls, lvar, lvar_e, ldims;
2168 Psysteme s_bdt, s_node, s_eq, s_aux;
2186 fprintf(stderr,
"\nListe des variables;");
2193 if (!SC_RN_P(s_bdt))
2197 fprintf(stderr,
"\nSYSTEME BDT en entree :");
2206 fprintf(stderr,
"\nSYSTEME D EGALITES apres :");
2208 fprintf(stderr,
"\nListe des eliminees:");
2212 if ((lvar_e !=
NIL)&&(!SC_RN_P(s_bdt)))
2220 fprintf(stderr,
"\nSYSTEME BDT en sortie :");
2255 list lbase, lp, laux;
2265 for (cont = psys->inegalites ; cont != NULL ; cont = cont->
succ)
2288 for (laux = *lvar_u; laux !=
NIL; laux =
CDR(laux))
2300 sys_cont->
base = NULL;
2332 asprintf(&name,
"%s_%d",
"MU", stat);
2336 for (laux = lunk; laux != NULL; laux = laux->
next)
2365 list ls, le, lexp_aux;
2376 for (; ls !=
NIL; ls =
CDR(ls))
2420 bool is_here =
false;
2422 asprintf(&name,
"%s_%d",
"MU", stat);
2427 for (; lbase !=
NIL; lbase =
CDR(lbase))
2456 list lsol, new_lsol, lnew, lst, lsf, ls, lu, lvp;
2465 int m_coef, nb_arc, d;
2497 fprintf(stderr,
"\nNouveau parametre :\n");
2523 bt =
analyze_quast(cond_aux, stat, lunk, lsys, bt, lxe, me);
2542 bf =
analyze_quast(cond_aux, stat, lunk, lsys, bf, lxe, me);
2561 if (m_coef == nb_arc)
2566 fprintf(stderr,
"\nTous les arcs sont satisfaits car\
2567 le coef de M est %d\n",m_coef);
2581 fprintf(stderr,
"\nTous les arcs ne sont pas satisfaits car\
2582 le coef de M est %d\n",m_coef);
2592 fprintf(stderr,
"\nDimension trouvee :");
2594 fprintf(stderr,
"\n\n\nNb d'arc = %d", nb_arc);
2595 fprintf(stderr,
"\nSYS LIST:\n");
2613 fprintf(stderr,
"\nSysteme de contraintes :\n");
2615 fprintf(stderr,
"\nVct d'inconnues = \n");
2617 fprintf(stderr,
"\nBase de psys: ");
2619 fprintf(stderr,
"\nBase de sys_cont:");
2629 fprintf(stderr,
"\n\nQuast de PIP (n_dim):");
2637 fprintf(stderr,
"\nBdt apres analyze :");
2714 list lver, lpred, lsched,
lexp, ldata, lu, lstat, ltrans;
2717 int stat_dest, stat_pred,
count, stat, xcount, den;
2721 bdt bdt_pred, scc_bdt, stat_bdt;
2729 bool all_external =
false;
2744 fprintf(stderr,
"\nDEBUT DE CALCUL SUR UNE SCC :\n");
2745 fprintf(stderr,
"\n=============================\n");
2749 if (lver->
cdr ==
NIL) all_external =
true;
2761 poly_dest = node_dest->
n_poly;
2767 fprintf(stderr,
"\nOn s'interesse au noeud n.%d",stat_dest);
2768 fprintf(stderr,
"\n===========================\n");
2769 fprintf(stderr,
"de predicat : ");
2771 fprintf(stderr,
"\nde polynome : ");
2788 while (ldata !=
NIL)
2800 fprintf(stderr,
"\n\nPredecesseur n.%d:pas de\
2801 schedule\n", stat_pred);
2802 fprintf(stderr,
"-------------------------------\n\n");
2809 poly_dest, ldata, stat_pred, SC_RN,\
2810 poly_source, &
count, xcount, &xe, den);
2812 all_external =
false;
2824 fprintf(stderr,
"\n\nPredecesseur n.%d : schedule!!\n",\
2826 fprintf(stderr,
"------------------------------\n");
2835 fprintf(stderr,
"\nBdt du predecesseur :\n");
2847 if (!SC_UNDEFINED_P(sys_pred))
2863 fprintf(stderr,
"\nPsystem du predecesseur: \n");
2874 poly_dest, ldata, stat_pred, sys_pred,\
2875 poly_source, &
count, xcount, &xe, den);
2879 all_external =
false;
2883 poly_dest, ldata, stat_pred, sys_pred,\
2884 poly_source, &
count, den);
2887 fprintf(stderr,
"\nSysteme pour arc:\n");
2897 fprintf(stderr,
"\nSysteme:\n");
2923 fprintf(stderr,
"\nSysteme primal :\n");
2925 fprintf(stderr,
"\nVariables :\n");
2929 for (; lstat !=
NIL; lstat =
CDR(lstat))
2934 psys_aux =
make_dual(psys_aux, &sys_dest, lunk2, &lu, lvp);
2935 sys_dest =
sc_dup(sys_dest);
2940 fprintf(stderr,
"\nSysteme dual :\n");
2942 fprintf(stderr,
"\nSysteme de contraintes :\n");
2944 fprintf(stderr,
"\nVct d'inconnues = \n");
2946 fprintf(stderr,
"\nBase de psys: ");
2948 fprintf(stderr,
"\nBase de sys_cont:");
2958 fprintf(stderr,
"\n\nQuast de PIP pour %d:", stat);
2963 stat_bdt =
analyze_quast(qua, stat, lunk2, lsys, stat_bdt, lxe, me);
2967 fprintf(stderr,
"\nBDT AVANT:\n");
2975 fprintf(stderr,
"\nBDT APRES:\n");
3005 list lscc, lsched, lschedg;
3006 bdt bdt_graph, bdt_scc;
3031 else bdt_graph = bdt_scc;
static void node(FILE *out, string name)
Build for module name a node and link to its successors.
schedule make_schedule(intptr_t a1, predicate a2, list a3)
call make_call(entity a1, list a2)
expression make_expression(syntax a1, normalized a2)
predicate make_predicate(Psysteme a1)
syntax make_syntax(enum syntax_utype tag, void *val)
struct _newgen_struct_entity_ * entity
statement adg_number_to_statement(int in_nb)
======================================================================
#define VALUE_TO_INT(val)
#define value_negz_p(val)
#define value_mult(v, w)
whether the default is protected or not this define makes no sense any more...
#define value_div(v1, v2)
#define value_posz_p(val)
Value ppcm(Value, Value)
ppcm.c
Pbase base_add_variable(Pbase b, Variable var)
Pbase base_add_variable(Pbase b, Variable v): add variable v as a new dimension to basis b at the end...
bool base_contains_variable_p(Pbase b, Variable v)
bool base_contains_variable_p(Pbase b, Variable v): returns true if variable v is one of b's elements...
bdt base
Current expression.
Psysteme my_sc_normalize(Psysteme ps)
==============================================================
schedule true_copy_schedule(schedule s)
=================================================================
entity create_named_entity(char *name)
=====================================================================
void poly_chg_var(Ppolynome pp, Variable v_old, Variable v_new)
=================================================================
Psysteme suppress_sc_in_sc(Psysteme in_ps1, Psysteme in_ps2)
======================================================================
Psysteme predicate_to_system(predicate p)
=================================================================
bool system_contains_var(Psysteme ps, Variable var)
=====================================================================
bdt true_copy_bdt(bdt b)
=====================================================================
bool exp_equals_p(expression e1, expression e2)
======================================================================
void analyze_expression(expression *e, int *d)
=====================================================================
Pcontrainte contrainte_make(Pvecteur pv)
Pcontrainte contrainte_make(Pvecteur pv): allocation et initialisation d'une contrainte avec un vecte...
Pdisjunct dj_system_complement(Psysteme in_ps)
Pdisjunct dj_system_complement( (Psystem) in_ps ) AL 26/10/93 Input : A Psysteme.
#define successor_vertex(x)
#define successor_arc_label(x)
#define vertex_vertex_label(x)
#define vertex_successors(x)
#define SUCCESSOR(x)
SUCCESSOR.
list gen_nreverse(list cp)
reverse a list in place
#define NIL
The empty list (nil in Lisp)
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.
void gen_free_list(list l)
free the spine of the list
#define CDR(pcons)
Get the list less its first element.
list gen_append(list l1, const list l2)
hash_table hash_table_make(hash_key_type key_type, size_t size)
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.
void hash_put(hash_table htp, const void *key, const void *val)
This functions stores a couple (key,val) in the hash table pointed to by htp.
void hash_table_free(hash_table htp)
this function deletes a hash table that is no longer useful.
void fprint_entity_list(FILE *fp, list l)
void fprint_entity_list(FILE *fp,list l): prints a list of entities on file fp.
list base_to_list(Pbase base)
Most includes are centralized here.
#define ADD_ELEMENT_TO_LIST(_list, _type, _element)
list make_list_of_n(char *n, int c)
=================================================================
list add_others_variables(list lvar, list n_lvar)
=================================================================
static void make_list_of_unk(Pn_coef *l, Psysteme *sc, entity *me, list lx)
=================================================================
bool if_no_pred(scc s, bdt *b)
=================================================================
struct sys_list * Psys_list
int get_m_coef(expression *e, int *de)
=================================================================
Ppolynome make_polynome_Xe(int xc, entity *xe)
=================================================================
list reorder_base(list l, list lu)
=================================================================
static Pn_coef add_lcoef_to_lcoef(Pn_coef l1, Pn_coef l2)
=================================================================
dfg_arc_label arc_label
C3 includes
static Psysteme make_primal(Psysteme psys, list *lvar_u, list *lvp, list lxe)
=================================================================
list get_list_of_all_param(int s, int t)
=================================================================
bdt build_bdt_null(vertex v)
=================================================================
Psysteme system_new_var_subst(Psysteme sys, list l)
=================================================================
Psysteme make_causal_external(int stat_dest, Psysteme sys_dest, Ppolynome poly_dest, list ldata, int stat_pred, Psysteme sys_pred, Ppolynome poly_source, int *c, int den)
=================================================================
Psysteme include_trans_in_sc(int s, Psysteme sys, list l)
=================================================================
bdt write_resulting_bdt(scc s, int stat, bdt bs, bdt bg)
=================================================================
list simplify_dimension(list ld, Psysteme ps_eq, list l)
=================================================================
bool is_uniform_rec(list l, Ppolynome p)
=================================================================
static Pn_coef add_n_coef_to_list(Pn_coef l1, Pn_coef l2)
=====================================================================
static Psys_list add_elt_to_sys_list(Psys_list ls, int s, Psysteme ps)
=====================================================================
list get_exp_schedule(expression e, entity me, int d)
=================================================================
static void clean_list_of_unk(Pn_coef *l, Psysteme *sc)
=================================================================
static bdt search_scc_bdt(scc s)
=================================================================
Psyslist add_sc_to_sclist(Psysteme sc, Psyslist lsys)
=================================================================
bool is_mu_stat_in_sc(int stat, Psysteme sc)
=================================================================
quast compact_quast(quast q, int n)
======================================================================
#define my_polynome_fprint(fp, p)
dfg_vertex_label vertex_label
list make_sched_proto(matrice h, int lin, int col, list lu)
=================================================================
bdt make_bdt_initial(int stat, scc s)
=================================================================
Psysteme add_constraint_on_x(Psysteme psys, list lx)
=================================================================
Psysteme simplify_predicate(Psysteme ps, Psysteme ps_eq, list l)
=================================================================
static Pn_coef add_lambda_list(Pn_coef lunk, list lvar)
=================================================================
list make_x_list(int c)
=================================================================
Psysteme make_causal_internal(int stat_dest, Psysteme sys_dest, Ppolynome poly_dest, list ldata, int stat_pred, Psysteme sys_pred, Ppolynome poly_source, int *c, int xc, entity *xe, int den)
=================================================================
bdt simplify_bdt(bdt b, scc s)
=================================================================
bool list_of_exp_equals_1n_p(list l1, list l2, int n)
======================================================================
static list extract_var_list(Pn_coef lc)
=================================================================
static void create_farkas_poly(Psysteme Psys, char *Type, int source, int dest, Ppolynome *p, Pn_coef *l, int *c)
=====================================================================
bdt include_results_in_bdt(bdt b, bdt baux, list lexp)
=================================================================
entity create_var_name(char *Type, int source, int dest, int count)
=====================================================================
static Pn_coef make_n_coef(entity e, Pvecteur v)
=====================================================================
list extract_lambda_list(list l)
=================================================================
Psysteme erase_trivial_ineg(Psysteme p)
=================================================================
Psysteme get_predicate_system_of_node(int st, scc s)
=================================================================
static void fprint_sys_list(FILE *fp, Psys_list ls)
=====================================================================
Psysteme transform_in_ineq(Psysteme sc, list l)
=================================================================
static void fprint_coef_list(FILE *fp, Pn_coef l)
=====================================================================
static Psysteme make_dual(Psysteme psys, Psysteme *pcont, Pn_coef l, list *lvar_u, list lvp)
=================================================================
bdt search_graph_bdt(sccs rgraph)
=================================================================
static void make_proto(hash_table h, sccs rg)
=================================================================
bool coef_of_M_equal(expression *exp1, expression *exp2)
======================================================================
Psysteme include_parameters_in_sc(Psysteme sys, int source)
=====================================================================
static Pn_coef add_x_list(Pn_coef lunk, list lvar, entity *me)
=================================================================
struct bdt_node * Pbdt_node
Ppolynome include_trans_in_poly(int s, Ppolynome p, list l, int *d)
=================================================================
static Pn_coef extract_stat_lunk(int stat, Pn_coef lunk)
=================================================================
bool is_stat_in_pred_list(int stat, list pred_list)
=====================================================================
static bdt analyze_quast(quast q, int stat, Pn_coef lunk, Psys_list lsys, bdt b, list lxe, entity me)
=================================================================
static Psysteme get_unsatisfied_system(list lexp, Psys_list *lsys, list *lxe, Pn_coef *lunk, entity me, int de)
=================================================================
#define ACCESS(matrix, column, i, j)
Macros d'acces aux elements d'une matrice.
#define matrice_new(n, m)
Allocation et desallocation d'une matrice.
Value * matrice
package matrice
void matrice_transpose(matrice a, matrice a_t, int n, int m)
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_internal_error
int get_debug_level(void)
GET_DEBUG_LEVEL returns the current debugging level.
Pbase list_to_base(list l)
Pbase list_to_base(list l): returns the Pbase that contains the variables of list "l",...
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
Pcontrainte polynome_to_contrainte(Ppolynome)
========================================================================
bool is_entity_in_list_p(entity, list)
===========================================================================
int vertex_int_stmt(vertex)
===========================================================================
Psysteme elim_var_with_eg(Psysteme, list *, list *)
===========================================================================
void pu_vect_fprint(FILE *, Pvecteur)
===========================================================================
list static_control_to_indices(static_control)
package mapping : Alexis Platonoff, july 1993
Psysteme find_implicit_equation(Psysteme)
========================================================================
Ppolynome vecteur_mult(Pvecteur, Pvecteur)
========================================================================
Pvecteur polynome_to_vecteur(Ppolynome)
========================================================================
list vecteur_to_list(Pvecteur)
===========================================================================
static_control get_stco_from_current_map(statement)
========================================================================
void imprime_quast(FILE *, quast)
===========================================================================
expression make_rational_exp(Pvecteur, Value)
=====================================================================
void fprint_psysteme(FILE *, Psysteme)
===========================================================================
Ppolynome prototype_var_subst(Ppolynome, Variable, Ppolynome)
=================================================================
void fprint_bdt(FILE *, bdt)
===========================================================================
Psysteme polynome_to_sc(Ppolynome, list)
===========================================================================
void pu_matrices_to_contraintes(Pcontrainte *, Pbase, matrice, matrice, int, int)
utils.c
#define conditional_true_quast(x)
#define var_val_variable(x)
#define DATAFLOW(x)
DATAFLOW.
#define dataflow_transformation(x)
#define bdt_undefined_p(x)
#define quast_value_undefined
struct _newgen_struct_bdt_ * bdt
#define SCHEDULE(x)
SCHEDULE.
@ is_quast_value_quast_leaf
@ is_quast_value_conditional
#define dfg_arc_label_dataflows(x)
#define conditional_false_quast(x)
#define static_control_params(x)
#define quast_newparms(x)
#define quast_leaf_solution(x)
#define quast_value_tag(x)
#define schedule_predicate(x)
#define dataflow_governing_pred(x)
#define dfg_vertex_label_statement(x)
#define VAR_VAL(x)
VAR_VAL.
#define schedule_statement(x)
#define quast_value_quast_leaf_p(x)
#define quast_value_quast_leaf(x)
#define quast_undefined_p(x)
#define quast_quast_value(x)
#define dfg_vertex_label_exec_domain(x)
#define quast_value_undefined_p(x)
#define conditional_predicate(x)
#define quast_value_conditional(x)
quast pip_solve_min_with_big(Psysteme ps_dep, Psysteme ps_context, Pvecteur pv_unknowns, char *big)
==========================================================================
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_rm(Ppolynome *ppp)
void polynome_rm(Ppolynome* ppp) frees space occupied by polynomial *ppp returns *ppp pointing to POL...
Ppolynome vecteur_to_polynome(Pvecteur pv)
===========================================================================
void polynome_add(Ppolynome *ppp, Ppolynome pp2)
void polynome_add(Ppolynome* ppp, Ppolynome pp2) (*ppp) = (*ppp) + pp2.
bool polynome_contains_var(Ppolynome pp, Variable var)
bool polynome_contains_var(Ppolynome pp, Variable var) PRIVATE returns true if variable var is in pol...
Ppolynome polynome_decr(Ppolynome pp)
Ppolynome polynome_decr(Ppolynome pp) returns pp - 1.
void polynome_scalar_mult(Ppolynome *ppp, float factor)
void polynome_scalar_mult(Ppolynome* ppp, float factor) (*ppp) = factor * (*ppp) !...
void polynome_negate(Ppolynome *ppp)
void polynome_negate(Ppolynome *ppp); changes sign of polynomial *ppp.
#define POLYNOME_UNDEFINED
#define POLYNOME_UNDEFINED_P(pp)
void fprint_list_of_exp(FILE *fp, list exp_l)
void fprint_list_of_exp(FILE *fp, list exp_l): prints in the file "fp" the list of expression "exp_l"...
#define NORMALIZE_EXPRESSION(e)
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...
expression make_vecteur_expression(Pvecteur pv)
make expression for vector (Pvecteur)
expression Pvecteur_to_expression(Pvecteur vect)
AP, sep 25th 95 : some usefull functions moved from static_controlize/utils.c.
int expression_to_int(expression exp)
================================================================
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
Ppolynome expression_to_polynome(expression exp)
===========================================================================
#define normalized_undefined
#define EXPRESSION(x)
EXPRESSION.
#define predicate_undefined
#define expression_normalized(x)
#define expression_undefined_p(x)
#define call_arguments(x)
#define normalized_linear(x)
#define expression_syntax(x)
#define predicate_system(x)
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg)
Psysteme sc_make(Pcontrainte leg, Pcontrainte lineg): allocation et initialisation d'un systeme d'equ...
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
void sc_rm(Psysteme ps)
void sc_rm(Psysteme ps): liberation de l'espace memoire occupe par le systeme de contraintes ps;
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.
void sc_elim_empty_constraints(Psysteme ps, bool process_equalities)
void sc_elim_empty_constraints(Psysteme ps, bool process_equalities): elimination des "fausses" contr...
bool sc_rational_feasibility_ofl_ctrl(Psysteme sc, int ofl_ctrl, bool ofl_res)
Psysteme sc_append(Psysteme s1, Psysteme s2)
Psysteme sc_append(Psysteme s1, Psysteme s2): calcul de l'intersection des polyedres definis par s1 e...
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
#define G(j, a, b)
maybe most of them should be functions?
void vect_chg_sgn(Pvecteur v)
void vect_chg_sgn(Pvecteur v): multiplie v par -1
Pvecteur vect_multiply(Pvecteur v, Value x)
Pvecteur vect_multiply(Pvecteur v, Value x): multiplication du vecteur v par le scalaire x,...
void sc_to_matrices(Psysteme, Pbase, matrice, matrice, int, int)
Creation de la matrice A correspondant au systeme lineaire et de la matrice correspondant a la partie...
struct Scontrainte * succ
Warning! Do not modify this file that is automatically generated!
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
struct cons * cdr
The pointer to the next element.
struct Ssyslist * Psyslist
#define exp
Avoid some warnings from "gcc -Wshadow".
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
#define BASE_NULLE
MACROS SUR LES BASES.
#define VECTEUR_UNDEFINED_P(v)
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_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....
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...