PIPS
sc_min.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include "boolean.h"
#include "arithmetique.h"
#include "linear_assert.h"
#include "vecteur.h"
#include "contrainte.h"
#include "ray_dte.h"
#include "sommet.h"
#include "sc.h"
#include "sg.h"
#include "types.h"
#include "polyedre.h"
+ Include dependency graph for sc_min.c:

Go to the source code of this file.

Macros

#define DEBUG   0
 
#define DEBUG1   0
 
#define DEBUG2   0
 
#define PTR_NIL   (INTPTR_MIN+767)
 Hmmm. More...
 
#define INFINI   (INTPTR_MAX-767)
 
#define NB_INEQ   sc->nb_ineq
 
#define NONTCST   (vect_coeff(pv->var,sc_base(sc)))
 
#define SIMPL(A, B)   {if(A!=1 && B!=1){long I1,J1,K;I1=A,J1=B;while((K=I1%J1)!=0)I1=J1,J1=K;A=A/J1;B=B/J1;if(B<0)A=-A,B=-B;}}
 
#define G(J1, A, B)   {long I1,K;if(B>1){I1=A,J1=B;while((K=I1%J1)!=0)I1=J1,J1=K;if(J1<0)J1=-J1;}else J1=B;}
 
#define SIMPLIFIE(FRAC)   SIMPL(FRAC.num,FRAC.den)
 
#define NB_EQ   sc->nb_eq
 
#define DIMENSION   sc->dimension
 
#define NUMERO   hashtable[h].numero
 
#define MAX_VAR   197 /**nombre max de variables */
 
#define MAXVAL   24 /**seuil au dela duquel on se mefie d'un overflow */
 
#define SOLUBLE(N)   soluble=N;goto FINSIMPLEX ;
 
#define EGAL1(x)   (x.num==x.den)
 
#define EGAL0(x)   (x.num==0)
 
#define EGAL(x, y)   (x.num==0 && y.num==0 ||x.den!=0 && y.den!=0 && x.num*y.den==x.den*y.num)
 
#define NEGATIF(x)   (x.num<0&&x.den>0||x.num>0&&x.den<0)
 
#define POSITIF(x)   (x.num>0&&x.den>0||x.num<0&&x.den<0)
 
#define SUP1(x)   ((x.num>0) && (x.den>0) && (x.num>x.den)||(x.num<0) && (x.den<0) && (x.den>x.num))
 
#define INF(x, y)   (x.num*y.den<x.den*y.num)
 
#define NUL(x)   (x.num==0)
 
#define AFF(x, y)   {x.num=y.num;x.den=y.den;}
 
#define METINFINI(x)   {x.num=INFINI;x.den=1;}
 
#define DIV(x, y, z)   {if(y.num==0)x.num=0,x.den=1;else{x.num=y.num*z.den;x.den=y.den*z.num;SIMPLIFIE(x);}}
 
#define MUL(x, y, z)   {if(y.num==0||z.num==0)x.num=0,x.den=1;else{x.num=y.num*z.num;x.den=y.den*z.den;SIMPLIFIE(x);}}
 
#define PIVOT(X, A, B, C, D)
 Pivot : x = a - b c / d
More...
 
#define SUB(X, A, B)
 
#define VIDE   3
 
#define EQUATION   1
 
#define INEQUATION   2
 

Functions

int fprintf ()
 test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ... More...
 
int printf ()
 
char * strdup ()
 
Psysteme sc_min (Psysteme sc)
 
 main (int argc, char *argv[])
 FIN DE sc_min. More...
 

Macro Definition Documentation

◆ AFF

#define AFF (   x,
 
)    {x.num=y.num;x.den=y.den;}

Definition at line 79 of file sc_min.c.

◆ DEBUG

#define DEBUG   0

Definition at line 54 of file sc_min.c.

◆ DEBUG1

#define DEBUG1   0

Definition at line 55 of file sc_min.c.

◆ DEBUG2

#define DEBUG2   0

Definition at line 56 of file sc_min.c.

◆ DIMENSION

#define DIMENSION   sc->dimension

Definition at line 66 of file sc_min.c.

◆ DIV

#define DIV (   x,
  y,
 
)    {if(y.num==0)x.num=0,x.den=1;else{x.num=y.num*z.den;x.den=y.den*z.num;SIMPLIFIE(x);}}

Definition at line 81 of file sc_min.c.

◆ EGAL

#define EGAL (   x,
 
)    (x.num==0 && y.num==0 ||x.den!=0 && y.den!=0 && x.num*y.den==x.den*y.num)

Definition at line 73 of file sc_min.c.

◆ EGAL0

#define EGAL0 (   x)    (x.num==0)

Definition at line 72 of file sc_min.c.

◆ EGAL1

#define EGAL1 (   x)    (x.num==x.den)

Definition at line 71 of file sc_min.c.

◆ EQUATION

#define EQUATION   1

Definition at line 106 of file sc_min.c.

◆ G

#define G (   J1,
  A,
  B 
)    {long I1,K;if(B>1){I1=A,J1=B;while((K=I1%J1)!=0)I1=J1,J1=K;if(J1<0)J1=-J1;}else J1=B;}

Definition at line 63 of file sc_min.c.

◆ INEQUATION

#define INEQUATION   2

Definition at line 107 of file sc_min.c.

◆ INF

#define INF (   x,
 
)    (x.num*y.den<x.den*y.num)

Definition at line 77 of file sc_min.c.

◆ INFINI

#define INFINI   (INTPTR_MAX-767)

Definition at line 59 of file sc_min.c.

◆ MAX_VAR

#define MAX_VAR   197 /**nombre max de variables */

Definition at line 68 of file sc_min.c.

◆ MAXVAL

#define MAXVAL   24 /**seuil au dela duquel on se mefie d'un overflow */

Definition at line 69 of file sc_min.c.

◆ METINFINI

#define METINFINI (   x)    {x.num=INFINI;x.den=1;}

Definition at line 80 of file sc_min.c.

◆ MUL

#define MUL (   x,
  y,
 
)    {if(y.num==0||z.num==0)x.num=0,x.den=1;else{x.num=y.num*z.num;x.den=y.den*z.den;SIMPLIFIE(x);}}

Definition at line 82 of file sc_min.c.

◆ NB_EQ

#define NB_EQ   sc->nb_eq

Definition at line 65 of file sc_min.c.

◆ NB_INEQ

#define NB_INEQ   sc->nb_ineq

Definition at line 60 of file sc_min.c.

◆ NEGATIF

#define NEGATIF (   x)    (x.num<0&&x.den>0||x.num>0&&x.den<0)

Definition at line 74 of file sc_min.c.

◆ NONTCST

#define NONTCST   (vect_coeff(pv->var,sc_base(sc)))

Definition at line 61 of file sc_min.c.

◆ NUL

#define NUL (   x)    (x.num==0)

Definition at line 78 of file sc_min.c.

◆ NUMERO

#define NUMERO   hashtable[h].numero

Definition at line 67 of file sc_min.c.

◆ PIVOT

#define PIVOT (   X,
  A,
  B,
  C,
  D 
)
Value:
{if(A.num==0){if(B.num==0||C.num==0||D.den==0)X.num=0, X.den=1;else if(B.den<MAXVAL && C.den<MAXVAL && D.num<MAXVAL){X.num=-B.num*C.num*D.den;X.den=B.den*C.den*D.num;SIMPLIFIE(X);}else{frac uu;if(DEBUG2)printf("++ %d/%d %d/%d %d/%d %d/%d \n",A.num,A.den,B.num,B.den,C.num,C.den,D.num,D.den);MUL(uu,B,C);DIV(X,uu,D);X.num=-X.num;if(DEBUG2)printf("%d/%d\n",X.num,X.den);}} \
else if(B.num==0||C.num==0||D.den==0)X.num=A.num,X.den=A.den; \
else if(D.num==1&&A.den==1&&B.den==1&&C.den==1)X.den=1,X.num=A.num-B.num*C.num*D.den; \
else if(A.den<MAXVAL && B.den<MAXVAL && C.den<MAXVAL && D.num<MAXVAL){X.num=A.num*B.den*C.den*D.num-A.den*B.num*C.num*D.den;X.den=A.den*B.den*C.den*D.num;SIMPLIFIE(X);} \
else{frac uu,vv,ww;if(DEBUG2)printf("%d/%d %d/%d %d/%d %d/%d \n",A.num,A.den,B.num,B.den,C.num,C.den,D.num,D.den); \
uu.num=B.num;vv.num=C.num;ww.num=D.den;uu.den=B.den;vv.den=C.den;ww.den=D.num; \
SIMPL(uu.num,vv.den);SIMPL(uu.num,ww.den);SIMPL(vv.num,uu.den);SIMPL(vv.num,ww.den);SIMPL(ww.num,uu.den);SIMPL(ww.num,vv.den); \
vv.num*=uu.num*ww.num;vv.den*=uu.den*ww.den; \
SUB(X,A,vv);if(DEBUG2)printf("%d/%d\n",X.num,X.den);}\
}
#define B(A)
Definition: iabrev.h:61
#define D(A)
Definition: iabrev.h:56
#define X
Definition: r1.c:42
#define SIMPL(A, B)
Definition: sc_min.c:62
#define SIMPLIFIE(FRAC)
Definition: sc_min.c:64
#define DIV(x, y, z)
Definition: sc_min.c:81
#define DEBUG2
Definition: sc_min.c:56
#define MUL(x, y, z)
Definition: sc_min.c:82
int printf()
#define MAXVAL
Definition: sc_min.c:69
Definition: pip__tab.h:25

