Version Checking | |
#define | PPL_VERSION_MAJOR 0 |
The major number of the PPL version. | |
#define | PPL_VERSION_MINOR 6 |
The minor number of the PPL version. | |
#define | PPL_VERSION_REVISION 1 |
The revision number of the PPL version. | |
#define | PPL_VERSION_BETA 0 |
The beta number of the PPL version. This is zero for official releases and nonzero for development snapshots. | |
#define | PPL_VERSION "0.6.1" |
A string containing the PPL version. | |
int | ppl_version_major (void) |
Returns the major number of the PPL version. | |
int | ppl_version_minor (void) |
Returns the minor number of the PPL version. | |
int | ppl_version_revision (void) |
Returns the revision number of the PPL version. | |
int | ppl_version_beta (void) |
Returns the beta number of the PPL version. | |
int | ppl_version (const char **p) |
Writes to m a pointer to a character string containing the PPL version. | |
int | ppl_banner (const char **p) |
Writes to m a pointer to a character string containing the PPL banner. | |
Simple I/O Functions | |
typedef const char * | ppl_io_variable_output_function_type (ppl_dimension_type var) |
The type of output functions used for printing variables. | |
int | ppl_io_print_variable (ppl_dimension_type var) |
Pretty-prints x to stdout . | |
int | ppl_io_fprint_variable (FILE *stream, ppl_dimension_type var) |
Pretty-prints var to the given output stream . | |
int | ppl_io_print_Coefficient (ppl_const_Coefficient_t x) |
Prints x to stdout . | |
int | ppl_io_fprint_Coefficient (FILE *stream, ppl_const_Coefficient_t x) |
Prints x to the given output stream . | |
int | ppl_io_print_LinExpression (ppl_const_LinExpression_t x) |
Prints x to stdout . | |
int | ppl_io_fprint_LinExpression (FILE *stream, ppl_const_LinExpression_t x) |
Prints x to the given output stream . | |
int | ppl_io_print_Constraint (ppl_const_Constraint_t x) |
Prints x to stdout . | |
int | ppl_io_fprint_Constraint (FILE *stream, ppl_const_Constraint_t x) |
Prints x to the given output stream . | |
int | ppl_io_print_ConSys (ppl_const_ConSys_t x) |
Prints x to stdout . | |
int | ppl_io_fprint_ConSys (FILE *stream, ppl_const_ConSys_t x) |
Prints x to the given output stream . | |
int | ppl_io_print_Generator (ppl_const_Generator_t x) |
Prints x to stdout . | |
int | ppl_io_fprint_Generator (FILE *stream, ppl_const_Generator_t x) |
Prints x to the given output stream . | |
int | ppl_io_print_GenSys (ppl_const_GenSys_t x) |
Prints x to stdout . | |
int | ppl_io_fprint_GenSys (FILE *stream, ppl_const_GenSys_t x) |
Prints x to the given output stream . | |
int | ppl_io_print_Polyhedron (ppl_const_Polyhedron_t x) |
Prints x to stdout . | |
int | ppl_io_fprint_Polyhedron (FILE *stream, ppl_const_Polyhedron_t x) |
Prints x to the given output stream . | |
int | ppl_io_set_variable_output_function (ppl_io_variable_output_function_type *p) |
Sets the output function to be used for printing variables to p . | |
int | ppl_io_get_variable_output_function (ppl_io_variable_output_function_type **pp) |
Writes a pointer to the current variable output function to pp . | |
Initialization, Error Handling and Auxiliary Functions | |
int | ppl_max_space_dimension (ppl_dimension_type *m) |
Writes to m the maximum space dimension this library can handle. | |
int | ppl_not_a_dimension (ppl_dimension_type *m) |
Writes to m a value that does not designate a valid dimension. | |
int | ppl_initialize (void) |
Initializes the Parma Polyhedra Library. This function must be called before any other function. | |
int | ppl_finalize (void) |
Finalizes the Parma Polyhedra Library. This function must be called after any other function. | |
int | ppl_set_error_handler (void(*h)(enum ppl_enum_error_code code, const char *description)) |
Installs the user-defined error handler pointed by h . | |
Functions Related to Coefficients | |
int | ppl_new_Coefficient (ppl_Coefficient_t *pc) |
Creates a new coefficient with value 0 and writes an handle for the newly created coefficient at address pc . | |
int | ppl_new_Coefficient_from_mpz_t (ppl_Coefficient_t *pc, mpz_t z) |
Creates a new coefficient with the value given by the GMP integer z and writes an handle for the newly created coefficient at address pc . | |
int | ppl_new_Coefficient_from_Coefficient (ppl_Coefficient_t *pc, ppl_const_Coefficient_t c) |
Builds a coefficient that is a copy of c ; writes an handle for the newly created coefficient at address pc . | |
int | ppl_assign_Coefficient_from_mpz_t (ppl_Coefficient_t dst, mpz_t z) |
Assign to dst the value given by the GMP integer z . | |
int | ppl_assign_Coefficient_from_Coefficient (ppl_Coefficient_t dst, ppl_const_Coefficient_t src) |
Assigns a copy of the coefficient src to dst . | |
int | ppl_delete_Coefficient (ppl_const_Coefficient_t c) |
Invalidates the handle c: this makes sure the corresponding resources will eventually be released. | |
int | ppl_Coefficient_to_mpz_t (ppl_const_Coefficient_t c, mpz_t z) |
Sets the value of the GMP integer z to the value of c . | |
int | ppl_Coefficient_OK (ppl_const_Coefficient_t c) |
Returns a positive integer if c is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps make some noise if c is broken. Useful for debugging purposes. | |
Functions Related to Linear Expressions | |
int | ppl_new_LinExpression (ppl_LinExpression_t *ple) |
Creates a new linear expression corresponding to the constant 0 in a zero-dimensional space; writes an handle for the new linear expression at address ple . | |
int | ppl_new_LinExpression_with_dimension (ppl_LinExpression_t *ple, ppl_dimension_type d) |
Creates a new linear expression corresponding to the constant 0 in a d -dimensional space; writes an handle for the new linear expression at address ple . | |
int | ppl_new_LinExpression_from_LinExpression (ppl_LinExpression_t *ple, ppl_const_LinExpression_t le) |
Builds a linear expression that is a copy of le ; writes an handle for the newly created linear expression at address ple . | |
int | ppl_new_LinExpression_from_Constraint (ppl_LinExpression_t *ple, ppl_const_Constraint_t c) |
Builds a linear expression corresponding to constraint c ; writes an handle for the newly created linear expression at address ple . | |
int | ppl_new_LinExpression_from_Generator (ppl_LinExpression_t *ple, ppl_const_Generator_t g) |
Builds a linear expression corresponding to generator g ; writes an handle for the newly created linear expression at address ple . | |
int | ppl_delete_LinExpression (ppl_const_LinExpression_t le) |
Invalidates the handle le: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_LinExpression_from_LinExpression (ppl_LinExpression_t dst, ppl_const_LinExpression_t src) |
Assigns a copy of the linear expression src to dst . | |
int | ppl_LinExpression_add_to_coefficient (ppl_LinExpression_t le, ppl_dimension_type var, ppl_const_Coefficient_t n) |
Adds n to the coefficient of variable var in the linear expression le . The space dimension is set to be the maximum between var + 1 and the old space dimension. | |
int | ppl_LinExpression_add_to_inhomogeneous (ppl_LinExpression_t le, ppl_const_Coefficient_t n) |
Adds n to the inhomogeneous term of the linear expression le . | |
int | ppl_add_LinExpression_to_LinExpression (ppl_LinExpression_t dst, ppl_const_LinExpression_t src) |
Adds the linear expression src to dst . | |
int | ppl_subtract_LinExpression_from_LinExpression (ppl_LinExpression_t dst, ppl_const_LinExpression_t src) |
Subtracts the linear expression src from dst . | |
int | ppl_multiply_LinExpression_by_Coefficient (ppl_LinExpression_t le, ppl_const_Coefficient_t n) |
Multiply the linear expression dst by n . | |
int | ppl_LinExpression_space_dimension (ppl_const_LinExpression_t le) |
Returns the space dimension of le . | |
int | ppl_LinExpression_coefficient (ppl_const_LinExpression_t le, ppl_dimension_type var, ppl_Coefficient_t n) |
Copies into n the coefficient of variable var in the linear expression le . | |
int | ppl_LinExpression_inhomogeneous_term (ppl_const_LinExpression_t le, ppl_Coefficient_t n) |
Copies into n the inhomogeneous term of linear expression le . | |
int | ppl_LinExpression_OK (ppl_const_LinExpression_t le) |
Returns a positive integer if le is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps make some noise if le is broken. Useful for debugging purposes. | |
Functions Related to Constraints | |
int | ppl_new_Constraint (ppl_Constraint_t *pc, ppl_const_LinExpression_t le, enum ppl_enum_Constraint_Type rel) |
Creates the new constraint `le rel 0' and writes an handle for it at address pc . The space dimension of the new constraint is equal to the space dimension of le . | |
int | ppl_new_Constraint_zero_dim_false (ppl_Constraint_t *pc) |
Creates the unsatisfiable (zero-dimension space) constraint ![]() pc . | |
int | ppl_new_Constraint_zero_dim_positivity (ppl_Constraint_t *pc) |
Creates the true (zero-dimension space) constraint ![]() pc . | |
int | ppl_new_Constraint_from_Constraint (ppl_Constraint_t *pc, ppl_const_Constraint_t c) |
Builds a constraint that is a copy of c ; writes an handle for the newly created constraint at address pc . | |
int | ppl_delete_Constraint (ppl_const_Constraint_t c) |
Invalidates the handle c: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_Constraint_from_Constraint (ppl_Constraint_t dst, ppl_const_Constraint_t src) |
Assigns a copy of the constraint src to dst . | |
int | ppl_Constraint_space_dimension (ppl_const_Constraint_t c) |
Returns the space dimension of c . | |
int | ppl_Constraint_type (ppl_const_Constraint_t c) |
Returns the type of constraint c . | |
int | ppl_Constraint_coefficient (ppl_const_Constraint_t c, ppl_dimension_type var, ppl_Coefficient_t n) |
Copies into n the coefficient of variable var in constraint c . | |
int | ppl_Constraint_inhomogeneous_term (ppl_const_Constraint_t c, ppl_Coefficient_t n) |
Copies into n the inhomogeneous term of constraint c . | |
int | ppl_Constraint_OK (ppl_const_Constraint_t c) |
Returns a positive integer if c is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps make some noise if c is broken. Useful for debugging purposes. | |
Functions Related to Constraint Systems | |
int | ppl_new_ConSys (ppl_ConSys_t *pcs) |
Builds an empty system of constraints and writes an handle to it at address pcs . | |
int | ppl_new_ConSys_zero_dim_empty (ppl_ConSys_t *pcs) |
Builds a zero-dimensional, unsatisfiable constraint system and writes an handle to it at address pcs . | |
int | ppl_new_ConSys_from_Constraint (ppl_ConSys_t *pcs, ppl_const_Constraint_t c) |
Builds the singleton constraint system containing only a copy of constraint c ; writes an handle for the newly created system at address pcs . | |
int | ppl_new_ConSys_from_ConSys (ppl_ConSys_t *pcs, ppl_const_ConSys_t cs) |
Builds a constraint system that is a copy of cs ; writes an handle for the newly created system at address pcs . | |
int | ppl_delete_ConSys (ppl_const_ConSys_t cs) |
Invalidates the handle cs: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_ConSys_from_ConSys (ppl_ConSys_t dst, ppl_const_ConSys_t src) |
Assigns a copy of the constraint system src to dst . | |
int | ppl_ConSys_space_dimension (ppl_const_ConSys_t cs) |
Returns the dimension of the vector space enclosing cs . | |
int | ppl_ConSys_clear (ppl_ConSys_t cs) |
Removes all the constraints from the constraint system cs and sets its space dimension to 0. | |
int | ppl_ConSys_insert_Constraint (ppl_ConSys_t cs, ppl_const_Constraint_t c) |
Inserts a copy of the constraint c into cs ; the space dimension is increased, if necessary. | |
int | ppl_ConSys_OK (ppl_const_ConSys_t c) |
Returns a positive integer if cs is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps make some noise if cs is broken. Useful for debugging purposes. | |
int | ppl_new_ConSys_const_iterator (ppl_ConSys_const_iterator_t *pcit) |
Builds a new `const iterator' and writes an handle to it at address pcit . | |
int | ppl_new_ConSys_const_iterator_from_ConSys_const_iterator (ppl_ConSys_const_iterator_t *pcit, ppl_const_ConSys_const_iterator_t cit) |
Builds a const iterator that is a copy of cit ; writes an handle for the newly created const iterator at address pcit . | |
int | ppl_delete_ConSys_const_iterator (ppl_const_ConSys_const_iterator_t cit) |
Invalidates the handle cit: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_ConSys_const_iterator_from_ConSys_const_iterator (ppl_ConSys_const_iterator_t dst, ppl_const_ConSys_const_iterator_t src) |
Assigns a copy of the const iterator src to dst . | |
int | ppl_ConSys_begin (ppl_const_ConSys_t cs, ppl_ConSys_const_iterator_t cit) |
Assigns to cit a const iterator "pointing" to the beginning of the constraint system cs . | |
int | ppl_ConSys_end (ppl_const_ConSys_t cs, ppl_ConSys_const_iterator_t cit) |
Assigns to cit a const iterator "pointing" past the end of the constraint system cs . | |
int | ppl_ConSys_const_iterator_dereference (ppl_const_ConSys_const_iterator_t cit, ppl_const_Constraint_t *pc) |
Dereference cit writing a const handle to the resulting constraint at address pc . | |
int | ppl_ConSys_const_iterator_increment (ppl_ConSys_const_iterator_t cit) |
Increment cit so that it "points" to the next constraint. | |
int | ppl_ConSys_const_iterator_equal_test (ppl_const_ConSys_const_iterator_t x, ppl_const_ConSys_const_iterator_t y) |
Returns a positive integer if the iterators corresponding to x and y are equal; return 0 if they are different. | |
Functions Related to Generators | |
int | ppl_new_Generator (ppl_Generator_t *pg, ppl_const_LinExpression_t le, enum ppl_enum_Generator_Type t, ppl_const_Coefficient_t d) |
Creates a new generator of direction le and type t . If the generator to be created is a point or a closure point, the divisor d is applied to le . For other types of generators d is simply disregarded. An handle for the new generator is written at address pg . The space dimension of the new generator is equal to the space dimension of le . | |
int | ppl_new_Generator_zero_dim_point (ppl_Generator_t *pg) |
Creates the point that is the origin of the zero-dimensional space ![]() pg . | |
int | ppl_new_Generator_zero_dim_closure_point (ppl_Generator_t *pg) |
Creates, as a closure point, the point that is the origin of the zero-dimensional space ![]() pg . | |
int | ppl_new_Generator_from_Generator (ppl_Generator_t *pg, ppl_const_Generator_t g) |
Builds a generator that is a copy of g ; writes an handle for the newly created generator at address pg . | |
int | ppl_delete_Generator (ppl_const_Generator_t g) |
Invalidates the handle g: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_Generator_from_Generator (ppl_Generator_t dst, ppl_const_Generator_t src) |
Assigns a copy of the generator src to dst . | |
int | ppl_Generator_space_dimension (ppl_const_Generator_t g) |
Returns the space dimension of g . | |
int | ppl_Generator_type (ppl_const_Generator_t g) |
Returns the type of generator g . | |
int | ppl_Generator_coefficient (ppl_const_Generator_t g, ppl_dimension_type var, ppl_Coefficient_t n) |
Copies into n the coefficient of variable var in generator g . | |
int | ppl_Generator_divisor (ppl_const_Generator_t g, ppl_Coefficient_t n) |
If g is a point or a closure point assigns its divisor to n . | |
int | ppl_Generator_OK (ppl_const_Generator_t g) |
Returns a positive integer if g is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps make some noise if g is broken. Useful for debugging purposes. | |
Functions Related to Generator Systems | |
int | ppl_new_GenSys (ppl_GenSys_t *pgs) |
Builds an empty system of generators and writes an handle to it at address pgs . | |
int | ppl_new_GenSys_from_Generator (ppl_GenSys_t *pgs, ppl_const_Generator_t g) |
Builds the singleton generator system containing only a copy of generator g ; writes an handle for the newly created system at address pgs . | |
int | ppl_new_GenSys_from_GenSys (ppl_GenSys_t *pgs, ppl_const_GenSys_t gs) |
Builds a generator system that is a copy of gs ; writes an handle for the newly created system at address pgs . | |
int | ppl_delete_GenSys (ppl_const_GenSys_t gs) |
Invalidates the handle gs: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_GenSys_from_GenSys (ppl_GenSys_t dst, ppl_const_GenSys_t src) |
Assigns a copy of the generator system src to dst . | |
int | ppl_GenSys_space_dimension (ppl_const_GenSys_t gs) |
Returns the dimension of the vector space enclosing gs . | |
int | ppl_GenSys_clear (ppl_GenSys_t gs) |
Removes all the generators from the generator system gs and sets its space dimension to 0. | |
int | ppl_GenSys_insert_Generator (ppl_GenSys_t gs, ppl_const_Generator_t g) |
Inserts a copy of the generator g into gs ; the space dimension is increased, if necessary. | |
int | ppl_GenSys_OK (ppl_const_GenSys_t c) |
Returns a positive integer if gs is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps make some noise if gs is broken. Useful for debugging purposes. | |
int | ppl_new_GenSys_const_iterator (ppl_GenSys_const_iterator_t *pgit) |
Builds a new `const iterator' and writes an handle to it at address pgit . | |
int | ppl_new_GenSys_const_iterator_from_GenSys_const_iterator (ppl_GenSys_const_iterator_t *pgit, ppl_const_GenSys_const_iterator_t git) |
Builds a const iterator that is a copy of git ; writes an handle for the newly created const iterator at address pgit . | |
int | ppl_delete_GenSys_const_iterator (ppl_const_GenSys_const_iterator_t git) |
Invalidates the handle git: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_GenSys_const_iterator_from_GenSys_const_iterator (ppl_GenSys_const_iterator_t dst, ppl_const_GenSys_const_iterator_t src) |
Assigns a copy of the const iterator src to dst . | |
int | ppl_GenSys_begin (ppl_const_GenSys_t gs, ppl_GenSys_const_iterator_t git) |
Assigns to git a const iterator "pointing" to the beginning of the generator system gs . | |
int | ppl_GenSys_end (ppl_const_GenSys_t gs, ppl_GenSys_const_iterator_t git) |
Assigns to git a const iterator "pointing" past the end of the generator system gs . | |
int | ppl_GenSys_const_iterator_dereference (ppl_const_GenSys_const_iterator_t git, ppl_const_Generator_t *pg) |
Dereference git writing a const handle to the resulting generator at address pg . | |
int | ppl_GenSys_const_iterator_increment (ppl_GenSys_const_iterator_t git) |
Increment git so that it "points" to the next generator. | |
int | ppl_GenSys_const_iterator_equal_test (ppl_const_GenSys_const_iterator_t x, ppl_const_GenSys_const_iterator_t y) |
Return a positive integer if the iterators corresponding to x and y are equal; return 0 if they are different. | |
Functions Related to Polyhedra | |
int | ppl_new_C_Polyhedron_from_dimension (ppl_Polyhedron_t *pph, ppl_dimension_type d) |
Builds an universe closed polyhedron of dimension d and writes an handle to it at address pph . | |
int | ppl_new_NNC_Polyhedron_from_dimension (ppl_Polyhedron_t *pph, ppl_dimension_type d) |
Builds an universe NNC polyhedron of dimension d and writes an handle to it at address pph . | |
int | ppl_new_C_Polyhedron_empty_from_dimension (ppl_Polyhedron_t *pph, ppl_dimension_type d) |
Builds an empty closed polyhedron of dimension d and writes an handle to it at address pph . | |
int | ppl_new_NNC_Polyhedron_empty_from_dimension (ppl_Polyhedron_t *pph, ppl_dimension_type d) |
Builds an empty NNC polyhedron of dimension d and writes an handle to it at address pph . | |
int | ppl_new_C_Polyhedron_from_C_Polyhedron (ppl_Polyhedron_t *pph, ppl_const_Polyhedron_t ph) |
Builds a closed polyhedron that is a copy of ph ; writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_from_NNC_Polyhedron (ppl_Polyhedron_t *pph, ppl_const_Polyhedron_t ph) |
Builds a closed polyhedron that is a copy of of the NNC polyhedron ph ; writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_from_C_Polyhedron (ppl_Polyhedron_t *pph, ppl_const_Polyhedron_t ph) |
Builds an NNC polyhedron that is a copy of of the closed polyhedron ph ; writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_from_NNC_Polyhedron (ppl_Polyhedron_t *pph, ppl_const_Polyhedron_t ph) |
Builds an NNC polyhedron that is a copy of ph ; writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_from_ConSys (ppl_Polyhedron_t *pph, ppl_const_ConSys_t cs) |
Builds a new closed polyhedron from the system of constraints cs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_recycle_ConSys (ppl_Polyhedron_t *pph, ppl_ConSys_t cs) |
Builds a new closed polyhedron recycling the system of constraints cs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_from_ConSys (ppl_Polyhedron_t *pph, ppl_const_ConSys_t cs) |
Builds a new NNC polyhedron from the system of constraints cs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_recycle_ConSys (ppl_Polyhedron_t *pph, ppl_ConSys_t cs) |
Builds a new NNC polyhedron recycling the system of constraints cs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_from_GenSys (ppl_Polyhedron_t *pph, ppl_const_GenSys_t gs) |
Builds a new closed polyhedron from the system of generators gs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_recycle_GenSys (ppl_Polyhedron_t *pph, ppl_GenSys_t gs) |
Builds a new closed polyhedron recycling the system of generators gs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_from_GenSys (ppl_Polyhedron_t *pph, ppl_const_GenSys_t gs) |
Builds a new NNC polyhedron from the system of generators gs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_recycle_GenSys (ppl_Polyhedron_t *pph, ppl_GenSys_t gs) |
Builds a new NNC polyhedron recycling the system of generators gs and writes an handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_from_bounding_box (ppl_Polyhedron_t *pph, ppl_dimension_type(*space_dimension)(void), int(*is_empty)(void), int(*get_lower_bound)(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d), int(*get_upper_bound)(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d)) |
Builds a new C polyhedron corresponding to an interval-based bounding box, writing a handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_from_bounding_box (ppl_Polyhedron_t *pph, ppl_dimension_type(*space_dimension)(void), int(*is_empty)(void), int(*get_lower_bound)(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d), int(*get_upper_bound)(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d)) |
Builds a new C polyhedron corresponding to an interval-based bounding box, writing a handle for the newly created polyhedron at address pph . | |
int | ppl_assign_C_Polyhedron_from_C_Polyhedron (ppl_Polyhedron_t dst, ppl_const_Polyhedron_t src) |
Assigns a copy of the closed polyhedron src to the closed polyhedron dst . | |
int | ppl_assign_NNC_Polyhedron_from_NNC_Polyhedron (ppl_Polyhedron_t dst, ppl_const_Polyhedron_t src) |
Assigns a copy of the NNC polyhedron src to the NNC polyhedron dst . | |
int | ppl_delete_Polyhedron (ppl_const_Polyhedron_t ph) |
Invalidates the handle ph: this makes sure the corresponding resources will eventually be released. | |
int | ppl_Polyhedron_space_dimension (ppl_const_Polyhedron_t ph) |
Returns the dimension of the vector space enclosing ph . | |
int | ppl_Polyhedron_constraints (ppl_const_Polyhedron_t ph, ppl_const_ConSys_t *pcs) |
Writes a const handle to the constraint system defining the polyhedron ph at address pcs . | |
int | ppl_Polyhedron_minimized_constraints (ppl_const_Polyhedron_t ph, ppl_const_ConSys_t *pcs) |
Writes a const handle to the minimized constraint system defining the polyhedron ph at address pcs . | |
int | ppl_Polyhedron_generators (ppl_const_Polyhedron_t ph, ppl_const_GenSys_t *pgs) |
Writes a const handle to the generator system defining the polyhedron ph at address pgs . | |
int | ppl_Polyhedron_minimized_generators (ppl_const_Polyhedron_t ph, ppl_const_GenSys_t *pgs) |
Writes a const handle to the minimized generator system defining the polyhedron ph at address pgs . | |
int | ppl_Polyhedron_relation_with_Constraint (ppl_const_Polyhedron_t ph, ppl_const_Constraint_t c) |
Checks the relation between the polyhedron ph with the constraint c . | |
int | ppl_Polyhedron_relation_with_Generator (ppl_const_Polyhedron_t ph, ppl_const_Generator_t g) |
Checks the relation between the polyhedron ph with the generator g . | |
int | ppl_Polyhedron_shrink_bounding_box (ppl_const_Polyhedron_t ph, unsigned int complexity, void(*set_empty)(void), void(*raise_lower_bound)(ppl_dimension_type k, int closed, ppl_const_Coefficient_t n, ppl_const_Coefficient_t d), void(*lower_upper_bound)(ppl_dimension_type k, int closed, ppl_const_Coefficient_t n, ppl_const_Coefficient_t d)) |
Use ph to shrink a generic, interval-based bounding box. The bounding box is abstractly provided by means of the parameters. | |
int | ppl_Polyhedron_is_empty (ppl_const_Polyhedron_t ph) |
Returns a positive integer if ph is empty; returns 0 if ph is not empty. | |
int | ppl_Polyhedron_is_universe (ppl_const_Polyhedron_t ph) |
Returns a positive integer if ph is a universe polyhedron; returns 0 if it is not. | |
int | ppl_Polyhedron_is_bounded (ppl_const_Polyhedron_t ph) |
Returns a positive integer if ph is bounded; returns 0 if ph is unbounded. | |
int | ppl_Polyhedron_bounds_from_above (ppl_const_Polyhedron_t ph, ppl_const_LinExpression_t le) |
Returns a positive integer if le is bounded from above in ph ; returns 0 otherwise. | |
int | ppl_Polyhedron_bounds_from_below (ppl_const_Polyhedron_t ph, ppl_const_LinExpression_t le) |
Returns a positive integer if le is bounded from below in ph ; returns 0 otherwise. | |
int | ppl_Polyhedron_maximize (ppl_const_Polyhedron_t ph, ppl_const_LinExpression_t le, ppl_Coefficient_t sup_n, ppl_Coefficient_t sup_d, int *pmaximum, ppl_const_Generator_t *ppoint) |
Returns a positive integer if ph is not empty and le is bounded from above in ph , in which case the supremum value and a point where le reaches it are computed. | |
int | ppl_Polyhedron_minimize (ppl_const_Polyhedron_t ph, ppl_const_LinExpression_t le, ppl_Coefficient_t inf_n, ppl_Coefficient_t inf_d, int *pminimum, ppl_const_Generator_t *ppoint) |
Returns a positive integer if ph is not empty and le is bounded from above in ph , in which case the infimum value and a point where le reaches it are computed. | |
int | ppl_Polyhedron_is_topologically_closed (ppl_const_Polyhedron_t ph) |
Returns a positive integer if ph is topologically closed; returns 0 if ph is not topologically closed. | |
int | ppl_Polyhedron_contains_Polyhedron (ppl_const_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Returns a positive integer if x contains or is equal to y ; returns 0 if it does not. | |
int | ppl_Polyhedron_strictly_contains_Polyhedron (ppl_const_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Returns a positive integer if x strictly contains y ; returns 0 if it does not. | |
int | ppl_Polyhedron_is_disjoint_from_Polyhedron (ppl_const_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Returns a positive integer if x and y are disjoint; returns 0 if they are not. | |
int | ppl_Polyhedron_equals_Polyhedron (ppl_const_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Returns a positive integer if x and y are the same polyhedron; return 0 if they are different. | |
int | ppl_Polyhedron_OK (ppl_const_Polyhedron_t ph) |
Returns a positive integer if ph is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps make some noise if ph is broken. Useful for debugging purposes. | |
int | ppl_Polyhedron_add_constraint (ppl_Polyhedron_t ph, ppl_const_Constraint_t c) |
Adds a copy of the constraint c to the system of constraints of ph . | |
int | ppl_Polyhedron_add_constraint_and_minimize (ppl_Polyhedron_t ph, ppl_const_Constraint_t c) |
Adds a copy of the constraint c to the system of constraints of ph . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, ph is guaranteed to be minimized. | |
int | ppl_Polyhedron_add_generator (ppl_Polyhedron_t ph, ppl_const_Generator_t g) |
Adds a copy of the generator g to the system of generators of ph . | |
int | ppl_Polyhedron_add_generator_and_minimize (ppl_Polyhedron_t ph, ppl_const_Generator_t g) |
Adds a copy of the generator g to the system of generators of ph . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, ph is guaranteed to be minimized. | |
int | ppl_Polyhedron_add_constraints (ppl_Polyhedron_t ph, ppl_const_ConSys_t cs) |
Adds a copy of the system of constraints cs to the system of constraints of ph . | |
int | ppl_Polyhedron_add_constraints_and_minimize (ppl_Polyhedron_t ph, ppl_const_ConSys_t cs) |
Adds a copy of the system of constraints cs to the system of constraints of ph . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, ph is guaranteed to be minimized. | |
int | ppl_Polyhedron_add_generators (ppl_Polyhedron_t ph, ppl_const_GenSys_t gs) |
Adds a copy of the system of generators gs to the system of generators of ph . | |
int | ppl_Polyhedron_add_generators_and_minimize (ppl_Polyhedron_t ph, ppl_const_GenSys_t gs) |
Adds a copy of the system of generators gs to the system of generators of ph . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, ph is guaranteed to be minimized. | |
int | ppl_Polyhedron_add_recycled_constraints (ppl_Polyhedron_t ph, ppl_ConSys_t cs) |
Adds the system of constraints cs to the system of constraints of ph . | |
int | ppl_Polyhedron_add_recycled_constraints_and_minimize (ppl_Polyhedron_t ph, ppl_ConSys_t cs) |
Adds the system of constraints cs to the system of constraints of ph . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, ph is guaranteed to be minimized. | |
int | ppl_Polyhedron_add_recycled_generators (ppl_Polyhedron_t ph, ppl_GenSys_t gs) |
Adds the system of generators gs to the system of generators of ph . | |
int | ppl_Polyhedron_add_recycled_generators_and_minimize (ppl_Polyhedron_t ph, ppl_GenSys_t gs) |
Adds the system of generators gs to the system of generators of ph . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, ph is guaranteed to be minimized. | |
int | ppl_Polyhedron_intersection_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Intersects x with polyhedron y and assigns the result x . | |
int | ppl_Polyhedron_intersection_assign_and_minimize (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Intersects x with polyhedron y and assigns the result x . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, x is also guaranteed to be minimized. | |
int | ppl_Polyhedron_poly_hull_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Assigns to x the poly-hull of x and y . | |
int | ppl_Polyhedron_poly_hull_assign_and_minimize (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Assigns to x the poly-hull of x and y . Returns a positive integer if the resulting polyhedron is non-empty; returns 0 if it is empty. Upon successful return, x is also guaranteed to be minimized. | |
int | ppl_Polyhedron_poly_difference_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Assigns to x the poly-difference of x and y . | |
int | ppl_Polyhedron_affine_image (ppl_Polyhedron_t ph, ppl_dimension_type var, ppl_const_LinExpression_t le, ppl_const_Coefficient_t d) |
Transforms the polyhedron ph , assigning an affine expression to the specified variable. | |
int | ppl_Polyhedron_affine_preimage (ppl_Polyhedron_t ph, ppl_dimension_type var, ppl_const_LinExpression_t le, ppl_const_Coefficient_t d) |
Transforms the polyhedron ph , substituting an affine expression to the specified variable. | |
int | ppl_Polyhedron_generalized_affine_image (ppl_Polyhedron_t ph, ppl_dimension_type var, enum ppl_enum_Constraint_Type relsym, ppl_const_LinExpression_t le, ppl_const_Coefficient_t d) |
Assigns to ph the image of ph with respect to the generalized affine transfer function ![]() ![]() relsym . | |
int | ppl_Polyhedron_generalized_affine_image_lhs_rhs (ppl_Polyhedron_t ph, ppl_const_LinExpression_t lhs, enum ppl_enum_Constraint_Type relsym, ppl_const_LinExpression_t rhs) |
Assigns to ph the image of ph with respect to the generalized affine transfer function ![]() ![]() relsym . | |
int | ppl_Polyhedron_time_elapse_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Assigns to x the time-elapse between the polyhedra x and y . | |
int | ppl_Polyhedron_BHRZ03_widening_assign_with_tokens (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, unsigned *tp) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the BHRZ03-widening of x and y . If tp is not the null pointer, the widening with tokens delay technique is applied with *tp available tokens. | |
int | ppl_Polyhedron_BHRZ03_widening_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the BHRZ03-widening of x and y . | |
int | ppl_Polyhedron_limited_BHRZ03_extrapolation_assign_with_tokens (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs, unsigned *tp) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the BHRZ03-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x . If tp is not the null pointer, the widening with tokens delay technique is applied with *tp available tokens. | |
int | ppl_Polyhedron_limited_BHRZ03_extrapolation_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the BHRZ03-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x . | |
int | ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign_with_tokens (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs, unsigned *tp) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the BHRZ03-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x , further intersected with all the constraints of the form ![]() ![]() ![]() x . If tp is not the null pointer, the widening with tokens delay technique is applied with *tp available tokens. | |
int | ppl_Polyhedron_bounded_BHRZ03_extrapolation_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the BHRZ03-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x , further intersected with all the constraints of the form ![]() ![]() ![]() x . | |
int | ppl_Polyhedron_H79_widening_assign_with_tokens (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, unsigned *tp) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the H79-widening of x and y . If tp is not the null pointer, the widening with tokens delay technique is applied with *tp available tokens. | |
int | ppl_Polyhedron_H79_widening_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the H79-widening of x and y . | |
int | ppl_Polyhedron_limited_H79_extrapolation_assign_with_tokens (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs, unsigned *tp) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the H79-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x . If tp is not the null pointer, the widening with tokens delay technique is applied with *tp available tokens. | |
int | ppl_Polyhedron_limited_H79_extrapolation_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the H79-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x . | |
int | ppl_Polyhedron_bounded_H79_extrapolation_assign_with_tokens (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs, unsigned *tp) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the H79-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x , further intersected with all the constraints of the form ![]() ![]() ![]() x . If tp is not the null pointer, the widening with tokens delay technique is applied with *tp available tokens. | |
int | ppl_Polyhedron_bounded_H79_extrapolation_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y, ppl_const_ConSys_t cs) |
If the polyhedron y is contained in (or equal to) the polyhedron x , assigns to x the H79-widening of x and y intersected with the constraints in cs that are satisfied by all the points of x , further intersected with all the constraints of the form ![]() ![]() ![]() x . | |
int | ppl_Polyhedron_topological_closure_assign (ppl_Polyhedron_t ph) |
Assigns to ph its topological closure. | |
int | ppl_Polyhedron_add_dimensions_and_embed (ppl_Polyhedron_t ph, ppl_dimension_type d) |
Adds d new dimensions to the space enclosing the polyhedron ph and to ph itself. | |
int | ppl_Polyhedron_add_dimensions_and_project (ppl_Polyhedron_t ph, ppl_dimension_type d) |
Adds d new dimensions to the space enclosing the polyhedron ph . | |
int | ppl_Polyhedron_concatenate_assign (ppl_Polyhedron_t x, ppl_const_Polyhedron_t y) |
Seeing a polyhedron as a set of tuples (its points), assigns to x all the tuples that can be obtained by concatenating, in the order given, a tuple of x with a tuple of y . | |
int | ppl_Polyhedron_remove_dimensions (ppl_Polyhedron_t ph, ppl_dimension_type ds[], size_t n) |
Removes from ph and its containing space the dimensions that are specified in first n positions of the array ds . The presence of duplicates in ds is a waste but an innocuous one. | |
int | ppl_Polyhedron_remove_higher_dimensions (ppl_Polyhedron_t ph, ppl_dimension_type d) |
Removes the higher dimensions from ph and its enclosing space so that, upon successful return, the new space dimension is d . | |
int | ppl_Polyhedron_map_dimensions (ppl_Polyhedron_t ph, ppl_dimension_type maps[], size_t n) |
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the maps array, which has n entries. | |
int | ppl_Polyhedron_expand_dimension (ppl_Polyhedron_t ph, ppl_dimension_type d, ppl_dimension_type m) |
Expands the ![]() ph to m new dimensions. | |
int | ppl_Polyhedron_fold_dimensions (ppl_Polyhedron_t ph, ppl_dimension_type ds[], size_t n, ppl_dimension_type d) |
Modifies ph by folding the dimensions contained in the first n positions of the array ds into dimension d . The presence of duplicates in ds is a waste but an innocuous one. | |
Typedefs | |
typedef size_t | ppl_dimension_type |
An unsigned integral type for representing space dimensions. | |
typedef ppl_Coefficient_tag * | ppl_Coefficient_t |
Opaque pointer. | |
typedef ppl_Coefficient_tag const * | ppl_const_Coefficient_t |
Opaque pointer to const object. | |
typedef ppl_LinExpression_tag * | ppl_LinExpression_t |
Opaque pointer. | |
typedef ppl_LinExpression_tag const * | ppl_const_LinExpression_t |
Opaque pointer to const object. | |
typedef ppl_Constraint_tag * | ppl_Constraint_t |
Opaque pointer. | |
typedef ppl_Constraint_tag const * | ppl_const_Constraint_t |
Opaque pointer to const object. | |
typedef ppl_ConSys_tag * | ppl_ConSys_t |
Opaque pointer. | |
typedef ppl_ConSys_tag const * | ppl_const_ConSys_t |
Opaque pointer to const object. | |
typedef ppl_ConSys_const_iterator_tag * | ppl_ConSys_const_iterator_t |
Opaque pointer. | |
typedef ppl_ConSys_const_iterator_tag const * | ppl_const_ConSys_const_iterator_t |
Opaque pointer to const object. | |
typedef ppl_Generator_tag * | ppl_Generator_t |
Opaque pointer. | |
typedef ppl_Generator_tag const * | ppl_const_Generator_t |
Opaque pointer to const object. | |
typedef ppl_GenSys_tag * | ppl_GenSys_t |
Opaque pointer. | |
typedef ppl_GenSys_tag const * | ppl_const_GenSys_t |
Opaque pointer to const object. | |
typedef ppl_GenSys_const_iterator_tag * | ppl_GenSys_const_iterator_t |
Opaque pointer. | |
typedef ppl_GenSys_const_iterator_tag const * | ppl_const_GenSys_const_iterator_t |
Opaque pointer to const object. | |
typedef ppl_Polyhedron_tag * | ppl_Polyhedron_t |
Opaque pointer. | |
typedef ppl_Polyhedron_tag const * | ppl_const_Polyhedron_t |
Opaque pointer to const object. | |
Enumerations | |
enum | ppl_enum_error_code { PPL_ERROR_OUT_OF_MEMORY, PPL_ERROR_INVALID_ARGUMENT, PPL_ERROR_LENGTH_ERROR, PPL_ARITHMETIC_OVERFLOW, PPL_STDIO_ERROR, PPL_ERROR_INTERNAL_ERROR, PPL_ERROR_UNKNOWN_STANDARD_EXCEPTION, PPL_ERROR_UNEXPECTED_ERROR } |
Defines the error codes that any function may return. More... | |
enum | ppl_enum_Constraint_Type { PPL_CONSTRAINT_TYPE_LESS_THAN, PPL_CONSTRAINT_TYPE_LESS_THAN_OR_EQUAL, PPL_CONSTRAINT_TYPE_EQUAL, PPL_CONSTRAINT_TYPE_GREATER_THAN_OR_EQUAL, PPL_CONSTRAINT_TYPE_GREATER_THAN } |
Describes the relations represented by a constraint. More... | |
enum | ppl_enum_Generator_Type { PPL_GENERATOR_TYPE_LINE, PPL_GENERATOR_TYPE_RAY, PPL_GENERATOR_TYPE_POINT, PPL_GENERATOR_TYPE_CLOSURE_POINT } |
Describes the different kinds of generators. More... | |
Variables | |
unsigned int | PPL_COMPLEXITY_CLASS_POLYNOMIAL |
Code of the worst-case polynomial complexity class. | |
unsigned int | PPL_COMPLEXITY_CLASS_SIMPLEX |
Code of the worst-case exponential but typically polynomial complexity class. | |
unsigned int | PPL_COMPLEXITY_CLASS_ANY |
Code of the universal complexity class. | |
unsigned int | PPL_POLY_CON_RELATION_IS_DISJOINT |
Individual bit saying that the polyhedron and the set of points satisfying the constraint are disjoint. | |
unsigned int | PPL_POLY_CON_RELATION_STRICTLY_INTERSECTS |
Individual bit saying that the polyhedron intersects the set of points satisfying the constraint, but it is not included in it. | |
unsigned int | PPL_POLY_CON_RELATION_IS_INCLUDED |
Individual bit saying that the polyhedron is included in the set of points satisfying the constraint. | |
unsigned int | PPL_POLY_CON_RELATION_SATURATES |
Individual bit saying that the polyhedron is included in the set of points saturating the constraint. | |
unsigned int | PPL_POLY_GEN_RELATION_SUBSUMES |
Individual bit saying that adding the generator would not change the polyhedron. |
All the declarations needed for using the PPL's C interface (preprocessor symbols, data types, variables and functions) are collected in the header file ppl_c.h
. This file, which is designed to work with pre-ANSI and ANSI C compilers as well as C99 and C++ compilers, should be included, either directly or via some other header file, with the directive
#include <ppl_c.h>
ppl_c.h
. So check that the library is installed (if it is not installed, you may want to make install
, perhaps with root privileges); that it is installed in the right place (if not you may want to reconfigure the library using the appropriate pathname for the --prefix
option); and that your compiler knows where it is installed (if not you should add the path to the directory where ppl_c.h
is located to the compiler's include file search path; this is usually done with the -I
option).
The name space of the PPL's C interface is PPL_*
for preprocessor symbols, enumeration values and variables; and ppl_*
for data types and function names. The interface systematically uses opaque data types (generic pointers that completely hide the internal representations from the client code) and provides all required access functions. By using just the interface, the client code can exploit all the functionalities of the library yet avoid directly manipulating the library's data structures. The advantages are that (1) applications do not depend on the internals of the library (these may change from release to release), and (2) the interface invariants can be thoroughly checked (by the access functions).
The PPL's C interface is initialized by means of the ppl_initialize
function. This function must be called before using any other interface of the library. The application can release the resources allocated by the library by calling the ppl_finalize
function. After this function is called no other interface of the library may be used until the interface is re-initialized using ppl_initialize
.
Any application using the PPL should make sure that only the intended version(s) of the library are ever used. The version used can be checked at compile-time thanks to the macros PPL_VERSION_MAJOR, PPL_VERSION_MINOR, PPL_VERSION_REVISION and PPL_VERSION_BETA, which give, respectively major, minor, revision and beta numbers of the PPL version. This is an example of their use:
#if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 6 # error "PPL version 0.6 or following is required" #endif
ppl_version_major
, ppl_version_minor
, ppl_version_revision
, and ppl_version_beta
. The PPL's C interface also provides functions ppl_version
, returning character string containing the full version number, and ppl_banner
, returning a string that, in addition, provides (pointers to) other useful information for the library user.
All programs using the PPL's C interface must link with the following libraries: libppl_c
(PPL's C interface), libppl
(PPL's core), libgmpxx
(GMP's C++ interface), and libgmp
(GMP's library core). On most Unix-like systems, this is done by adding -lppl_c
, -lppl
, -lgmpxx
, and -lgmp
to the compiler's or linker's command line. For example:
gcc myprogram.o -lppl_c -lppl -lgmpxx -lgmp
-L
) and, if you use shared libraries, some sort of run-time path selection mechanisms. Consult your compiler's documentation for details. Notice that the PPL is built using Libtool and an application can exploit this fact to significantly simplify the linking phase. See Libtool's documentation for details. Those working under Linux can find a lot of useful information on how to use program libraries (including static, shared, and dynamically loaded libraries) in the Program Library HOWTO.
For examples on how to use the functions provided by the C interface, you are referred to the interfaces/C/lpenum/
directory in the source distribution. It contains a toy Linear Programming solver written in C. In order to use this solver you will need to install GLPK (the GNU Linear Programming Kit): this is used to read linear programs in MPS format.
|
A string containing the PPL version.
Let |
|
The type of output functions used for printing variables.
An output function for variables must write a textual representation for |
|
|
Describes the relations represented by a constraint.
|
|
Describes the different kinds of generators.
|
|
Writes to The banner provides information about the PPL version, the licensing, the lack of any warranty whatsoever, the C++ compiler used to build the library, where to report bugs and where to look for further information. |
|
Initializes the Parma Polyhedra Library. This function must be called before any other function.
|
|
Finalizes the Parma Polyhedra Library. This function must be called after any other function.
|
|
Installs the user-defined error handler pointed by The error handler takes an error code and a textual description that gives further information about the actual error. The C string containing the textual description is read-only and its existence it not guaranteed after the handler has returned. |
|
Builds a new closed polyhedron from the system of constraints
The new polyhedron will inherit the space dimension of |
|
Builds a new closed polyhedron recycling the system of constraints
Since
|
|
Builds a new NNC polyhedron from the system of constraints
The new polyhedron will inherit the space dimension of |
|
Builds a new NNC polyhedron recycling the system of constraints
Since
|
|
Builds a new closed polyhedron from the system of generators
The new polyhedron will inherit the space dimension of |
|
Builds a new closed polyhedron recycling the system of generators
Since
|
|
Builds a new NNC polyhedron from the system of generators
The new polyhedron will inherit the space dimension of |
|
Builds a new NNC polyhedron recycling the system of generators
Since
|
|
Builds a new C polyhedron corresponding to an interval-based bounding box, writing a handle for the newly created polyhedron at address
If an interval of the bounding box is provided with any finite but open bound, then the polyhedron is not built and the value ppl_dimension_type space_dimension() int is_empty()
is_empty() will always be called before the other functions. However, if is_empty() does not return 0, none of the functions below will be called. int get_lower_bound(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d) ![]() k -th dimension. If ![]() closed , n and d as follows: closed is set to 0 if the lower boundary of ![]() n and d are assigned the integers ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() int get_upper_bound(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d) ![]() k -th dimension. If ![]() closed , n and d as follows: closed is set to 0 if the upper boundary of ![]() n and d are assigned the integers ![]() ![]() ![]() ![]() |
|
Builds a new C polyhedron corresponding to an interval-based bounding box, writing a handle for the newly created polyhedron at address The bounding box is accessed by using the following functions, passed as arguments: ppl_dimension_type space_dimension() int is_empty()
is_empty() will always be called before the other functions. However, if is_empty() does not return 0, none of the functions below will be called. int get_lower_bound(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d) ![]() k -th dimension. If ![]() closed , n and d as follows: closed is set to 0 if the lower boundary of ![]() n and d are assigned the integers ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() int get_upper_bound(ppl_dimension_type k, int closed, ppl_Coefficient_t n, ppl_Coefficient_t d) ![]() k -th dimension. If ![]() closed , n and d as follows: closed is set to 0 if the upper boundary of ![]() n and d are assigned the integers ![]() ![]() ![]() ![]() |
|
Checks the relation between the polyhedron
If successful, returns a non-negative integer that is obtained as the bitwise or of the bits (chosen among PPL_POLY_CON_RELATION_IS_DISJOINT PPL_POLY_CON_RELATION_STRICTLY_INTERSECTS, PPL_POLY_CON_RELATION_IS_INCLUDED, and PPL_POLY_CON_RELATION_SATURATES) that describe the relation between |
|
Checks the relation between the polyhedron
If successful, returns a non-negative integer that is obtained as the bitwise or of the bits (only PPL_POLY_GEN_RELATION_SUBSUMES, at present) that describe the relation between |
|
Use
|
|
Returns a positive integer if
|
|
Returns a positive integer if
|
|
Returns a positive integer if
Note that |
|
Adds the system of constraints
|
|
Adds the system of constraints
|
|
Adds the system of generators
|
|
Adds the system of generators
|
|
Transforms the polyhedron
|
|
Transforms the polyhedron
|
|
Assigns to
|
|
Assigns to
|
|
Remaps the dimensions of the vector space according to a partial function. This function is specified by means of the
The partial function is defined on dimension
The result is undefined if |