# Parma_Polyhedra_Library Namespace Reference

The entire library is confined to this namespace. More...

## Namespaces

namespace | IO_Operators
| All input/output operators are confined to this namespace.

## Classes

struct | Is_Checked
struct | Is_Checked< Checked_Number< T, P > >
struct | Is_Native_Or_Checked
class | Checked_Number
| A wrapper for numeric types implementing a given policy. More...
class | Throwable
| User objects the PPL can throw. More...
struct | From_Covering_Box
| A tag class. More...
struct | Recycle_Input
| A tag class. More...
class | Variable
| A dimension of the vector space. More...
class | Linear_Expression
| A linear expression. More...
class | Constraint_System
| A system of constraints. More...
class | Constraint
| A linear equality or inequality. More...
class | Poly_Con_Relation
| The relation between a polyhedron and a constraint. More...
class | Generator_System
| A system of generators. More...
class | Generator
| A line, ray, point or closure point. More...
class | Congruence_System
| A system of congruences. More...
class | Congruence
| A linear congruence. More...
class | Grid_Generator_System
| A system of grid generators. More...
class | Grid_Generator
| A grid line, parameter or grid point. More...
class | BHRZ03_Certificate
| The convergence certificate for the BHRZ03 widening operator. More...
class | H79_Certificate
| A convergence certificate for the H79 widening operator. More...
class | Poly_Gen_Relation
| The relation between a polyhedron and a generator. More...
class | Polyhedron
| The base class for convex polyhedra. More...
class | Variables_Set
| An std::set of variables' indexes. More...
class | MIP_Problem
| A Mixed Integer (linear) Programming problem. More...
class | Grid_Certificate
| The convergence certificate for the Grid widening operator. More...
class | C_Polyhedron
| A closed convex polyhedron. More...
class | NNC_Polyhedron
| A not necessarily closed convex polyhedron. More...
class | Grid
| A grid. More...
class | Interval
| A generic, not necessarily closed, possibly restricted interval. More...
class | Box
| A not necessarily closed, iso-oriented hyperrectangle. More...
class | BD_Shape
| A bounded difference shape. More...
class | Octagonal_Shape
| An octagonal shape. More...
class | Smash_Reduction
| This class provides the reduction method for the Smash_Product domain. More...
class | Constraints_Reduction
| This class provides the reduction method for the Constraints_Product domain. More...
class | No_Reduction
| This class provides the reduction method for the Direct_Product domain. More...
class | Partially_Reduced_Product
| The partially reduced product of two abstractions. More...
class | Domain_Product
| This class is temporary and will be removed when template typedefs will be supported in C++. More...
class | Determinate
| Wraps a PPL class into a determinate constraint system interface. More...
class | Powerset
| The powerset construction on a base-level domain. More...
class | Pointset_Powerset
| The powerset construction instantiated on PPL pointset domains. More...
class | GMP_Integer
| Unbounded integers as provided by the GMP library. More...

## Typedefs

typedef size_t | dimension_type
| An unsigned integral type for representing space dimensions.
typedef size_t | memory_size_type
| An unsigned integral type for representing memory size in bytes.
typedef PPL_COEFFICIENT_TYPE | Coefficient
| An alias for easily naming the type of PPL coefficients.

## Enumerations

enum | Result { VC_NORMAL, V_LT, V_GT, V_EQ, V_NE, V_LE, V_GE, V_LGE, VC_MINUS_INFINITY, V_NEG_OVERFLOW, VC_PLUS_INFINITY, V_POS_OVERFLOW, VC_NAN, V_CVT_STR_UNK, V_DIV_ZERO, V_INF_ADD_INF, V_INF_DIV_INF, V_INF_MOD, V_INF_MUL_ZERO, V_INF_SUB_INF, V_MOD_ZERO, V_SQRT_NEG, V_UNKNOWN_NEG_OVERFLOW, V_UNKNOWN_POS_OVERFLOW, V_UNORD_COMP }
| Possible outcomes of a checked arithmetic computation. More...
enum | Rounding_Dir { ROUND_DOWN, ROUND_UP, ROUND_IGNORE , ROUND_NOT_NEEDED }
| Rounding directions for arithmetic computations. More...
enum | Degenerate_Element { UNIVERSE, EMPTY }
| Kinds of degenerate abstract elements. More...
enum | Relation_Symbol { LESS_THAN, LESS_OR_EQUAL, EQUAL, GREATER_OR_EQUAL, GREATER_THAN, NOT_EQUAL }
| Relation symbols. More...
enum | Complexity_Class { POLYNOMIAL_COMPLEXITY, SIMPLEX_COMPLEXITY, ANY_COMPLEXITY }
| Complexity pseudo-classes. More...
enum | Optimization_Mode { MINIMIZATION, MAXIMIZATION }
| Possible optimization modes. More...
enum | MIP_Problem_Status { UNFEASIBLE_MIP_PROBLEM, UNBOUNDED_MIP_PROBLEM, OPTIMIZED_MIP_PROBLEM }
| Possible outcomes of the MIP_Problem solver. More...

## Functions