Pivot : x = a - b c / d

Definition at line 84 of file sc_min.c.

◆ POSITIF

#define POSITIF (   x)    (x.num>0&&x.den>0||x.num<0&&x.den<0)

Definition at line 75 of file sc_min.c.

◆ PTR_NIL

#define PTR_NIL   (INTPTR_MIN+767)

Hmmm.

To be compatible with some weird old 16-bit constants... RK

Definition at line 58 of file sc_min.c.

◆ SIMPL

#define SIMPL (   A,
  B 
)    {if(A!=1 && B!=1){long I1,J1,K;I1=A,J1=B;while((K=I1%J1)!=0)I1=J1,J1=K;A=A/J1;B=B/J1;if(B<0)A=-A,B=-B;}}

Definition at line 62 of file sc_min.c.

◆ SIMPLIFIE

#define SIMPLIFIE (   FRAC)    SIMPL(FRAC.num,FRAC.den)

Definition at line 64 of file sc_min.c.

◆ SOLUBLE

#define SOLUBLE (   N)    soluble=N;goto FINSIMPLEX ;

Definition at line 70 of file sc_min.c.

◆ SUB

#define SUB (   X,
  A,
  B 
)
Value:
{ \
if(A.num==0)X.num=-B.num,X.den=B.den; \
else if(B.num==0)X.num=A.num,X.den=A.den; \
else if(A.den==1&&B.den==1)X.num=A.num-B.num,X.den=1; \
else{long GDEN,AD,BD;AD=A.den,BD=B.den; \
if(A.den>B.den)G(GDEN,AD,BD) \
else G(GDEN,BD,AD); \
if(GDEN!=1)AD=AD/GDEN,BD=BD/GDEN; \
X.num=A.num*BD-B.num*AD;X.den=AD*BD; \
if(GDEN!=1){SIMPLIFIE(X);SIMPL(X.num,GDEN);X.den=X.den*GDEN;} \
}}
static int num
Definition: bourdoncle.c:137
if(!(yy_init))
Definition: genread_lex.c:1029
#define G(J1, A, B)
Definition: sc_min.c:63
else
Definition: set.c:239

Definition at line 94 of file sc_min.c.

◆ SUP1

#define SUP1 (   x)    ((x.num>0) && (x.den>0) && (x.num>x.den)||(x.num<0) && (x.den<0) && (x.den>x.num))

Definition at line 76 of file sc_min.c.

◆ VIDE

#define VIDE   3

Definition at line 105 of file sc_min.c.

Function Documentation

◆ fprintf()

int fprintf ( )

test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...

