00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef PPL_ppl_c_h
00025 #define PPL_ppl_c_h 1
00026
00140
00141
00142
00143
00144
00145
00146 #include <stdio.h>
00147 #include <gmp.h>
00148 #include <stddef.h>
00149
00150
00151
00152
00153
00154
00155 #if defined(__STDC__) \
00156 || defined(__cplusplus) \
00157 || defined (_AIX) \
00158 || (defined (__mips) && defined (_SYSTYPE_SVR4)) \
00159 || defined(_WIN32)
00160 # define PPL_PROTO(protos) protos
00161 #else
00162 # define PPL_PROTO(protos) ()
00163 #endif
00164
00165 #ifdef __cplusplus
00166 extern "C" {
00167 #endif
00168
00174
00183 int
00184 ppl_initialize PPL_PROTO((void));
00185
00194 int
00195 ppl_finalize PPL_PROTO((void));
00196
00205 int
00206 ppl_set_rounding_for_PPL PPL_PROTO((void));
00207
00216 int
00217 ppl_restore_pre_PPL_rounding PPL_PROTO((void));
00218
00222 int
00223 ppl_irrational_precision PPL_PROTO((unsigned* p));
00224
00234 int
00235 ppl_set_irrational_precision PPL_PROTO((unsigned p));
00236
00238
00243
00244 #include "ppl_c_version.h"
00245
00249 int
00250 ppl_version_major PPL_PROTO((void));
00251
00255 int
00256 ppl_version_minor PPL_PROTO((void));
00257
00261 int
00262 ppl_version_revision PPL_PROTO((void));
00263
00267 int
00268 ppl_version_beta PPL_PROTO((void));
00269
00274 int
00275 ppl_version PPL_PROTO((const char** p));
00276
00285 int
00286 ppl_banner PPL_PROTO((const char** p));
00287
00289
00294
00298 enum ppl_enum_error_code {
00301 PPL_ERROR_OUT_OF_MEMORY = -2,
00304 PPL_ERROR_INVALID_ARGUMENT = -3,
00307 PPL_ERROR_DOMAIN_ERROR = -4,
00311 PPL_ERROR_LENGTH_ERROR = -5,
00316 PPL_ARITHMETIC_OVERFLOW = -6,
00321 PPL_STDIO_ERROR = -7,
00325 PPL_ERROR_INTERNAL_ERROR = -8,
00329 PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION = -9,
00333 PPL_ERROR_UNEXPECTED_ERROR = -10,
00338 PPL_TIMEOUT_EXCEPTION = -11,
00344 PPL_ERROR_LOGIC_ERROR = -12
00345 };
00346
00355 int
00356 ppl_set_error_handler PPL_PROTO((void (*h)(enum ppl_enum_error_code code,
00357 const char* description)));
00358
00360
00365
00383 int
00384 ppl_set_timeout PPL_PROTO((unsigned time));
00385
00389 int
00390 ppl_reset_timeout PPL_PROTO((void));
00391
00422 int
00423 ppl_set_deterministic_timeout PPL_PROTO((unsigned weight));
00424
00428 int
00429 ppl_reset_deterministic_timeout PPL_PROTO((void));
00430
00432
00450
00454 typedef size_t ppl_dimension_type;
00455
00459 int
00460 ppl_max_space_dimension PPL_PROTO((ppl_dimension_type* m));
00461
00465 int
00466 ppl_not_a_dimension PPL_PROTO((ppl_dimension_type* m));
00467
00471 int
00472 ppl_io_print_variable PPL_PROTO((ppl_dimension_type var));
00473
00477 int
00478 ppl_io_fprint_variable PPL_PROTO((FILE* stream, ppl_dimension_type var));
00479
00484 int
00485 ppl_io_asprint_variable PPL_PROTO((char** strp, ppl_dimension_type var));
00486
00497 typedef const char*
00498 ppl_io_variable_output_function_type(ppl_dimension_type var);
00499
00503 int
00504 ppl_io_set_variable_output_function(ppl_io_variable_output_function_type* p);
00505
00509 int
00510 ppl_io_get_variable_output_function(ppl_io_variable_output_function_type** pp);
00511
00529 char*
00530 ppl_io_wrap_string(const char* src,
00531 unsigned indent_depth,
00532 unsigned preferred_first_line_length,
00533 unsigned preferred_line_length);
00534
00536
00537 #undef PPL_TYPE_DECLARATION
00538
00539 #define PPL_TYPE_DECLARATION(Type) \
00540 \
00541 typedef struct ppl_##Type##_tag* ppl_##Type##_t; \
00542 \
00543 typedef struct ppl_##Type##_tag const* ppl_const_##Type##_t;
00544
00555 PPL_TYPE_DECLARATION(Coefficient)
00556
00557
00564 PPL_TYPE_DECLARATION(Linear_Expression)
00565
00573 PPL_TYPE_DECLARATION(Constraint)
00574
00583 PPL_TYPE_DECLARATION(Constraint_System)
00584
00594 PPL_TYPE_DECLARATION(Constraint_System_const_iterator)
00595
00603 PPL_TYPE_DECLARATION(Generator)
00604
00613 PPL_TYPE_DECLARATION(Generator_System)
00614
00624 PPL_TYPE_DECLARATION(Generator_System_const_iterator)
00625
00633 PPL_TYPE_DECLARATION(Congruence)
00634
00643 PPL_TYPE_DECLARATION(Congruence_System)
00644
00654 PPL_TYPE_DECLARATION(Congruence_System_const_iterator)
00655
00663 PPL_TYPE_DECLARATION(Grid_Generator)
00664
00674 PPL_TYPE_DECLARATION(Grid_Generator_System)
00675
00685 PPL_TYPE_DECLARATION(Grid_Generator_System_const_iterator)
00686
00694 PPL_TYPE_DECLARATION(MIP_Problem)
00695
00703 PPL_TYPE_DECLARATION(PIP_Problem)
00704
00712 PPL_TYPE_DECLARATION(PIP_Tree_Node)
00713
00721 PPL_TYPE_DECLARATION(PIP_Decision_Node)
00722
00730 PPL_TYPE_DECLARATION(PIP_Solution_Node)
00731
00740 PPL_TYPE_DECLARATION(Artificial_Parameter)
00741 PPL_TYPE_DECLARATION(Artificial_Parameter_Sequence)
00742
00747 PPL_TYPE_DECLARATION(Artificial_Parameter_Sequence_const_iterator)
00748
00749
00750 #undef PPL_DECLARE_PRINT_FUNCTIONS
00751 #undef PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS
00752 #undef PPL_DECLARE_IO_FUNCTIONS
00753 #undef PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS
00754 #undef PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS
00755 #undef PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS
00756
00757 #define PPL_DECLARE_PRINT_FUNCTIONS(Type) \
00758 \
00759 int \
00760 ppl_io_print_##Type PPL_PROTO((ppl_const_##Type##_t x)); \
00761 \
00762 int \
00763 ppl_io_fprint_##Type PPL_PROTO((FILE* stream, ppl_const_##Type##_t x)); \
00764 \
00765 int \
00766 ppl_io_asprint_##Type PPL_PROTO((char** strp, ppl_const_##Type##_t x));
00767
00768 #define PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS(Type) \
00769 \
00770 int \
00771 ppl_##Type##_ascii_dump \
00772 PPL_PROTO((ppl_const_##Type##_t x, FILE* stream)); \
00773 \
00774 int \
00775 ppl_##Type##_ascii_load \
00776 PPL_PROTO((ppl_##Type##_t x, FILE* stream));
00777
00778 #define PPL_DECLARE_IO_FUNCTIONS(Type) \
00779 PPL_DECLARE_PRINT_FUNCTIONS(Type) \
00780 PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS(Type)
00781
00782 #define PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS(Type) \
00783 \
00784 int \
00785 ppl_io_print_##Type PPL_PROTO((ppl_const_##Type##_t x)); \
00786 \
00787 int \
00788 ppl_io_fprint_##Type PPL_PROTO((FILE* stream, ppl_const_##Type##_t x)); \
00789 \
00790 int \
00791 ppl_io_asprint_##Type PPL_PROTO((char** strp, ppl_const_##Type##_t x));
00792
00793
00794 #define PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS(Type) \
00795 \
00796 int \
00797 ppl_##Type##_ascii_dump \
00798 PPL_PROTO((ppl_const_##Type##_t x, FILE* stream)); \
00799 \
00800 int \
00801 ppl_##Type##_ascii_load \
00802 PPL_PROTO((ppl_##Type##_t x, FILE* stream));
00803
00804 #define PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Type) \
00805 \
00806 \
00807 PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS(Type) \
00808 PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS(Type) \
00809
00810
00811
00814
00819 int
00820 ppl_new_Coefficient PPL_PROTO((ppl_Coefficient_t* pc));
00821
00827 int
00828 ppl_new_Coefficient_from_mpz_t PPL_PROTO((ppl_Coefficient_t* pc, mpz_t z));
00829
00834 int
00835 ppl_new_Coefficient_from_Coefficient PPL_PROTO((ppl_Coefficient_t* pc,
00836 ppl_const_Coefficient_t c));
00837
00841 int
00842 ppl_assign_Coefficient_from_mpz_t PPL_PROTO((ppl_Coefficient_t dst, mpz_t z));
00843
00847 int
00848 ppl_assign_Coefficient_from_Coefficient
00849 PPL_PROTO((ppl_Coefficient_t dst, ppl_const_Coefficient_t src));
00850
00855 int
00856 ppl_delete_Coefficient PPL_PROTO((ppl_const_Coefficient_t c));
00857
00859
00862
00866 int
00867 ppl_Coefficient_to_mpz_t PPL_PROTO((ppl_const_Coefficient_t c, mpz_t z));
00868
00874 int
00875 ppl_Coefficient_OK PPL_PROTO((ppl_const_Coefficient_t c));
00876
00881 int
00882 ppl_Coefficient_is_bounded PPL_PROTO((void));
00883
00888 int
00889 ppl_Coefficient_min PPL_PROTO((mpz_t min));
00890
00895 int
00896 ppl_Coefficient_max PPL_PROTO((mpz_t max));
00897
00899
00900
00903 PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS(Coefficient)
00905
00906
00907
00909
00915 int
00916 ppl_new_Linear_Expression PPL_PROTO((ppl_Linear_Expression_t* ple));
00917
00923 int
00924 ppl_new_Linear_Expression_with_dimension
00925 PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_dimension_type d));
00926
00931 int
00932 ppl_new_Linear_Expression_from_Linear_Expression
00933 PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Linear_Expression_t le));
00934
00939 int
00940 ppl_new_Linear_Expression_from_Constraint
00941 PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Constraint_t c));
00942
00947 int
00948 ppl_new_Linear_Expression_from_Generator
00949 PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Generator_t g));
00950
00955 int
00956 ppl_new_Linear_Expression_from_Congruence
00957 PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Congruence_t c));
00958
00963 int
00964 ppl_new_Linear_Expression_from_Grid_Generator
00965 PPL_PROTO((ppl_Linear_Expression_t* ple, ppl_const_Grid_Generator_t g));
00966
00970 int
00971 ppl_assign_Linear_Expression_from_Linear_Expression
00972 PPL_PROTO((ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src));
00973
00978 int
00979 ppl_delete_Linear_Expression PPL_PROTO((ppl_const_Linear_Expression_t le));
00980
00982
00985
00989 int
00990 ppl_Linear_Expression_space_dimension
00991 PPL_PROTO((ppl_const_Linear_Expression_t le, ppl_dimension_type* m));
00992
00997 int
00998 ppl_Linear_Expression_coefficient PPL_PROTO((ppl_const_Linear_Expression_t le,
00999 ppl_dimension_type var,
01000 ppl_Coefficient_t n));
01001
01005 int
01006 ppl_Linear_Expression_inhomogeneous_term
01007 PPL_PROTO((ppl_const_Linear_Expression_t le, ppl_Coefficient_t n));
01008
01014 int
01015 ppl_Linear_Expression_OK PPL_PROTO((ppl_const_Linear_Expression_t le));
01016
01020 int
01021 ppl_Linear_Expression_is_zero PPL_PROTO((ppl_const_Linear_Expression_t le));
01022
01027 int
01028 ppl_Linear_Expression_all_homogeneous_terms_are_zero
01029 PPL_PROTO((ppl_const_Linear_Expression_t le));
01030
01032
01035
01041 int
01042 ppl_Linear_Expression_add_to_coefficient
01043 PPL_PROTO((ppl_Linear_Expression_t le,
01044 ppl_dimension_type var,
01045 ppl_const_Coefficient_t n));
01046
01050 int
01051 ppl_Linear_Expression_add_to_inhomogeneous
01052 PPL_PROTO((ppl_Linear_Expression_t le, ppl_const_Coefficient_t n));
01053
01057 int
01058 ppl_add_Linear_Expression_to_Linear_Expression
01059 PPL_PROTO((ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src));
01060
01064 int
01065 ppl_subtract_Linear_Expression_from_Linear_Expression
01066 PPL_PROTO((ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src));
01067
01071 int
01072 ppl_multiply_Linear_Expression_by_Coefficient
01073 PPL_PROTO((ppl_Linear_Expression_t le, ppl_const_Coefficient_t n));
01074
01076
01077 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Linear_Expression)
01078
01082 enum ppl_enum_Constraint_Type {
01084 PPL_CONSTRAINT_TYPE_LESS_THAN,
01086 PPL_CONSTRAINT_TYPE_LESS_OR_EQUAL,
01088 PPL_CONSTRAINT_TYPE_EQUAL,
01090 PPL_CONSTRAINT_TYPE_GREATER_OR_EQUAL,
01092 PPL_CONSTRAINT_TYPE_GREATER_THAN
01093 };
01094
01097
01103 int
01104 ppl_new_Constraint PPL_PROTO((ppl_Constraint_t* pc,
01105 ppl_const_Linear_Expression_t le,
01106 enum ppl_enum_Constraint_Type rel));
01107
01112 int
01113 ppl_new_Constraint_zero_dim_false PPL_PROTO((ppl_Constraint_t* pc));
01114
01120 int
01121 ppl_new_Constraint_zero_dim_positivity PPL_PROTO((ppl_Constraint_t* pc));
01122
01127 int
01128 ppl_new_Constraint_from_Constraint PPL_PROTO((ppl_Constraint_t* pc,
01129 ppl_const_Constraint_t c));
01130
01134 int
01135 ppl_assign_Constraint_from_Constraint PPL_PROTO((ppl_Constraint_t dst,
01136 ppl_const_Constraint_t src));
01137
01142 int
01143 ppl_delete_Constraint PPL_PROTO((ppl_const_Constraint_t c));
01144
01146
01149
01153 int
01154 ppl_Constraint_space_dimension PPL_PROTO((ppl_const_Constraint_t c,
01155 ppl_dimension_type* m));
01156
01160 int
01161 ppl_Constraint_type PPL_PROTO((ppl_const_Constraint_t c));
01162
01167 int
01168 ppl_Constraint_coefficient PPL_PROTO((ppl_const_Constraint_t c,
01169 ppl_dimension_type var,
01170 ppl_Coefficient_t n));
01171
01175 int
01176 ppl_Constraint_inhomogeneous_term PPL_PROTO((ppl_const_Constraint_t c,
01177 ppl_Coefficient_t n));
01178
01184 int
01185 ppl_Constraint_OK PPL_PROTO((ppl_const_Constraint_t c));
01186
01188
01189 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Constraint)
01190
01191
01192
01194
01199 int
01200 ppl_new_Constraint_System PPL_PROTO((ppl_Constraint_System_t* pcs));
01201
01206 int
01207 ppl_new_Constraint_System_zero_dim_empty
01208 PPL_PROTO((ppl_Constraint_System_t* pcs));
01209
01215 int
01216 ppl_new_Constraint_System_from_Constraint
01217 PPL_PROTO((ppl_Constraint_System_t* pcs, ppl_const_Constraint_t c));
01218
01223 int
01224 ppl_new_Constraint_System_from_Constraint_System
01225 PPL_PROTO((ppl_Constraint_System_t* pcs, ppl_const_Constraint_System_t cs));
01226
01230 int
01231 ppl_assign_Constraint_System_from_Constraint_System
01232 PPL_PROTO((ppl_Constraint_System_t dst, ppl_const_Constraint_System_t src));
01233
01238 int
01239 ppl_delete_Constraint_System PPL_PROTO((ppl_const_Constraint_System_t cs));
01240
01242
01245
01249 int
01250 ppl_Constraint_System_space_dimension
01251 PPL_PROTO((ppl_const_Constraint_System_t cs, ppl_dimension_type* m));
01252
01257 int
01258 ppl_Constraint_System_empty
01259 PPL_PROTO((ppl_const_Constraint_System_t cs));
01260
01265 int
01266 ppl_Constraint_System_has_strict_inequalities
01267 PPL_PROTO((ppl_const_Constraint_System_t cs));
01268
01273 int
01274 ppl_Constraint_System_begin
01275 PPL_PROTO((ppl_const_Constraint_System_t cs,
01276 ppl_Constraint_System_const_iterator_t cit));
01277
01282 int
01283 ppl_Constraint_System_end
01284 PPL_PROTO((ppl_const_Constraint_System_t cs,
01285 ppl_Constraint_System_const_iterator_t cit));
01286
01292 int
01293 ppl_Constraint_System_OK PPL_PROTO((ppl_const_Constraint_System_t cs));
01294
01296
01299
01304 int
01305 ppl_Constraint_System_clear PPL_PROTO((ppl_Constraint_System_t cs));
01306
01311 int
01312 ppl_Constraint_System_insert_Constraint PPL_PROTO((ppl_Constraint_System_t cs,
01313 ppl_const_Constraint_t c));
01314
01316
01317 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Constraint_System)
01318
01319
01322
01327 int
01328 ppl_new_Constraint_System_const_iterator
01329 PPL_PROTO((ppl_Constraint_System_const_iterator_t* pcit));
01330
01335 int
01336 ppl_new_Constraint_System_const_iterator_from_Constraint_System_const_iterator
01337 PPL_PROTO((ppl_Constraint_System_const_iterator_t* pcit,
01338 ppl_const_Constraint_System_const_iterator_t cit));
01339
01343 int
01344 ppl_assign_Constraint_System_const_iterator_from_Constraint_System_const_iterator
01345 PPL_PROTO((ppl_Constraint_System_const_iterator_t dst,
01346 ppl_const_Constraint_System_const_iterator_t src));
01347
01352 int
01353 ppl_delete_Constraint_System_const_iterator
01354 PPL_PROTO((ppl_const_Constraint_System_const_iterator_t cit));
01355
01357
01360
01365 int
01366 ppl_Constraint_System_const_iterator_dereference
01367 PPL_PROTO((ppl_const_Constraint_System_const_iterator_t cit,
01368 ppl_const_Constraint_t* pc));
01369
01373 int
01374 ppl_Constraint_System_const_iterator_increment
01375 PPL_PROTO((ppl_Constraint_System_const_iterator_t cit));
01376
01381 int
01382 ppl_Constraint_System_const_iterator_equal_test
01383 PPL_PROTO((ppl_const_Constraint_System_const_iterator_t x,
01384 ppl_const_Constraint_System_const_iterator_t y));
01385
01387
01388
01392 enum ppl_enum_Generator_Type {
01394 PPL_GENERATOR_TYPE_LINE,
01396 PPL_GENERATOR_TYPE_RAY,
01398 PPL_GENERATOR_TYPE_POINT,
01400 PPL_GENERATOR_TYPE_CLOSURE_POINT
01401 };
01402
01405
01414 int
01415 ppl_new_Generator PPL_PROTO((ppl_Generator_t* pg,
01416 ppl_const_Linear_Expression_t le,
01417 enum ppl_enum_Generator_Type t,
01418 ppl_const_Coefficient_t d));
01419
01425 int
01426 ppl_new_Generator_zero_dim_point PPL_PROTO((ppl_Generator_t* pg));
01427
01433 int
01434 ppl_new_Generator_zero_dim_closure_point PPL_PROTO((ppl_Generator_t* pg));
01435
01440 int
01441 ppl_new_Generator_from_Generator PPL_PROTO((ppl_Generator_t* pg,
01442 ppl_const_Generator_t g));
01443
01447 int
01448 ppl_assign_Generator_from_Generator PPL_PROTO((ppl_Generator_t dst,
01449 ppl_const_Generator_t src));
01450
01455 int
01456 ppl_delete_Generator PPL_PROTO((ppl_const_Generator_t g));
01457
01459
01462
01466 int
01467 ppl_Generator_space_dimension PPL_PROTO((ppl_const_Generator_t g,
01468 ppl_dimension_type* m));
01469
01473 int
01474 ppl_Generator_type PPL_PROTO((ppl_const_Generator_t g));
01475
01479 int
01480 ppl_Generator_coefficient PPL_PROTO((ppl_const_Generator_t g,
01481 ppl_dimension_type var,
01482 ppl_Coefficient_t n));
01483
01487 int
01488 ppl_Generator_divisor PPL_PROTO((ppl_const_Generator_t g,
01489 ppl_Coefficient_t n));
01490
01496 int
01497 ppl_Generator_OK PPL_PROTO((ppl_const_Generator_t g));
01498
01500
01501 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Generator)
01502
01503
01504
01506
01511 int
01512 ppl_new_Generator_System PPL_PROTO((ppl_Generator_System_t* pgs));
01513
01514
01515
01516
01517
01518
01519 int
01520 ppl_new_Generator_System_zero_dim_univ
01521 PPL_PROTO((ppl_Generator_System_t* pgs));
01522
01528 int
01529 ppl_new_Generator_System_from_Generator PPL_PROTO((ppl_Generator_System_t* pgs,
01530 ppl_const_Generator_t g));
01531
01536 int
01537 ppl_new_Generator_System_from_Generator_System
01538 PPL_PROTO((ppl_Generator_System_t* pgs, ppl_const_Generator_System_t gs));
01539
01543 int
01544 ppl_assign_Generator_System_from_Generator_System
01545 PPL_PROTO((ppl_Generator_System_t dst, ppl_const_Generator_System_t src));
01546
01551 int
01552 ppl_delete_Generator_System PPL_PROTO((ppl_const_Generator_System_t gs));
01553
01555
01558
01562 int
01563 ppl_Generator_System_space_dimension
01564 PPL_PROTO((ppl_const_Generator_System_t gs, ppl_dimension_type* m));
01565
01570 int
01571 ppl_Generator_System_empty
01572 PPL_PROTO((ppl_const_Generator_System_t gs));
01573
01578 int
01579 ppl_Generator_System_begin
01580 PPL_PROTO((ppl_const_Generator_System_t gs,
01581 ppl_Generator_System_const_iterator_t git));
01582
01587 int
01588 ppl_Generator_System_end
01589 PPL_PROTO((ppl_const_Generator_System_t gs,
01590 ppl_Generator_System_const_iterator_t git));
01591
01597 int
01598 ppl_Generator_System_OK PPL_PROTO((ppl_const_Generator_System_t gs));
01599
01601
01604
01609 int
01610 ppl_Generator_System_clear PPL_PROTO((ppl_Generator_System_t gs));
01611
01616 int
01617 ppl_Generator_System_insert_Generator PPL_PROTO((ppl_Generator_System_t gs,
01618 ppl_const_Generator_t g));
01619
01621
01622 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Generator_System)
01623
01624
01627
01632 int
01633 ppl_new_Generator_System_const_iterator
01634 PPL_PROTO((ppl_Generator_System_const_iterator_t* pgit));
01635
01640 int
01641 ppl_new_Generator_System_const_iterator_from_Generator_System_const_iterator
01642 PPL_PROTO((ppl_Generator_System_const_iterator_t* pgit,
01643 ppl_const_Generator_System_const_iterator_t git));
01644
01648 int
01649 ppl_assign_Generator_System_const_iterator_from_Generator_System_const_iterator
01650 PPL_PROTO((ppl_Generator_System_const_iterator_t dst,
01651 ppl_const_Generator_System_const_iterator_t src));
01652
01657 int
01658 ppl_delete_Generator_System_const_iterator
01659 PPL_PROTO((ppl_const_Generator_System_const_iterator_t git));
01660
01662
01665
01670 int
01671 ppl_Generator_System_const_iterator_dereference
01672 PPL_PROTO((ppl_const_Generator_System_const_iterator_t git,
01673 ppl_const_Generator_t* pg));
01674
01678 int
01679 ppl_Generator_System_const_iterator_increment
01680 PPL_PROTO((ppl_Generator_System_const_iterator_t git));
01681
01686 int
01687 ppl_Generator_System_const_iterator_equal_test
01688 PPL_PROTO((ppl_const_Generator_System_const_iterator_t x,
01689 ppl_const_Generator_System_const_iterator_t y));
01690
01692
01693
01696
01702 int
01703 ppl_new_Congruence PPL_PROTO((ppl_Congruence_t* pc,
01704 ppl_const_Linear_Expression_t le,
01705 ppl_const_Coefficient_t m));
01706
01711 int
01712 ppl_new_Congruence_zero_dim_false PPL_PROTO((ppl_Congruence_t* pc));
01713
01719 int
01720 ppl_new_Congruence_zero_dim_integrality PPL_PROTO((ppl_Congruence_t* pc));
01721
01726 int
01727 ppl_new_Congruence_from_Congruence PPL_PROTO((ppl_Congruence_t* pc,
01728 ppl_const_Congruence_t c));
01729
01733 int
01734 ppl_assign_Congruence_from_Congruence PPL_PROTO((ppl_Congruence_t dst,
01735 ppl_const_Congruence_t src));
01736
01741 int
01742 ppl_delete_Congruence PPL_PROTO((ppl_const_Congruence_t c));
01743
01745
01748
01752 int
01753 ppl_Congruence_space_dimension PPL_PROTO((ppl_const_Congruence_t c,
01754 ppl_dimension_type* m));
01755
01760 int
01761 ppl_Congruence_coefficient PPL_PROTO((ppl_const_Congruence_t c,
01762 ppl_dimension_type var,
01763 ppl_Coefficient_t n));
01764
01768 int
01769 ppl_Congruence_inhomogeneous_term PPL_PROTO((ppl_const_Congruence_t c,
01770 ppl_Coefficient_t n));
01771
01775 int
01776 ppl_Congruence_modulus PPL_PROTO((ppl_const_Congruence_t c,
01777 ppl_Coefficient_t m));
01778
01784 int
01785 ppl_Congruence_OK PPL_PROTO((ppl_const_Congruence_t c));
01786
01788
01789 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Congruence)
01790
01791
01794
01799 int
01800 ppl_new_Congruence_System PPL_PROTO((ppl_Congruence_System_t* pcs));
01801
01806 int
01807 ppl_new_Congruence_System_zero_dim_empty
01808 PPL_PROTO((ppl_Congruence_System_t* pcs));
01809
01815 int
01816 ppl_new_Congruence_System_from_Congruence
01817 PPL_PROTO((ppl_Congruence_System_t* pcs, ppl_const_Congruence_t c));
01818
01823 int
01824 ppl_new_Congruence_System_from_Congruence_System
01825 PPL_PROTO((ppl_Congruence_System_t* pcs, ppl_const_Congruence_System_t cs));
01826
01830 int
01831 ppl_assign_Congruence_System_from_Congruence_System
01832 PPL_PROTO((ppl_Congruence_System_t dst, ppl_const_Congruence_System_t src));
01833
01838 int
01839 ppl_delete_Congruence_System PPL_PROTO((ppl_const_Congruence_System_t cs));
01840
01842
01845
01849 int
01850 ppl_Congruence_System_space_dimension
01851 PPL_PROTO((ppl_const_Congruence_System_t cs, ppl_dimension_type* m));
01852
01857 int
01858 ppl_Congruence_System_empty
01859 PPL_PROTO((ppl_const_Congruence_System_t cs));
01860
01865 int
01866 ppl_Congruence_System_begin
01867 PPL_PROTO((ppl_const_Congruence_System_t cs,
01868 ppl_Congruence_System_const_iterator_t cit));
01869
01874 int
01875 ppl_Congruence_System_end
01876 PPL_PROTO((ppl_const_Congruence_System_t cs,
01877 ppl_Congruence_System_const_iterator_t cit));
01878
01884 int
01885 ppl_Congruence_System_OK PPL_PROTO((ppl_const_Congruence_System_t cs));
01886
01888
01891
01896 int
01897 ppl_Congruence_System_clear PPL_PROTO((ppl_Congruence_System_t cs));
01898
01903 int
01904 ppl_Congruence_System_insert_Congruence PPL_PROTO((ppl_Congruence_System_t cs,
01905 ppl_const_Congruence_t c));
01906
01908
01909 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Congruence_System)
01910
01911
01914
01919 int
01920 ppl_new_Congruence_System_const_iterator
01921 PPL_PROTO((ppl_Congruence_System_const_iterator_t* pcit));
01922
01927 int
01928 ppl_new_Congruence_System_const_iterator_from_Congruence_System_const_iterator
01929 PPL_PROTO((ppl_Congruence_System_const_iterator_t* pcit,
01930 ppl_const_Congruence_System_const_iterator_t cit));
01931
01935 int
01936 ppl_assign_Congruence_System_const_iterator_from_Congruence_System_const_iterator
01937 PPL_PROTO((ppl_Congruence_System_const_iterator_t dst,
01938 ppl_const_Congruence_System_const_iterator_t src));
01939
01944 int
01945 ppl_delete_Congruence_System_const_iterator
01946 PPL_PROTO((ppl_const_Congruence_System_const_iterator_t cit));
01947
01949
01952
01957 int
01958 ppl_Congruence_System_const_iterator_dereference
01959 PPL_PROTO((ppl_const_Congruence_System_const_iterator_t cit,
01960 ppl_const_Congruence_t* pc));
01961
01965 int
01966 ppl_Congruence_System_const_iterator_increment
01967 PPL_PROTO((ppl_Congruence_System_const_iterator_t cit));
01968
01973 int
01974 ppl_Congruence_System_const_iterator_equal_test
01975 PPL_PROTO((ppl_const_Congruence_System_const_iterator_t x,
01976 ppl_const_Congruence_System_const_iterator_t y));
01977
01979
01980
01984 enum ppl_enum_Grid_Generator_Type {
01986 PPL_GRID_GENERATOR_TYPE_LINE,
01988 PPL_GRID_GENERATOR_TYPE_PARAMETER,
01990 PPL_GRID_GENERATOR_TYPE_POINT
01991 };
01992
01995
02004 int
02005 ppl_new_Grid_Generator PPL_PROTO((ppl_Grid_Generator_t* pg,
02006 ppl_const_Linear_Expression_t le,
02007 enum ppl_enum_Grid_Generator_Type t,
02008 ppl_const_Coefficient_t d));
02009
02015 int
02016 ppl_new_Grid_Generator_zero_dim_point PPL_PROTO((ppl_Grid_Generator_t* pg));
02017
02022 int
02023 ppl_new_Grid_Generator_from_Grid_Generator
02024 PPL_PROTO((ppl_Grid_Generator_t* pg, ppl_const_Grid_Generator_t g));
02025
02029 int
02030 ppl_assign_Grid_Generator_from_Grid_Generator
02031 PPL_PROTO((ppl_Grid_Generator_t dst,
02032 ppl_const_Grid_Generator_t src));
02033
02038 int
02039 ppl_delete_Grid_Generator PPL_PROTO((ppl_const_Grid_Generator_t g));
02040
02042
02045
02049 int
02050 ppl_Grid_Generator_space_dimension PPL_PROTO((ppl_const_Grid_Generator_t g,
02051 ppl_dimension_type* m));
02052
02056 int
02057 ppl_Grid_Generator_type PPL_PROTO((ppl_const_Grid_Generator_t g));
02058
02063 int
02064 ppl_Grid_Generator_coefficient PPL_PROTO((ppl_const_Grid_Generator_t g,
02065 ppl_dimension_type var,
02066 ppl_Coefficient_t n));
02067
02071 int
02072 ppl_Grid_Generator_divisor PPL_PROTO((ppl_const_Grid_Generator_t g,
02073 ppl_Coefficient_t n));
02074
02080 int
02081 ppl_Grid_Generator_OK PPL_PROTO((ppl_const_Grid_Generator_t g));
02082
02084
02085 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Grid_Generator)
02086
02087
02088
02090
02095 int
02096 ppl_new_Grid_Generator_System PPL_PROTO((ppl_Grid_Generator_System_t* pgs));
02097
02098
02099
02100
02101
02102
02103 int
02104 ppl_new_Grid_Generator_System_zero_dim_univ
02105 PPL_PROTO((ppl_Grid_Generator_System_t* pgs));
02106
02112 int
02113 ppl_new_Grid_Generator_System_from_Grid_Generator
02114 PPL_PROTO((ppl_Grid_Generator_System_t* pgs,
02115 ppl_const_Grid_Generator_t g));
02116
02121 int
02122 ppl_new_Grid_Generator_System_from_Grid_Generator_System
02123 PPL_PROTO((ppl_Grid_Generator_System_t* pgs,
02124 ppl_const_Grid_Generator_System_t gs));
02125
02129 int
02130 ppl_assign_Grid_Generator_System_from_Grid_Generator_System
02131 PPL_PROTO((ppl_Grid_Generator_System_t dst,
02132 ppl_const_Grid_Generator_System_t src));
02133
02138 int
02139 ppl_delete_Grid_Generator_System
02140 PPL_PROTO((ppl_const_Grid_Generator_System_t gs));
02141
02143
02146
02150 int
02151 ppl_Grid_Generator_System_space_dimension
02152 PPL_PROTO((ppl_const_Grid_Generator_System_t gs, ppl_dimension_type* m));
02153
02158 int
02159 ppl_Grid_Generator_System_empty
02160 PPL_PROTO((ppl_const_Grid_Generator_System_t gs));
02161
02166 int
02167 ppl_Grid_Generator_System_begin
02168 PPL_PROTO((ppl_const_Grid_Generator_System_t gs,
02169 ppl_Grid_Generator_System_const_iterator_t git));
02170
02175 int
02176 ppl_Grid_Generator_System_end
02177 PPL_PROTO((ppl_const_Grid_Generator_System_t gs,
02178 ppl_Grid_Generator_System_const_iterator_t git));
02179
02185 int
02186 ppl_Grid_Generator_System_OK PPL_PROTO((ppl_const_Grid_Generator_System_t gs));
02187
02189
02192
02197 int
02198 ppl_Grid_Generator_System_clear PPL_PROTO((ppl_Grid_Generator_System_t gs));
02199
02204 int
02205 ppl_Grid_Generator_System_insert_Grid_Generator
02206 PPL_PROTO((ppl_Grid_Generator_System_t gs,
02207 ppl_const_Grid_Generator_t g));
02208
02210
02211 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Grid_Generator_System)
02212
02213
02216
02221 int
02222 ppl_new_Grid_Generator_System_const_iterator
02223 PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t* pgit));
02224
02229 int
02230 ppl_new_Grid_Generator_System_const_iterator_from_Grid_Generator_System_const_iterator
02231 PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t* pgit,
02232 ppl_const_Grid_Generator_System_const_iterator_t git));
02233
02237 int
02238 ppl_assign_Grid_Generator_System_const_iterator_from_Grid_Generator_System_const_iterator
02239 PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t dst,
02240 ppl_const_Grid_Generator_System_const_iterator_t src));
02241
02246 int
02247 ppl_delete_Grid_Generator_System_const_iterator
02248 PPL_PROTO((ppl_const_Grid_Generator_System_const_iterator_t git));
02249
02251
02254
02259 int
02260 ppl_Grid_Generator_System_const_iterator_dereference
02261 PPL_PROTO((ppl_const_Grid_Generator_System_const_iterator_t git,
02262 ppl_const_Grid_Generator_t* pg));
02263
02267 int
02268 ppl_Grid_Generator_System_const_iterator_increment
02269 PPL_PROTO((ppl_Grid_Generator_System_const_iterator_t git));
02270
02275 int
02276 ppl_Grid_Generator_System_const_iterator_equal_test
02277 PPL_PROTO((ppl_const_Grid_Generator_System_const_iterator_t x,
02278 ppl_const_Grid_Generator_System_const_iterator_t y));
02279
02281
02282
02286 extern unsigned int PPL_COMPLEXITY_CLASS_POLYNOMIAL;
02287
02292 extern unsigned int PPL_COMPLEXITY_CLASS_SIMPLEX;
02293
02297 extern unsigned int PPL_COMPLEXITY_CLASS_ANY;
02298
02303 extern unsigned int PPL_POLY_CON_RELATION_IS_DISJOINT;
02304
02309 extern unsigned int PPL_POLY_CON_RELATION_STRICTLY_INTERSECTS;
02310
02315 extern unsigned int PPL_POLY_CON_RELATION_IS_INCLUDED;
02316
02321 extern unsigned int PPL_POLY_CON_RELATION_SATURATES;
02322
02327 extern unsigned int PPL_POLY_GEN_RELATION_SUBSUMES;
02328
02329
02333 enum ppl_enum_Bounded_Integer_Type_Width {
02335 PPL_BITS_8 = 8,
02337 PPL_BITS_16 = 16,
02339 PPL_BITS_32 = 32,
02341 PPL_BITS_64 = 64,
02343 PPL_BITS_128 = 128
02344 };
02345
02349 enum ppl_enum_Bounded_Integer_Type_Representation {
02351 PPL_UNSIGNED,
02356 PPL_SIGNED_2_COMPLEMENT
02357 };
02358
02362 enum ppl_enum_Bounded_Integer_Type_Overflow {
02369 PPL_OVERFLOW_WRAPS,
02370
02384 PPL_OVERFLOW_UNDEFINED,
02385
02394 PPL_OVERFLOW_IMPOSSIBLE
02395 };
02396
02399
02403 extern int PPL_OPTIMIZATION_MODE_MAXIMIZATION;
02404
02408 extern int PPL_OPTIMIZATION_MODE_MINIMIZATION;
02409
02413 extern int PPL_MIP_PROBLEM_STATUS_UNFEASIBLE;
02414
02418 extern int PPL_MIP_PROBLEM_STATUS_UNBOUNDED;
02419
02423 extern int PPL_MIP_PROBLEM_STATUS_OPTIMIZED;
02424
02428 extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_NAME_PRICING;
02429
02433 extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_TEXTBOOK;
02434
02438 extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_EXACT;
02439
02443 extern int PPL_MIP_PROBLEM_CONTROL_PARAMETER_PRICING_STEEPEST_EDGE_FLOAT;
02444
02445
02446
02450 extern int PPL_PIP_PROBLEM_STATUS_UNFEASIBLE;
02451
02455 extern int PPL_PIP_PROBLEM_STATUS_OPTIMIZED;
02456
02460 extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_CUTTING_STRATEGY;
02461
02465 extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_NAME_PIVOT_ROW_STRATEGY;
02466
02470 extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_FIRST;
02471
02475 extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_DEEPEST;
02476
02480 extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_CUTTING_STRATEGY_ALL;
02481
02485 extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_FIRST;
02486
02490 extern int PPL_PIP_PROBLEM_CONTROL_PARAMETER_PIVOT_ROW_STRATEGY_MAX_COLUMN;
02491
02493
02496
02501 int
02502 ppl_new_MIP_Problem_from_space_dimension PPL_PROTO((ppl_MIP_Problem_t* pmip,
02503 ppl_dimension_type d));
02504
02510 int
02511 ppl_new_MIP_Problem PPL_PROTO((ppl_MIP_Problem_t* pmip,
02512 ppl_dimension_type d,
02513 ppl_const_Constraint_System_t cs,
02514 ppl_const_Linear_Expression_t le,
02515 int m));
02516
02521 int
02522 ppl_new_MIP_Problem_from_MIP_Problem
02523 PPL_PROTO((ppl_MIP_Problem_t* pmip, ppl_const_MIP_Problem_t mip));
02524
02528 int
02529 ppl_assign_MIP_Problem_from_MIP_Problem
02530 PPL_PROTO((ppl_MIP_Problem_t dst, ppl_const_MIP_Problem_t src));
02531
02536 int
02537 ppl_delete_MIP_Problem PPL_PROTO((ppl_const_MIP_Problem_t mip));
02538
02540
02543
02547 int
02548 ppl_MIP_Problem_space_dimension
02549 PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_dimension_type* m));
02550
02554 int
02555 ppl_MIP_Problem_number_of_integer_space_dimensions
02556 PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_dimension_type* m));
02557
02563 int
02564 ppl_MIP_Problem_integer_space_dimensions
02565 PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_dimension_type ds[]));
02566
02571 int
02572 ppl_MIP_Problem_number_of_constraints PPL_PROTO((ppl_const_MIP_Problem_t mip,
02573 ppl_dimension_type* m));
02574
02579 int
02580 ppl_MIP_Problem_constraint_at_index PPL_PROTO((ppl_const_MIP_Problem_t mip,
02581 ppl_dimension_type i,
02582 ppl_const_Constraint_t* pc));
02583
02588 int
02589 ppl_MIP_Problem_objective_function
02590 PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_const_Linear_Expression_t* ple));
02591
02595 int
02596 ppl_MIP_Problem_optimization_mode PPL_PROTO((ppl_const_MIP_Problem_t mip));
02597
02603 int
02604 ppl_MIP_Problem_OK PPL_PROTO((ppl_const_MIP_Problem_t mip));
02605
02607
02610
02614 int
02615 ppl_MIP_Problem_clear PPL_PROTO((ppl_MIP_Problem_t mip));
02616
02621 int
02622 ppl_MIP_Problem_add_space_dimensions_and_embed
02623 PPL_PROTO((ppl_MIP_Problem_t mip, ppl_dimension_type d));
02624
02630 int
02631 ppl_MIP_Problem_add_to_integer_space_dimensions
02632 PPL_PROTO((ppl_MIP_Problem_t mip, ppl_dimension_type ds[], size_t n));
02633
02638 int
02639 ppl_MIP_Problem_add_constraint PPL_PROTO((ppl_MIP_Problem_t mip,
02640 ppl_const_Constraint_t c));
02641
02646 int
02647 ppl_MIP_Problem_add_constraints PPL_PROTO((ppl_MIP_Problem_t mip,
02648 ppl_const_Constraint_System_t cs));
02649
02653 int
02654 ppl_MIP_Problem_set_objective_function
02655 PPL_PROTO((ppl_MIP_Problem_t mip, ppl_const_Linear_Expression_t le));
02656
02660 int
02661 ppl_MIP_Problem_set_optimization_mode PPL_PROTO((ppl_MIP_Problem_t mip,
02662 int mode));
02663
02665
02668
02672 int
02673 ppl_MIP_Problem_is_satisfiable PPL_PROTO((ppl_const_MIP_Problem_t mip));
02674
02687 int
02688 ppl_MIP_Problem_solve PPL_PROTO((ppl_const_MIP_Problem_t mip));
02689
02705 int
02706 ppl_MIP_Problem_evaluate_objective_function
02707 PPL_PROTO((ppl_const_MIP_Problem_t mip, ppl_const_Generator_t g,
02708 ppl_Coefficient_t num, ppl_Coefficient_t den));
02709
02714 int
02715 ppl_MIP_Problem_feasible_point PPL_PROTO((ppl_const_MIP_Problem_t mip,
02716 ppl_const_Generator_t* pg));
02717
02722 int
02723 ppl_MIP_Problem_optimizing_point PPL_PROTO((ppl_const_MIP_Problem_t mip,
02724 ppl_const_Generator_t* pg));
02725
02738 int
02739 ppl_MIP_Problem_optimal_value
02740 PPL_PROTO((ppl_const_MIP_Problem_t mip,
02741 ppl_Coefficient_t num, ppl_Coefficient_t den));
02742
02744
02747
02751 int
02752 ppl_MIP_Problem_get_control_parameter
02753 PPL_PROTO((ppl_const_MIP_Problem_t mip, int name));
02754
02758 int
02759 ppl_MIP_Problem_set_control_parameter
02760 PPL_PROTO((ppl_MIP_Problem_t mip, int value));
02761
02765 int
02766 ppl_MIP_Problem_total_memory_in_bytes
02767 PPL_PROTO((ppl_const_MIP_Problem_t mip, size_t* sz));
02768
02772 int
02773 ppl_MIP_Problem_external_memory_in_bytes
02774 PPL_PROTO((ppl_const_MIP_Problem_t mip, size_t* sz));
02775
02777
02778
02781
02786 int
02787 ppl_new_PIP_Problem_from_space_dimension PPL_PROTO((ppl_PIP_Problem_t* ppip,
02788 ppl_dimension_type d));
02789
02794 int
02795 ppl_new_PIP_Problem_from_PIP_Problem
02796 PPL_PROTO((ppl_PIP_Problem_t* ppip, ppl_const_PIP_Problem_t pip));
02797
02801 int
02802 ppl_assign_PIP_Problem_from_PIP_Problem
02803 PPL_PROTO((ppl_PIP_Problem_t dst, ppl_const_PIP_Problem_t src));
02804
02811 int
02812 ppl_new_PIP_Problem_from_constraints
02813 PPL_PROTO((ppl_PIP_Problem_t* ppip,
02814 ppl_dimension_type d,
02815 ppl_Constraint_System_const_iterator_t first,
02816 ppl_Constraint_System_const_iterator_t last,
02817 size_t n,
02818 ppl_dimension_type ds[]));
02819
02824 int
02825 ppl_delete_PIP_Problem PPL_PROTO((ppl_const_PIP_Problem_t pip));
02826
02828
02831
02839 int
02840 ppl_PIP_Problem_space_dimension
02841 PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type* m));
02842
02846 int
02847 ppl_PIP_Problem_number_of_parameter_space_dimensions
02848 PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type* m));
02849
02855 int
02856 ppl_PIP_Problem_parameter_space_dimensions
02857 PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type ds[]));
02858
02862 int
02863 ppl_PIP_Problem_get_big_parameter_dimension
02864 PPL_PROTO((ppl_const_PIP_Problem_t pip, ppl_dimension_type* pd));
02865
02870 int
02871 ppl_PIP_Problem_number_of_constraints PPL_PROTO((ppl_const_PIP_Problem_t pip,
02872 ppl_dimension_type* m));
02873
02878 int
02879 ppl_PIP_Problem_constraint_at_index PPL_PROTO((ppl_const_PIP_Problem_t pip,
02880 ppl_dimension_type i,
02881 ppl_const_Constraint_t* pc));
02882
02886 int
02887 ppl_PIP_Problem_total_memory_in_bytes
02888 PPL_PROTO((ppl_const_PIP_Problem_t pip, size_t* sz));
02889
02893 int
02894 ppl_PIP_Problem_external_memory_in_bytes
02895 PPL_PROTO((ppl_const_PIP_Problem_t pip, size_t* sz));
02896
02902 int
02903 ppl_PIP_Problem_OK PPL_PROTO((ppl_const_PIP_Problem_t pip));
02904
02906
02909
02913 int
02914 ppl_PIP_Problem_clear PPL_PROTO((ppl_PIP_Problem_t pip));
02915
02936 int
02937 ppl_PIP_Problem_add_space_dimensions_and_embed
02938 PPL_PROTO((ppl_PIP_Problem_t pip,
02939 ppl_dimension_type pip_vars,
02940 ppl_dimension_type pip_params));
02941
02947 int
02948 ppl_PIP_Problem_add_to_parameter_space_dimensions
02949 PPL_PROTO((ppl_PIP_Problem_t pip, ppl_dimension_type ds[], size_t n));
02950
02954 int
02955 ppl_PIP_Problem_set_big_parameter_dimension
02956 PPL_PROTO((ppl_PIP_Problem_t pip, ppl_dimension_type d));
02957
02962 int
02963 ppl_PIP_Problem_add_constraint PPL_PROTO((ppl_PIP_Problem_t pip,
02964 ppl_const_Constraint_t c));
02965
02970 int
02971 ppl_PIP_Problem_add_constraints PPL_PROTO((ppl_PIP_Problem_t pip,
02972 ppl_const_Constraint_System_t cs));
02973
02975
02978
02983 int
02984 ppl_PIP_Problem_is_satisfiable PPL_PROTO((ppl_const_PIP_Problem_t pip));
02985
02995 int
02996 ppl_PIP_Problem_solve PPL_PROTO((ppl_const_PIP_Problem_t pip));
02997
03001 int
03002 ppl_PIP_Problem_solution PPL_PROTO((ppl_const_PIP_Problem_t pip,
03003 ppl_const_PIP_Tree_Node_t* pip_tree));
03004
03008 int
03009 ppl_PIP_Problem_optimizing_solution
03010 PPL_PROTO((ppl_const_PIP_Problem_t pip,
03011 ppl_const_PIP_Tree_Node_t* pip_tree));
03012
03014
03017
03021 int
03022 ppl_PIP_Problem_get_control_parameter
03023 PPL_PROTO((ppl_const_PIP_Problem_t pip, int name));
03024
03028 int
03029 ppl_PIP_Problem_set_control_parameter
03030 PPL_PROTO((ppl_PIP_Problem_t pip, int value));
03031
03033
03034
03039 int
03040 ppl_PIP_Tree_Node_as_solution
03041 PPL_PROTO((ppl_const_PIP_Tree_Node_t spip_tree,
03042 ppl_const_PIP_Solution_Node_t* dpip_tree));
03043
03048 int
03049 ppl_PIP_Tree_Node_as_decision
03050 PPL_PROTO((ppl_const_PIP_Tree_Node_t spip_tree,
03051 ppl_const_PIP_Decision_Node_t* dpip_tree));
03052
03057 int
03058 ppl_PIP_Tree_Node_get_constraints
03059 PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
03060 ppl_const_Constraint_System_t* pcs));
03061
03067 int
03068 ppl_PIP_Tree_Node_OK PPL_PROTO((ppl_const_PIP_Tree_Node_t pip));
03069
03074 int
03075 ppl_PIP_Tree_Node_number_of_artificials
03076 PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
03077 ppl_dimension_type* m));
03078
03083 int
03084 ppl_PIP_Tree_Node_begin
03085 PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
03086 ppl_Artificial_Parameter_Sequence_const_iterator_t pit));
03087
03092 int
03093 ppl_PIP_Tree_Node_end
03094 PPL_PROTO((ppl_const_PIP_Tree_Node_t pip_tree,
03095 ppl_Artificial_Parameter_Sequence_const_iterator_t pit));
03096
03117 int
03118 ppl_PIP_Solution_Node_get_parametric_values
03119 PPL_PROTO((ppl_const_PIP_Solution_Node_t pip_sol,
03120 ppl_dimension_type var,
03121 ppl_const_Linear_Expression_t* le));
03122
03127 int
03128 ppl_PIP_Decision_Node_get_child_node
03129 PPL_PROTO((ppl_const_PIP_Decision_Node_t pip_dec,
03130 int b,
03131 ppl_const_PIP_Tree_Node_t* pip_tree));
03132
03136 int
03137 ppl_Artificial_Parameter_get_Linear_Expression
03138 PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
03139 ppl_Linear_Expression_t le));
03140
03145 int
03146 ppl_Artificial_Parameter_coefficient
03147 PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
03148 ppl_dimension_type var,
03149 ppl_Coefficient_t n));
03150
03155 int
03156 ppl_Artificial_Parameter_get_inhomogeneous_term
03157 PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
03158 ppl_Coefficient_t n));
03159
03163 int
03164 ppl_Artificial_Parameter_denominator
03165 PPL_PROTO((ppl_const_Artificial_Parameter_t ap,
03166 ppl_Coefficient_t n));
03167
03170
03175 int
03176 ppl_new_Artificial_Parameter_Sequence_const_iterator
03177 PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t* papit));
03178
03183 int
03184 ppl_new_Artificial_Parameter_Sequence_const_iterator_from_Artificial_Parameter_Sequence_const_iterator
03185 PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t* papit,
03186 ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit));
03187
03191 int
03192 ppl_assign_Artificial_Parameter_Sequence_const_iterator_from_Artificial_Parameter_Sequence_const_iterator
03193 PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t dst,
03194 ppl_const_Artificial_Parameter_Sequence_const_iterator_t src));
03195
03200 int
03201 ppl_delete_Artificial_Parameter_Sequence_const_iterator
03202 PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit));
03203
03205
03208
03213 int
03214 ppl_Artificial_Parameter_Sequence_const_iterator_dereference
03215 PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t apit,
03216 ppl_const_Artificial_Parameter_t* pap));
03217
03221 int
03222 ppl_Artificial_Parameter_Sequence_const_iterator_increment
03223 PPL_PROTO((ppl_Artificial_Parameter_Sequence_const_iterator_t apit));
03224
03229 int
03230 ppl_Artificial_Parameter_Sequence_const_iterator_equal_test
03231 PPL_PROTO((ppl_const_Artificial_Parameter_Sequence_const_iterator_t x,
03232 ppl_const_Artificial_Parameter_Sequence_const_iterator_t y));
03233
03235
03236 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(MIP_Problem)
03237
03238 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Problem)
03239
03240 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Tree_Node)
03241
03242 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Solution_Node)
03243
03244 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(PIP_Decision_Node)
03245
03246 PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS(Artificial_Parameter)
03247
03248 #include "ppl_c_domains.h"
03249
03250 #ifdef __cplusplus
03251 }
03252 #endif
03253
03254 #undef PPL_TYPE_DECLARATION
03255 #undef PPL_PROTO
03256 #undef PPL_DECLARE_PRINT_FUNCTIONS
03257 #undef PPL_DECLARE_ASCII_DUMP_LOAD_FUNCTIONS
03258 #undef PPL_DECLARE_IO_FUNCTIONS
03259 #undef PPL_DECLARE_AND_DOCUMENT_PRINT_FUNCTIONS
03260 #undef PPL_DECLARE_AND_DOCUMENT_ASCII_DUMP_LOAD_FUNCTIONS
03261 #undef PPL_DECLARE_AND_DOCUMENT_IO_FUNCTIONS
03262
03263 #endif