# Parma_Polyhedra_Library::NNC_Polyhedron Class Reference
[C++ Language Interface]

A not necessarily closed convex polyhedron. More...

`#include <ppl.hh>`

Inherits Parma_Polyhedra_Library::Polyhedron.

List of all members.

## Public Member Functions
| NNC_Polyhedron (dimension_type num_dimensions=0, Degenerate_Element kind=UNIVERSE)
| Builds either the universe or the empty NNC polyhedron.
| NNC_Polyhedron (const Constraint_System &cs)
| Builds an NNC polyhedron from a system of constraints.
| NNC_Polyhedron (Constraint_System &cs, Recycle_Input dummy)
| Builds an NNC polyhedron recycling a system of constraints.
| NNC_Polyhedron (const Generator_System &gs)
| Builds an NNC polyhedron from a system of generators.
| NNC_Polyhedron (Generator_System &gs, Recycle_Input dummy)
| Builds an NNC polyhedron recycling a system of generators.
| NNC_Polyhedron (const Congruence_System &cgs)
| Builds an NNC polyhedron from a system of congruences.
| NNC_Polyhedron (Congruence_System &cgs, Recycle_Input dummy)
| Builds an NNC polyhedron recycling a system of congruences.
| NNC_Polyhedron (const C_Polyhedron &y, Complexity_Class complexity=ANY_COMPLEXITY)
| Builds an NNC polyhedron from the C polyhedron `y`.
template<typename Interval >
| NNC_Polyhedron (const Box< Interval > &box, Complexity_Class complexity=ANY_COMPLEXITY)
| Builds an NNC polyhedron out of a box.
| NNC_Polyhedron (const Grid &grid, Complexity_Class complexity=ANY_COMPLEXITY)
| Builds an NNC polyhedron out of a grid.
template<typename U >
| NNC_Polyhedron (const BD_Shape< U > &bd, Complexity_Class complexity=ANY_COMPLEXITY)
| Builds a NNC polyhedron out of a BD shape.
template<typename U >
| NNC_Polyhedron (const Octagonal_Shape< U > &os, Complexity_Class complexity=ANY_COMPLEXITY)
| Builds a NNC polyhedron out of an octagonal shape.
| NNC_Polyhedron (const NNC_Polyhedron &y, Complexity_Class complexity=ANY_COMPLEXITY)
| Ordinary copy constructor.
NNC_Polyhedron & | operator= (const NNC_Polyhedron &y)
| The assignment operator. (`*this` and `y` can be dimension-incompatible.).
NNC_Polyhedron & | operator= (const C_Polyhedron &y)
| Assigns to `*this` the C polyhedron `y`.
| ~NNC_Polyhedron ()
| Destructor.
bool | poly_hull_assign_if_exact (const NNC_Polyhedron &y)
| If the poly-hull of `*this` and `y` is exact it is assigned to `*this` and `true` is returned, otherwise `false` is returned.
bool | upper_bound_assign_if_exact (const NNC_Polyhedron &y)
| Same as poly_hull_assign_if_exact(y).

## Detailed Description

A not necessarily closed convex polyhedron.

An object of the class NNC_Polyhedron represents a not necessarily closed (NNC) convex polyhedron in the vector space .

Note:
  Since NNC polyhedra are a generalization of closed polyhedra, any object of the class C_Polyhedron can be (explicitly) converted into an object of the class NNC_Polyhedron. The reason for defining two different classes is that objects of the class C_Polyhedron are characterized by a more efficient implementation, requiring less time and memory resources.

## Constructor & Destructor Documentation

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | dimension_type | num_dimensions = `0`,
|  | Degenerate_Element | kind = `UNIVERSE` |
| ) |  |  | `[inline, explicit]`

Builds either the universe or the empty NNC polyhedron.

Parameters:

  | num_dimensions | The number of dimensions of the vector space enclosing the NNC polyhedron;
  | kind | Specifies whether a universe or an empty NNC polyhedron should be built.

Exceptions:

  | std::length_error | Thrown if `num_dimensions` exceeds the maximum allowed space dimension.

Both parameters are optional: by default, a 0-dimension space universe NNC polyhedron is built.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const Constraint_System & | cs | ) | `[inline, explicit]`

Builds an NNC polyhedron from a system of constraints.

The polyhedron inherits the space dimension of the constraint system.

Parameters:

  | cs | The system of constraints defining the polyhedron.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | Constraint_System & | cs,
|  | Recycle_Input | dummy |
| ) |  |  | `[inline]`

Builds an NNC polyhedron recycling a system of constraints.

The polyhedron inherits the space dimension of the constraint system.