unsigned | version_major ()
| Returns the major number of the PPL version.
unsigned | version_minor ()
| Returns the minor number of the PPL version.
unsigned | version_revision ()
| Returns the revision number of the PPL version.
unsigned | version_beta ()
| Returns the beta number of the PPL version.
const char * | version ()
| Returns a character string containing the PPL version.
const char * | banner ()
| Returns a character string containing the PPL banner.
void | set_rounding_for_PPL ()
| Sets the FPU rounding mode so that the PPL abstractions based on floating point numbers work correctly.
void | restore_pre_PPL_rounding ()
| Sets the FPU rounding mode as it was before initialization of the PPL.
void | fpu_initialize_control_functions ()
| Initializes the FPU control functions.
fpu_rounding_direction_type | fpu_get_rounding_direction ()
| Returns the current FPU rounding direction.
void | fpu_set_rounding_direction (fpu_rounding_direction_type dir)
| Sets the FPU rounding direction to `dir`.
fpu_rounding_control_word_type | fpu_save_rounding_direction (fpu_rounding_direction_type dir)
| Sets the FPU rounding direction to `dir` and returns the rounding control word previously in use.
fpu_rounding_control_word_type | fpu_save_rounding_direction_reset_inexact (fpu_rounding_direction_type dir)
| Sets the FPU rounding direction to `dir`, clears the inexact computation status, and returns the rounding control word previously in use.
void | fpu_restore_rounding_direction (fpu_rounding_control_word_type w)
| Restores the FPU rounding rounding control word to `cw`.
void | fpu_reset_inexact ()
| Clears the inexact computation status.
int | fpu_check_inexact ()
| Queries the inexact computation status.
Result | classify (Result r)
| Extracts the class part of `r` (normal, minus/plus infinity or nan).
bool | is_special (Result r)
| Returns `true` if and only if the class or `r` is not normal.
Rounding_Dir | inverse (Rounding_Dir dir)
| Returns the inverse rounding mode of `dir`, `ROUND_IGNORE` being the inverse of itself.
void | initialize ()
| Initializes the library.
void | finalize ()
| Finalizes the library.
unsigned | rational_sqrt_precision_parameter ()
| Returns the precision parameter used for rational square root calculations.
void | set_rational_sqrt_precision_parameter (const unsigned p)
| Sets the precision parameter used for rational square root calculations.
dimension_type | not_a_dimension ()
| Returns a value that does not designate a valid dimension.
Coefficient_traits::const_reference | Coefficient_zero ()
| Returns a const reference to a Coefficient with value 0.
Coefficient_traits::const_reference | Coefficient_one ()
| Returns a const reference to a Coefficient with value 1.
unsigned long | isqrt (unsigned long x)
| Returns the integer square root of `x`.
dimension_type | max_space_dimension ()
| Returns the maximum space dimension this library can handle.
Relational Operators and Comparison Functions
template<typename T1 , typename T2 >
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value, bool >::type | equal (const T1 &x, const T2 &y)
template<typename T1 , typename T2 >
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value, bool >::type | not_equal (const T1 &x, const T2 &y)
template<typename T1 , typename T2 >
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value, bool >::type | greater_or_equal (const T1 &x, const T2 &y)
template<typename T1 , typename T2 >
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value, bool >::type | greater_than (const T1 &x, const T2 &y)
template<typename T1 , typename T2 >
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value, bool >::type | less_or_equal (const T1 &x, const T2 &y)
template<typename T1 , typename T2 >
Enable_If < Is_Native_Or_Checked< T1 > ::value &&Is_Native_Or_Checked < T2 >::value, bool >::type | less_than (const T1 &x, const T2 &y)
Input-Output Operators
template<typename T >
Enable_If < Is_Native_Or_Checked< T > ::value, void >::type | ascii_dump (std::ostream &s, const T &t)
| Ascii dump for native or checked.
template<typename T >
Enable_If < Is_Native_Or_Checked< T > ::value, bool >::type | ascii_load (std::ostream &s, T &t)
| Ascii load for native or checked.
Memory Size Inspection Functions
template<typename T >
Enable_If< Is_Native< T > ::value, memory_size_type > ::type | total_memory_in_bytes (const T &)
template<typename T >
Enable_If< Is_Native< T > ::value, memory_size_type > ::type | external_memory_in_bytes (const T &)
memory_size_type | total_memory_in_bytes (const mpz_class &x)
memory_size_type | external_memory_in_bytes (const mpz_class &x)
memory_size_type | total_memory_in_bytes (const mpq_class &x)
memory_size_type | external_memory_in_bytes (const mpq_class &x)

## Variables

const Throwable *volatile | abandon_expensive_computations
| A pointer to an exception object.

## Detailed Description

The entire library is confined to this namespace.

## Function Documentation

const char* Parma_Polyhedra_Library::banner | ( |  | ) |

Returns a character string containing the PPL banner.

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.

void Parma_Polyhedra_Library::set_rounding_for_PPL | ( |  | ) | `[inline]`

Sets the FPU rounding mode so that the PPL abstractions based on floating point numbers work correctly.

This is performed automatically at initialization-time. Calling this function is needed only if restore_pre_PPL_rounding() has been previously called.

void Parma_Polyhedra_Library::restore_pre_PPL_rounding | ( |  | ) | `[inline]`

Sets the FPU rounding mode as it was before initialization of the PPL.

After calling this function it is absolutely necessary to call set_rounding_for_PPL() before using any PPL abstractions based on floating point numbers. This is performed automatically at finalization-time.

int Parma_Polyhedra_Library::fpu_check_inexact | ( |  | ) | `[inline]`

Queries the inexact computation status.

Returns 0 if the computation was definitely exact, 1 if it was definitely inexact, -1 if definite exactness information is unavailable.

void Parma_Polyhedra_Library::set_rational_sqrt_precision_parameter | ( | const unsigned | p | ) | `[inline]`

Sets the precision parameter used for rational square root calculations.

The lesser between numerator and denominator is limited to 2**`p`.

If `p` is less than or equal to `INT_MAX`, sets the precision parameter used for rational square root calculations to `p`.

Exceptions:

  | std::invalid_argument | Thrown if `p` is greater than `INT_MAX`.