PPL
1.2
|
A line, ray, point or closure point. More...
#include <Generator_defs.hh>
Public Types | |
enum | Type { LINE, RAY, POINT, CLOSURE_POINT } |
The generator type. More... | |
typedef Expression_Hide_Last< Expression_Hide_Inhomo< Linear_Expression > > | expr_type |
The type of the (adapted) internal expression. More... | |
Public Member Functions | |
Generator (Representation r=default_representation) | |
Constructs the point at the origin. More... | |
Generator (const Generator &g) | |
Generator (const Generator &g, Representation r) | |
Copy constructor with given representation. More... | |
Generator (const Generator &g, dimension_type space_dim) | |
Generator (const Generator &g, dimension_type space_dim, Representation r) | |
Copy constructor with given representation and space dimension. More... | |
~Generator () | |
Destructor. More... | |
Generator & | operator= (const Generator &g) |
Assignment operator. More... | |
Representation | representation () const |
Returns the current representation of *this. More... | |
void | set_representation (Representation r) |
Converts *this to the specified representation. More... | |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . More... | |
void | set_space_dimension (dimension_type space_dim) |
void | swap_space_dimensions (Variable v1, Variable v2) |
Swaps the coefficients of the variables v1 and v2 . More... | |
bool | remove_space_dimensions (const Variables_Set &vars) |
Removes all the specified dimensions from the generator. More... | |
void | permute_space_dimensions (const std::vector< Variable > &cycle) |
Permutes the space dimensions of the generator. More... | |
void | shift_space_dimensions (Variable v, dimension_type n) |
Type | type () const |
Returns the generator type of *this . More... | |
bool | is_line () const |
Returns true if and only if *this is a line. More... | |
bool | is_ray () const |
Returns true if and only if *this is a ray. More... | |
bool | is_line_or_ray () const |
Returns true if and only if *this is a line or a ray. More... | |
bool | is_point () const |
Returns true if and only if *this is a point. More... | |
bool | is_closure_point () const |
Returns true if and only if *this is a closure point. More... | |
Coefficient_traits::const_reference | coefficient (Variable v) const |
Returns the coefficient of v in *this . More... | |
Coefficient_traits::const_reference | divisor () const |
If *this is either a point or a closure point, returns its divisor. More... | |
memory_size_type | total_memory_in_bytes () const |
Returns a lower bound to the total size in bytes of the memory occupied by *this . More... | |
memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this . More... | |
bool | is_equivalent_to (const Generator &y) const |
Returns true if and only if *this and y are equivalent generators. More... | |
bool | is_equal_to (const Generator &y) const |
Returns true if *this is identical to y . More... | |
bool | OK () const |
Checks if all the invariants are satisfied. More... | |
void | ascii_dump () const |
Writes to std::cerr an ASCII representation of *this . More... | |
void | ascii_dump (std::ostream &s) const |
Writes to s an ASCII representation of *this . More... | |
void | print () const |
Prints *this to std::cerr using operator<< . More... | |
bool | ascii_load (std::istream &s) |
Loads from s an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this accordingly. Returns true if successful, false otherwise. More... | |
void | m_swap (Generator &y) |
Swaps *this with y . More... | |
expr_type | expression () const |
Partial read access to the (adapted) internal expression. More... | |
Static Public Member Functions | |
static Generator | line (const Linear_Expression &e, Representation r=default_representation) |
Returns the line of direction e . More... | |
static Generator | ray (const Linear_Expression &e, Representation r=default_representation) |
Returns the ray of direction e . More... | |
static Generator | point (const Linear_Expression &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one(), Representation r=default_representation) |
Returns the point at e / d . More... | |
static Generator | point (Representation r) |
Returns the origin. More... | |
static Generator | point (const Linear_Expression &e, Representation r) |
Returns the point at e . More... | |
static Generator | closure_point (const Linear_Expression &e=Linear_Expression::zero(), Coefficient_traits::const_reference d=Coefficient_one(), Representation r=default_representation) |
Returns the closure point at e / d . More... | |
static Generator | closure_point (Representation r) |
Returns the closure point at the origin. More... | |
static Generator | closure_point (const Linear_Expression &e, Representation r) |
Returns the closure point at e . More... | |
static dimension_type | max_space_dimension () |
Returns the maximum space dimension a Generator can handle. More... | |
static void | initialize () |
Initializes the class. More... | |
static void | finalize () |
Finalizes the class. More... | |
static const Generator & | zero_dim_point () |
Returns the origin of the zero-dimensional space ![]() | |
static const Generator & | zero_dim_closure_point () |
Returns, as a closure point, the origin of the zero-dimensional space ![]() | |
Static Public Attributes | |
static const Representation | default_representation = SPARSE |
The representation used for new Generators. More... | |
Private Types | |
enum | Kind { LINE_OR_EQUALITY = 0, RAY_OR_POINT_OR_INEQUALITY = 1 } |
The possible kinds of Generator objects. More... | |
Private Member Functions | |
Generator (Linear_Expression &e, Type type, Topology topology) | |
Builds a generator of type type and topology topology , stealing the coefficients from e . More... | |
Generator (Linear_Expression &e, Kind kind, Topology topology) | |
Generator (dimension_type space_dim, Kind kind, Topology topology, Representation r=default_representation) | |
bool | is_line_or_equality () const |
Returns true if and only if *this row represents a line or an equality. More... | |
bool | is_ray_or_point_or_inequality () const |
Returns true if and only if *this row represents a ray, a point or an inequality. More... | |
void | set_is_line_or_equality () |
Sets to LINE_OR_EQUALITY the kind of *this row. More... | |
void | set_is_ray_or_point_or_inequality () |
Sets to RAY_OR_POINT_OR_INEQUALITY the kind of *this row. More... | |
void | mark_as_necessarily_closed () |
Marks the epsilon dimension as a standard dimension. More... | |
void | mark_as_not_necessarily_closed () |
Marks the last dimension as the epsilon dimension. More... | |
void | linear_combine (const Generator &y, dimension_type i) |
Linearly combines *this with y so that i-th coefficient is 0. More... | |
void | set_space_dimension_no_ok (dimension_type space_dim) |
void | throw_dimension_incompatible (const char *method, const char *v_name, Variable v) const |
Throw a std::invalid_argument exception containing the appropriate error message. More... | |
void | throw_invalid_argument (const char *method, const char *reason) const |
Throw a std::invalid_argument exception containing the appropriate error message. More... | |
bool | is_ray_or_point () const |
Returns true if and only if *this is not a line. More... | |
void | set_is_line () |
Sets the Generator kind to LINE_OR_EQUALITY . More... | |
void | set_is_ray_or_point () |
Sets the Generator kind to RAY_OR_POINT_OR_INEQUALITY . More... | |
bool | is_matching_closure_point (const Generator &p) const |
Returns true if and only if the closure point *this has the same coordinates of the point p . More... | |
Coefficient_traits::const_reference | epsilon_coefficient () const |
Returns the epsilon coefficient. The generator must be NNC. More... | |
void | set_epsilon_coefficient (Coefficient_traits::const_reference n) |
Sets the epsilon coefficient to n . The generator must be NNC. More... | |
void | sign_normalize () |
Normalizes the sign of the coefficients so that the first non-zero (homogeneous) coefficient of a line-or-equality is positive. More... | |
void | strong_normalize () |
Strong normalization: ensures that different Generator objects represent different hyperplanes or hyperspaces. More... | |
bool | check_strong_normalized () const |
Returns true if and only if the coefficients are strongly normalized. More... | |
void | fancy_print (std::ostream &s) const |
A print function, with fancy, more human-friendly output. More... | |
Flags inspection methods | |
Topology | topology () const |
Returns the topological kind of *this . More... | |
bool | is_not_necessarily_closed () const |
Returns true if and only if the topology of *this row is not necessarily closed. More... | |
bool | is_necessarily_closed () const |
Returns true if and only if the topology of *this row is necessarily closed. More... | |
Flags coercion methods | |
void | set_topology (Topology x) |
Sets to x the topological kind of *this row. More... | |
void | set_necessarily_closed () |
Sets to NECESSARILY_CLOSED the topological kind of *this row. More... | |
void | set_not_necessarily_closed () |
Sets to NOT_NECESSARILY_CLOSED the topological kind of *this row. More... | |
Private Attributes | |
Linear_Expression | expr |
The linear expression encoding *this . More... | |
Kind | kind_ |
The kind of *this . More... | |
Topology | topology_ |
The topology of *this . More... | |
Static Private Attributes | |
static const Generator * | zero_dim_point_p = 0 |
Holds (between class initialization and finalization) a pointer to the origin of the zero-dimensional space ![]() | |
static const Generator * | zero_dim_closure_point_p = 0 |
Holds (between class initialization and finalization) a pointer to the origin of the zero-dimensional space ![]() | |
Friends | |
class | Expression_Adapter< Generator > |
class | Linear_System< Generator > |
class | Parma_Polyhedra_Library::Scalar_Products |
class | Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign |
class | Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Assign |
class | Parma_Polyhedra_Library::Generator_System |
class | Parma_Polyhedra_Library::Generator_System_const_iterator |
class | Parma_Polyhedra_Library::Polyhedron |
class | Parma_Polyhedra_Library::Grid_Generator_System |
class | Parma_Polyhedra_Library::MIP_Problem |
class | Parma_Polyhedra_Library::Grid |
std::ostream & | Parma_Polyhedra_Library::IO_Operators::operator<< (std::ostream &s, const Generator &g) |
int | compare (const Generator &x, const Generator &y) |
A line, ray, point or closure point.
An object of the class Generator is one of the following:
where is the dimension of the space and, for points and closure points,
is the divisor.
line
, ray
, point
or closure_point
) to a linear expression, representing a direction in the space; the space dimension of the generator is defined as the space dimension of the corresponding linear expression. Linear expressions used to define a generator should be homogeneous (any constant term will be simply ignored). When defining points and closure points, an optional Coefficient argument can be used as a common divisor for all the coefficients occurring in the provided linear expression; the default value for this argument is 1.x
, y
and z
are defined as follows: point
is optional. point
(the divisor): Obviously, the divisor can be usefully exploited to specify points having some non-integer (but rational) coordinates. For instance, the point g1
is a point having coordinates g2
having coordinates Definition at line 285 of file Generator_defs.hh.
typedef Expression_Hide_Last<Expression_Hide_Inhomo<Linear_Expression> > Parma_Polyhedra_Library::Generator::expr_type |
The type of the (adapted) internal expression.
Definition at line 531 of file Generator_defs.hh.
|
inlineexplicit |
Constructs the point at the origin.
Definition at line 113 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::Coefficient_one(), expr, OK(), Parma_Polyhedra_Library::Linear_Expression::set_inhomogeneous_term(), and space_dimension().
|
inline |
Ordinary copy constructor. The representation of the new Generator will be the same as g.
Definition at line 167 of file Generator_inlines.hh.
|
inline |
Copy constructor with given representation.
Definition at line 174 of file Generator_inlines.hh.
References OK().
|
inline |
Copy constructor with given space dimension. The representation of the new Generator will be the same as g.
Definition at line 183 of file Generator_inlines.hh.
References OK(), and space_dimension().
|
inline |
Copy constructor with given representation and space dimension.
Definition at line 192 of file Generator_inlines.hh.
References OK(), and space_dimension().
|
inline |
|
inlineprivate |
Builds a generator of type type
and topology topology
, stealing the coefficients from e
.
If the topology is NNC, the last dimension of e
is used as the epsilon coefficient.
Definition at line 139 of file Generator_inlines.hh.
References CLOSURE_POINT, expr, kind_, LINE, LINE_OR_EQUALITY, Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, RAY_OR_POINT_OR_INEQUALITY, Parma_Polyhedra_Library::Linear_Expression::set_space_dimension(), Parma_Polyhedra_Library::Linear_Expression::space_dimension(), strong_normalize(), and swap().
|
inlineprivate |
Definition at line 156 of file Generator_inlines.hh.
References expr, Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, Parma_Polyhedra_Library::Linear_Expression::set_space_dimension(), Parma_Polyhedra_Library::Linear_Expression::space_dimension(), strong_normalize(), and swap().
|
inlineprivate |
Definition at line 123 of file Generator_inlines.hh.
References expr, is_necessarily_closed(), OK(), Parma_Polyhedra_Library::Linear_Expression::set_space_dimension(), and space_dimension().
void Parma_Polyhedra_Library::Generator::ascii_dump | ( | ) | const |
Writes to std::cerr
an ASCII representation of *this
.
|
inline |
Writes to s
an ASCII representation of *this
.
Definition at line 449 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::Linear_Expression::ascii_dump(), CLOSURE_POINT, expr, is_necessarily_closed(), LINE, POINT, RAY, and type().
|
inline |
Loads from s
an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this
accordingly. Returns true
if successful, false
otherwise.
Definition at line 479 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::Linear_Expression::ascii_load(), CLOSURE_POINT, expr, is_necessarily_closed(), is_not_necessarily_closed(), LINE, mark_as_necessarily_closed(), mark_as_not_necessarily_closed(), POINT, RAY, set_is_line(), set_is_ray_or_point(), and type().
|
private |
Returns true
if and only if the coefficients are strongly normalized.
Definition at line 271 of file Generator.cc.
References Parma_Polyhedra_Library::compare(), and strong_normalize().
|
static |
Returns the closure point at e
/ d
.
Both e
and d
are optional arguments, with default values Linear_Expression::zero() and Coefficient_one(), respectively.
std::invalid_argument | Thrown if d is zero. |
Definition at line 92 of file Generator.cc.
References expr, Parma_Polyhedra_Library::neg_assign(), Parma_Polyhedra_Library::Linear_Expression::normalize(), Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, POINT, and Parma_Polyhedra_Library::Linear_Expression::set_inhomogeneous_term().
Referenced by closure_point().
|
static |
Returns the closure point at the origin.
Definition at line 123 of file Generator.cc.
References Parma_Polyhedra_Library::Coefficient_one(), and Parma_Polyhedra_Library::Linear_Expression::zero().
|
static |
Returns the closure point at e
.
Definition at line 117 of file Generator.cc.
References Parma_Polyhedra_Library::Coefficient_one().
|
inline |
Returns the coefficient of v
in *this
.
std::invalid_argument | Thrown if the index of v is greater than or equal to the space dimension of *this . |
Definition at line 325 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::Linear_Expression::coefficient(), expr, Parma_Polyhedra_Library::Variable::space_dimension(), space_dimension(), and throw_dimension_incompatible().
Referenced by Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR_original(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::MIP_Problem::choose_branching_variable(), Parma_Polyhedra_Library::Polyhedron::constrains(), Parma_Polyhedra_Library::MIP_Problem::is_mip_satisfiable(), l_m_distance_assign(), Parma_Polyhedra_Library::Octagonal_Shape< T >::Octagonal_Shape(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR_original(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Octagonal_Shape< T >::relation_with(), Parma_Polyhedra_Library::BD_Shape< T >::relation_with(), and Parma_Polyhedra_Library::MIP_Problem::solve_mip().
|
inline |
If *this
is either a point or a closure point, returns its divisor.
std::invalid_argument | Thrown if *this is neither a point nor a closure point. |
Definition at line 333 of file Generator_inlines.hh.
References expr, Parma_Polyhedra_Library::Linear_Expression::inhomogeneous_term(), is_ray_or_point(), and throw_invalid_argument().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR_original(), Parma_Polyhedra_Library::BD_Shape< T >::BD_Shape(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::MIP_Problem::choose_branching_variable(), Parma_Polyhedra_Library::MIP_Problem::evaluate_objective_function(), Parma_Polyhedra_Library::MIP_Problem::is_mip_satisfiable(), l_m_distance_assign(), Parma_Polyhedra_Library::Polyhedron::map_space_dimensions(), Parma_Polyhedra_Library::Octagonal_Shape< T >::Octagonal_Shape(), Parma_Polyhedra_Library::Implementation::Termination::one_affine_ranking_function_MS(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Grid::relation_with(), Parma_Polyhedra_Library::Octagonal_Shape< T >::relation_with(), Parma_Polyhedra_Library::BD_Shape< T >::relation_with(), and Parma_Polyhedra_Library::MIP_Problem::solve_mip().
|
inlineprivate |
Returns the epsilon coefficient. The generator must be NNC.
Definition at line 343 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::Linear_Expression::coefficient(), expr, is_not_necessarily_closed(), and Parma_Polyhedra_Library::Linear_Expression::space_dimension().
Referenced by Parma_Polyhedra_Library::Generator_System::add_corresponding_closure_points(), Parma_Polyhedra_Library::Generator_System::add_corresponding_points(), Parma_Polyhedra_Library::Polyhedron::positive_time_elapse_assign_impl(), Parma_Polyhedra_Library::Polyhedron::strongly_minimize_generators(), and type().
|
inline |
Partial read access to the (adapted) internal expression.
Definition at line 40 of file Generator_inlines.hh.
References expr, and is_not_necessarily_closed().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), Parma_Polyhedra_Library::BD_Shape< T >::BD_Shape(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::Polyhedron::constrains(), is_equivalent_to(), Parma_Polyhedra_Library::Polyhedron::map_space_dimensions(), Parma_Polyhedra_Library::Implementation::Termination::one_affine_ranking_function_MS(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Grid::relation_with(), space_dimension(), and Parma_Polyhedra_Library::Polyhedron::time_elapse_assign().
|
inline |
Returns the size in bytes of the memory managed by *this
.
Definition at line 357 of file Generator_inlines.hh.
References expr, and Parma_Polyhedra_Library::Linear_Expression::external_memory_in_bytes().
Referenced by Parma_Polyhedra_Library::MIP_Problem::external_memory_in_bytes(), and total_memory_in_bytes().
|
private |
A print function, with fancy, more human-friendly output.
This is used by operator<<().
Definition at line 303 of file Generator.cc.
References c, CLOSURE_POINT, LINE, Parma_Polyhedra_Library::neg_assign(), Parma_Polyhedra_Library::IO_Operators::operator<<(), POINT, PPL_DIRTY_TEMP_COEFFICIENT, and RAY.
Referenced by operator<<().
|
static |
Finalizes the class.
Definition at line 292 of file Generator.cc.
Referenced by Parma_Polyhedra_Library::Init::~Init().
|
static |
Initializes the class.
Definition at line 281 of file Generator.cc.
Referenced by Parma_Polyhedra_Library::Init::Init().
|
inline |
Returns true
if and only if *this
is a closure point.
Definition at line 310 of file Generator_inlines.hh.
References CLOSURE_POINT, and type().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_combining_constraints(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_evolving_points(), Parma_Polyhedra_Library::Polyhedron::BHZ09_NNC_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::frequency(), Parma_Polyhedra_Library::Polyhedron::is_topologically_closed(), Parma_Polyhedra_Library::Polyhedron::max_min(), Parma_Polyhedra_Library::Grid::relation_with(), and Parma_Polyhedra_Library::Generator_System_const_iterator::skip_forward().
bool Parma_Polyhedra_Library::Generator::is_equal_to | ( | const Generator & | y | ) | const |
Returns true
if *this
is identical to y
.
This is faster than is_equivalent_to(), but it may return `false' even for equivalent generators.
Definition at line 258 of file Generator.cc.
References expr, kind_, and topology_.
bool Parma_Polyhedra_Library::Generator::is_equivalent_to | ( | const Generator & | y | ) | const |
Returns true
if and only if *this
and y
are equivalent generators.
Generators having different space dimensions are not equivalent.
Definition at line 226 of file Generator.cc.
References expr, expression(), Parma_Polyhedra_Library::Linear_Expression::is_equal_to(), is_necessarily_closed(), Parma_Polyhedra_Library::Linear_Expression::normalize(), space_dimension(), and type().
Referenced by operator!=(), and operator==().
|
inline |
Returns true
if and only if *this
is a line.
Definition at line 263 of file Generator_inlines.hh.
References is_line_or_equality().
Referenced by Parma_Polyhedra_Library::Polyhedron::bounds(), Parma_Polyhedra_Library::Polyhedron::constrains(), Parma_Polyhedra_Library::Polyhedron::is_included_in(), Parma_Polyhedra_Library::Polyhedron::max_min(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Octagonal_Shape< T >::relation_with(), Parma_Polyhedra_Library::BD_Shape< T >::relation_with(), Parma_Polyhedra_Library::Generator_System::satisfied_by_all_generators(), Parma_Polyhedra_Library::Constraint_System::satisfies_all_constraints(), Parma_Polyhedra_Library::Polyhedron::simplify_using_context_assign(), and type().
|
inlineprivate |
Returns true
if and only if *this
row represents a line or an equality.
Definition at line 50 of file Generator_inlines.hh.
References kind_, and LINE_OR_EQUALITY.
Referenced by Parma_Polyhedra_Library::Polyhedron::BFT00_poly_hull_assign_if_exact(), compare(), and is_line().
|
inline |
Returns true
if and only if *this
is a line or a ray.
Definition at line 273 of file Generator_inlines.hh.
References expr, and Parma_Polyhedra_Library::Linear_Expression::inhomogeneous_term().
Referenced by Parma_Polyhedra_Library::Generator_System::add_corresponding_points(), Parma_Polyhedra_Library::Polyhedron::bounds(), Parma_Polyhedra_Library::Polyhedron::constrains(), Parma_Polyhedra_Library::Generator_System::convert_into_non_necessarily_closed(), Parma_Polyhedra_Library::Polyhedron::frequency(), Parma_Polyhedra_Library::Generator_System::insert(), Parma_Polyhedra_Library::Generator_System::insert_pending(), is_ray(), l_m_distance_assign(), Parma_Polyhedra_Library::Polyhedron::max_min(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Octagonal_Shape< T >::relation_with(), Parma_Polyhedra_Library::BD_Shape< T >::relation_with(), Parma_Polyhedra_Library::Generator_System::remove_invalid_lines_and_rays(), and type().
|
private |
Returns true
if and only if the closure point *this
has the same coordinates of the point p
.
It is assumed that *this
is a closure point, p
is a point and both topologies and space dimensions agree.
Definition at line 399 of file Generator.cc.
References Parma_Polyhedra_Library::exact_div_assign(), expr, Parma_Polyhedra_Library::gcd_assign(), Parma_Polyhedra_Library::Linear_Expression::inhomogeneous_term(), Parma_Polyhedra_Library::Linear_Expression::is_equal_to(), PPL_DIRTY_TEMP_COEFFICIENT, space_dimension(), Parma_Polyhedra_Library::Linear_Expression::space_dimension(), topology(), and type().
Referenced by Parma_Polyhedra_Library::Polyhedron::is_topologically_closed(), and Parma_Polyhedra_Library::Generator_System_const_iterator::skip_forward().
|
inlineprivate |
Returns true
if and only if the topology of *this
row is necessarily closed.
Definition at line 30 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::NECESSARILY_CLOSED, and topology().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), ascii_dump(), ascii_load(), Generator(), is_equivalent_to(), mark_as_not_necessarily_closed(), Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::operator()(), and type().
|
inlineprivate |
Returns true
if and only if the topology of *this
row is not necessarily closed.
Definition at line 35 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, and topology().
Referenced by ascii_load(), epsilon_coefficient(), expression(), mark_as_necessarily_closed(), and set_epsilon_coefficient().
|
inline |
Returns true
if and only if *this
is a point.
Definition at line 305 of file Generator_inlines.hh.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_combining_constraints(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_evolving_points(), Parma_Polyhedra_Library::Polyhedron::BHZ09_NNC_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Box< ITV >::Box(), Parma_Polyhedra_Library::MIP_Problem::evaluate_objective_function(), Parma_Polyhedra_Library::Polyhedron::frequency(), Parma_Polyhedra_Library::Polyhedron::generalized_affine_image(), Parma_Polyhedra_Library::Polyhedron::is_topologically_closed(), Parma_Polyhedra_Library::Polyhedron::max_min(), Parma_Polyhedra_Library::Implementation::Termination::one_affine_ranking_function_MS(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR(), Parma_Polyhedra_Library::Termination_Helpers::one_affine_ranking_function_PR_original(), Parma_Polyhedra_Library::Polyhedron::positive_time_elapse_assign_impl(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Generator_System::relation_with(), Parma_Polyhedra_Library::Grid::relation_with(), Parma_Polyhedra_Library::Generator_System_const_iterator::skip_forward(), and Parma_Polyhedra_Library::Polyhedron::strongly_minimize_generators().
|
inline |
Returns true
if and only if *this
is a ray.
Definition at line 278 of file Generator_inlines.hh.
References is_line_or_ray(), and is_ray_or_point().
Referenced by Parma_Polyhedra_Library::Polyhedron::BHRZ03_evolving_rays(), and Parma_Polyhedra_Library::Box< ITV >::relation_with().
|
inlineprivate |
Returns true
if and only if *this
is not a line.
Definition at line 268 of file Generator_inlines.hh.
References is_ray_or_point_or_inequality().
Referenced by divisor(), and is_ray().
|
inlineprivate |
Returns true
if and only if *this
row represents a ray, a point or an inequality.
Definition at line 55 of file Generator_inlines.hh.
References kind_, and RAY_OR_POINT_OR_INEQUALITY.
Referenced by is_ray_or_point().
|
static |
Returns the line of direction e
.
std::invalid_argument | Thrown if the homogeneous part of e represents the origin of the vector space. |
Definition at line 143 of file Generator.cc.
References Parma_Polyhedra_Library::Linear_Expression::all_homogeneous_terms_are_zero(), LINE, Parma_Polyhedra_Library::NECESSARILY_CLOSED, and Parma_Polyhedra_Library::Linear_Expression::set_inhomogeneous_term().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), line(), and Parma_Polyhedra_Library::Polyhedron::unconstrain().
|
private |
Linearly combines *this
with y
so that i-th coefficient is 0.
y | The Generator that will be combined with *this object; |
i | The index of the coefficient that has to become ![]() |
Computes a linear combination of *this
and y
having the i-th coefficient equal to . Then it assigns the resulting Generator to
*this
and normalizes it.
Definition at line 207 of file Generator.cc.
References expr.
Referenced by Parma_Polyhedra_Library::Polyhedron::BHRZ03_evolving_points().
|
inline |
Swaps *this
with y
.
Definition at line 548 of file Generator_inlines.hh.
References expr, kind_, swap(), Parma_Polyhedra_Library::swap(), and topology_.
Referenced by swap().
|
inlineprivate |
Marks the epsilon dimension as a standard dimension.
The row topology is changed to NECESSARILY_CLOSED
, and the number of space dimensions is increased by 1.
Definition at line 91 of file Generator_inlines.hh.
References is_not_necessarily_closed(), Parma_Polyhedra_Library::NECESSARILY_CLOSED, and topology_.
Referenced by ascii_load().
|
inlineprivate |
Marks the last dimension as the epsilon dimension.
The row topology is changed to NOT_NECESSARILY_CLOSED
, and the number of space dimensions is decreased by 1.
Definition at line 97 of file Generator_inlines.hh.
References is_necessarily_closed(), Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, and topology_.
Referenced by ascii_load().
|
inlinestatic |
Returns the maximum space dimension a Generator can handle.
Definition at line 224 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::Linear_Expression::max_space_dimension().
bool Parma_Polyhedra_Library::Generator::OK | ( | ) | const |
Checks if all the invariants are satisfied.
Definition at line 432 of file Generator.cc.
References strong_normalize().
Referenced by Parma_Polyhedra_Library::Polyhedron::BFT00_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_evolving_rays(), Parma_Polyhedra_Library::Polyhedron::generalized_affine_image(), Generator(), Parma_Polyhedra_Library::Polyhedron::positive_time_elapse_assign_impl(), set_space_dimension(), Parma_Polyhedra_Library::Polyhedron::strongly_minimize_generators(), and Parma_Polyhedra_Library::Polyhedron::time_elapse_assign().
Assignment operator.
Definition at line 206 of file Generator_inlines.hh.
References swap().
void Parma_Polyhedra_Library::Generator::permute_space_dimensions | ( | const std::vector< Variable > & | cycle | ) |
Permutes the space dimensions of the generator.
cycle | A vector representing a cycle of the permutation according to which the space dimensions must be rearranged. |
The cycle
vector represents a cycle of a permutation of space dimensions. For example, the permutation can be represented by the vector containing
.
Definition at line 192 of file Generator.cc.
|
static |
Returns the point at e
/ d
.
Both e
and d
are optional arguments, with default values Linear_Expression::zero() and Coefficient_one(), respectively.
std::invalid_argument | Thrown if d is zero. |
Definition at line 57 of file Generator.cc.
References expr, Parma_Polyhedra_Library::NECESSARILY_CLOSED, Parma_Polyhedra_Library::neg_assign(), Parma_Polyhedra_Library::Linear_Expression::normalize(), POINT, and Parma_Polyhedra_Library::Linear_Expression::set_inhomogeneous_term().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), Parma_Polyhedra_Library::Box< ITV >::max_min(), Parma_Polyhedra_Library::Grid::max_min(), and point().
|
static |
Returns the origin.
Definition at line 87 of file Generator.cc.
References Parma_Polyhedra_Library::Coefficient_one(), and Parma_Polyhedra_Library::Linear_Expression::zero().
|
static |
Returns the point at e
.
Definition at line 81 of file Generator.cc.
References Parma_Polyhedra_Library::Coefficient_one().
void Parma_Polyhedra_Library::Generator::print | ( | ) | const |
Prints *this
to std::cerr
using operator<<
.
|
static |
Returns the ray of direction e
.
std::invalid_argument | Thrown if the homogeneous part of e represents the origin of the vector space. |
Definition at line 128 of file Generator.cc.
References Parma_Polyhedra_Library::Linear_Expression::all_homogeneous_terms_are_zero(), Parma_Polyhedra_Library::NECESSARILY_CLOSED, RAY, and Parma_Polyhedra_Library::Linear_Expression::set_inhomogeneous_term().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), and ray().
bool Parma_Polyhedra_Library::Generator::remove_space_dimensions | ( | const Variables_Set & | vars | ) |
Removes all the specified dimensions from the generator.
The space dimension of the variable with the highest space dimension in vars
must be at most the space dimension of this
.
If all dimensions with nonzero coefficients are removed from a ray or a line, it is changed into a point and this method returns false
. Otherwise, it returns true
.
Definition at line 168 of file Generator.cc.
References Parma_Polyhedra_Library::Variables_Set::space_dimension().
|
inline |
Returns the current representation of *this.
Definition at line 214 of file Generator_inlines.hh.
References expr, and Parma_Polyhedra_Library::Linear_Expression::representation().
|
inlineprivate |
Sets the epsilon coefficient to n
. The generator must be NNC.
Definition at line 350 of file Generator_inlines.hh.
References expr, is_not_necessarily_closed(), Parma_Polyhedra_Library::Linear_Expression::set_coefficient(), and Parma_Polyhedra_Library::Linear_Expression::space_dimension().
Referenced by Parma_Polyhedra_Library::Generator_System::add_corresponding_closure_points(), Parma_Polyhedra_Library::Generator_System::add_corresponding_points(), Parma_Polyhedra_Library::Generator_System::convert_into_non_necessarily_closed(), Parma_Polyhedra_Library::Polyhedron::generalized_affine_image(), Parma_Polyhedra_Library::Generator_System::insert(), Parma_Polyhedra_Library::Generator_System::insert_pending(), and Parma_Polyhedra_Library::Polyhedron::strongly_minimize_generators().
|
inlineprivate |
Sets the Generator kind to LINE_OR_EQUALITY
.
Definition at line 315 of file Generator_inlines.hh.
References set_is_line_or_equality().
Referenced by ascii_load().
|
inlineprivate |
Sets to LINE_OR_EQUALITY
the kind of *this
row.
Definition at line 65 of file Generator_inlines.hh.
References kind_, and LINE_OR_EQUALITY.
Referenced by set_is_line().
|
inlineprivate |
Sets the Generator kind to RAY_OR_POINT_OR_INEQUALITY
.
Definition at line 320 of file Generator_inlines.hh.
References set_is_ray_or_point_or_inequality().
Referenced by ascii_load().
|
inlineprivate |
Sets to RAY_OR_POINT_OR_INEQUALITY
the kind of *this
row.
Definition at line 70 of file Generator_inlines.hh.
References kind_, and RAY_OR_POINT_OR_INEQUALITY.
Referenced by Parma_Polyhedra_Library::Polyhedron::BFT00_poly_hull_assign_if_exact(), and set_is_ray_or_point().
|
inlineprivate |
Sets to NECESSARILY_CLOSED
the topological kind of *this
row.
Definition at line 103 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::NECESSARILY_CLOSED, and set_topology().
|
inlineprivate |
Sets to NOT_NECESSARILY_CLOSED
the topological kind of *this
row.
Definition at line 108 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::NOT_NECESSARILY_CLOSED, and set_topology().
Referenced by Parma_Polyhedra_Library::Generator_System::insert().
|
inline |
Converts *this to the specified representation.
Definition at line 219 of file Generator_inlines.hh.
References expr, and Parma_Polyhedra_Library::Linear_Expression::set_representation().
|
inline |
Sets the dimension of the vector space enclosing *this
to space_dim
.
Definition at line 252 of file Generator_inlines.hh.
References OK(), and set_space_dimension_no_ok().
Referenced by Parma_Polyhedra_Library::Generator_System::insert(), and Parma_Polyhedra_Library::Generator_System::insert_pending().
|
inlineprivate |
Sets the dimension of the vector space enclosing *this
to space_dim
. Sets the space dimension of the rows in the system to space_dim
.
This method is for internal use, it does *not* assert OK() at the end, so it can be used for invalid objects.
Definition at line 229 of file Generator_inlines.hh.
References expr, Parma_Polyhedra_Library::NECESSARILY_CLOSED, Parma_Polyhedra_Library::Linear_Expression::set_space_dimension(), space_dimension(), Parma_Polyhedra_Library::Linear_Expression::space_dimension(), strong_normalize(), Parma_Polyhedra_Library::Linear_Expression::swap_space_dimensions(), and topology().
Referenced by set_space_dimension().
|
inlineprivate |
Sets to x
the topological kind of *this
row.
Definition at line 75 of file Generator_inlines.hh.
References expr, Parma_Polyhedra_Library::NECESSARILY_CLOSED, Parma_Polyhedra_Library::Linear_Expression::set_space_dimension(), Parma_Polyhedra_Library::Linear_Expression::space_dimension(), topology(), and topology_.
Referenced by Parma_Polyhedra_Library::Generator_System::insert_pending(), set_necessarily_closed(), and set_not_necessarily_closed().
|
inline |
Shift by n
positions the coefficients of variables, starting from the coefficient of v
. This increases the space dimension by n
.
Definition at line 258 of file Generator_inlines.hh.
References expr, and Parma_Polyhedra_Library::Linear_Expression::shift_space_dimensions().
|
private |
Normalizes the sign of the coefficients so that the first non-zero (homogeneous) coefficient of a line-or-equality is positive.
Definition at line 264 of file Generator.cc.
Referenced by Parma_Polyhedra_Library::Polyhedron::BFT00_poly_hull_assign_if_exact(), and strong_normalize().
|
inline |
Returns the dimension of the vector space enclosing *this
.
Definition at line 45 of file Generator_inlines.hh.
References expression(), and Parma_Polyhedra_Library::Expression_Hide_Last< T >::space_dimension().
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), coefficient(), Parma_Polyhedra_Library::MIP_Problem::evaluate_objective_function(), Generator(), Parma_Polyhedra_Library::Generator_System::insert(), Parma_Polyhedra_Library::Generator_System::insert_pending(), is_equivalent_to(), is_matching_closure_point(), Parma_Polyhedra_Library::MIP_Problem::is_satisfied(), Parma_Polyhedra_Library::MIP_Problem::is_saturated(), l_m_distance_assign(), Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::operator()(), Parma_Polyhedra_Library::Box< ITV >::relation_with(), Parma_Polyhedra_Library::Polyhedron::relation_with(), Parma_Polyhedra_Library::Grid::relation_with(), Parma_Polyhedra_Library::Octagonal_Shape< T >::relation_with(), Parma_Polyhedra_Library::BD_Shape< T >::relation_with(), Parma_Polyhedra_Library::Constraint_System::satisfies_all_constraints(), set_space_dimension_no_ok(), throw_dimension_incompatible(), Parma_Polyhedra_Library::Box< ITV >::throw_dimension_incompatible(), Parma_Polyhedra_Library::Octagonal_Shape< T >::throw_dimension_incompatible(), Parma_Polyhedra_Library::BD_Shape< T >::throw_dimension_incompatible(), Parma_Polyhedra_Library::Grid::throw_dimension_incompatible(), and Parma_Polyhedra_Library::Polyhedron::throw_dimension_incompatible().
|
inlineprivate |
Strong normalization: ensures that different Generator objects represent different hyperplanes or hyperspaces.
Applies both Generator::normalize() and Generator::sign_normalize().
Definition at line 367 of file Generator_inlines.hh.
References expr, Parma_Polyhedra_Library::Linear_Expression::normalize(), and sign_normalize().
Referenced by check_strong_normalized(), Generator(), OK(), and set_space_dimension_no_ok().
Swaps the coefficients of the variables v1
and v2
.
Definition at line 158 of file Generator.cc.
References Parma_Polyhedra_Library::Variable::space_dimension().
|
private |
Throw a std::invalid_argument
exception containing the appropriate error message.
Definition at line 37 of file Generator.cc.
References Parma_Polyhedra_Library::Variable::space_dimension(), and space_dimension().
Referenced by coefficient().
|
private |
Throw a std::invalid_argument
exception containing the appropriate error message.
Definition at line 48 of file Generator.cc.
Referenced by divisor().
|
inlineprivate |
Returns the topological kind of *this
.
Definition at line 60 of file Generator_inlines.hh.
References topology_.
Referenced by Parma_Polyhedra_Library::Generator_System::insert(), Parma_Polyhedra_Library::Generator_System::insert_pending(), is_matching_closure_point(), is_necessarily_closed(), is_not_necessarily_closed(), set_space_dimension_no_ok(), and set_topology().
|
inline |
Returns a lower bound to the total size in bytes of the memory occupied by *this
.
Definition at line 362 of file Generator_inlines.hh.
References external_memory_in_bytes().
|
inline |
Returns the generator type of *this
.
Definition at line 283 of file Generator_inlines.hh.
References CLOSURE_POINT, epsilon_coefficient(), is_line(), is_line_or_ray(), is_necessarily_closed(), LINE, POINT, and RAY.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_generator(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR(), Parma_Polyhedra_Library::Termination_Helpers::all_affine_ranking_functions_PR_original(), ascii_dump(), ascii_load(), Parma_Polyhedra_Library::BD_Shape< T >::BD_Shape(), Parma_Polyhedra_Library::Box< ITV >::Box(), is_closure_point(), is_equivalent_to(), Parma_Polyhedra_Library::Polyhedron::is_included_in(), is_matching_closure_point(), is_point(), Parma_Polyhedra_Library::Polyhedron::map_space_dimensions(), Parma_Polyhedra_Library::Octagonal_Shape< T >::Octagonal_Shape(), Parma_Polyhedra_Library::Polyhedron::positive_time_elapse_assign_impl(), Parma_Polyhedra_Library::Generator_System::relation_with(), Parma_Polyhedra_Library::Generator_System::satisfied_by_all_generators(), Parma_Polyhedra_Library::Constraint_System::satisfies_all_constraints(), Parma_Polyhedra_Library::Polyhedron::simplify_using_context_assign(), and Parma_Polyhedra_Library::Polyhedron::time_elapse_assign().
|
inlinestatic |
Returns, as a closure point, the origin of the zero-dimensional space .
Definition at line 379 of file Generator_inlines.hh.
References zero_dim_closure_point_p.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_space_dimensions_and_project().
|
inlinestatic |
Returns the origin of the zero-dimensional space .
Definition at line 373 of file Generator_inlines.hh.
References zero_dim_point_p.
Referenced by Parma_Polyhedra_Library::Polyhedron::add_space_dimensions_and_project(), and Parma_Polyhedra_Library::Generator_System::initialize().
|
related |
Definition at line 417 of file Generator_inlines.hh.
References closure_point().
|
related |
Definition at line 425 of file Generator_inlines.hh.
References closure_point().
|
related |
Definition at line 431 of file Generator_inlines.hh.
References closure_point().
|
related |
|
related |
Shorthand for Generator::closure_point(Representation r).
|
related |
The basic comparison function.
x | A row of coefficients; |
y | Another row. |
Compares x
and y
, where x
and y
may be of different size, in which case the "missing" coefficients are assumed to be zero. The comparison is such that:
size()
, 0;x
and y
are different, the absolute value of the result is 1 if the difference is due to the coefficient in position 0; it is 2 otherwise.When x
and y
represent the hyper-planes associated to two equality or inequality constraints, the coefficient at 0 is the known term. In this case, the return value can be characterized as follows:
x
is smaller than y
and they are not parallel;x
is smaller than y
and they are parallel;x
and y are equal;y
is smaller than x
and they are parallel;y
is smaller than x
and they are not parallel. Definition at line 214 of file Generator.cc.
References Parma_Polyhedra_Library::compare(), expr, and is_line_or_equality().
|
related |
Definition at line 659 of file Generator_inlines.hh.
|
related |
Definition at line 673 of file Generator_inlines.hh.
References PPL_DIRTY_TEMP.
|
related |
Definition at line 687 of file Generator_inlines.hh.
|
related |
Computes the euclidean distance between x
and y
.
If the euclidean distance between x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using variables of type Checked_Number<To, Extended_Number_Policy>
.
false
is returned.
|
related |
Computes the euclidean distance between x
and y
.
If the euclidean distance between x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using the temporary variables tmp0
, tmp1
and tmp2
.
false
is returned.
|
friend |
Definition at line 730 of file Generator_defs.hh.
|
related |
Definition at line 697 of file Generator_inlines.hh.
|
related |
Definition at line 711 of file Generator_inlines.hh.
References PPL_DIRTY_TEMP.
|
related |
Definition at line 725 of file Generator_inlines.hh.
|
related |
Computes the distance between
x
and y
.
If the distance between
x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using variables of type Checked_Number<To, Extended_Number_Policy>
.
false
is returned.
|
related |
Computes the distance between
x
and y
.
If the distance between
x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using variables of type Checked_Number<Temp, Extended_Number_Policy>
.
false
is returned.
|
related |
Computes the distance between
x
and y
.
If the distance between
x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using the temporary variables tmp0
, tmp1
and tmp2
.
false
is returned.
|
related |
Definition at line 560 of file Generator_inlines.hh.
References Parma_Polyhedra_Library::assign_r(), coefficient(), Parma_Polyhedra_Library::combine(), divisor(), Parma_Polyhedra_Library::finalize(), Parma_Polyhedra_Library::inverse(), is_line_or_ray(), Parma_Polyhedra_Library::maybe_assign(), PPL_DIRTY_TEMP, Parma_Polyhedra_Library::ROUND_NOT_NEEDED, Parma_Polyhedra_Library::Boundary_NS::sgn(), and space_dimension().
|
related |
Definition at line 386 of file Generator_inlines.hh.
References line().
|
related |
|
friend |
Definition at line 731 of file Generator_defs.hh.
Definition at line 444 of file Generator_inlines.hh.
References is_equivalent_to().
Returns true
if and only if x
is not equivalent to y
.
|
related |
Output operator.
|
related |
Definition at line 371 of file Generator.cc.
References fancy_print().
|
related |
|
related |
Output operator.
Definition at line 438 of file Generator_inlines.hh.
References is_equivalent_to().
Returns true
if and only if x
is equivalent to y
.
|
friend |
Definition at line 735 of file Generator_defs.hh.
|
friend |
Definition at line 736 of file Generator_defs.hh.
|
friend |
Definition at line 742 of file Generator_defs.hh.
|
friend |
Definition at line 740 of file Generator_defs.hh.
|
friend |
|
friend |
Definition at line 741 of file Generator_defs.hh.
|
friend |
Definition at line 738 of file Generator_defs.hh.
|
friend |
Definition at line 732 of file Generator_defs.hh.
|
friend |
Definition at line 734 of file Generator_defs.hh.
|
friend |
Definition at line 733 of file Generator_defs.hh.
|
related |
Definition at line 398 of file Generator_inlines.hh.
References point().
|
related |
Definition at line 405 of file Generator_inlines.hh.
References point().
|
related |
Definition at line 411 of file Generator_inlines.hh.
References point().
|
related |
|
related |
Shorthand for Generator::point(Representation r).
|
related |
|
related |
Definition at line 392 of file Generator_inlines.hh.
References ray().
|
related |
Shorthand for Generator::ray(const Linear_Expression& e, Representation r).
|
related |
Definition at line 621 of file Generator_inlines.hh.
|
related |
Definition at line 635 of file Generator_inlines.hh.
References PPL_DIRTY_TEMP.
|
related |
Definition at line 649 of file Generator_inlines.hh.
|
related |
Computes the rectilinear (or Manhattan) distance between x
and y
.
If the rectilinear distance between x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using variables of type Checked_Number<To, Extended_Number_Policy>
.
false
is returned.
|
related |
Computes the rectilinear (or Manhattan) distance between x
and y
.
If the rectilinear distance between x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using variables of type Checked_Number<Temp, Extended_Number_Policy>
.
false
is returned.
|
related |
Computes the rectilinear (or Manhattan) distance between x
and y
.
If the rectilinear distance between x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using the temporary variables tmp0
, tmp1
and tmp2
.
false
is returned.
|
related |
Computes the euclidean distance between x
and y
.
If the euclidean distance between x
and y
is defined, stores an approximation of it into r
and returns true
; returns false
otherwise.
The direction of the approximation is specified by dir
.
All computations are performed using variables of type Checked_Number<Temp, Extended_Number_Policy>
.
false
is returned. Swaps x
with y
.
Referenced by Generator(), m_swap(), and operator=().
Definition at line 734 of file Generator_inlines.hh.
References m_swap().
|
static |
The representation used for new Generators.
Definition at line 294 of file Generator_defs.hh.
|
private |
The linear expression encoding *this
.
Definition at line 543 of file Generator_defs.hh.
Referenced by Parma_Polyhedra_Library::Generator_System::add_corresponding_closure_points(), Parma_Polyhedra_Library::Generator_System::add_corresponding_points(), Parma_Polyhedra_Library::Generator_System::affine_image(), ascii_dump(), ascii_load(), Parma_Polyhedra_Library::Scalar_Products::assign(), Parma_Polyhedra_Library::Polyhedron::BFT00_poly_hull_assign_if_exact(), Parma_Polyhedra_Library::Polyhedron::BHRZ03_evolving_rays(), closure_point(), coefficient(), compare(), Parma_Polyhedra_Library::Generator_System::convert_into_non_necessarily_closed(), divisor(), epsilon_coefficient(), Parma_Polyhedra_Library::MIP_Problem::evaluate_objective_function(), expression(), external_memory_in_bytes(), Parma_Polyhedra_Library::Polyhedron::frequency(), Parma_Polyhedra_Library::Polyhedron::generalized_affine_image(), Generator(), Parma_Polyhedra_Library::Scalar_Products::homogeneous_assign(), Parma_Polyhedra_Library::Scalar_Products::homogeneous_sign(), Parma_Polyhedra_Library::Generator_System::insert(), Parma_Polyhedra_Library::Generator_System::insert_pending(), is_equal_to(), is_equivalent_to(), is_line_or_ray(), is_matching_closure_point(), linear_combine(), m_swap(), Parma_Polyhedra_Library::Polyhedron::max_min(), Parma_Polyhedra_Library::Topology_Adjusted_Scalar_Product_Sign::operator()(), point(), Parma_Polyhedra_Library::Polyhedron::positive_time_elapse_assign_impl(), Parma_Polyhedra_Library::Scalar_Products::reduced_sign(), Parma_Polyhedra_Library::Generator_System::remove_invalid_lines_and_rays(), representation(), set_epsilon_coefficient(), set_representation(), set_space_dimension_no_ok(), set_topology(), shift_space_dimensions(), Parma_Polyhedra_Library::Scalar_Products::sign(), strong_normalize(), Parma_Polyhedra_Library::Polyhedron::strongly_minimize_generators(), and Parma_Polyhedra_Library::Polyhedron::time_elapse_assign().
|
private |
The kind of *this
.
Definition at line 546 of file Generator_defs.hh.
Referenced by Generator(), is_equal_to(), is_line_or_equality(), is_ray_or_point_or_inequality(), m_swap(), set_is_line_or_equality(), and set_is_ray_or_point_or_inequality().
|
private |
The topology of *this
.
Definition at line 549 of file Generator_defs.hh.
Referenced by is_equal_to(), m_swap(), mark_as_necessarily_closed(), mark_as_not_necessarily_closed(), set_topology(), and topology().
|
staticprivate |
Holds (between class initialization and finalization) a pointer to the origin of the zero-dimensional space , as a closure point.
Definition at line 561 of file Generator_defs.hh.
Referenced by zero_dim_closure_point().
|
staticprivate |
Holds (between class initialization and finalization) a pointer to the origin of the zero-dimensional space .
Definition at line 555 of file Generator_defs.hh.
Referenced by zero_dim_point().