PIPS
|
Go to the source code of this file.
Data Structures | |
struct | Ssyslist |
Warning! Do not modify this file that is automatically generated! More... | |
struct | Spath |
struct | Sunion |
Typedefs | |
typedef struct Ssyslist * | Psyslist |
Warning! Do not modify this file that is automatically generated! More... | |
typedef struct Ssyslist | Ssyslist |
typedef Ssyslist * | Pdisjunct |
typedef Ssyslist | Sdisjunct |
typedef Ssysteme * | Pcomplement |
typedef Ssysteme | Scomplement |
typedef Ssyslist * | Pcomplist |
typedef Ssyslist | Scomplist |
typedef struct Spath * | Ppath |
typedef struct Spath | Spath |
typedef struct Sunion * | Punion |
typedef struct Sunion | Sunion |
Enumerations | |
enum | hspara_elem { unpara = 0 , sszero = 1 , ssplus = 2 , ssminus = 3 , opzero = 4 , opplus = 5 , keep = 6 , opminus = 7 , empty = 8 , full = 9 , unpara = 0 , sszero = 1 , ssplus = 2 , ssminus = 3 , opzero = 4 , opplus = 5 , keep = 6 , opminus = 7 , empty = 8 , full = 9 } |
Implementation of the finite parallel half space lattice hspara. More... | |
Functions | |
Pdisjunct | dj_new (void) |
cproto-generated files More... | |
Pdisjunct | dj_dup (Pdisjunct) |
Pdisjunct dj_dup( (Pdisjunct) in_dj ) AL 15/11/93 Duplicates input disjunction. More... | |
Pdisjunct | dj_free (Pdisjunct) |
Pdisjunct dj_free( (Pdisjunct) in_dj ) AL 31/05/94 w - 1 depth free of input disjunction. More... | |
Pdisjunct | dj_dup1 (Pdisjunct) |
Pdisjunct dj_dup1( (Pdisjunct) in_dj ) AL 31/05/94 1st depth duplication of input disjunction. More... | |
Pdisjunct | dj_free1 (Pdisjunct) |
Pdisjunct dj_free1( (Pdisjunct) in_dj ) AL 31/05/94 1st depth free of input disjunction. More... | |
Pdisjunct | dj_full (void) |
Pdisjunct dj_full() AL 18/11/93 Return full space disjunction = dj_new() More... | |
bool | dj_full_p (Pdisjunct) |
dj_full_p( (Pdisjunct) in_dj ) AL 30/05/94 Returns True if in_dj = (NIL) ^ (NIL) More... | |
Pdisjunct | dj_empty (void) |
Pdisjunct dj_empty() AL 18/11/93 Returns a disjunction with sc_empty() element. More... | |
bool | dj_empty_p (Pdisjunct) |
dj_empty_p( (Ppath) in_pa ) AL 30/05/94 Returns True if in_dj = (1*TCST = 0) ^ (NIL) More... | |
Pdisjunct | dj_intersection_ofl_ctrl (Pdisjunct, Pdisjunct, int) |
Pdisjunct dj_intersection_ofl_ctrl( in_dj1, in_dj2, ofl_ctrl ) Computes intersection of two disjunctions. More... | |
Pdisjunct | dj_intersect_system_ofl_ctrl (Pdisjunct, Psysteme, int) |
Pdisjunct | dj_intersect_djcomp_ofl_ctrl (Pdisjunct, Pdisjunct, int) |
Pdisjunct dj_intersect_djcomp_ofl_ctrl( ) No sharing. More... | |
Pdisjunct | dj_union (Pdisjunct, Pdisjunct) |
Pdisjunct dj_union( (Pdisjunct) in_dj1, (Pdisjunct) in_dj2 ) Give the union of the two disjunctions. More... | |
bool | dj_feasibility_ofl_ctrl (Pdisjunct, int) |
bool dj_feasibility_ofl_ctrl( (Pdisjunct) in_dj, (int) ofl_ctrl ) Returns true if in_dj is a feasible disjunction. More... | |
Pdisjunct | dj_system_complement (Psysteme) |
Pdisjunct dj_system_complement( (Psystem) in_ps ) AL 26/10/93 Input : A Psysteme. More... | |
Pdisjunct | dj_disjunct_complement (Pdisjunct) |
Returns complement of in_dj. More... | |
Pdisjunct | dj_projection_along_variables_ofl_ctrl (Pdisjunct, Pvecteur, int) |
Returns projection of in_dj along vars of in_pv. More... | |
Pdisjunct | dj_simple_inegs_to_eg (Pdisjunct) |
Pdisjunct dj_simple_inegs_to_eg( in_dj ) transforms two opposite inequalities in a simple equality in each system of the input disjunction. More... | |
bool | dj_is_system_p (Pdisjunct) |
bool dj_is_system_p( (Pdisjunct) in_dj ) AL 16/11/93 Returns True if disjunction in_dj has only one Psysteme in it. More... | |
Pdisjunct | dj_append_system (Pdisjunct, Psysteme) |
Pdisjunct dj_append_system( (Pdisjunct) in_dj, (Psysteme) in_ps ) Input : A disjunct in_dj to wich in_ps will be added. More... | |
Pdisjunct | dj_variable_rename (Pdisjunct, Variable, Variable) |
dj_variable_rename replaces in_vold with in_vnew : in_dj is modified More... | |
Pdisjunct | dj_variable_substitution_with_eqs_ofl_ctrl (Pdisjunct, Pcontrainte, Pvecteur, int) |
void | dj_fprint_tab (FILE *, Pdisjunct, char *(*)(void), int) |
Pdisjunct | dj_read (char *) |
void dj_read(FILE*) reads a Pdisjunct More... | |
Ppath | pa_make (Psysteme, Pcomplist) |
path.c More... | |
Ppath | pa_dup (Ppath) |
void pa_dup(Ppath pa) AL 30/05/94 More... | |
Ppath | pa_free (Ppath) |
Ppath pa_free(Ppath pa) BA, AL 30/05/94. More... | |
Ppath | pa_dup1 (Ppath) |
void pa_dup1(Ppath pa) AL 30/05/94 1 depth duplication: system and complements are shared. More... | |
Ppath | pa_free1 (Ppath) |
Ppath pa_free1(Ppath pa) BA, AL 30/05/94 1 depth free. More... | |
Ppath | pa_full (void) |
Ppath pa_full() AL 18/11/93 Returns full space path : pa_full = pa_new() More... | |
bool | pa_full_p (Ppath) |
pa_full_p( (Ppath) in_pa ) AL 18/11/93 Returns True if in_pa = (NIL) ^ (NIL) More... | |
Ppath | pa_empty (void) |
Ppath pa_empty() AL 18/11/93 Returns empty path : pa_empty = sc_empty(NULL) ^ (NIL) More... | |
bool | pa_empty_p (Ppath) |
pa_empty_p( (Ppath) in_pa ) AL 18/11/93 Returns True if in_pa = (1*TCST = 0) ^ (NIL) More... | |
int | pa_max_constraints_nb (Ppath) |
int pa_max_constraints_nb( (Ppath) in_pa ) Give the maximum constraints nb among systems of in_pa. More... | |
Ppath | pa_intersect_system (Ppath, Psysteme) |
Ppath pa_intersect_system( (Ppath) in_pa, (Psysteme) in_ps ) Computes the intersection between in_pa and in_ps. More... | |
Ppath | pa_intersect_complement (Ppath, Pcomplement) |
Ppath pa_intersect_complement( (Ppath) in_pa, (Pcomplement) in_pc ) Computes the intersection between in_pa and in_ps. More... | |
Ppath | pa_reduce_simple_complement (Ppath) |
Ppath pa_reduce_simple_complement( (Ppath) in_pa ) AL 16/11/93 Scan all the complement. More... | |
Ppath | pa_transform_eg_in_ineg (Ppath) |
Ppath pa_transform_eg_in_ineg( in_pa ) Transforms all equalities of all systems composing in_pa in inequalities and returns in_pa. More... | |
bool | pa_feasibility_ofl_ctrl (Ppath, int) |
bool pa_feasibility_ofl_ctrl( (Ppath) in_pa, int ofl_ctrl) Returns true if the input path is possible and false if it is not possible or undefined. More... | |
Pdisjunct | pa_path_to_disjunct_ofl_ctrl (Ppath, int) |
Pdisjunct pa_path_to_disjunct_ofl_ctrl ( (Ppath) in_pa, (int) ofl_ctrl) Produces a Pdisjunct corresponding to the path Ppath. More... | |
void | pa_fprint_tab (FILE *, Ppath, char *(*)(void), int) |
Ppath | pa_read (char *) |
void pa_read(FILE*) reads a Ppath More... | |
enum hspara_elem | vect_parallel (Pvecteur, Pvecteur) |
reduc.c More... | |
enum hspara_elem | contrainte_parallel_in_liste (Pcontrainte, Pcontrainte) |
enum enum hspara_elem contrainte_parallel_in_liste( in_co, in_lc ) AL950711 input: 1 constraint in_co and a list of constraints in_lc output: hspara_elem (element of the parallel half space lattice) memory: Inspector (nothing is shared, nor modified, output allocated). More... | |
Psysteme | sc_supress_parallel_redund_constraints (Psysteme, Psysteme) |
Psysteme sc_supress_parallel_redund_constraints( in_ps1, in_ps2 ) input: 2 Psystemes in_ps1 and in_ps2 output: in_ps1 / in_ps2 (cut operation on polyhedrons) memory: Inspector (nothing is shared, nor modified, output allocated). More... | |
Psysteme | sc_supress_same_constraints (Psysteme, Psysteme) |
Psysteme sc_supress_same_constraints( in_ps1, in_ps2 ) supress in in_ps2 constraints that are in in_ps1. More... | |
Psysteme | sc_elim_redund_with_first_ofl_ctrl (Psysteme, Psysteme, int) |
Psysteme sc_elim_redund_with_first_ofl_ctrl( in_ps1, in_ps2, ofl_ctrl ) Returns constraints of in_ps2 which cut in_ps1. More... | |
Ppath | pa_supress_same_constraints (Ppath) |
Ppath pa_supress_same_constraints( (Ppath) in_pa ) Supress from complements of in_pa same constraints than those in positif Psystem in_pa->psys. More... | |
Pdisjunct | pa_path_to_disjunct_rule4_ofl_ctrl (Ppath, int) |
Pdisjunct pa_path_to_disjunct_rule4_ofl_ctrl( (Ppath) in_pa, int ofl_ctrl) Returns the corresponding disjunction according rule 4. More... | |
Pdisjunct | pa_path_to_few_disjunct_ofl_ctrl (Ppath, int) |
line 1197 "reduc.w" More... | |
bool | pa_inclusion_p_ofl_ctrl (Psysteme, Psysteme, int) |
bool pa_inclusion_p(Psysteme ps1, Psysteme ps2) BA, AL 31/05/94 returns true if ps1 represents a subset of ps2, false otherwise Inspector (no sharing on memory). More... | |
bool | pa_system_equal_p_ofl_ctrl (Psysteme, Psysteme, int) |
bool pa_system_equal_p(Psysteme ps1, Psysteme ps2) BA More... | |
Pdisjunct | pa_system_difference_ofl_ctrl (Psysteme, Psysteme, int) |
Pdisjunct pa_system_difference_ofl_ctrl(ps1, ps2) input : two Psystemes output : a disjunction representing ps1 - ps2 modifies : nothing comment : algorihtm : chemin = ps1 inter complement of (ps2) ret_dj = dj_simple_inegs_to_eg( pa_path_to_few_disjunct(chemin) ) More... | |
bool | pa_convex_hull_equals_union_p_ofl_ctrl (Psysteme, Psysteme, Psysteme, int, volatile bool) |
bool pa_convex_hull_equals_union_p(conv_hull, ps1, ps2) input : two Psystems and their convex hull AL,BC 23/03/95 output : true if ps1 U ps2 = convex_hull, false otherwise modifies : nothing comment : complexity = nb_constraints(ps1) * nb_constraints(ps2) if ofl_ctrl = OFL_CTRL, conservatively returns ofl_ctrl when an overflow error occurs More... | |
Psysteme | sc_full (void) |
Psysteme sc_full() similar to sc_new. More... | |
bool | sc_full_p (Psysteme) |
Psysteme sc_full_p( in_ps ) similar to sc_new. More... | |
Psysteme | sc_dup1 (Psysteme) |
Psysteme sc_dup1( in_ps ) AL 30/05/94 1 depth copy of in_ps: no duplication of vectors (except for the base). More... | |
Psysteme | sc_free (Psysteme) |
Psysteme sc_free( in_ps ) AL 30/05/94 Free of in_ps. More... | |
Psysteme | sc_free1 (Psysteme) |
Psysteme sc_free1( in_ps ) AL 30/05/94 Only pcontrainte of in_ps are freed. More... | |
Psysteme | sc_concatenate (Psysteme, Psysteme) |
Psysteme sc_concatenate( in_s1, in_s2 ) AL 30/05/94 Append in_s2 to the end of in_s1 and returns in_s1. More... | |
bool | sl_length (Psyslist) |
int sl_length( (Psyslist) in_sl ) AL 26/04/95 Returns length of in_sl. More... | |
int | sl_max_constraints_nb (Psyslist) |
int sl_max_constraints_nb( (Psyslist) in_sl ) Give the maximum constraints nb among systems of in_sl. More... | |
bool | sl_is_system_p (Psyslist) |
bool sl_is_system_p( (Psyslist) in_sl ) AL 16/11/93 Returns True if syslist in_sl has only one Psysteme in it. More... | |
Psyslist | sl_append_system (Psyslist, Psysteme) |
Psyslist sl_append_system( (Psyslist) in_sl, (Psysteme) in_ps ) Input : A disjunct in_sl to wich in_ps will be added. More... | |
Psyslist | sl_append_system_first (Psyslist, Psysteme) |
Psyslist sl_append_system_first( in_sl, in_ps ) AL 23/03/95 A new Psyslist with in_ps at the end of in_sl (sharing). More... | |
Psyslist | sl_new (void) |
Psyslist sl_new() AL 26/10/93 Input : Nothing. More... | |
Psyslist | sl_dup (Psyslist) |
Psyslist sl_dup( (Psyslist) in_sl ) AL 15/11/93 w - 1 duplication : everything is duplicated, except entities. More... | |
Psyslist | sl_dup1 (Psyslist) |
Psyslist sl_dup1( (Psyslist) in_sl ) AL 15/11/93 Duplicates input syslist. More... | |
Psyslist | sl_free (Psyslist) |
Psyslist sl_free(Psyslist psl) BA, AL 30/05/94 w - 1 depth free. More... | |
Psyslist | sl_free1 (Psyslist) |
Psyslist sl_free1(Psyslist psl) AL 30/05/94 1 depth free. More... | |
void | sl_set_variable_name (char *(*)(void)) |
char * | sl_get_tab_string (int) |
char* sl_get_tab_string( in_tab ) returns a string of in_tab \t More... | |
void | sl_fprint_tab (FILE *, Psyslist, char *(*)(void), int) |
void | sl_fprint (FILE *, Psyslist, char *(*)(void)) |
Psyslist | sl_read (char *) |
void sl_read(FILE*) reads a Psyslist More... | |
void | un_fprint_tab (FILE *, char *, char *(*)(void), int, int) |
int | slx_parse (void) |
int | slx_error (char *) |
int | slx_lex (void) |
void | slx_restart (FILE *) |
void | slx_pop_buffer_state (void) |
int | slx_get_lineno (void) |
FILE * | slx_get_in (void) |
FILE * | slx_get_out (void) |
int | slx_get_leng (void) |
char * | slx_get_text (void) |
void | slx_set_lineno (int) |
void | slx_set_in (FILE *) |
void | slx_set_out (FILE *) |
int | slx_get_debug (void) |
void | slx_set_debug (int) |
int | slx_lex_destroy (void) |
void * | slx_alloc (yy_size_t) |
void * | slx_realloc (void *, yy_size_t) |
void | slx_free (void *) |
int | slx_wrap (void) |
void | sl_init_lex (void) |
Variables | |
char *(* | union_variable_name )(Variable) |
sc_list.c More... | |
bool | syntax_error |
sl_gram.c More... | |
Value | valcst |
Psyslist | sl_yacc |
Pbase | ba_yacc |
Variable | va_yacc |
int | slx_char |
int | slx_nerrs |
int | slx_leng |
sl_lex.c More... | |
FILE * | slx_in |
FILE * | slx_out |
int | slx_lineno |
int | slx__flex_debug |
char * | slx_text |
#define CO_UNDEFINED (Pcomplement) NULL |
#define dj_faisabilite | ( | dj | ) | dj_feasibility_ofl_ctrl((dj), NO_OFL_CTRL) |
#define dj_faisabilite_ofl | ( | dj | ) | dj_feasibility_ofl_ctrl((dj), FWD_OFL_CTRL) |
#define dj_feasibility | ( | dj | ) | dj_feasibility_ofl_ctrl((dj), NO_OFL_CTRL) |
#define dj_fprint | ( | fi, | |
dj, | |||
fu | |||
) | dj_fprint_tab((fi), (dj), (fu), 0) |
#define dj_intersect_djcomp | ( | dj1, | |
dj2 | |||
) | dj_intersect_djcomp_ofl_ctrl( (dj1), (dj2), NO_OFL_CTRL ) |
#define dj_intersect_system | ( | dj, | |
ps | |||
) | dj_intersect_system_ofl_ctrl((dj), (ps), NO_OFL_CTRL ) |
#define dj_intersection | ( | dj1, | |
dj2 | |||
) | dj_intersection_ofl_ctrl((dj1), (dj2), NO_OFL_CTRL) |
#define dj_projection_along_variables | ( | dj, | |
pv | |||
) | dj_projection_along_variables_ofl_ctrl((dj),(pv),NO_OFL_CTRL) |
#define DJ_UNDEFINED_P | ( | dj | ) | ((dj) == DJ_UNDEFINED) |
#define dj_variable_substitution_with_eqs | ( | dj, | |
co, | |||
pv | |||
) | dj_variable_substitution_with_eqs_ofl_ctrl( (dj), (co), (pv), NO_OFL_CTRL ) |
#define is_dj_empty_p | ( | dj | ) | dj_empty_p((dj)) |
#define is_pa_empty_p | ( | pa | ) | pa_empty_p((pa)) |
#define is_sc_my_empty_p | ( | ps | ) | sc_empty_p((ps)) |
#define pa_convex_hull_equals_union_p | ( | conv_hull, | |
ps1, | |||
ps2 | |||
) | pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2), NO_OFL_CTRL, false) |
#define pa_faisabilite | ( | pa | ) | pa_feasibility_ofl_ctrl((pa), NO_OFL_CTRL) |
#define pa_faisabilite_ofl | ( | pa | ) | pa_feasibility_ofl_ctrl((pa), FWD_OFL_CTRL) |
#define pa_feasibility | ( | pa | ) | pa_feasibility_ofl_ctrl((pa), NO_OFL_CTRL) |
#define pa_fprint | ( | fi, | |
pa, | |||
fu | |||
) | pa_fprint_tab((fi), (pa), (fu), 0) |
#define pa_inclusion_p | ( | ps1, | |
ps2 | |||
) | pa_inclusion_p_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL) |
#define pa_path_dup_to_disjunct | ( | pa | ) | pa_path_to_disjunct_ofl_ctrl((pa), NO_OFL_CTRL ) |
#define pa_path_to_disjunct | ( | pa | ) | pa_path_to_disjunct_ofl_ctrl((pa), NO_OFL_CTRL ) |
#define pa_path_to_disjunct_ofl | ( | pa | ) | pa_path_to_disjunct_ofl_ctrl((pa), FWD_OFL_CTRL ) |
#define pa_path_to_disjunct_rule4 | ( | pa | ) | pa_path_to_disjunct_rule4_ofl_ctrl((pa), FWD_OFL_CTRL ) |
#define pa_path_to_few_disjunct | ( | pa | ) | pa_path_to_few_disjunct_ofl_ctrl((pa), NO_OFL_CTRL) |
#define pa_system_difference | ( | ps1, | |
ps2 | |||
) | pa_system_difference_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL) |
#define pa_system_difference | ( | ps1, | |
ps2 | |||
) | pa_system_difference_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL) |
#define pa_system_equal_p | ( | ps1, | |
ps2 | |||
) | pa_system_equal_p_ofl_ctrl((ps1),(ps2),NO_OFL_CTRL) |
#define PA_UNDEFINED_P | ( | pa | ) | ((pa) == PA_UNDEFINED) |
#define sc_convex_hull_equals_union_p | ( | conv_hull, | |
ps1, | |||
ps2 | |||
) | pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2),NO_OFL_CTRL, false) |
#define sc_convex_hull_equals_union_p_ofl | ( | conv_hull, | |
ps1, | |||
ps2 | |||
) | pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2), OFL_CTRL, false) |
#define sc_convex_hull_equals_union_p_ofl_ctrl | ( | conv_hull, | |
ps1, | |||
ps2, | |||
ofl, | |||
bo | |||
) | pa_convex_hull_equals_union_p_ofl_ctrl((conv_hull), (ps1), (ps2), (ofl), (bo)) |
#define sc_difference | ( | ps1, | |
ps2 | |||
) | pa_system_difference_ofl_ctrl((ps1),(ps2),FWD_OFL_CTRL) |
#define sc_elim_redund_with_first | ( | ps1, | |
ps2 | |||
) | sc_elim_redund_with_first_ofl_ctrl((ps1), (ps2), NO_OFL_CTRL) |
#define sc_equal_p | ( | ps1, | |
ps2 | |||
) | pa_system_equal_p_ofl_ctrl((ps1), (ps2), NO_OFL_CTRL) |
#define sc_equal_p_ofl | ( | ps1, | |
ps2 | |||
) | pa_system_equal_p_ofl_ctrl((ps1), (ps2), FWD_OFL_CTRL) |
#define sc_equal_p_ofl_ctrl | ( | ps1, | |
ps2, | |||
ofl | |||
) | pa_system_equal_p_ofl_ctrl((ps1), (ps2), (ofl)) |
#define sc_inclusion_p | ( | ps1, | |
ps2 | |||
) | pa_inclusion_p_ofl_ctrl((ps1), (ps2), NO_OFL_CTRL) |
#define sc_inclusion_p_ofl | ( | ps1, | |
ps2 | |||
) | pa_inclusion_p_ofl_ctrl((ps1), (ps2), FWD_OFL_CTRL) |
#define sc_inclusion_p_ofl_ctrl | ( | ps1, | |
ps2, | |||
ofl | |||
) | pa_inclusion_p_ofl_ctrl((ps1), (ps2), (ofl)) |
#define un_fprint | ( | fi, | |
un, | |||
fu, | |||
ty | |||
) | un_fprint_tab((fi), (un), (fu), (ty), 0) |
typedef Ssysteme* Pcomplement |
Warning! Do not modify this file that is automatically generated!
Modify src/Libs/union/union-local.h instead, to add your own modifications. header file built by cproto union-local.h
typedef Ssysteme Scomplement |
enum hspara_elem |
Implementation of the finite parallel half space lattice hspara.
________ full / | / empty ___ / | \ / keep \ / / \ \ ssplus / opplus \ | ssminus | opminus sszero \ opzero / \ \ / / \________ unpara _____/
Definition at line 56 of file union.h.
enum hspara_elem contrainte_parallel_in_liste | ( | Pcontrainte | in_co, |
Pcontrainte | in_lc | ||
) |
enum enum hspara_elem contrainte_parallel_in_liste( in_co, in_lc ) AL950711 input: 1 constraint in_co and a list of constraints in_lc output: hspara_elem (element of the parallel half space lattice) memory: Inspector (nothing is shared, nor modified, output allocated).
complexity: length(in_lc) * comp(vect_parallel()) comment: in_co represents a1 X+b1 <= 0 and in_lc aj X + bj <=0. Returns in_co/in_lc = join_j( vect_parallel( in_co, in_lc_j ) ) between keep, empty and full.
debuging
debuging
in_co | n_co |
in_lc | n_lc |
Definition at line 49 of file reduc.c.
Referenced by sc_supress_parallel_redund_constraints().
Pdisjunct dj_append_system( (Pdisjunct) in_dj, (Psysteme) in_ps ) Input : A disjunct in_dj to wich in_ps will be added.
AL 10/11/93 Output : Disjunct in_dj with in_ps. => ! Sharing. Comment: Nothing is checked on result in_dj.
in_dj | n_dj |
in_ps | n_ps |
Definition at line 403 of file disjunct.c.
References dj_full_p(), dj_new(), Ssyslist::psys, and sl_append_system().
Referenced by compatible_pc_p(), dj_system_complement(), and pa_path_to_disjunct_rule4_ofl_ctrl().
Returns complement of in_dj.
No sharing
debugging
in_dj | n_dj |
Definition at line 299 of file disjunct.c.
References C3_DEBUG, C3_RETURN, dj_dup(), dj_empty_p(), dj_fprint_tab(), dj_full(), dj_full_p(), dj_intersection, dj_system_complement(), DJ_UNDEFINED, DJ_UNDEFINED_P, IS_DJ, and union_variable_name.
Referenced by dj_intersect_djcomp_ofl_ctrl().
Pdisjunct dj_dup( (Pdisjunct) in_dj ) AL 15/11/93 Duplicates input disjunction.
in_dj | n_dj |
Definition at line 58 of file disjunct.c.
References dj_full(), dj_full_p(), and sl_dup().
Referenced by dj_disjunct_complement(), dj_intersect_djcomp_ofl_ctrl(), dj_intersection_ofl_ctrl(), and dj_simple_inegs_to_eg().
Pdisjunct dj_dup1( (Pdisjunct) in_dj ) AL 31/05/94 1st depth duplication of input disjunction.
in_dj | n_dj |
Definition at line 76 of file disjunct.c.
References sl_dup1().
Pdisjunct dj_empty | ( | void | ) |
Pdisjunct dj_empty() AL 18/11/93 Returns a disjunction with sc_empty() element.
Definition at line 111 of file disjunct.c.
References sc_empty(), and sl_append_system().
Referenced by dj_intersect_djcomp_ofl_ctrl(), dj_intersection_ofl_ctrl(), pa_path_to_disjunct_ofl_ctrl(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), and pa_system_difference_ofl_ctrl().
dj_empty_p( (Ppath) in_pa ) AL 30/05/94 Returns True if in_dj = (1*TCST = 0) ^ (NIL)
in_dj | n_dj |
Definition at line 118 of file disjunct.c.
References DJ_UNDEFINED, and sc_empty_p().
Referenced by dj_disjunct_complement(), dj_intersect_djcomp_ofl_ctrl(), dj_intersection_ofl_ctrl(), dj_projection_along_variables_ofl_ctrl(), dj_simple_inegs_to_eg(), dj_union(), dj_variable_rename(), dj_variable_substitution_with_eqs_ofl_ctrl(), and pa_feasibility_ofl_ctrl().
bool dj_feasibility_ofl_ctrl( (Pdisjunct) in_dj, (int) ofl_ctrl ) Returns true if in_dj is a feasible disjunction.
AL,BC 23/02/95
in_dj | n_dj |
ofl_ctrl | fl_ctrl |
Definition at line 232 of file disjunct.c.
References DJ_UNDEFINED, Ssyslist::psys, sc_rational_feasibility_ofl_ctrl(), and Ssyslist::succ.
Pdisjunct dj_free( (Pdisjunct) in_dj ) AL 31/05/94 w - 1 depth free of input disjunction.
in_dj | n_dj |
Definition at line 69 of file disjunct.c.
References sl_free().
Referenced by disjunction_to_region_sc(), dj_union(), pa_feasibility_ofl_ctrl(), pa_path_to_disjunct_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), and pa_system_difference_ofl_ctrl().
Pdisjunct dj_free1( (Pdisjunct) in_dj ) AL 31/05/94 1st depth free of input disjunction.
in_dj | n_dj |
Definition at line 84 of file disjunct.c.
References sl_free1().
Referenced by disjunction_to_region_sc().
Pdisjunct dj_full | ( | void | ) |
Pdisjunct dj_full() AL 18/11/93 Return full space disjunction = dj_new()
Definition at line 92 of file disjunct.c.
References dj_new().
Referenced by dj_disjunct_complement(), dj_dup(), dj_intersection_ofl_ctrl(), dj_system_complement(), pa_path_to_disjunct_ofl_ctrl(), and pa_path_to_few_disjunct_ofl_ctrl().
dj_full_p( (Pdisjunct) in_dj ) AL 30/05/94 Returns True if in_dj = (NIL) ^ (NIL)
in_dj | n_dj |
Definition at line 98 of file disjunct.c.
References DJ_UNDEFINED.
Referenced by dj_append_system(), dj_disjunct_complement(), dj_dup(), dj_fprint_tab(), dj_intersect_djcomp_ofl_ctrl(), dj_intersection_ofl_ctrl(), dj_projection_along_variables_ofl_ctrl(), dj_simple_inegs_to_eg(), dj_union(), dj_variable_rename(), and dj_variable_substitution_with_eqs_ofl_ctrl().
Pdisjunct dj_intersect_djcomp_ofl_ctrl( ) No sharing.
in_dj1 and in_dj2 stay as is.
Special cases
debuging
General cases
in_dj1 | n_dj1 |
in_dj2 | n_dj2 |
ofl_ctrl | fl_ctrl |
Definition at line 173 of file disjunct.c.
References C3_DEBUG, C3_RETURN, dj_disjunct_complement(), dj_dup(), dj_empty(), dj_empty_p(), dj_fprint_tab(), dj_full_p(), DJ_UNDEFINED, DJ_UNDEFINED_P, dj_union(), fprintf(), free(), IS_DJ, pa_make(), pa_path_to_few_disjunct_ofl_ctrl(), Ssyslist::psys, Ssyslist::succ, and union_variable_name.
Pdisjunct dj_intersection_ofl_ctrl( in_dj1, in_dj2, ofl_ctrl ) Computes intersection of two disjunctions.
AL,BC 23/03/95 Very costly function : -> sc_faisabilite_ofl_ctrl used. No sharing
empty intersection
in_dj1 | n_dj1 |
in_dj2 | n_dj2 |
ofl_ctrl | fl_ctrl |
Definition at line 134 of file disjunct.c.
References dj_dup(), dj_empty(), dj_empty_p(), dj_full(), dj_full_p(), DJ_UNDEFINED, DJ_UNDEFINED_P, Ssyslist::psys, sc_append(), sc_dup(), sc_free(), sc_rational_feasibility_ofl_ctrl(), sl_append_system(), and Ssyslist::succ.
Referenced by dj_intersect_system_ofl_ctrl(), and pa_path_to_disjunct_ofl_ctrl().
bool dj_is_system_p( (Pdisjunct) in_dj ) AL 16/11/93 Returns True if disjunction in_dj has only one Psysteme in it.
in_dj | n_dj |
Definition at line 393 of file disjunct.c.
References sl_is_system_p().
Pdisjunct dj_new | ( | void | ) |
cproto-generated files
cproto-generated files
WARNING
THOSE FUNCTIONS ARE AUTOMATICALLY DERIVED
FROM THE WEB SOURCES !
Ansi includes
Linear includes
Pdisjunct dj_new() AL 26/10/93 Allocate a new Pdisjunct
Definition at line 52 of file disjunct.c.
References sl_new().
Referenced by dj_append_system(), and dj_full().
Returns projection of in_dj along vars of in_pv.
Sharing : in_dj is modified
in_dj | n_dj |
in_pv | n_pv |
ofl_ctrl | fl_ctrl |
Definition at line 319 of file disjunct.c.
References dj_empty_p(), dj_full_p(), DJ_UNDEFINED, DJ_UNDEFINED_P, Ssyslist::psys, and Ssyslist::succ.
Pdisjunct dj_read | ( | char * | nomfic | ) |
void dj_read(FILE*) reads a Pdisjunct
nomfic | omfic |
Definition at line 510 of file disjunct.c.
References sl_read().
Pdisjunct dj_simple_inegs_to_eg( in_dj ) transforms two opposite inequalities in a simple equality in each system of the input disjunction.
Input disjunction is not modified.
Special case
General case
Compare with inequalities
Do we have ineq <= 0 and - ineq <= 0 ?
in_dj | n_dj |
Definition at line 339 of file disjunct.c.
References assert, contrainte_dup(), contrainte_free(), contrainte_in_liste(), contrainte_make(), CONTRAINTE_UNDEFINED, contraintes_dup(), dj_dup(), dj_empty_p(), dj_full_p(), DJ_UNDEFINED_P, Ssysteme::egalites, Ssysteme::inegalites, Ssysteme::nb_ineq, Ssyslist::psys, sc_add_egalite(), sc_add_inegalite(), sc_creer_base(), sc_dup(), sc_empty_p(), sc_full_p(), sc_make(), sl_append_system(), Scontrainte::succ, Ssyslist::succ, vect_chg_sgn(), vect_dup(), and Scontrainte::vecteur.
Referenced by pa_system_difference_ofl_ctrl().
Pdisjunct dj_system_complement( (Psystem) in_ps ) AL 26/10/93 Input : A Psysteme.
Output : A disjunction which is complement of in_ps.
debugging
v1 = 1*TCST to build complement system ...
Look for equalities
Look for inequalities
in_ps | n_ps |
Definition at line 254 of file disjunct.c.
References C3_DEBUG, C3_RETURN, contrainte_make(), CONTRAINTE_UNDEFINED, dj_append_system(), dj_full(), DJ_UNDEFINED, Ssysteme::egalites, eq, Ssysteme::inegalites, IS_DJ, sc_empty_p(), sc_fprint(), sc_make(), sl_append_system(), Scontrainte::succ, TCST, union_variable_name, VALUE_ONE, vect_add(), vect_chg_sgn(), vect_dup(), vect_new(), vect_rm(), and Scontrainte::vecteur.
Referenced by analyze_quast(), dj_disjunct_complement(), pa_path_to_disjunct_ofl_ctrl(), and pa_reduce_simple_complement().
Pdisjunct dj_union( (Pdisjunct) in_dj1, (Pdisjunct) in_dj2 ) Give the union of the two disjunctions.
AL 15/11/93 Memory: systems of the 2 unions are shared. in_dj1 = dj_union(in_dj1,in_dj2); (in_dj1 = dj_free(in_dj1); to remove in_dj1 and in_dj2
in_dj1 | n_dj1 |
in_dj2 | n_dj2 |
Definition at line 211 of file disjunct.c.
References dj_empty_p(), dj_free(), dj_full_p(), DJ_UNDEFINED, DJ_UNDEFINED_P, and Ssyslist::succ.
Referenced by dj_intersect_djcomp_ofl_ctrl(), and pa_path_to_few_disjunct_ofl_ctrl().
dj_variable_rename replaces in_vold with in_vnew : in_dj is modified
in_dj | n_dj |
in_vold | n_vold |
in_vnew | n_vnew |
Definition at line 417 of file disjunct.c.
References dj_empty_p(), dj_full_p(), DJ_UNDEFINED, DJ_UNDEFINED_P, Ssyslist::psys, sc_variable_rename(), and Ssyslist::succ.
Pdisjunct dj_variable_substitution_with_eqs_ofl_ctrl | ( | Pdisjunct | , |
Pcontrainte | , | ||
Pvecteur | , | ||
int | |||
) |
bool pa_convex_hull_equals_union_p_ofl_ctrl | ( | Psysteme | conv_hull, |
Psysteme | ps1, | ||
Psysteme | ps2, | ||
int | ofl_ctrl, | ||
volatile bool | ofl_res | ||
) |
bool pa_convex_hull_equals_union_p(conv_hull, ps1, ps2) input : two Psystems and their convex hull AL,BC 23/03/95 output : true if ps1 U ps2 = convex_hull, false otherwise modifies : nothing comment : complexity = nb_constraints(ps1) * nb_constraints(ps2) if ofl_ctrl = OFL_CTRL, conservatively returns ofl_ctrl when an overflow error occurs
conv_hull | onv_hull |
ps1 | s1 |
ps2 | s2 |
ofl_ctrl | fl_ctrl |
ofl_res | fl_res |
Definition at line 937 of file reduc.c.
References CATCH, FWD_OFL_CTRL, OFL_CTRL, overflow_error, pa_feasibility_ofl_ctrl(), pa_free1(), pa_make(), sl_append_system(), TRY, and UNCATCH.
void pa_dup(Ppath pa) AL 30/05/94
in_pa | n_pa |
Definition at line 68 of file path.c.
References pa_make(), PA_UNDEFINED, sc_dup(), and sl_dup().
void pa_dup1(Ppath pa) AL 30/05/94 1 depth duplication: system and complements are shared.
in_pa | n_pa |
Definition at line 91 of file path.c.
References pa_make(), PA_UNDEFINED, and sl_dup1().
Ppath pa_empty | ( | void | ) |
Ppath pa_empty() AL 18/11/93 Returns empty path : pa_empty = sc_empty(NULL) ^ (NIL)
Definition at line 135 of file path.c.
References pa_make(), and sc_empty().
Referenced by adg_path_possible_source(), pa_intersect_complement(), pa_intersect_system(), pa_path_to_few_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), and pa_supress_same_constraints().
pa_empty_p( (Ppath) in_pa ) AL 18/11/93 Returns True if in_pa = (1*TCST = 0) ^ (NIL)
in_pa | n_pa |
Definition at line 141 of file path.c.
References PA_UNDEFINED, and sc_empty_p().
Referenced by adg_dataflowgraph(), adg_path_possible_source(), pa_feasibility_ofl_ctrl(), pa_intersect_complement(), pa_intersect_system(), pa_max_constraints_nb(), pa_path_to_disjunct_ofl_ctrl(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), pa_supress_same_constraints(), and pa_transform_eg_in_ineg().
bool pa_feasibility_ofl_ctrl( (Ppath) in_pa, int ofl_ctrl)
Returns true if the input path is possible and false if it is not possible or undefined.
in_pa | n_pa |
ofl_ctrl | fl_ctrl |
Definition at line 309 of file path.c.
References db_get_current_module_name(), dj_empty_p(), dj_free(), fprintf(), free(), malloc(), pa_empty_p(), pa_fprint, pa_free(), pa_full_p(), pa_max_constraints_nb(), pa_path_to_few_disjunct_ofl_ctrl(), pa_supress_same_constraints(), PA_UNDEFINED_P, sl_length(), sl_max_constraints_nb(), and union_variable_name.
Referenced by disjunction_to_region_sc(), pa_convex_hull_equals_union_p_ofl_ctrl(), and pa_inclusion_p_ofl_ctrl().
Ppath pa_free(Ppath pa) BA, AL 30/05/94.
in_pa | n_pa |
Definition at line 76 of file path.c.
References free(), PA_UNDEFINED, Spath::psys, sc_free(), and sl_free().
Referenced by pa_feasibility_ofl_ctrl(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), and pa_reduce_simple_complement().
Ppath pa_free1(Ppath pa) BA, AL 30/05/94 1 depth free.
System and complement are not freed.
in_pa | n_pa |
Definition at line 102 of file path.c.
References free(), PA_UNDEFINED, and sl_free1().
Referenced by disjunction_to_region_sc(), pa_convex_hull_equals_union_p_ofl_ctrl(), pa_inclusion_p_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), and pa_system_difference_ofl_ctrl().
Ppath pa_full | ( | void | ) |
Ppath pa_full() AL 18/11/93 Returns full space path : pa_full = pa_new()
Definition at line 117 of file path.c.
References pa_new.
Referenced by adg_dataflowgraph(), adg_dataflowgraph_with_extremities(), and pa_supress_same_constraints().
pa_full_p( (Ppath) in_pa ) AL 18/11/93 Returns True if in_pa = (NIL) ^ (NIL)
in_pa | n_pa |
Definition at line 123 of file path.c.
References PA_UNDEFINED.
Referenced by pa_feasibility_ofl_ctrl(), pa_fprint_tab(), pa_intersect_complement(), pa_intersect_system(), pa_max_constraints_nb(), pa_path_to_disjunct_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), pa_supress_same_constraints(), and pa_transform_eg_in_ineg().
bool pa_inclusion_p(Psysteme ps1, Psysteme ps2) BA, AL 31/05/94 returns true if ps1 represents a subset of ps2, false otherwise Inspector (no sharing on memory).
ps1 | s1 |
ps2 | s2 |
ofl_ctrl | fl_ctrl |
Definition at line 868 of file reduc.c.
References CATCH, overflow_error, pa_feasibility_ofl_ctrl(), pa_free1(), pa_make(), sl_append_system(), TRY, and UNCATCH.
Referenced by pa_system_equal_p_ofl_ctrl().
Ppath pa_intersect_complement | ( | Ppath | in_pa, |
Pcomplement | in_pc | ||
) |
Ppath pa_intersect_complement( (Ppath) in_pa, (Pcomplement) in_pc ) Computes the intersection between in_pa and in_ps.
AL 17/11/93 No sharing
in_pa | n_pa |
in_pc | n_pc |
Definition at line 200 of file path.c.
References pa_empty(), pa_empty_p(), pa_full_p(), pa_make(), PA_UNDEFINED, PA_UNDEFINED_P, sc_dup(), sc_full(), sl_append_system(), and sl_dup().
Referenced by adg_path_max_source(), adg_path_possible_source(), and adg_update_dfg().
Ppath pa_intersect_system( (Ppath) in_pa, (Psysteme) in_ps ) Computes the intersection between in_pa and in_ps.
AL 25/04/95 No sharing
in_pa | n_pa |
in_ps | n_ps |
Definition at line 178 of file path.c.
References pa_empty(), pa_empty_p(), pa_full_p(), pa_make(), PA_UNDEFINED, PA_UNDEFINED_P, sc_append(), sc_dup(), sc_free(), sc_normalize(), and sl_dup().
Referenced by adg_max_of_leaves(), adg_path_max_source(), adg_path_possible_source(), and adg_update_dfg().
WARNING
THOSE FUNCTIONS ARE AUTOMATICALLY DERIVED
FROM THE WEB SOURCES !
Ansi includes
Linear includes
Ppath pa_make(in_ps, in_pcomp) AL 16/11/93 Allocates a Ppath and initialize it with in_ps and in_pcomp SHARING.
in_ps | n_ps |
in_pcomp | n_pcomp |
Definition at line 53 of file path.c.
References exit, fprintf(), malloc(), Spath::pcomp, and Spath::psys.
Referenced by disjunction_to_region_sc(), dj_intersect_djcomp_ofl_ctrl(), pa_convex_hull_equals_union_p_ofl_ctrl(), pa_dup(), pa_dup1(), pa_empty(), pa_inclusion_p_ofl_ctrl(), pa_intersect_complement(), pa_intersect_system(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), pa_read(), pa_reduce_simple_complement(), pa_supress_same_constraints(), and pa_system_difference_ofl_ctrl().
int pa_max_constraints_nb( (Ppath) in_pa ) Give the maximum constraints nb among systems of in_pa.
in_pa | n_pa |
Definition at line 155 of file path.c.
References Ssysteme::nb_eq, Ssysteme::nb_ineq, pa_empty_p(), pa_full_p(), PA_UNDEFINED_P, and sl_max_constraints_nb().
Referenced by pa_feasibility_ofl_ctrl(), and pa_path_to_disjunct_rule4_ofl_ctrl().
Pdisjunct pa_path_to_disjunct_ofl_ctrl ( (Ppath) in_pa, (int) ofl_ctrl)
Produces a Pdisjunct corresponding to the path Ppath.
No sharing.
comparison between 2 methods
in_pa | n_pa |
ofl_ctrl | fl_ctrl |
Definition at line 374 of file path.c.
References C3_DEBUG, dj_empty(), dj_free(), dj_full(), dj_intersection_ofl_ctrl(), dj_system_complement(), DJ_UNDEFINED, fprintf(), pa_empty_p(), pa_full_p(), PA_UNDEFINED, Ssyslist::psys, sc_dup(), sc_empty_p(), sl_append_system(), sl_length(), and Ssyslist::succ.
Referenced by pa_path_to_disjunct_rule4_ofl_ctrl().
Pdisjunct pa_path_to_disjunct_rule4_ofl_ctrl( (Ppath) in_pa, int ofl_ctrl)
Returns the corresponding disjunction according rule 4.
AL 05/16/95 No sharing.
Returns according to different cases
we've modified P0 systeme
in_pa | n_pa |
ofl_ctrl | fl_ctrl |
Definition at line 570 of file reduc.c.
References C3_DEBUG, C3_RETURN, dj_append_system(), dj_empty(), DJ_UNDEFINED, fprintf(), IS_DJ, pa_empty_p(), pa_fprint, pa_free(), pa_make(), pa_max_constraints_nb(), pa_path_to_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), PA_UNDEFINED, PATH_MAX_CONSTRAINTS, Spath::pcomp, Ssyslist::psys, Spath::psys, sc_dup(), sc_elim_redund_with_first_ofl_ctrl(), sc_empty_p(), sc_free(), sc_full_p(), sl_append_system(), sl_free(), sl_length(), Ssyslist::succ, and union_variable_name.
Referenced by pa_path_to_few_disjunct_ofl_ctrl().
line 1197 "reduc.w"
Pdisjunct pa_path_to_few_disjunct_ofl_ctrl( (Ppath) in_pa, (int) ofl_ctrl )
Produces a Pdisjunct corresponding to the path Ppath and reduces the number of disjunctions. See "Extension de C3 aux Unions de Polyedres" Version 2, for a complete explanation about this function. in_pa is modified. AL 23/03/95
line 1208 "reduc.w"
If it's an empty path or if it has no complements : return
We are looking for a common hyperplan
removes cons_pv and vect_dup(vect_1)
take care of rule 2
take care of rule 2
Manage memory, free: cons_oppose, common_ps, common_ps_oppose, cons_pv, vect_1, pa1, pa2
Manage memory
in_pa | n_pa |
ofl_ctrl | fl_ctrl |
Definition at line 648 of file reduc.c.
References C3_DEBUG, C3_RETURN, contrainte_free(), contrainte_in_liste(), contrainte_make(), CONTRAINTE_UNDEFINED, dj_empty(), dj_fprint_tab(), dj_free(), dj_full(), DJ_UNDEFINED, dj_union(), fprintf(), Ssysteme::inegalites, IS_DJ, pa_empty(), pa_empty_p(), pa_fprint, pa_fprint_tab(), pa_free(), pa_free1(), pa_full_p(), pa_make(), pa_new, pa_path_to_disjunct_rule4_ofl_ctrl(), pa_reduce_simple_complement(), pa_transform_eg_in_ineg(), PA_UNDEFINED_P, Spath::pcomp, Ssyslist::psys, Spath::psys, sc_dup(), sc_free(), sc_make(), sc_safe_append(), sc_supress_same_constraints(), sl_append_system(), sl_dup(), Ssyslist::succ, TCST, union_variable_name, VALUE_ONE, vect_add(), vect_chg_sgn(), vect_dup(), vect_fprint(), vect_new(), vect_rm(), and Scontrainte::vecteur.
Referenced by dj_intersect_djcomp_ofl_ctrl(), pa_feasibility_ofl_ctrl(), and pa_system_difference_ofl_ctrl().
Ppath pa_read | ( | char * | nomfic | ) |
void pa_read(FILE*) reads a Ppath
nomfic | omfic |
Definition at line 438 of file path.c.
References free(), pa_make(), PA_UNDEFINED, Ssyslist::psys, SL_NULL, sl_read(), and Ssyslist::succ.
Ppath pa_reduce_simple_complement( (Ppath) in_pa ) AL 16/11/93 Scan all the complement.
If one complement is a simple inequality, its complement is computed and intersected with psys part of in_pa. in_pa is modified. (Sharing with in_pa).
Do we have a simple complement ?
also frees pss
in_pa | n_pa |
Definition at line 222 of file path.c.
References C3_DEBUG, C3_RETURN, dj_free(), dj_system_complement(), false, fprintf(), IS_PA, Ssysteme::nb_eq, Ssysteme::nb_ineq, pa_empty(), pa_empty_p(), pa_fprint_tab(), pa_free(), pa_free1(), pa_full_p(), pa_make(), PA_UNDEFINED, Ssyslist::psys, sc_empty_p(), sc_safe_append(), sl_append_system(), sl_free(), sl_free1(), Ssyslist::succ, and union_variable_name.
Referenced by pa_path_to_disjunct_rule4_ofl_ctrl(), and pa_path_to_few_disjunct_ofl_ctrl().
Ppath pa_supress_same_constraints( (Ppath) in_pa )
Supress from complements of in_pa same constraints than those in positif Psystem in_pa->psys.
Returned path have no more equalities. AL050795 No sharing, no modification of inputs.
Special cases
debuging
General case
Psysteme ps = sc_supress_same_constraints( positif, comp->psys );
in_pa | n_pa |
Definition at line 528 of file reduc.c.
References C3_DEBUG, C3_RETURN, fprintf(), IS_PA, pa_empty(), pa_empty_p(), pa_fprint_tab(), pa_full(), pa_full_p(), pa_make(), PA_UNDEFINED, PA_UNDEFINED_P, Ssyslist::psys, sc_dup(), sc_supress_parallel_redund_constraints(), sc_transform_eg_in_ineg(), sl_append_system(), sl_free(), Ssyslist::succ, and union_variable_name.
Referenced by pa_feasibility_ofl_ctrl().
Pdisjunct pa_system_difference_ofl_ctrl(ps1, ps2) input : two Psystemes output : a disjunction representing ps1 - ps2 modifies : nothing comment : algorihtm : chemin = ps1 inter complement of (ps2) ret_dj = dj_simple_inegs_to_eg( pa_path_to_few_disjunct(chemin) )
ps1 | s1 |
ps2 | s2 |
ofl_ctrl | fl_ctrl |
Definition at line 908 of file reduc.c.
References dj_empty(), dj_free(), dj_simple_inegs_to_eg(), DJ_UNDEFINED, pa_free1(), pa_make(), pa_path_to_few_disjunct_ofl_ctrl(), sc_dup(), sc_empty_p(), and sl_append_system().
bool pa_system_equal_p(Psysteme ps1, Psysteme ps2) BA
ps1 | s1 |
ps2 | s2 |
ofl_ctrl | fl_ctrl |
Definition at line 890 of file reduc.c.
References pa_inclusion_p_ofl_ctrl().
Ppath pa_transform_eg_in_ineg( in_pa ) Transforms all equalities of all systems composing in_pa in inequalities and returns in_pa.
in_pa is modified. (Sharing with in_pa).
in_pa | n_pa |
Definition at line 284 of file path.c.
References pa_empty_p(), pa_full_p(), PA_UNDEFINED, Ssyslist::psys, sc_transform_eg_in_ineg(), and Ssyslist::succ.
Referenced by pa_path_to_few_disjunct_ofl_ctrl().
Psysteme sc_concatenate( in_s1, in_s2 ) AL 30/05/94 Append in_s2 to the end of in_s1 and returns in_s1.
Freeable with sc_free1(). Sharing.
Memory management and returns
in_s1 | n_s1 |
in_s2 | n_s2 |
Definition at line 157 of file sc_list.c.
References Ssysteme::base, Ssysteme::egalites, eq, free(), Ssysteme::inegalites, Ssysteme::nb_eq, Ssysteme::nb_ineq, s1, sc_creer_base(), sc_dup1(), sc_free1(), Scontrainte::succ, and vect_rm().
Psysteme sc_dup1( in_ps ) AL 30/05/94 1 depth copy of in_ps: no duplication of vectors (except for the base).
Sharing !
in_ps | n_ps |
Definition at line 72 of file sc_list.c.
References assert, contrainte_new(), contrainte_vecteur, cp, eq, sc_add_egalite(), sc_add_inegalite(), sc_new(), Scontrainte::succ, vect_dup(), vect_size(), VECTEUR_UNDEFINED, and VECTEUR_UNDEFINED_P.
Referenced by sc_concatenate().
Psysteme sc_elim_redund_with_first_ofl_ctrl( in_ps1, in_ps2, ofl_ctrl ) Returns constraints of in_ps2 which cut in_ps1.
AL 06 04 95 It is assumed that in_ps1 and in_ps2 are feasible ! in_ps1 is not modified, in_ps2 is modified.
Return on special cases
debuging
build in_ps1.and.in_ps2 with sharing on in_ps2 This also works if in_ps1 is full space
debuging
update information on ps1
debuging
Normalize 2 inputs systems
returns if there is no intersection
We run over in_ps2 constraints (shared by ps1) and detect redundance
eliminate the constraint from in_ps2, and thus from ps1
in_ps1 | n_ps1 |
in_ps2 | n_ps2 |
ofl_ctrl | fl_ctrl |
Definition at line 412 of file reduc.c.
References assert, Ssysteme::base, base_union(), C3_DEBUG, C3_RETURN, contrainte_free(), contrainte_reverse(), CONTRAINTE_UNDEFINED, Ssysteme::dimension, eq, eq_set_vect_nul(), fprintf(), Ssysteme::inegalites, IS_SC, Ssysteme::nb_eq, Ssysteme::nb_ineq, sc_dup(), sc_empty(), sc_fprint(), sc_free(), sc_full(), sc_full_p(), sc_rational_feasibility_ofl_ctrl(), sc_transform_eg_in_ineg(), sc_weak_consistent_p(), Scontrainte::succ, union_variable_name, vect_fprint(), vect_normalize(), vect_rm(), vect_size(), and Scontrainte::vecteur.
Referenced by pa_path_to_disjunct_rule4_ofl_ctrl().
Psysteme sc_free( in_ps ) AL 30/05/94 Free of in_ps.
Returns NULL to be used as in_ps = sc_free( in_ps );
in_ps | n_ps |
Definition at line 112 of file sc_list.c.
References sc_rm().
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), dj_intersection_ofl_ctrl(), effects_to_dma(), new_system_with_only_live_variable(), pa_free(), pa_intersect_system(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), region_to_minimal_dimensions(), sc_elim_redund_with_first_ofl_ctrl(), sc_supress_parallel_redund_constraints(), sl_free(), transformer_list_generic_transitive_closure(), xml_Application(), xml_Boxes(), xml_Call(), xml_Loop(), and xml_Pattern_Paving().
Psysteme sc_free1( in_ps ) AL 30/05/94 Only pcontrainte of in_ps are freed.
in_ps | n_ps |
Definition at line 121 of file sc_list.c.
References free(), Scontrainte::succ, and vect_rm().
Referenced by sc_concatenate().
Psysteme sc_full | ( | void | ) |
Psysteme sc_full() similar to sc_new.
Definition at line 58 of file sc_list.c.
References sc_new().
Referenced by pa_intersect_complement(), and sc_elim_redund_with_first_ofl_ctrl().
Psysteme sc_full_p( in_ps ) similar to sc_new.
in_ps | n_ps |
Definition at line 61 of file sc_list.c.
Referenced by dj_simple_inegs_to_eg(), pa_path_to_disjunct_rule4_ofl_ctrl(), sc_elim_redund_with_first_ofl_ctrl(), and sl_fprint_tab().
Psysteme sc_supress_parallel_redund_constraints( in_ps1, in_ps2 ) input: 2 Psystemes in_ps1 and in_ps2 output: in_ps1 / in_ps2 (cut operation on polyhedrons) memory: Inspector (nothing is shared, nor modified, output allocated).
comment: Supress in dup(in_ps2) parallel constraints that are redundant relatively to in_ps1. Returned Psysteme have only inequalities.
debuging
Transforms equalities in inequalities if necessary
Compare with inequalities
update base and normalize
Manage memory and return
in_ps1 | n_ps1 |
in_ps2 | n_ps2 |
Definition at line 255 of file reduc.c.
References abort, Ssysteme::base, C3_DEBUG, C3_RETURN, contrainte_dup(), contrainte_parallel_in_liste(), empty, fprintf(), full, Ssysteme::inegalites, IS_SC, keep, sc_add_inegalite(), sc_creer_base(), sc_dup(), sc_empty(), sc_empty_p(), sc_fprint(), sc_free(), sc_make(), sc_normalize(), sc_transform_eg_in_ineg(), Scontrainte::succ, union_variable_name, and vect_rm().
Referenced by pa_supress_same_constraints().
Psysteme sc_supress_same_constraints( in_ps1, in_ps2 ) supress in in_ps2 constraints that are in in_ps1.
Nothing is shared, nor modified. Returned Psysteme have only inequalities. This function should be superseded by sc_supress_parallel_redund_contraints
Compare with equalities a == 0 <=> a <= 0 and -a <= 0
add co to returned inegs
add eq to returned inegs
add co and eq to returned inegs
Compare with inequalities
in_ps1 | n_ps1 |
in_ps2 | n_ps2 |
Definition at line 329 of file reduc.c.
References Ssysteme::base, C3_DEBUG, C3_RETURN, contrainte_chg_sgn(), contrainte_dup(), contrainte_free(), contrainte_in_liste(), contrainte_make(), eq, eq_in_ineq(), fprintf(), IS_SC, sc_add_inegalite(), sc_creer_base(), sc_dup(), sc_fprint(), sc_make(), sc_normalize(), Scontrainte::succ, union_variable_name, vect_chg_sgn(), vect_dup(), vect_rm(), and Scontrainte::vecteur.
Referenced by pa_path_to_few_disjunct_ofl_ctrl().
Psyslist sl_append_system( (Psyslist) in_sl, (Psysteme) in_ps ) Input : A disjunct in_sl to wich in_ps will be added.
Output : Disjunct in_sl with in_ps. => ! Sharing. Comment: Nothing is checked on result in_sl. AL 10/11/93
in_sl | n_sl |
in_ps | n_ps |
Definition at line 240 of file sc_list.c.
References Ssyslist::psys, sl_new(), and Ssyslist::succ.
Referenced by dj_append_system(), dj_empty(), dj_intersect_system_ofl_ctrl(), dj_intersection_ofl_ctrl(), dj_simple_inegs_to_eg(), dj_system_complement(), pa_convex_hull_equals_union_p_ofl_ctrl(), pa_inclusion_p_ofl_ctrl(), pa_intersect_complement(), pa_path_to_disjunct_ofl_ctrl(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), pa_supress_same_constraints(), pa_system_difference_ofl_ctrl(), sl_append_system_first(), sl_dup(), and sl_dup1().
Psyslist sl_append_system_first( in_sl, in_ps ) AL 23/03/95 A new Psyslist with in_ps at the end of in_sl (sharing).
in_sl | n_sl |
in_ps | n_ps |
Definition at line 256 of file sc_list.c.
References sl_append_system(), SL_NULL, and Ssyslist::succ.
Psyslist sl_dup( (Psyslist) in_sl ) AL 15/11/93 w - 1 duplication : everything is duplicated, except entities.
Duplicates input syslist.
in_sl | n_sl |
Definition at line 296 of file sc_list.c.
References Ssyslist::psys, sc_dup(), sl_append_system(), SL_NULL, and Ssyslist::succ.
Referenced by dj_dup(), pa_dup(), pa_intersect_complement(), pa_intersect_system(), and pa_path_to_few_disjunct_ofl_ctrl().
Psyslist sl_dup1( (Psyslist) in_sl ) AL 15/11/93 Duplicates input syslist.
Sharing.
in_sl | n_sl |
Definition at line 311 of file sc_list.c.
References Ssyslist::psys, sl_append_system(), and Ssyslist::succ.
Referenced by dj_dup1(), and pa_dup1().
void sl_fprint | ( | FILE * | , |
Psyslist | , | ||
char * | *)(void | ||
) |
Psyslist sl_free(Psyslist psl) BA, AL 30/05/94 w - 1 depth free.
psl | sl |
Definition at line 327 of file sc_list.c.
References free(), Ssyslist::psys, sc_free(), and SL_NULL.
Referenced by dj_free(), pa_free(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_reduce_simple_complement(), and pa_supress_same_constraints().
Psyslist sl_free1(Psyslist psl) AL 30/05/94 1 depth free.
psl | sl |
Definition at line 343 of file sc_list.c.
References free(), Ssyslist::psys, and SL_NULL.
Referenced by dj_free1(), pa_free1(), and pa_reduce_simple_complement().
char* sl_get_tab_string | ( | int | in_tab | ) |
char* sl_get_tab_string( in_tab ) returns a string of in_tab \t
in_tab | n_tab |
Definition at line 366 of file sc_list.c.
References assert, and strdup().
Referenced by dj_fprint_tab(), pa_fprint_tab(), sl_fprint_tab(), and un_fprint_tab().
void sl_init_lex | ( | void | ) |
bool sl_is_system_p( (Psyslist) in_sl ) AL 16/11/93 Returns True if syslist in_sl has only one Psysteme in it.
in_sl | n_sl |
Definition at line 230 of file sc_list.c.
References sl_length().
Referenced by dj_is_system_p().
int sl_length( (Psyslist) in_sl ) AL 26/04/95 Returns length of in_sl.
in_sl | n_sl |
Definition at line 193 of file sc_list.c.
References Ssyslist::succ.
Referenced by pa_feasibility_ofl_ctrl(), pa_path_to_disjunct_ofl_ctrl(), pa_path_to_disjunct_rule4_ofl_ctrl(), and sl_is_system_p().
int sl_max_constraints_nb( (Psyslist) in_sl ) Give the maximum constraints nb among systems of in_sl.
in_sl | n_sl |
Definition at line 207 of file sc_list.c.
References if(), Ssysteme::nb_eq, Ssysteme::nb_ineq, and sc_empty_p().
Referenced by pa_feasibility_ofl_ctrl(), and pa_max_constraints_nb().
Psyslist sl_new | ( | void | ) |
Psyslist sl_new() AL 26/10/93 Input : Nothing.
Output : An empty syslist.
Definition at line 277 of file sc_list.c.
References exit, fprintf(), malloc(), Ssyslist::psys, and Ssyslist::succ.
Referenced by build_third_comb(), dj_new(), pa_fprint_tab(), prepare_array_bounds(), and sl_append_system().
Psyslist sl_read | ( | char * | nomfic | ) |
void sl_read(FILE*) reads a Psyslist
nomfic | omfic |
Definition at line 461 of file sc_list.c.
References exit, fprintf(), sl_init_lex(), sl_yacc, slx_in, and slx_parse().
Referenced by dj_read(), and pa_read().
void sl_set_variable_name | ( | char * | *)(void | ) |
void* slx_alloc | ( | yy_size_t | ) |
int slx_error | ( | char * | s | ) |
procedure minimum de recouvrement d'erreurs
Definition at line 1702 of file sl_gram.c.
References fprintf(), slx_text, and syntax_error.
void slx_free | ( | void * | ) |
int slx_get_debug | ( | void | ) |
FILE* slx_get_in | ( | void | ) |
int slx_get_leng | ( | void | ) |
int slx_get_lineno | ( | void | ) |
FILE* slx_get_out | ( | void | ) |
char* slx_get_text | ( | void | ) |
int slx_lex | ( | void | ) |
int slx_lex_destroy | ( | void | ) |
int slx_parse | ( | void | ) |
void slx_pop_buffer_state | ( | void | ) |
void* slx_realloc | ( | void * | , |
yy_size_t | |||
) |
void slx_restart | ( | FILE * | ) |
void slx_set_debug | ( | int | ) |
void slx_set_in | ( | FILE * | ) |
void slx_set_lineno | ( | int | ) |
void slx_set_out | ( | FILE * | ) |
int slx_wrap | ( | void | ) |
enum hspara_elem vect_parallel | ( | Pvecteur | in_v1, |
Pvecteur | in_v2 | ||
) |
complexity: length(in_v1) * length(in_v2) comment: in_v1 = a1 X + b1 represents a1 X+b1 <= 0 and in_v2 a2 X + b2 <=0. if (a1!=a2) || (a1!=-a2), returns unpara else if (a1==a2), return sign(b2-b1) in ss part of hspara else if (a1==-a2), return sign(-b2-b1) in op part of hspara.
gcd of each vector
length of each vector without TCST
value of TCST and their diff
debuging
get gcd of each vector and constant linked to TCST
Determine what kind of parallel hyperplane we are in
coefficient value was 0 and was not represented
compute return value
debuging
in_v1 | n_v1 |
in_v2 | n_v2 |
Definition at line 49 of file reduc.c.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
WARNING
THOSE FUNCTIONS ARE AUTOMATICALLY DERIVED
FROM THE WEB SOURCES !
Ansi includes
Linear includes
Definition at line 220 of file union.h.
Referenced by dj_disjunct_complement(), dj_intersect_djcomp_ofl_ctrl(), dj_system_complement(), dj_variable_substitution_with_eqs_ofl_ctrl(), pa_feasibility_ofl_ctrl(), pa_path_to_disjunct_rule4_ofl_ctrl(), pa_path_to_few_disjunct_ofl_ctrl(), pa_reduce_simple_complement(), pa_supress_same_constraints(), sc_elim_redund_with_first_ofl_ctrl(), sc_supress_parallel_redund_constraints(), sc_supress_same_constraints(), and sl_set_variable_name().