#include <stdio.h>
#include <gmp.h>
#include <stddef.h>
Go to the source code of this file.
Version Checking | |
#define | PPL_VERSION_MAJOR 0 |
The major number of the PPL version. | |
#define | PPL_VERSION_MINOR 9 |
The minor number of the PPL version. | |
#define | PPL_VERSION_REVISION 0 |
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.9" |
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 *p a pointer to a character string containing the PPL version. | |
int | ppl_banner (const char **p) |
Writes to *p a pointer to a character string containing the PPL banner. | |
Simple I/O Functions | |
#define | PPL_DECLARE_PRINT_FUNCTIONS(Type) |
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 var to stdout . | |
int | ppl_io_fprint_variable (FILE *stream, ppl_dimension_type var) |
Pretty-prints var 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 . | |
Defines | |
#define | PPL_ppl_c_h 1 |
#define | PPL_PROTO(protos) () |
#define | PPL_TYPE_DECLARATION(Type) /*! \brief Opaque pointer. */ typedef struct ppl_ ## Type ## _tag* ppl_ ## Type ## _t; /*! \brief Opaque pointer to const object. */ typedef struct ppl_ ## Type ## _tag const* ppl_const_ ## Type ## _t |
Typedefs | |
typedef size_t | ppl_dimension_type |
An unsigned integral type for representing space dimensions. | |
Enumerations | |
enum | ppl_enum_error_code { PPL_ERROR_OUT_OF_MEMORY, PPL_ERROR_INVALID_ARGUMENT, PPL_ERROR_DOMAIN_ERROR, 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... | |
Functions | |
PPL_TYPE_DECLARATION (Coefficient) | |
PPL_TYPE_DECLARATION (Linear_Expression) | |
PPL_TYPE_DECLARATION (Constraint) | |
PPL_TYPE_DECLARATION (Constraint_System) | |
PPL_TYPE_DECLARATION (Constraint_System_const_iterator) | |
PPL_TYPE_DECLARATION (Generator) | |
PPL_TYPE_DECLARATION (Generator_System) | |
PPL_TYPE_DECLARATION (Generator_System_const_iterator) | |
PPL_TYPE_DECLARATION (Polyhedron) | |
PPL_TYPE_DECLARATION (LP_Problem) | |
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 at by h . | |
Functions Related to Coefficients | |
int | ppl_new_Coefficient (ppl_Coefficient_t *pc) |
Creates a new coefficient with value 0 and writes a 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 a 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 a 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 makes some noise if c is broken. Useful for debugging purposes. | |
int | ppl_Coefficient_is_bounded (void) |
Returns a positive integer if coefficients are bounded; returns 0 otherwise. | |
int | ppl_Coefficient_min (mpz_t min) |
Returns a positive integer if coefficients are bounded, in which case min is set to their minimum value; returns 0 otherwise. | |
int | ppl_Coefficient_max (mpz_t max) |
Returns a positive integer if coefficients are bounded, in which case max is set to their maximum value; returns 0 otherwise. | |
Functions Related to Linear Expressions | |
int | ppl_new_Linear_Expression (ppl_Linear_Expression_t *ple) |
Creates a new linear expression corresponding to the constant 0 in a zero-dimensional space; writes a handle for the new linear expression at address ple . | |
int | ppl_new_Linear_Expression_with_dimension (ppl_Linear_Expression_t *ple, ppl_dimension_type d) |
Creates a new linear expression corresponding to the constant 0 in a d -dimensional space; writes a handle for the new linear expression at address ple . | |
int | ppl_new_Linear_Expression_from_Linear_Expression (ppl_Linear_Expression_t *ple, ppl_const_Linear_Expression_t le) |
Builds a linear expression that is a copy of le ; writes a handle for the newly created linear expression at address ple . | |
int | ppl_new_Linear_Expression_from_Constraint (ppl_Linear_Expression_t *ple, ppl_const_Constraint_t c) |
Builds a linear expression corresponding to constraint c ; writes a handle for the newly created linear expression at address ple . | |
int | ppl_new_Linear_Expression_from_Generator (ppl_Linear_Expression_t *ple, ppl_const_Generator_t g) |
Builds a linear expression corresponding to generator g ; writes a handle for the newly created linear expression at address ple . | |
int | ppl_delete_Linear_Expression (ppl_const_Linear_Expression_t le) |
Invalidates the handle le: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_Linear_Expression_from_Linear_Expression (ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src) |
Assigns a copy of the linear expression src to dst . | |
int | ppl_Linear_Expression_add_to_coefficient (ppl_Linear_Expression_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_Linear_Expression_add_to_inhomogeneous (ppl_Linear_Expression_t le, ppl_const_Coefficient_t n) |
Adds n to the inhomogeneous term of the linear expression le . | |
int | ppl_add_Linear_Expression_to_Linear_Expression (ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src) |
Adds the linear expression src to dst . | |
int | ppl_subtract_Linear_Expression_from_Linear_Expression (ppl_Linear_Expression_t dst, ppl_const_Linear_Expression_t src) |
Subtracts the linear expression src from dst . | |
int | ppl_multiply_Linear_Expression_by_Coefficient (ppl_Linear_Expression_t le, ppl_const_Coefficient_t n) |
Multiply the linear expression dst by n . | |
int | ppl_Linear_Expression_space_dimension (ppl_const_Linear_Expression_t le, ppl_dimension_type *m) |
Writes to m the space dimension of le . | |
int | ppl_Linear_Expression_coefficient (ppl_const_Linear_Expression_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_Linear_Expression_inhomogeneous_term (ppl_const_Linear_Expression_t le, ppl_Coefficient_t n) |
Copies into n the inhomogeneous term of linear expression le . | |
int | ppl_Linear_Expression_OK (ppl_const_Linear_Expression_t le) |
Returns a positive integer if le is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps makes some noise if le is broken. Useful for debugging purposes. | |
Functions Related to Constraints | |
int | ppl_new_Constraint (ppl_Constraint_t *pc, ppl_const_Linear_Expression_t le, enum ppl_enum_Constraint_Type rel) |
Creates the new constraint `le rel 0' and writes a 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 a 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, ppl_dimension_type *m) |
Writes to m 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 makes some noise if c is broken. Useful for debugging purposes. | |
Functions Related to Constraint Systems | |
int | ppl_new_Constraint_System (ppl_Constraint_System_t *pcs) |
Builds an empty system of constraints and writes a handle to it at address pcs . | |
int | ppl_new_Constraint_System_zero_dim_empty (ppl_Constraint_System_t *pcs) |
Builds a zero-dimensional, unsatisfiable constraint system and writes a handle to it at address pcs . | |
int | ppl_new_Constraint_System_from_Constraint (ppl_Constraint_System_t *pcs, ppl_const_Constraint_t c) |
Builds the singleton constraint system containing only a copy of constraint c ; writes a handle for the newly created system at address pcs . | |
int | ppl_new_Constraint_System_from_Constraint_System (ppl_Constraint_System_t *pcs, ppl_const_Constraint_System_t cs) |
Builds a constraint system that is a copy of cs ; writes a handle for the newly created system at address pcs . | |
int | ppl_delete_Constraint_System (ppl_const_Constraint_System_t cs) |
Invalidates the handle cs: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_Constraint_System_from_Constraint_System (ppl_Constraint_System_t dst, ppl_const_Constraint_System_t src) |
Assigns a copy of the constraint system src to dst . | |
int | ppl_Constraint_System_space_dimension (ppl_const_Constraint_System_t cs, ppl_dimension_type *m) |
Writes to m the dimension of the vector space enclosing cs . | |
int | ppl_Constraint_System_has_strict_inequalities (ppl_const_Constraint_System_t cs) |
Returns a positive integer if cs contains any (non-trivial) strict inequality; returns 0 otherwise. | |
int | ppl_Constraint_System_clear (ppl_Constraint_System_t cs) |
Removes all the constraints from the constraint system cs and sets its space dimension to 0. | |
int | ppl_Constraint_System_insert_Constraint (ppl_Constraint_System_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_Constraint_System_OK (ppl_const_Constraint_System_t c) |
Returns a positive integer if cs is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps makes some noise if cs is broken. Useful for debugging purposes. | |
int | ppl_new_Constraint_System_const_iterator (ppl_Constraint_System_const_iterator_t *pcit) |
Builds a new `const iterator' and writes a handle to it at address pcit . | |
int | ppl_new_Constraint_System_const_iterator_from_Constraint_System_const_iterator (ppl_Constraint_System_const_iterator_t *pcit, ppl_const_Constraint_System_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_Constraint_System_const_iterator (ppl_const_Constraint_System_const_iterator_t cit) |
Invalidates the handle cit: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_Constraint_System_const_iterator_from_Constraint_System_const_iterator (ppl_Constraint_System_const_iterator_t dst, ppl_const_Constraint_System_const_iterator_t src) |
Assigns a copy of the const iterator src to dst . | |
int | ppl_Constraint_System_begin (ppl_const_Constraint_System_t cs, ppl_Constraint_System_const_iterator_t cit) |
Assigns to cit a const iterator "pointing" to the beginning of the constraint system cs . | |
int | ppl_Constraint_System_end (ppl_const_Constraint_System_t cs, ppl_Constraint_System_const_iterator_t cit) |
Assigns to cit a const iterator "pointing" past the end of the constraint system cs . | |
int | ppl_Constraint_System_const_iterator_dereference (ppl_const_Constraint_System_const_iterator_t cit, ppl_const_Constraint_t *pc) |
Dereference cit writing a const handle to the resulting constraint at address pc . | |
int | ppl_Constraint_System_const_iterator_increment (ppl_Constraint_System_const_iterator_t cit) |
Increment cit so that it "points" to the next constraint. | |
int | ppl_Constraint_System_const_iterator_equal_test (ppl_const_Constraint_System_const_iterator_t x, ppl_const_Constraint_System_const_iterator_t y) |
Returns a positive integer if the iterators corresponding to x and y are equal; returns 0 if they are different. | |
Functions Related to Generators | |
int | ppl_new_Generator (ppl_Generator_t *pg, ppl_const_Linear_Expression_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. A 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 a 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, ppl_dimension_type *m) |
Writes to m 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 makes some noise if g is broken. Useful for debugging purposes. | |
Functions Related to Generator Systems | |
int | ppl_new_Generator_System (ppl_Generator_System_t *pgs) |
Builds an empty system of generators and writes a handle to it at address pgs . | |
int | ppl_new_Generator_System_zero_dim_univ (ppl_Generator_System_t *pgs) |
int | ppl_new_Generator_System_from_Generator (ppl_Generator_System_t *pgs, ppl_const_Generator_t g) |
Builds the singleton generator system containing only a copy of generator g ; writes a handle for the newly created system at address pgs . | |
int | ppl_new_Generator_System_from_Generator_System (ppl_Generator_System_t *pgs, ppl_const_Generator_System_t gs) |
Builds a generator system that is a copy of gs ; writes a handle for the newly created system at address pgs . | |
int | ppl_delete_Generator_System (ppl_const_Generator_System_t gs) |
Invalidates the handle gs: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_Generator_System_from_Generator_System (ppl_Generator_System_t dst, ppl_const_Generator_System_t src) |
Assigns a copy of the generator system src to dst . | |
int | ppl_Generator_System_space_dimension (ppl_const_Generator_System_t gs, ppl_dimension_type *m) |
Writes to m the dimension of the vector space enclosing gs . | |
int | ppl_Generator_System_clear (ppl_Generator_System_t gs) |
Removes all the generators from the generator system gs and sets its space dimension to 0. | |
int | ppl_Generator_System_insert_Generator (ppl_Generator_System_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_Generator_System_OK (ppl_const_Generator_System_t c) |
Returns a positive integer if gs is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps makes some noise if gs is broken. Useful for debugging purposes. | |
int | ppl_new_Generator_System_const_iterator (ppl_Generator_System_const_iterator_t *pgit) |
Builds a new `const iterator' and writes a handle to it at address pgit . | |
int | ppl_new_Generator_System_const_iterator_from_Generator_System_const_iterator (ppl_Generator_System_const_iterator_t *pgit, ppl_const_Generator_System_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_Generator_System_const_iterator (ppl_const_Generator_System_const_iterator_t git) |
Invalidates the handle git: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_Generator_System_const_iterator_from_Generator_System_const_iterator (ppl_Generator_System_const_iterator_t dst, ppl_const_Generator_System_const_iterator_t src) |
Assigns a copy of the const iterator src to dst . | |
int | ppl_Generator_System_begin (ppl_const_Generator_System_t gs, ppl_Generator_System_const_iterator_t git) |
Assigns to git a const iterator "pointing" to the beginning of the generator system gs . | |
int | ppl_Generator_System_end (ppl_const_Generator_System_t gs, ppl_Generator_System_const_iterator_t git) |
Assigns to git a const iterator "pointing" past the end of the generator system gs . | |
int | ppl_Generator_System_const_iterator_dereference (ppl_const_Generator_System_const_iterator_t git, ppl_const_Generator_t *pg) |
Dereference git writing a const handle to the resulting generator at address pg . | |
int | ppl_Generator_System_const_iterator_increment (ppl_Generator_System_const_iterator_t git) |
Increment git so that it "points" to the next generator. | |
int | ppl_Generator_System_const_iterator_equal_test (ppl_const_Generator_System_const_iterator_t x, ppl_const_Generator_System_const_iterator_t y) |
Returns a positive integer if the iterators corresponding to x and y are equal; returns 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 a universe C 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 a 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 C polyhedron of space 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 space 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 C polyhedron that is a copy of ph ; writes a 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 C polyhedron that is a copy of of the NNC polyhedron ph ; writes a 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 the C polyhedron ph ; writes a 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 a handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_from_Constraint_System (ppl_Polyhedron_t *pph, ppl_const_Constraint_System_t cs) |
Builds a new C polyhedron from the system of constraints cs and writes a handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_recycle_Constraint_System (ppl_Polyhedron_t *pph, ppl_Constraint_System_t cs) |
Builds a new C polyhedron recycling the system of constraints cs and writes a handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_from_Constraint_System (ppl_Polyhedron_t *pph, ppl_const_Constraint_System_t cs) |
Builds a new NNC polyhedron from the system of constraints cs and writes a handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_recycle_Constraint_System (ppl_Polyhedron_t *pph, ppl_Constraint_System_t cs) |
Builds a new NNC polyhedron recycling the system of constraints cs and writes a handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_from_Generator_System (ppl_Polyhedron_t *pph, ppl_const_Generator_System_t gs) |
Builds a new C polyhedron from the system of generators gs and writes a handle for the newly created polyhedron at address pph . | |
int | ppl_new_C_Polyhedron_recycle_Generator_System (ppl_Polyhedron_t *pph, ppl_Generator_System_t gs) |
Builds a new C polyhedron recycling the system of generators gs and writes a handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_from_Generator_System (ppl_Polyhedron_t *pph, ppl_const_Generator_System_t gs) |
Builds a new NNC polyhedron from the system of generators gs and writes a handle for the newly created polyhedron at address pph . | |
int | ppl_new_NNC_Polyhedron_recycle_Generator_System (ppl_Polyhedron_t *pph, ppl_Generator_System_t gs) |
Builds a new NNC polyhedron recycling the system of generators gs and writes a 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 NNC 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 C polyhedron src to the C 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, ppl_dimension_type *m) |
Writes to m the dimension of the vector space enclosing ph . | |
int | ppl_Polyhedron_affine_dimension (ppl_const_Polyhedron_t ph) |
Writes to m the affine dimension of ph (not to be confused with the dimension of its enclosing vector space) or 0, if ph is empty. | |
int | ppl_Polyhedron_constraints (ppl_const_Polyhedron_t ph, ppl_const_Constraint_System_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_Constraint_System_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_Generator_System_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_Generator_System_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 and 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 and 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_Linear_Expression_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_Linear_Expression_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_Linear_Expression_t le, ppl_Coefficient_t sup_n, ppl_Coefficient_t sup_d, int *pmaximum, ppl_Generator_t point) |
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_Linear_Expression_t le, ppl_Coefficient_t inf_n, ppl_Coefficient_t inf_d, int *pminimum, ppl_Generator_t point) |
Returns a positive integer if ph is not empty and le is bounded from below 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; returns 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 makes 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_Constraint_System_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_Constraint_System_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_Generator_System_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_Generator_System_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_Constraint_System_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_Constraint_System_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_Generator_System_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_Generator_System_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 to 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 to 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_Linear_Expression_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_Linear_Expression_t le, ppl_const_Coefficient_t d) |
Transforms the polyhedron ph , substituting an affine expression to the specified variable. | |
int | ppl_Polyhedron_bounded_affine_image (ppl_Polyhedron_t ph, ppl_dimension_type var, ppl_const_Linear_Expression_t lb, ppl_const_Linear_Expression_t ub, ppl_const_Coefficient_t d) |
Assigns to ph the image of ph with respect to the generalized affine transfer relation ![]() | |
int | ppl_Polyhedron_bounded_affine_preimage (ppl_Polyhedron_t ph, ppl_dimension_type var, ppl_const_Linear_Expression_t lb, ppl_const_Linear_Expression_t ub, ppl_const_Coefficient_t d) |
Assigns to ph the preimage of ph with respect to the generalized affine transfer relation ![]() | |
int | ppl_Polyhedron_generalized_affine_image (ppl_Polyhedron_t ph, ppl_dimension_type var, enum ppl_enum_Constraint_Type relsym, ppl_const_Linear_Expression_t le, ppl_const_Coefficient_t d) |
Assigns to ph the image of ph with respect to the generalized affine transfer relation ![]() ![]() relsym . | |
int | ppl_Polyhedron_generalized_affine_preimage (ppl_Polyhedron_t ph, ppl_dimension_type var, enum ppl_enum_Constraint_Type relsym, ppl_const_Linear_Expression_t le, ppl_const_Coefficient_t d) |
Assigns to ph the preimage of ph with respect to the generalized affine transfer relation ![]() ![]() relsym . | |
int | ppl_Polyhedron_generalized_affine_image_lhs_rhs (ppl_Polyhedron_t ph, ppl_const_Linear_Expression_t lhs, enum ppl_enum_Constraint_Type relsym, ppl_const_Linear_Expression_t rhs) |
Assigns to ph the image of ph with respect to the generalized affine transfer relation ![]() ![]() relsym . | |
int | ppl_Polyhedron_generalized_affine_preimage_lhs_rhs (ppl_Polyhedron_t ph, ppl_const_Linear_Expression_t lhs, enum ppl_enum_Constraint_Type relsym, ppl_const_Linear_Expression_t rhs) |
Assigns to ph the preimage of ph with respect to the generalized affine transfer relation ![]() ![]() 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_Constraint_System_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_Constraint_System_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_Constraint_System_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_Constraint_System_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_Constraint_System_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_Constraint_System_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_Constraint_System_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_Constraint_System_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_space_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_space_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_space_dimensions (ppl_Polyhedron_t ph, ppl_dimension_type ds[], size_t n) |
Removes from the vector space enclosing ph the space 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_space_dimensions (ppl_Polyhedron_t ph, ppl_dimension_type d) |
Removes the higher dimensions from the vector space enclosing ph so that, upon successful return, the new space dimension is d . | |
int | ppl_Polyhedron_map_space_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_space_dimension (ppl_Polyhedron_t ph, ppl_dimension_type d, ppl_dimension_type m) |
Expands the ![]() ph to m new space dimensions. | |
int | ppl_Polyhedron_fold_space_dimensions (ppl_Polyhedron_t ph, ppl_dimension_type ds[], size_t n, ppl_dimension_type d) |
Modifies ph by folding the space 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. | |
Functions Related to LP Problems | |
int | ppl_new_LP_Problem_trivial (ppl_LP_Problem_t *plp) |
Builds a trivial LP problem and writes a handle to it at address plp . | |
int | ppl_new_LP_Problem (ppl_LP_Problem_t *plp, ppl_const_Constraint_System_t cs, ppl_const_Linear_Expression_t le, int m) |
Builds an LP problem having feasible region cs , objective function le and optimization mode m ; writes a handle to it at address plp . | |
int | ppl_new_LP_Problem_from_LP_Problem (ppl_LP_Problem_t *plp, ppl_const_LP_Problem_t lp) |
Builds an LP problem that is a copy of lp ; writes a handle for the newly created system at address plp . | |
int | ppl_delete_LP_Problem (ppl_const_LP_Problem_t lp) |
Invalidates the handle lp: this makes sure the corresponding resources will eventually be released. | |
int | ppl_assign_LP_Problem_from_LP_Problem (ppl_LP_Problem_t dst, ppl_const_LP_Problem_t src) |
Assigns a copy of the LP problem src to dst . | |
int | ppl_LP_Problem_space_dimension (ppl_const_LP_Problem_t lp, ppl_dimension_type *m) |
Writes to m the dimension of the vector space enclosing lp . | |
int | ppl_LP_Problem_constraints (ppl_const_LP_Problem_t lp, ppl_const_Constraint_System_t *pcs) |
Writes a const handle to the constraint system defining the feasible region of the LP problem lp at address pcs . | |
int | ppl_LP_Problem_objective_function (ppl_const_LP_Problem_t lp, ppl_const_Linear_Expression_t *ple) |
Writes a const handle to the linear expression defining the objective function of the LP problem lp at address ple . | |
int | ppl_LP_Problem_optimization_mode (ppl_const_LP_Problem_t lp) |
Returns the optimization mode of the LP problem lp . | |
int | ppl_LP_Problem_clear (ppl_LP_Problem_t lp) |
Resets the LP problem to be a trivial problem of space dimension 0. | |
int | ppl_LP_Problem_add_constraint (ppl_LP_Problem_t lp, ppl_const_Constraint_t c) |
Modifies the feasible region of the LP problem lp by adding a copy of the constraint c ; the space dimension is increased, if necessary. | |
int | ppl_LP_Problem_add_constraints (ppl_LP_Problem_t lp, ppl_const_Constraint_System_t cs) |
Modifies the feasible region of the LP problem lp by adding a copy of the constraints in cs ; the space dimension is increased, if necessary. | |
int | ppl_LP_Problem_set_objective_function (ppl_LP_Problem_t lp, ppl_const_Linear_Expression_t le) |
Sets the objective function of the LP problem lp to a copy of le . | |
int | ppl_LP_Problem_set_optimization_mode (ppl_LP_Problem_t lp, int mode) |
Sets the optimization mode of the LP problem lp to mode . | |
int | ppl_LP_Problem_is_satisfiable (ppl_const_LP_Problem_t lp) |
Returns a positive integer if lp is satisfiable; returns 0 otherwise. | |
int | ppl_LP_Problem_solve (ppl_const_LP_Problem_t lp) |
Solves the LP problem lp , returning an exit status. | |
int | ppl_LP_Problem_evaluate_objective_function (ppl_const_LP_Problem_t lp, ppl_const_Generator_t g, ppl_Coefficient_t num, ppl_Coefficient_t den) |
Evaluates the objective function of lp on point g . | |
int | ppl_LP_Problem_feasible_point (ppl_const_LP_Problem_t lp, ppl_const_Generator_t *pg) |
Writes a const handle to a feasible point for the LP problem lp at address pg . | |
int | ppl_LP_Problem_optimizing_point (ppl_const_LP_Problem_t lp, ppl_const_Generator_t *pg) |
Writes a const handle to an optimizing point for the LP problem lp at address pg . | |
int | ppl_LP_Problem_optimal_value (ppl_const_LP_Problem_t lp, ppl_Coefficient_t num, ppl_Coefficient_t den) |
Returns the optimal value for lp . | |
int | ppl_LP_Problem_OK (ppl_const_LP_Problem_t lp) |
Returns a positive integer if lp is well formed, i.e., if it satisfies all its implementation invariants; returns 0 and perhaps makes some noise if lp is broken. Useful for debugging purposes. | |
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. | |
int | PPL_LP_PROBLEM_STATUS_UNFEASIBLE |
Code of the "unfeasible LP problem" status. | |
int | PPL_LP_PROBLEM_STATUS_UNBOUNDED |
Code of the "unbounded LP problem" status. | |
int | PPL_LP_PROBLEM_STATUS_OPTIMIZED |
Code of the "optimized LP problem" status. | |
int | PPL_LP_PROBLEM_MAXIMIZATION |
Code of the "maximization" optimization mode. | |
int | PPL_LP_PROBLEM_MINIMIZATION |
Code of the "minimization" optimization mode. | |
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. |