fichiern.data ou bien : programme<fichier.data Se compile grace a` "make min" dans le directory /home/users/pips/C3/Linear/Development/polyedre.dir/test.dir

Referenced by __attribute__(), __pyps_bench_stop(), _init_data(), abc_instrumentation_insert_before_statement(), actual_symbol_table_dump(), add_aliases_for_current_call_site(), add_conflicts(), add_formal_parameters_to_hash_table(), add_one_line_of_comment(), add_prettyprint_control_list_to_declaration_statement(), add_symbolic_constant_to_declaration(), adg_contrainte_fprint(), adg_dataflowgraph(), adg_dataflowgraph_with_extremities(), adg_fill_with_quast(), adg_fprint_dataflow(), adg_fprint_dfg(), adg_fprint_list_of_exp(), adg_fprint_pred(), adg_fprint_psysteme(), adg_fprint_sc_pvecteur(), adg_get_conjonctions(), adg_get_integer_entity(), adg_print_graph(), adg_read_paf(), adg_rename_entities(), affine_expression_of_loop_index_p(), ajout(), alias_check(), alias_check_array_and_scalar_variable_in_caller_flt(), alias_check_array_variable_in_caller_flt(), alias_check_scalar_and_array_variables_in_caller(), alias_check_scalar_and_array_variables_in_module(), alias_check_two_array_variables_in_caller(), alias_check_two_array_variables_in_module(), alias_check_two_scalar_variables_in_caller(), alias_check_two_scalar_variables_in_module(), alias_propagation(), aliased_translation_p(), align_check(), analyze_quast(), any_complexities(), any_loop_to_k_transformer(), any_transformer_to_k_closure(), arguments_to_complexity(), array_indices_communication(), array_size_stride(), atomize_one_message(), average_probability_matrix(), base_copy(), base_dup(), base_fprint(), basic_supporting_entities(), basic_supporting_types(), bdt_read_paf(), better_elim_var_with_eg(), block_to_complexity(), bmat_fprint(), bound_compute(), bound_distribution(), bound_generation(), bounds_of_expression(), bourdoncle_partition(), broadcast_conditions(), build0(), build1(), build_contraction_matrices(), build_convex_constraints_from_vertices(), build_first_comb(), build_list_of_min(), build_new_ref(), build_sc_machine(), build_sc_nredund_1pass_ofl_ctrl(), build_sc_nredund_2pass_ofl_ctrl(), build_sc_with_several_uniform_ref(), build_second_comb(), build_third_comb(), build_third_subcomb(), calculate_delay(), call_instruction_to_communications(), call_rwt(), call_to_complexity(), call_to_polynome(), call_to_wp65_code(), callgraph(), callgraph_module_name(), cast_to_polynome(), catch_alarm_sc_convex_hull(), change_base_in_sc(), check_abstract_locations(), check_coefficient_reduction(), check_control_coherency(), check_new_arc_for_structured_statement(), check_tiling_legality(), choose(), chose_variable_to_project_for_feasability(), clean_file(), clean_up_control_test(), clean_up_embedding_graph(), clean_up_points_to_stubs(), clean_up_sequences_rewrite(), cmf_layout_align(), comp_regions_of_implied_do(), compa_test(), compact_list(), compatible_pc_p(), compilation_unit_text(), complete_any_loop_transformer_list(), complexity_check_and_warn(), complexity_fprint(), complexity_sigma(), complexity_var_subst(), compute_iteration_domain(), compute_local_change_of_basis(), compute_points_to_gen_set(), compute_x_and_y_bounds(), computebounds(), condition_to_transformer(), consistent_points_to_set(), constr_fprint(), constraint_distribution(), constraint_to_bound(), constraints_to_loop_bound(), contains_level_l_dependence(), contexts_mapping_of_nest(), contrainte_error(), contrainte_fprint(), contrainte_new(), controlize(), controlize_statement(), controls_to_hash_table(), copy_from_call(), copy_from_statement(), copy_from_test(), copy_to_statement(), copy_to_test(), correctm(), corrects(), count_dataflows_on_ref(), count_implicit_equation(), coupe(), covers_labels_p(), craft_layout_align(), create_common_parameters_h(), create_farkas_poly(), create_init_common_param_for_arrays(), create_init_common_param_for_processors(), create_init_common_param_for_templates(), create_parameters_h(), create_scalar_stub_sink_cell(), create_tile_basis(), csplit(), csplit_copy(), csplit_open_compilation_unit(), cumulated_effects_map_print(), cusq_ctxt_init(), cutiteration(), cutting_conditions(), da_process_list(), dag_dot(), dag_dot_dump(), dag_dump(), dagvtx_copy_list_dot(), dagvtx_dot(), dagvtx_dot_node(), dagvtx_dump(), dagvtx_list_dot(), dagvtx_nb_dump(), dataflows_on_reference(), davinci_dump_expression(), davinci_dump_expression_rc(), davinci_print_control_node(), davinci_print_control_nodes(), davinci_print_non_deterministic_unstructured(), db_print_all_required_resources(), dbg_ray_dte_rm(), dbg_sommet_rm(), debug(), debug_formatted(), debug_host_node_variables(), debug_ref_rwt(), debug_sentence(), debug_text(), debug_unformatted(), debug_word(), declarations_write(), DeclareVariable(), default_user_request(), defined_null(), dependance_vertices_p(), dependence_cone_positive(), dgetc(), display_address_of_control_nodes(), display_linked_control_nodes(), DisplayDad(), DisplayRefTemp(), DisplaySimpleSection(), dj_fprint_tab(), dj_intersect_djcomp_ofl_ctrl(), dn_multiply(), do_it(), dprint(), dscanf(), dualentier(), dump_all_db_resource_status(), dump_arguments(), dump_control_to_label_name(), dump_entity_set(), dump_remapping_graph(), dump_remapping_graph_info(), dump_sef(), dump_trail(), eclater(), ecrit_commentaire2(), ecrit_ligne(), ecrit_probleme2(), ecrit_tableau2(), edge_weight(), EndOfProcedure(), enode_to_polynome(), ensure_comment_consistency(), entity_all_xxx_locations_typed(), entity_list_dump(), enum_supporting_entities(), equiv_class_debug(), escape(), eval_var(), eval_variable_in_statement(), evaluate_var_to_complexity(), expression_equal_in_context_p(), expression_in_array_subscript(), expression_less_than_in_context(), expression_to_complexity_polynome(), expression_to_operand_list(), expression_to_points_to_sources(), f95split(), failure(), failuresp(), fast(), fastplus(), fetch_callees_complexities(), fetch_complexity_parameters(), filtered_declaration_list(), final_statement_to_complexity_evaluation(), find_cluster(), find_enum_of_member(), find_first_integer_point_in_between(), find_implicit_equation(), find_intermediate_constraints(), find_iteration_domain(), find_kth_points_to_node_in_points_to_path(), findandmod(), flint_initialize_statement_def_use_variables(), flint_message(), flint_message_2(), flinter(), formal_variable_add_aliases(), fourier0(), fourier1(), fourier22(), fpips_error(), fpips_main(), fpips_usage(), fpips_version(), fprint_activated(), fprint_any_environment(), fprint_bdt(), fprint_bdt_with_stat(), fprint_call(), fprint_coef_list(), fprint_contrainte_vecteur(), fprint_cost_table(), fprint_dataflow(), fprint_delay(), fprint_dfg(), fprint_entity_list(), fprint_functional(), fprint_indent(), fprint_l_psysteme(), fprint_list_of_exp(), fprint_list_of_ins(), fprint_lmessage(), fprint_loop(), fprint_lrange(), fprint_makefile(), fprint_message(), fprint_mytest(), fprint_pla_pp_dims(), fprint_plc(), fprint_plc_pp_dims(), fprint_points_to_cell(), fprint_psysteme(), fprint_range(), fprint_reference(), fprint_sc_pvecteur(), fprint_sccs(), fprint_statement(), fprint_statement_complexity(), fprint_sys_list(), fprint_transformer(), fprint_transformers(), fprint_Value(), fprint_virtual_resources(), fprint_vv(), fprint_vvs(), fprint_wp65_hash_tables(), fprintf_spaces(), fputi(), frac_div(), freia_compile(), freia_opencl_compile_calls(), full_graph_of_calls(), fuse_sequences_in_unstructured(), gcdtest(), gen_enter_tabulated(), gen_external(), gen_fprint(), gen_list_cyclic_p(), gen_make(), gen_set(), gen_sweep_init(), gen_sweep_update(), gen_trav_leaf(), gen_trav_obj(), gen_trav_simple(), gencode(), generate_access_members(), generate_arrow(), generate_constructed(), generate_domain(), generate_make(), generate_not_constructed(), generate_safe_definition(), generate_struct_members(), generate_union_as_string(), generate_union_type_descriptor(), generic_constant_expression_supporting_entities(), generic_eval_cell_with_points_to(), generic_print_xml_application(), generic_stub_source_to_sinks(), genspec_error(), get_bool_property(), get_bounds_expression(), get_int_property(), get_new_user_file(), get_number_of_ins(), get_string_property(), get_stub_from_broker(), get_symbol_token(), get_unsatisfied_system(), gfc2pips_code2instruction__TOP(), gfc2pips_getTypesDeclared(), gfc2pips_namespace(), good_polynome_assert(), gpips_parse_arguments(), graph_of_calls(), gtt_read(), gtt_write(), handle_file(), handle_file_name(), hash_enlarge_table(), hash_print_key(), hash_put(), hash_table_clear(), hash_table_dump(), hash_table_fprintf(), hash_table_generic_make(), hash_table_print(), hash_table_print_header(), hbdsc_parallelization(), hierarchical_schedule(), hpfc_fclose(), hpfc_fopen(), hyperplane(), icm_loop_rwt(), ignore_this_conflict(), igvoir3(), impact_check_in_path(), impact_check_two_scalar_variables_in_path(), imprime_quast(), imprime_special_quast(), include_trans_on_LC_in_ref(), inequaldivision(), info(), init_args(), init_gen_quick_recurse_tables(), init_janus(), init_one_statement(), init_output_the_attachments_for_emacs(), initial_code_abc_statement_rwt(), initialize_and_verify_common_variable(), initialize_and_verify_local_variable(), initialize_DirectDomainsTable(), initialize_domain_DecisionTables(), initialize_domain_DirectDomainsTable(), initialize_sc(), inout_control(), insert_array_scalar_access_movement(), insert_check_alias_before_statement(), insert_common_declaration(), insert_flag_before_call_site(), insert_test_before_caller(), insert_test_before_statement(), instruction_to_transformer_list(), instruction_to_wp65_code(), integertoreal(), integrer(), interactive_hyperplane_direction(), interactive_partitioning_matrix(), internal_sc_feasibility(), interprocedural_abc_arrays(), interprocedural_abc_call(), interprocedural_abc_insert_before_statement(), interprocedural_mapping(), invariant_code_motion(), ipivotage2(), iprimal(), iprimalplus(), is2(), is_c_parser_keyword_typedef(), is_c_preprocessor_keyword_typedef(), is_elsif_test_p(), is_first_written_array_p(), is_not_trivial_p(), jpips_add_tag(), jpips_begin_tag(), jpips_end_tag(), just_show(), kernel_data_mapping(), legal_point_p(), lhs_subs_in_ins(), linear_hashtable_print(), linear_use_gmp(), list_assignment_to_points_to(), list_of_exp_equals_1n_p(), listehb(), live_out_summary_paths_engine(), load_cost_file(), local_print_statement_set(), local_tile_constraints(), localnewrsimplex(), look_at_the_commons(), loop_bounds_to_tile_bounds(), loop_instruction_to_communications(), loop_nest_to_local_variables(), loop_nest_to_wp65_code(), loop_private_variables_as_entites(), loop_to_complexity(), loop_to_postcondition(), loop_to_total_precondition(), loop_to_transformer(), loops_mapping_of_statement(), lowbound(), lu_decomposition(), main(), majb(), majlowbounds(), majuu(), make_bound_expression(), make_bounds(), make_causal_external(), make_causal_internal(), make_context_of_loop(), make_emulated_shared_variable(), make_interprocedural_abc_tests(), make_layout_statement(), make_list_of_flags(), make_load_blocks(), make_loop_indice_equation(), make_movements_loop_body_wp65(), make_primal(), make_reindex(), make_scanning_over_one_tile(), make_scanning_over_tiles(), make_shared_statement(), make_store_blocks(), make_tile_constraints(), MakeBlock(), makecolumnfree(), MakeEntry(), mapping_on_broadcast(), matrice_fprint(), matrix_fprint(), matrix_general_inversion(), matrix_pr_quot(), matrix_to_system(), max_statement_write_flt(), maximum_ordering(), mem_spy_end(), mem_spy_reset(), merge_on_outer(), messages_handling(), messrsimplex(), min_statement_write_flt(), minimum_ordering(), mk_rn(), model_fprint(), module_declarations(), module_to_wp65_modules(), monome_fprint(), monome_gen_write(), mppa_compile_dag(), my_adg_expressions_to_predicate(), my_build_new_ref(), my_Matrix_Free(), my_Polyhedron_Free(), my_substitute_var_with_vec(), new_binding(), new_constraint_for_coefficient_reduction_with_bounding_box(), new_elim_var_with_eg(), new_monome(), new_polynome(), newgen_lexer_position(), node(), node_successors_to_matrix(), node_to_path_transformer_or_postcondition(), nullify_factors(), offset_in_caller(), open_logfile(), ordinary_summary_precondition(), outliner_statements_referenced_entities(), output_an_attachment(), output_the_attachments_for_emacs(), Overlap_Analysis(), pa_feasibility_ofl_ctrl(), pa_fprint_tab(), pa_make(), 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(), parallel_tiling(), parse_arguments(), partial_broadcast_coefficients(), partition_unknowns(), pev_new(), pip_solve(), pip_solve_min_with_big(), pips_debug_function(), pips_log_file(), pips_log_in_progress(), pips_log_stop(), pips_parse_arguments(), pips_signal_handler(), pips_split_file(), pips_stop_file(), pips_thanks(), pipsdbm_write_statement_function(), pipsdbm_write_statement_mapping(), pivot(), pivoter(), plc_elim_var_with_eg(), plc_fprint_dfs(), plc_fprint_distance(), plc_fprint_proto(), plc_make_distance(), plc_make_vvs_with_vector(), points_to_cell_types_compatibility(), points_to_set_sharing_p(), polynome_div(), polynome_error(), polynome_fprint(), polynome_gen_write(), pop_performance_spy(), pr_quot(), predicate_to_expression(), prepare_array_bounds(), prepare_reindexing(), prettyprint_conflict(), prettyprint_dependence_graph(), prettyprint_dependence_graph_view(), prettyprint_dot_dependence_graph(), prettyprint_graph_daVinci(), prettyprint_graph_text(), prettyprint_successor(), prettyprint_vertex(), prgm_mapping(), primitive_field(), print_alias_association(), print_align(), print_alignment(), print_aligns(), print_and_check_control_node(), print_bdt(), print_C_common_layout(), print_code_smalltalk(), print_common_layout(), print_cone_vecteur(), print_control_node(), print_control_node_uns(), print_control_node_unss_sem(), print_control_nodes(), print_control_nodes_without_check(), print_control_ordering(), print_control_postcondition_map(), print_control_to_control_mapping(), print_crough(), print_ctx(), print_ctx_pragma(), print_ctx_task(), print_cycle_head_to_fixpoint(), print_debug_stack(), print_decision_table(), print_dependence_cone(), print_detailed_ins(), print_dimension(), print_dinf_statistics(), print_distribute(), print_distributed_arrays(), print_distributes(), print_distribution(), print_domain(), print_domainlist(), print_domains(), print_dsup_statistics(), print_dummy(), print_embedding_graph(), print_entities(), print_entity_set(), print_entity_task_buffers(), print_entity_variable(), print_expression(), print_fullname_base(), print_graph_of_text_to_daVinci(), print_homogeneous_arguments(), print_hpf_dir(), print_interface(), print_list_entities(), print_loopnest_dependence_cone(), print_marged_text_from_starting_node(), print_mode(), print_module_name_to_toposorts(), print_normalized(), print_number_of_loop_statistics(), print_number_to_statement(), print_op_schedule(), print_or_dump_points_to(), print_or_dump_points_to_set(), print_ordering_to_statement(), print_parallelization_statistics(), print_parameter(), print_persistant(), print_plc(), print_pointer_values(), print_points_to_cells(), print_points_to_graph(), print_points_to_path(), print_points_to_relations(), print_processors(), print_proj_op_statistics(), print_pv_results(), print_reduction(), print_reference_list(), print_replicate_map(), print_sdg_task(), print_SDGs(), print_sentence(), print_sesam_tasks_buffers_header(), print_statement_set(), print_statement_temporary_precondition(), print_syntax_expressions(), print_task(), print_templates(), print_type(), print_types(), print_umay_statistics(), print_umust_statistics(), print_value_mappings(), print_vect_in_vertice_val(), print_xml_code(), print_xml_code_with_explicit_motif(), PrintChain(), PrintChains(), printf_loop(), printf_time(), printf_usage_delta(), PrintLinExpr(), PrintScc(), PrintSccs(), PrintSimp(), process_file_list(), process_static_initialization(), ProcessEntry(), prototype_dimension(), prp(), prv(), psystem_to_expression(), pu_contrainte_fprint(), pu_vect_fprint(), pushnew_conflict(), put_generated_resources_for_common(), put_generated_resources_for_module(), put_generated_resources_for_program(), put_result(), put_variables_in_ordered_lists(), pvecteur_to_polynome(), qval_fprint(), ram_variable_add_aliases(), range_to_complexity(), ray_dte_dup(), ray_dte_fprint(), rdg_loop(), re_do_it(), read_syst_from_file(), read_tabulated_db_symbol(), read_tabulated_entity(), read_tabulated_opcodeClass(), realsimplex(), rec_ident(), recursive_append(), recursive_functional_type_supporting_entities(), recursive_functional_type_supporting_types(), recursive_type_supporting_entities(), recursive_type_supporting_types(), redeclaration_enter_statement(), reduce_coefficients_with_bounding_box(), reduce_loop_bound(), reducedpb(), reference_conflicting_p(), reference_conflicting_test_and_update(), reference_filter(), reference_list_print(), reference_to_complexity(), reference_to_points_to_sinks(), region_inf_difference(), region_sup_difference(), region_translation_init(), region_translation_statistics_close(), regions_transformer_apply(), remove_common_variables_from_hash_table(), remove_dependance(), remove_dependance_from_conflicts(), remove_dependances_from_successors(), remove_entity_type_stack(), remove_formal_parameters_from_hash_table(), rename_statement_declarations(), rename_statement_reductions(), replace_formal_parameters_by_real_ones(), replace_reductions_in_statement(), reset_C_comment(), rice_dependence_graph(), rice_loop(), rice_statement(), rice_update_dependence_graph(), rm_db_block(), rm_non_x_var(), sa_do_it(), sa_print_ins(), safe_malloc(), safe_print_statement(), safe_realloc(), same_or_equivalence_argument_add_aliases(), save_edited_file(), save_meta_data(), saved_active_phase_p(), sc_bounded_normalization(), sc_consistent_p(), sc_default_dump(), sc_default_dump_to_files(), sc_delimiter(), sc_dump(), sc_elim_redund_with_first_ofl_ctrl(), sc_enveloppe_chernikova_ofl_ctrl(), sc_error(), sc_feasibility_ofl_ctrl(), sc_fm_project_variables(), sc_fourier_motzkin_feasibility_ofl_ctrl(), sc_fourier_motzkin_feasibility_ofl_ctrl_timeout_ctrl(), sc_fprint(), sc_fprint_for_sc_fscan(), sc_get_feasibility(), sc_image_computation(), sc_janus_feasibility(), sc_janus_feasibility_ofl_ctrl_timeout_ctrl(), sc_minmax_of_variable2(), sc_oppose(), sc_proj_optim_on_di_ofl(), sc_projection_optim_along_vecteur_ofl(), sc_read(), sc_simplex_feasibility_ofl_ctrl_fixprec(), sc_simplexe_feasibility_ofl_ctrl_timeout_ctrl(), sc_strong_normalize2(), sc_strong_normalize_and_check_feasibility(), sc_strong_normalize_and_check_feasibility2(), sc_supress_parallel_redund_constraints(), sc_supress_same_constraints(), sc_to_iproblem(), sc_triang_elim_redund(), scc_to_dag(), scheduling(), search_scc_bdt(), send_command_to_daVinci(), separate_variables(), separate_variables_2(), sequence_dependence_graph(), set_bool_property(), set_dimensions_of_local_variable_family(), set_string_property(), sg_fprint(), sg_fprint_as_ddv(), sg_fprint_as_dense(), sg_without_line(), sharp_else(), sharp_endif(), sharp_ifopt(), show_nredund(), simbad(), simple_basic_dup(), simple_indices_p(), simplify_bdt(), simplify_constraint_with_bounding_box(), simplify_dimension(), SimplifyGraph(), size_of_actual_array(), size_of_dummy_array(), SizeOfIthDimension(), sl_fprint_tab(), sl_new(), sl_read(), slx_error(), small_positive_slope_reduce_coefficients_with_bounding_box(), sol_alloc(), sol_edit(), sol_nil(), sol_reset(), solve_system_by_succ_elim(), sommet_dup(), sommet_fprint(), sommet_fprint_as_dense(), splitpb(), stack_info(), standard_whileloop_to_transformer(), statement_depend_of_indices_p(), statement_less_p(), statement_to_communications(), statement_to_complexity(), statement_to_postcondition(), statement_to_total_precondition(), statement_to_transformer(), statement_to_transformer_list(), storage_space_of_variable(), substitute_var_with_vec(), summary_complexity(), summary_total_postcondition(), SupressDependances(), symbol(), symbold(), symbolic_constant_declaration_verify(), syst_error(), tab_display(), table_canonicalize(), table_fprint(), table_prepare(), table_run_simplex(), tableau_janus(), TakeDerivedEntities(), term(), test_file(), test_system(), test_to_complexity(), TestCoupleOfReferences(), TestDependence(), TestDiVariables(), text_area_included(), text_block_else(), text_block_elseif(), text_block_if(), text_block_ifthen(), text_complexity(), text_logical_if(), text_test(), text_unstructured(), tile_hyperplane_constraints(), tile_membership(), tiling_transformation(), top_down_abc_array(), top_down_abc_call(), top_down_abc_flt(), top_down_abc_rwt(), TopSortSccs(), tp_some_info(), tpips_lex_print_pos(), tpips_main(), tpips_read_a_line(), tpips_user_request(), tpw_fatal_error(), tpw_fork_inout(), tpw_log(), tpw_sig_handler(), trace_off(), trace_on(), traiter(), transfert_statement(), transformer_add_condition_information_updown(), transformer_add_integer_relation_information(), transformer_formal_parameter_projection(), transformer_halbwachs_fix_point(), transformer_map_print(), transformer_normalize(), transformer_projection_with_redundancy_elimination_and_check(), transformer_return_value_projection(), translate_unary_into_binary_ref(), type_compatible_super_cell(), ucformula(), un_fprint_tab(), undefined_statement_found_p(), unsplit_internal(), unstructured_consistency_p(), unstructured_to_complexity(), unstructured_to_flow_sensitive_postconditions_or_transformers(), unstructured_while_p(), update_basis(), update_indices_for_local_computation(), update_map(), update_referenced_entities(), update_user_common_layouts(), UpdateFunctionalType(), UpdateFunctionEntity(), upperbound(), used_before_set(), UseFormalArguments(), valuer(), ValueSizeOfDimension(), variable_declaration_verify(), variable_is_written_by_statement_flt(), variable_private_to_loop_p(), variable_type_supporting_entities(), variable_type_supporting_types(), vec_fprint(), vect_copy(), vect_error(), vect_fprint(), vect_fprint_as_monome(), vect_new(), verify_array_element(), verify_array_variable(), verify_used_before_set_call(), verify_used_before_set_expression(), verify_used_before_set_statement_flt(), voir4(), voirbornes(), vzcut(), vzemptycol(), vzextgcd(), vzgcd(), vzlast(), vzphase(), vzredundant(), vzstep(), vzunimod(), whileloop_to_complexity(), words_to_string(), wpips_parse_arguments(), wpips_xview_error(), write_data(), write_leaf_in(), writeln_string(), writeresult(), wvoir(), xbug(), xdeb(), xml_tiling(), yyerror(), zmat_fprint(), and zvec_fprint().

◆ main()

main ( int  argc,
char *  argv[] 
)

FIN DE sc_min.

Programme de test de faisabilite' d'un ensemble d'equations et d'inequations.

compte les systemes, chacun dans un fichier

lecture et test de la faisabilite' de systemes sur fichiers

lecture et test de la faisabilite' du systeme sur stdin

Definition at line 256 of file sc_min.c.

257 {
258 /* Programme de test de faisabilite'
259  * d'un ensemble d'equations et d'inequations.
260  */
261  FILE * f1;
262  Psysteme sc=sc_new(),sc1;
263  int i; /* compte les systemes, chacun dans un fichier */
264 
265 /* lecture et test de la faisabilite' de systemes sur fichiers */
266 
267  if(argc>=2) for(i=1;i<argc;i++){
268  if((f1 = fopen(argv[i],"r")) == NULL) {
269  fprintf(stdout,"Ouverture fichier %s impossible\n",
270  argv[1]);
271  exit(4);
272  }
273  printf("systeme initial \n");
274  if(sc_fscan(f1,&sc)) {
275  fprintf(stdout,"syntaxe correcte dans %s\n",argv[i]);
276  sc_fprint(stdout, sc, *variable_default_name);
277  printf("Nb_eq %d , Nb_ineq %d, dimension %d\n",
278  NB_EQ, NB_INEQ, DIMENSION) ;
279  if(sc_empty_p(sc1=sc_min(sc)))
280  printf("Systeme infaisable (insoluble) en rationnels\n") ;
281  else { printf("Systeme minimum :\n");
282  sc_fprint(stdout,sc1,*variable_default_name) ;
283  }
284  fclose(f1) ;
285  }
286  else {
287  fprintf(stderr,"erreur syntaxe dans %s\n",argv[1]);
288  exit(1);
289  }
290  }
291  else { f1=stdin ;
292 
293 /* lecture et test de la faisabilite' du systeme sur stdin */
294 
295  printf("systeme initial \n");
296  if(sc_fscan(f1,&sc)) {
297  fprintf(stdout,"syntaxe correcte dans %s\n",argv[1]);
298  sc_fprint(stdout, sc, *variable_default_name);
299  printf("Nb_eq %d , Nb_ineq %d, dimension %d\n",
300  NB_EQ, NB_INEQ, DIMENSION) ;
301  if(sc_empty_p(sc1=sc_min(sc)))
302  printf("Systeme infaisable (insoluble) en rationnels\n") ;
303  else { printf("Systeme minimum :\n");
304  sc_fprint(stdout,sc1,*variable_default_name) ;
305  }
306 
307  exit(0) ;
308  }
309  else {
310  fprintf(stderr,"erreur syntaxe dans %s\n",argv[1]);
311  exit(1);
312  }
313  }
314  exit(0) ;
315 } /* FIN DE main */
char * variable_default_name(Variable v)
char * variable_default_name(Variable v): returns the name of variable v
Definition: variable.c:81
#define exit(code)
Definition: misc-local.h:54
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
Definition: sc_alloc.c:55
bool sc_empty_p(Psysteme sc)
bool sc_empty_p(Psysteme sc): check if the set associated to sc is the constant sc_empty or not.
Definition: sc_alloc.c:350
void sc_fprint(FILE *fp, Psysteme ps, get_variable_name_t nom_var)
void sc_fprint(FILE * f, Psysteme ps, char * (*nom_var)()): cette fonction imprime dans le fichier po...
Definition: sc_io.c:220
bool sc_fscan(FILE *f, Psysteme *ps)
bool sc_fscan(FILE * f, Psysteme * ps): construit un systeme d'inegalites et d'egalites lineaires a p...
Definition: sc_io.c:121
#define NB_INEQ
Definition: sc_min.c:60
Psysteme sc_min(Psysteme sc)
Definition: sc_min.c:109
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
#define DIMENSION
Definition: sc_min.c:66
#define NB_EQ
Definition: sc_min.c:65

References DIMENSION, exit, fprintf(), NB_EQ, NB_INEQ, printf(), sc_empty_p(), sc_fprint(), sc_fscan(), sc_min(), sc_new(), and variable_default_name().

+ Here is the call graph for this function:

◆ printf()

int printf ( )

Referenced by __attribute__(), actual_c_parser(), add_var_sup(), array_dfg(), array_overflow(), bottom_up_abc_statement_rwt(), bound_generation(), c_code_string(), c_unstructured(), can_terapixify_call_p(), can_terapixify_expression_p(), cannot_terapixify(), comEngine_distribute_code(), comEngine_opt_loop_interchange(), compute_local_change_of_basis(), cout_nul(), create_daVinci_new_context(), create_realFifo_proc(), da_process_list(), dbg_contrainte_rm(), derive_new_basis_deux(), dual_pivot(), dual_pivot_pas(), dynam(), entity_in_ref(), entity_in_ref_rwt(), eq_in_ineq(), expressions_to_predicate(), find_or_create_allocatable_struct(), find_vbase(), fonct_init(), fonct_max_all(), fonct_min_all(), fonct_read(), free_guards(), gen_and(), gen_array(), gen_domain(), gen_external(), gen_external_member(), gen_list(), gen_make(), gen_member(), gen_or(), gen_postlude(), gen_prelude(), gen_set(), generate_code(), generate_code_call(), generate_code_loop(), generate_code_test_proc(), generate_mmcd_stat_from_ref(), generate_type_member(), generic_stub_source_to_sinks(), get_data(), gfc2pips_namespace(), gfc2pips_push_comment(), gomory_eq(), gomory_trait_eq(), Hierarchical_tiling(), HRE_distribute(), HRE_distribute_stat(), integrer(), ligne_pivot(), lignes_entrant(), lvbase_ote_no_ligne(), main(), make_expression_equalities(), make_lInitStats(), make_lSwitchStats(), MakeForloopWithIndexDeclaration(), matrice_general_inversion(), matrice_smith(), matrix_smith(), normalize_microcode(), opt_loop_interchange_fill_lists(), oter_lvbase(), phrase_remove_dependences_rwt(), pivoter(), pivoter_pas(), plint(), plint_degen(), plint_pas(), points_to_equal_p(), polynome_monome_add(), polynome_monome_addition(), primal(), primal_pivot(), primal_positive(), print_array_cplx(), print_callees(), print_eformat(), print_make_cache(), print_Value(), printfrac(), regenerate_toggles(), remove_from_effective_parameters(), remove_from_formal_parameters(), remove_write_ref(), replace_array_ref_with_fifos2(), sc_min(), sc_resol_smith(), sc_simplex_feasibility_ofl_ctrl_fixprec(), sc_to_iproblem(), send_graph_to_daVinci(), send_text_to_emacs(), smalltalk_code_string(), smith_int(), sol_entiere(), sol_finale(), sol_positive(), sol_positive_simpl(), sommets_dup(), sommets_dupc(), sommets_rm(), st_statement(), step_directive_to_strings(), syst_smith(), tab_alloc(), tab_init(), tab_reset(), test_file(), test_system(), tile_hyperplane_constraints(), Tiling2_buffer(), tiling_sequence(), tpips_help(), traiter(), unimodular(), Usage(), var_ecart_sup(), var_pivotd(), var_pivots(), vect_read(), words_points_to_reference(), write_conf_on_ref(), xbug(), xml_AssignArgument(), and xml_code_string().

◆ sc_min()

Psysteme sc_min ( Psysteme  sc)

nature vide=3 , equation=1 , inequation=2

tete de liste des noms de variables

Necessaire de declarer "hashtable" static pour initialiser tout automatiquement a` 0. Necessaire de chainer les enregistrements pour reinitialiser a 0 en sortie de la procedure.