Parameters:

  | cs | The system of constraints defining the polyhedron. It is not declared `const` because its data-structures may be recycled to build the polyhedron.
  | dummy | A dummy tag to syntactically differentiate this one from the other constructors.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const Generator_System & | gs | ) | `[inline, explicit]`

Builds an NNC polyhedron from a system of generators.

The polyhedron inherits the space dimension of the generator system.

Parameters:

  | gs | The system of generators defining the polyhedron.

Exceptions:

  | std::invalid_argument | Thrown if the system of generators is not empty but has no points.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | Generator_System & | gs,
|  | Recycle_Input | dummy |
| ) |  |  | `[inline]`

Builds an NNC polyhedron recycling a system of generators.

The polyhedron inherits the space dimension of the generator system.

Parameters:

  | gs | The system of generators defining the polyhedron. It is not declared `const` because its data-structures may be recycled to build the polyhedron.
  | dummy | A dummy tag to syntactically differentiate this one from the other constructors.

Exceptions:

  | std::invalid_argument | Thrown if the system of generators is not empty but has no points.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const Congruence_System & | cgs | ) | `[explicit]`

Builds an NNC polyhedron from a system of congruences.

The polyhedron inherits the space dimension of the congruence system.

Parameters:

  | cgs | The system of congruences defining the polyhedron. It is not declared `const` because its data-structures may be recycled to build the polyhedron.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | Congruence_System & | cgs,
|  | Recycle_Input | dummy |
| ) |  |  |

Builds an NNC polyhedron recycling a system of congruences.

The polyhedron inherits the space dimension of the congruence system.

Parameters:

  | cgs | The system of congruences defining the polyhedron. It is not declared `const` because its data-structures may be recycled to build the polyhedron.
  | dummy | A dummy tag to syntactically differentiate this one from the other constructors.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const C_Polyhedron & | y,
|  | Complexity_Class | complexity = `ANY_COMPLEXITY` |
| ) |  |  | `[explicit]`

Builds an NNC polyhedron from the C polyhedron `y`.

Parameters:

  | y | The C polyhedron to be used;
  | complexity | This argument is ignored.

template<typename Interval >

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const Box< Interval > & | box,
|  | Complexity_Class | complexity = `ANY_COMPLEXITY` |
| ) |  |  | `[inline, explicit]`

Builds an NNC polyhedron out of a box.

The polyhedron inherits the space dimension of the box and is the most precise that includes the box.

Parameters:

  | box | The box representing the polyhedron to be built;
  | complexity | This argument is ignored as the algorithm used has polynomial complexity.

Exceptions:

  | std::length_error | Thrown if the space dimension of `box` exceeds the maximum allowed space dimension.

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const Grid & | grid,
|  | Complexity_Class | complexity = `ANY_COMPLEXITY` |
| ) |  |  | `[explicit]`

Builds an NNC polyhedron out of a grid.

The polyhedron inherits the space dimension of the grid and is the most precise that includes the grid.

Parameters:

  | grid | The grid used to build the polyhedron.
  | complexity | This argument is ignored as the algorithm used has polynomial complexity.

template<typename U >

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const BD_Shape< U > & | bd,
|  | Complexity_Class | complexity = `ANY_COMPLEXITY` |
| ) |  |  | `[inline, explicit]`

Builds a NNC polyhedron out of a BD shape.

The polyhedron inherits the space dimension of the BD shape and is the most precise that includes the BD shape.

Parameters:

  | bd | The BD shape used to build the polyhedron.
  | complexity | This argument is ignored as the algorithm used has polynomial complexity.

template<typename U >

Parma_Polyhedra_Library::NNC_Polyhedron::NNC_Polyhedron | ( | const Octagonal_Shape< U > & | os,
|  | Complexity_Class | complexity = `ANY_COMPLEXITY` |
| ) |  |  | `[inline, explicit]`

Builds a NNC polyhedron out of an octagonal shape.

The polyhedron inherits the space dimension of the octagonal shape and is the most precise that includes the octagonal shape.

Parameters:

  | os | The octagonal shape used to build the polyhedron.
  | complexity | This argument is ignored as the algorithm used has polynomial complexity.

## Member Function Documentation

bool Parma_Polyhedra_Library::NNC_Polyhedron::poly_hull_assign_if_exact | ( | const NNC_Polyhedron & | y | ) |

If the poly-hull of `*this` and `y` is exact it is assigned to `*this` and `true` is returned, otherwise `false` is returned.

Exceptions:

  | std::invalid_argument | Thrown if `*this` and `y` are dimension-incompatible.

The documentation for this class was generated from the following file:

- ppl.hh