compte les variables

calcule le hashcode d'une chaine sous forme d'un nombre compris entre 0 et MAX_VAR

retourne le nume'ro de l'entree de la Variable pv->var du Psysteme sc dans la table hashcodee, apres l'avoir creee si elle n'existait pas

Pivote le tableau t ayant les caracteristiques taille ligne[] et colonne[] autour du pivot de coordonnees i et j

Cas general

intervertir les variables de la ligne et de la colonne pivot

1) Recherche des variables a` valeur totalement determinee

le terme cst vaut 0 par defaut

2) Enregistrement des egalites

le terme cst vaut 0 par defaut

3) Enregistrement des inegalites

le terme cst vaut 0 par defaut

Definition at line 109 of file sc_min.c.

110 {
111  /* nature vide=3 , equation=1 , inequation=2 */
112  typedef struct {int numero ; int nature ; } rangee ;
113  typedef struct {long num ; long den ; } f ;
114 
115  rangee ligne[MAX_VAR] ; int taille ;
116  rangee colonne[MAX_VAR] ;
117  f t[MAX_VAR][MAX_VAR] ;
118  f frac0={0,1}, frac1={1,1} ;
119 
120  Pcontrainte pc ;
121  Pvecteur pv ;
122  int premier_hash = PTR_NIL ; /* tete de liste des noms de variables */
123  static struct { Variable nom; int numero; int hash ; int val ; int succ ; } hashtable[MAX_VAR] ;
124  /* Necessaire de declarer "hashtable" static
125  * pour initialiser tout automatiquement a` 0.
126  * Necessaire de chainer les enregistrements
127  * pour reinitialiser a 0
128  * en sortie de la procedure.
129  */
130  frac rapport1, rapport2, min1, min2, pivot, quot1, quot2, cc ;
131  long compteur ; /* compte les variables */
132  long valeur,i,j,k,h, numeroligne ;
133 
134  void printfrac(f x) {
135  printf(" %3.1d/%-3.1d",x.num,x.den) ;
136  }
137 
138  void dump_table(int taille,rangee ligne[MAX_VAR],rangee colonne[MAX_VAR],f t[MAX_VAR][MAX_VAR]) {
139  int i,j ;
140 
141  printf("Taille=%2.1d\n",taille) ;
142  if(taille>0) {
143  for(i=0;i<taille;i++) { printf( " %4.1d(%1.1d)",colonne[i].numero,colonne[i].nature) ; }
144  printf("\n\n");
145  for(i=0;i<taille;i++) { printf( " %4.1d(%1.1d)",ligne[i].numero,ligne[i].nature) ;
146  for(j=0;j<taille;j++) printfrac(t[i][j]) ;
147  printf("\n") ;
148  }
149  }
150  }
151 
152  int hash(Variable s) /* calcule le hashcode d'une chaine
153  sous forme d'un nombre compris entre 0 et MAX_VAR */
154  { int i ;
155  i=((long)s % MAX_VAR);
156  return (i) ;
157  }
158 
159  int entree() {
160  /* retourne le nume'ro de l'entree de la Variable pv->var du
161  * Psysteme sc dans la table hashcodee, apres l'avoir creee si
162  * elle n'existait pas
163  */
164  int h, trouve ;
165  h = hash(pv->var) ; trouve=0 ;
166  while (hashtable[h].nom != 0) {
167  if (hashtable[h].nom==pv->var) {
168  trouve=1 ;
169  break ;
170  }
171  else { h = (h+1) % MAX_VAR ; }
172  }
173  if(!trouve) {
174  hashtable[h].succ=premier_hash ;
175  premier_hash = h ;
176  hashtable[h].val = PTR_NIL ;
177  hashtable[h].numero=compteur++ ;
178  hashtable[h].nom=pv->var ;
179  }
180  return (h) ;
181  }
182 
183  void pivoter(int taille, rangee ligne[], rangee colonne[], f *t[],
184  int i, int j)
185  { /* Pivote le tableau t ayant les caracteristiques
186  * taille ligne[] et colonne[] autour du pivot de
187  * coordonnees i et j */
188 
189  int i1,j1 ;
190  f x ;
191 
192  for(i1=0; i1<taille;i1++)
193  if((i1 != i) && (j1 != j)) { /* Cas general */
194  PIVOT(x,t[i1][j1],t[i1][j],t[i][j1],t[i][j])
195  AFF(t[i1][j1],x)
196  } else if((i1 != i) && (j1 == j)) {
197  PIVOT(x,frac0,t[i1][j],frac1,t[i][j])
198  AFF(t[i1][j1],x)
199  } else if(i1==i) AFF(t[i][j],frac1) ;
200  /* intervertir les variables de la ligne et de la colonne pivot */
201  i1=colonne[j].numero ;
202  colonne[j].numero=ligne[i].numero ;
203  ligne[i].numero=i1 ;
204  i1=colonne[j].nature ;
205  colonne[j].nature=ligne[i].nature ;
206  ligne[i].nature=i1 ;
207  }
208 
209  if(sc_empty_p(sc)) return sc_empty(sc->base) ;
210  taille=NB_EQ+NB_INEQ ;
211 
212 /* 1) Recherche des variables a` valeur totalement determinee */
213 
214  for(pc=sc->egalites, i=0 ; pc!=0 ; pc=pc->succ,i++ ) {
215  valeur = 0 ; /* le terme cst vaut 0 par defaut */
216  for(pv=pc->vecteur, j=0 ; pv!=0 ; pv=pv->succ) {
217  if(NONTCST) { h=entree() ; j++ ; }
218  else valeur = - pv->val ;
219  }
220  if(j==1) { ligne[i].nature = VIDE ;
221  if(hashtable[h].val == PTR_NIL)
222  hashtable[h].val = valeur ;
223  else if(hashtable[h].val != valeur)
224  return(sc_empty(sc->base)) ;
225  }
226  }
227 
228 /* 2) Enregistrement des egalites */
229 
230  for(pc=sc->egalites, numeroligne=1 ; pc!=0 ; pc=pc->succ, numeroligne++ ) {
231  if( ligne[numeroligne].nature==VIDE ) continue ;
232  valeur = 0 ; /* le terme cst vaut 0 par defaut */
233  for(pv=pc->vecteur, j=0 ; pv!=0 ; pv=pv->succ) {
234  if(NONTCST) { h=entree() ; t[numeroligne][NUMERO].num=pv->val ;
235  t[numeroligne][NUMERO].den=1 ;
236  }
237  else t[numeroligne][0].num= - pv->val,t[numeroligne][NUMERO].den=1;
238  }
239  }
240  dump_table(compteur, ligne, colonne, t) ;
241 
242 /* 3) Enregistrement des inegalites */
243 
244  for(pc=sc->inegalites ; pc!=0 ; pc=pc->succ, numeroligne++ ) {
245  valeur = 0 ; /* le terme cst vaut 0 par defaut */
246  for(pv=pc->vecteur, j=0 ; pv!=0 ; pv=pv->succ) {
247  if(NONTCST) { h=entree() ; t[numeroligne][NUMERO].num=pv->val ;
248  t[numeroligne][NUMERO].den=1 ;
249  }
250  else t[numeroligne][0].num= - pv->val,t[numeroligne][NUMERO].den=1;
251  }
252  }
253 
254 } /* FIN DE sc_min */
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
Definition: offsets.c:15
void pivoter(Psommet sys, Psommet ligne, Variable var, Psommet fonct)
Definition: plpivoter.c:131
Psysteme sc_empty(Pbase b)
Psysteme sc_empty(Pbase b): build a Psysteme with one unfeasible constraint to define the empty subsp...
Definition: sc_alloc.c:319
#define PIVOT(X, A, B, C, D)
Pivot : x = a - b c / d
Definition: sc_min.c:84
#define AFF(x, y)
Definition: sc_min.c:79
#define VIDE
Definition: sc_min.c:105
#define NUMERO
Definition: sc_min.c:67
#define PTR_NIL
Hmmm.
Definition: sc_min.c:58
#define NONTCST
Definition: sc_min.c:61
#define MAX_VAR
Definition: sc_min.c:68
void pivot(frac *X, frac A, frac B, frac C, frac D, bool ofl_ctrl)
static frac frac0
static int hash(Variable s)
dump_tableau
static void printfrac(frac x)
static char * x
Definition: split_file.c:159
Pvecteur vecteur
struct Scontrainte * succ
Pcontrainte inegalites
Definition: sc-local.h:71
Pcontrainte egalites
Definition: sc-local.h:70
Pbase base
Definition: sc-local.h:75
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
Value val
Definition: vecteur-local.h:91
Variable var
Definition: vecteur-local.h:90
struct Svecteur * succ
Definition: vecteur-local.h:92
Entier valeur(Tableau *tp, int i, int j, Entier D)
Definition: traiter.c:178
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Definition: vecteur-local.h:60

References AFF, Ssysteme::base, Ssysteme::egalites, f(), frac0, hash(), Ssysteme::inegalites, MAX_VAR, NB_EQ, NB_INEQ, NONTCST, num, NUMERO, pivot(), PIVOT, pivoter(), printf(), printfrac(), PTR_NIL, sc_empty(), sc_empty_p(), Scontrainte::succ, Svecteur::succ, Svecteur::val, valeur(), Svecteur::var, Scontrainte::vecteur, VIDE, and x.

Referenced by main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ strdup()

char* strdup ( )

Referenced by abstract_locations_max(), activate_phase(), activate_phases(), actual_c_parser(), actual_symbol_table_dump(), add_address_of_value(), add_call_to_callees(), add_formal_parameters_to_hash_table(), add_intermediate_value(), add_local_intermediate_value(), add_local_old_value(), add_module_call_site_precondition(), add_new_compilation_unit(), add_new_module_from_text(), add_new_value_name(), add_non_declared_reference_to_declaration(), add_old_value(), add_one_line_of_comment(), add_pragma_str_to_statement(), add_read_resource(), add_rule(), add_sizeof_value(), add_symbolic_constant_to_declaration(), add_synonym_values(), add_to_current_line(), add_write_resource(), AddCommonToModule(), AddToCalledModules(), adg_get_integer_entity(), adg_read_paf(), adg_rename_entities(), alias_check(), alias_classes(), alias_lists(), aliases_text(), any_complexities(), append_comments_to_statement(), append_data_current_stmt_buffer_to_declarations(), array_bound_check_display(), array_dfg(), atom_cse_expression(), atomic_function_of_operation(), atomizer(), attach_declaration_type_to_words(), bdsc_code_instrumentation(), bdt_init_new_ins(), bdt_read_paf(), bootstrap(), bound_parameter_name(), build_aliases(), build_call_STEP_AllToAll(), build_call_STEP_set_sendregions(), build_call_STEP_WaitAll(), build_new_ref(), build_new_top_level_module_name(), build_outline_name(), build_pgm_makefile(), c_basic_string(), c_brace_expression_string(), c_call(), c_code_string(), c_declarations(), c_dim_string(), c_entity_local_name(), c_expression(), c_forloop(), c_head(), c_include(), c_loop(), c_macro(), c_parser_put_new_typedef(), c_qualifier_string(), c_reference(), c_sequence(), C_standard_comment_to_text(), c_statement(), c_test(), c_text_related_entities(), c_type_string(), c_unstructured(), c_whileloop(), callgraph(), callgraph_module_name(), cell_reference_compare(), check_delete_workspace(), check_derived_and_typedef(), check_if_statement_contains_comment(), chop_newline(), clean_labels(), clean_statement_from_tags(), clean_up_sequences_rewrite(), clone_variable_with_new_name(), close_current_line(), close_extensions(), cmf_layout_align(), comEngine_generate_procCode(), commenter(), comments_dup(), comp_regions(), compare_effect_reference_in_common(), compilation_unit_text(), compile_a_pure_function(), compile_a_special_io_function(), compile_body(), compile_f90_module(), compile_regions(), compute_region(), compute_renamings(), concat_labels(), conflicts_sort_callback(), const_wrapper(), constant_memory_access_path_to_location_name(), continuation_conditions(), control_rank(), control_to_label_name(), controlize_forloop(), controlize_list(), controlize_loop(), controlize_test(), controlize_whileloop(), convert_double_value(), convert_string_for_daVinci_graph(), copy_from_statement(), copy_leaf_out(), copy_to_statement(), copy_value_of_write(), copy_value_of_write_with_cumulated_regions(), copy_variable_declaration_commenter(), craft_layout_align(), create_counter(), create_help_menu(), create_HRE_module(), create_local_index(), create_local_index2(), create_named_entity(), create_new_common_variable(), create_new_entity(), create_parameter_for_new_module(), create_parameter_variable_for_new_module(), create_pointer_to_array_stub_points_to(), create_private_integer_variable_for_new_module(), create_private_variable_for_new_module(), create_state_variable(), create_stub_entity(), create_tile_basis(), CreateAbstractStateVariable(), CreateLogicalUnits(), CreateMemberScope(), creer_nom_entite(), creer_nom_var(), csplit_copy(), csplit_open_compilation_unit(), cstr_args_check(), dag_dot_dump(), dag_dot_dump_prefix(), davinci_dump_expressions(), db_build_file_resource_name(), db_get_directory_name_for_module(), db_get_workspace_directory_name(), db_set_current_builder_name(), db_set_current_module_name(), db_set_current_workspace_name(), dbll_stat_local_file(), debug_unstructured(), declare_common_variables_in_module(), declare_new_typedef(), decls_text_dup(), default_common_hook(), default_generated_variable_commenter(), default_hist_file_name(), default_tpipsrc(), direct_change_directory(), discard_module_declaration_text(), display(), distribute_code(), do_inlining(), do_kernelize(), do_recompile_module(), do_resource_usage_check(), do_simplify_constant_address_expression(), do_split_structure(), do_statement_insertion(), do_unfolding(), dsc_code_parallelization(), edge_cost_polynome(), effects_to_dma(), eliminate_original_variables(), empty_scope(), end_query_notify(), ensure_comment_consistency(), EnterScope(), entities_type_and_name(), entity_all_locations(), entity_field_to_entity(), entity_from_user_name(), entity_hpf_number(), entity_more_or_less_minimal_name(), entity_name_without_scope(), entity_nowhere_locations(), entity_null_locations(), extensions_to_string(), fetch_complexity_parameters(), fill_gLoopToToggleEnt(), filter_file(), find_entity(), find_file(), find_file_in_directories(), find_operator(), find_or_create_allocatable_struct(), find_or_create_coeff(), find_or_create_db_symbol(), FindEntityFromLocalName(), FindEntityFromLocalNameAndPrefix(), FindOrCreateCurrentEntity(), FindOrCreateEntityFromLocalNameAndPrefixAndScope(), FixCInternalLabels(), flag_as_stub(), flag_kernel(), flag_loop(), flatten_code(), flinter(), forloop_test(), freia_mppa_compile_calls(), freia_opencl_compile_calls(), freia_terapix_call(), freia_trpx_compile_one_dag(), full_graph_of_calls(), fun_generator(), gather_all_comments_of_a_statement_filter(), gen_array_dupaddto(), gen_array_dupappend(), gen_copy_string_list(), gen_multi_recurse_explorer(), gen_omp_parallel(), gen_omp_taskwait(), gen_read_string(), general_build_signature(), generate_a_directory_menu(), generate_a_menu_with_HPF_output_files(), generate_all_liveness_but(), generate_alternate_return_targets(), generate_dynamic_liveness_for_primary(), generate_dynamic_liveness_management(), generate_fifo_stat(), generate_fifo_stat2(), generate_ind_fifo_stat2(), generate_io_statements_for_shared_arrays(), generate_mmcd_stat_from_ref(), generate_module_menu(), generate_pseudo_formal_variable_for_formal_label(), generate_remapping_include(), generate_scalar_variables(), generate_scalar_variables_from_list(), generate_string_for_alternate_return_argument(), generate_wiring(), generate_workspace_menu(), GenerateReturn(), GENERATION(), generic_c_words_simplified_entity(), generic_make_entity_copy_with_new_name(), generic_print_xml_application(), get_callees_of(), get_callers_of(), get_common_param_name(), get_current_C_comment(), get_declaration_comments(), get_directive_transformation(), get_eole_command(), get_externalized_and_analyzed_function_name(), get_externalized_function_param_name(), get_externalized_function_private_param_name(), get_first_main_module(), get_function_common_name(), get_function_id_name(), get_function_name_by_searching_tag(), get_main_entity_name(), get_module_name_directive_suffix(), get_new_user_file(), get_opencl_file_name(), get_operator_id(), get_receive_parameter_module_name(), get_resource_file_name(), get_send_parameter_module_name(), get_simd_vector_type(), get_statements_with_comments_containing(), get_step_directive_name(), get_stub_from_broker(), get_symbol_table(), get_time_ent(), get_unit_id_name(), get_var(), get_variables_to_filter(), get_vect_name_from_data(), get_view_file(), gfc2pips_get_use_st(), global_parallelization(), gpips_user_request(), gpu_ify_statement(), gpu_xml_dump(), graph_of_calls(), handle_set_directive(), hash_store_string(), hbdsc_parallelization(), helper_file_name(), hpfc_common_hook(), hpfc_filter(), hpfc_generate_path_name_of_file_name(), hpfc_head_hook(), html_prettyprint(), html_prettyprint_symbol_table(), IdentifierToExpression(), in_alias_pairs(), include(), include_path_to_include_flags(), info(), init_c_implicit_variables(), init_cost_table(), init_loop_ctrl(), init_new_df_ref(), init_new_df_source(), init_new_do_loop(), init_new_gd_ins(), initial_points_to(), initial_precondition(), inline_expression_call(), insert_check_alias_before_statement(), insert_comments_to_statement(), insert_flag_before_call_site(), insert_impact_description_as_comment(), insert_one_type_declaration(), insert_test_before_caller(), insert_test_before_statement(), insert_transformation(), interactive_loop_transformation(), interface_argument_declaration(), interface_argument_type_string(), interface_basic_string(), interface_code_string(), interface_signature(), interface_type_string(), is_c_parser_keyword_typedef(), is_c_preprocessor_keyword_typedef(), isolate_code_portion(), keep_track_of_typedef(), kernel_load_store_engine(), LinkInstToCurrentBlock(), list_from_gen_array(), list_to_string(), local_name_to_top_level_entity(), loop_annotate(), loop_basic_workchunk_to_workchunk(), loop_pragma(), loop_statistics(), loop_test(), loop_to_complexity(), main(), make_array_bounds(), make_bottom_up_abc_tests(), make_close_workspace(), make_coeff(), make_derived_entity(), make_empty_module(), make_emulated_shared_variable(), make_exec_mmcd(), make_get_rc_statement(), make_global_entity_from_local(), make_host_and_node_modules(), make_HRE_empty_module(), make_id_expression(), make_if_converted_test_statement(), make_init_newInd_stat(), make_integer_constant_entity(), make_interprocedural_abc_tests(), make_loadsave_statement(), make_local_value_entity(), make_location_entity(), make_new_common(), make_new_derived_entity_with_prefix(), make_new_integer_scalar_common_variable(), make_new_scalar_variable_with_prefix(), make_new_simd_vector_with_prefix(), make_new_symbolic_entity(), make_nlc_entity(), make_nsp_entity(), make_nub_entity(), make_pred_commentary_sentence(), make_resource_from_starting_node(), make_scalar_entity(), make_scalar_integer_entity(), make_scanning_over_one_tile(), make_scanning_over_tiles(), make_start_ru_module(), make_statement_copy_i(), make_text_resource(), make_toggle_mmcd(), make_wait_ru_module(), MakeAssignInst(), MakeCLabel(), MakeCompilationUnitEntity(), MakeCurrentFunction(), MakeCurrentModule(), MakeDataStatement(), MakeElseInst(), MakeEntry(), MakeEntryCommon(), MakeForloop(), MakeLoopCounter(), MakeReturn(), MakeStatementLike(), MakeTopLevelEntity(), mark_block(), maximal_out_degree_of_points_to_graph(), mchoose_callback(), mchoose_ok_notify(), MemberDerivedIdentifierToExpression(), meta_data_db_file_name(), module_entity_to_compilation_unit_entity(), module_initial_parameter_pv(), module_to_callgraph(), module_to_wp65_modules(), monome_sprint(), mpi_conversion(), mpi_conversion_declaration_commenter(), mppa_call_helper(), mppa_compile_dag(), my_build_new_ref(), NameToCommon(), new_df_sink_ins(), new_eng_loop(), new_param(), new_signature(), new_step_directive(), normalize_microcode_anotate(), normalize_statement(), nth_formal_name(), old_array_bound_check_instrumentation(), old_reductions(), open_log_file(), open_module(), open_warning_file(), opencl_compile_mergeable_dag(), opencl_generate_special_kernel_ops(), opencl_merge_and_compile(), out_alias_pairs(), outline(), outliner_compilation_unit(), outliner_file(), outliner_independent(), outlining_patched_variable_commenter(), outlining_variable_commenter(), param_generator(), parse_arguments(), perform(), pips_dirname(), pips_split_file(), pips_srcpath_append(), pips_user_value_name(), points_to_cell_name(), points_to_name(), points_to_rank(), polynome_sprint(), polynome_sscanf(), ppt_assignement(), ppt_binary(), ppt_call(), ppt_math(), ppt_min_max(), ppt_unary(), ppt_unary_post(), pragma_to_string(), prepend_call(), preprocessed_to_user_file(), prettyprint_dot_label(), prettyprint_graph_daVinci(), prgm_mapping(), print_array_dfg(), print_bdt(), print_c_code(), print_code_or_source(), print_code_or_source_comp(), print_code_semantics(), print_code_smalltalk(), print_code_with_comp_regions(), print_continuation_conditions(), print_crough(), print_dependence_or_chains_graph(), print_dinf_statistics(), print_dot_dependence_or_chains_graph(), print_dsup_statistics(), print_filtered_dg_or_dvdg(), print_interface(), print_list_of_entities(), print_list_of_expressions(), print_loopnest_dependence_cone(), print_loops(), print_module_name_to_toposorts(), print_parallel_statement(), print_parallelized_code_common(), print_parallelizedCMF_code(), print_parallelizedCRAFT_code(), print_plc(), print_proj_op_statistics(), print_sdg_task(), print_sesam_tasks_buffers_header(), print_structurals(), print_umay_statistics(), print_umust_statistics(), print_variables(), print_xml_code(), print_xml_code_with_explicit_motif(), process_thru_C_pp(), process_thru_fortran_pp(), process_user_file(), ProcessEntries(), ProcessEntry(), push_property(), put_new_typedef(), put_summary(), pvm_what_option_expression(), pyps_get_stubs(), read_and_allocate_string_from_file(), redeclaration_enter_statement(), reduction_as_str(), reduction_operator_name(), reductions_get_omp_pragma_str(), reference_to_address_entity(), reference_to_field_disambiguator(), regenerate_toggles(), region_entity_variable_to_new_declare_entity(), region_translation_statistics_close(), reindexing(), relative_name_if_necessary(), remapping_compile(), remapping_file_name(), remapping_stats(), rename_statement_declarations(), RenameFunctionEntity(), replace_sender_entity_by_receiver_entity_in_reference(), restructure_control(), retrieve_a_missing_file_using_external_resolver(), rice_dependence_graph(), sac_commenter(), safe_apply_outside_the_notifyer(), safe_concurrent_apply(), safe_list_files_in_directory(), safe_new_tmp_file(), safe_readline(), SafeFindOrCreateEntity(), SafeLocalToGlobal(), same_or_equivalence_argument_add_aliases(), sc_add_new_variable_name(), sc_delimiter(), sc_kernel_compute_loop(), sc_vtx_tostring(), scalar_postlude(), scalar_prelude(), scheduling(), schoose_ok_notify(), scope_to_block_scope(), send_the_names_of_the_available_modules_to_emacs(), sentence_area(), sentence_data_statement(), sentence_goto_label(), sequence_dependence_graph(), set_aipo_call(), set_control_to_label(), set_env_log_and_free(), set_pips_current_computation(), set_rc_function(), set_script_directory_name(), set_wiring(), short_debug_unstructured(), show(), simplify_complex_declaration(), simplify_minmax_contrainte(), simplify_signature(), single_assign(), sl_get_tab_string(), smalltalk_code_string(), solve_name_clashes(), some_main_entity_p(), spire_distributed_unstructured_to_structured(), spire_shared_unstructured_to_structured(), split_initializations(), spoc_alu_conf(), spoc_measure_conf(), spoc_poc_conf(), spoc_th_conf(), st_arguments(), st_brace_expression_as_string(), st_call(), st_declaration(), st_declaration_comment(), st_declaration_init(), st_declarations(), st_declarations_comment(), st_declarations_init(), st_dim_string(), st_dimension_bound_as_string(), st_dimension_reference_as_string(), st_entity_local_name(), st_expression(), st_forloop(), st_header(), st_loop(), st_reference(), st_sequence(), st_statement(), st_test(), st_whileloop(), statement_type_as_string(), static_controlize(), static_partitioning_matrix(), step_analyse_init(), step_bison_parse(), step_directive_to_strings(), step_head_hook(), step_install(), step_local_regionArray(), step_local_RT_Integer(), step_parameter(), store_sc_text_line(), str_append(), str_prepend(), strcache(), strcmp_(), strdup_and_migrate_attachments(), string_buffer_append(), string_predicate_to_commentary(), string_to_expression(), string_to_user_modules(), strncmp_(), strsplit(), strup(), stub_head(), stub_text(), stub_var_decl(), summary_complementary_sections(), summary_complexity(), task_time_polynome(), task_to_string(), terapix_get_reduction(), terapix_gram_management(), terapix_init_row(), terapix_initialize_memory(), text_area_included(), text_array_comp_regions(), text_block(), text_block_elseif(), text_block_if(), text_block_ifthen(), text_comp_region(), text_continuation_conditions(), text_initializations(), text_instruction(), text_io_block_if(), text_logical_if(), text_loop(), text_loop_cmf(), text_loop_craft(), text_loop_default(), text_pointer_value(), text_pointer_values(), text_points_to(), text_points_to_relation(), text_points_to_relations(), text_region_no_action(), text_to_string(), text_trail(), text_transformer(), text_unstructured(), text_whileloop(), the_actual_parser(), this_entity_cdeclaration(), this_entity_xmldeclaration(), top_down_abc_array(), tp_substitutions(), tpips_exec(), tpips_read_a_line(), trace_off(), trace_on(), transfert_statement(), transformer_filter_subsumed_variables(), translate_complexity_from_local_to_current_name(), translate_global_value(), try_to_parse_everything_just_in_case(), type_to_named_type(), undefined_pointer_value_entity(), unspaghettify(), unsplit_internal(), update_C_comment(), update_called_modules(), update_number_of_use(), update_runtime_for_remapping(), used_before_set(), UseFormalArguments(), usual_loop_tiling(), value_to_variable(), variable_local_name(), variable_make(), variable_name(), variable_replication(), variable_replication_declaration_commenter(), variable_to_string(), vect_sprint_as_monome(), verify_array_element(), verify_array_variable(), verify_scalar_variable(), whileloop_test(), word_points_to(), words_entity_list(), words_goto_label(), words_loop_list(), words_points_to_list(), words_points_to_reference(), words_reduction(), words_reductions(), words_stat_io_inst(), words_test_list(), words_to_string(), wp65(), wpips_user_request(), write_an_attachment_file(), writeresult(), xml_Argument(), xml_array_in_task(), xml_AssignArgument(), xml_call_from_assignation(), xml_call_from_indice(), xml_call_from_loopnest(), xml_Chain_Graph(), xml_code_string(), xml_declarations_with_explicit_motif(), xml_dim_string(), xml_entity_local_name(), xml_expression(), xml_loop_from_loop(), xml_loop_from_sequence(), xml_Matrix(), xml_ParameterUseToArrayBound(), xml_reference_with_explicit_motif(), xml_Region_Parameter(), xml_Region_Range(), xml_sequence_from_task(), and xml_tasks_with_motif().