PPL
1.2
|
Artificial parameters in PIP solution trees. More...
#include <PIP_Tree_defs.hh>
Public Member Functions | |
Artificial_Parameter () | |
Default constructor: builds a zero artificial parameter. More... | |
Artificial_Parameter (const Linear_Expression &expr, Coefficient_traits::const_reference d) | |
Constructor. More... | |
Artificial_Parameter (const Artificial_Parameter &y) | |
Copy constructor. More... | |
Coefficient_traits::const_reference | denominator () const |
Returns the normalized (i.e., positive) denominator. More... | |
void | m_swap (Artificial_Parameter &y) |
Swaps *this with y . More... | |
bool | operator== (const Artificial_Parameter &y) const |
Returns true if and only if *this and y are equal. More... | |
bool | operator!= (const Artificial_Parameter &y) const |
Returns true if and only if *this and y are different. 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... | |
memory_size_type | total_memory_in_bytes () const |
Returns 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 | OK () const |
Returns true if and only if the parameter is well-formed. More... | |
![]() | |
Linear_Expression (Representation r=default_representation) | |
Default constructor: returns a copy of Linear_Expression::zero(). More... | |
Linear_Expression (const Linear_Expression &e) | |
Ordinary copy constructor. More... | |
Linear_Expression (const Linear_Expression &e, Representation r) | |
Copy constructor that takes also a Representation. More... | |
template<typename LE_Adapter > | |
Linear_Expression (const LE_Adapter &e, typename Enable_If< Is_Same_Or_Derived< Expression_Adapter_Base, LE_Adapter >::value, void * >::type=0) | |
Copy constructor from a linear expression adapter. More... | |
template<typename LE_Adapter > | |
Linear_Expression (const LE_Adapter &e, Representation r, typename Enable_If< Is_Same_Or_Derived< Expression_Adapter_Base, LE_Adapter >::value, void * >::type=0) | |
Copy constructor from a linear expression adapter that takes a Representation. More... | |
template<typename LE_Adapter > | |
Linear_Expression (const LE_Adapter &e, dimension_type space_dim, typename Enable_If< Is_Same_Or_Derived< Expression_Adapter_Base, LE_Adapter >::value, void * >::type=0) | |
Copy constructor from a linear expression adapter that takes a space dimension. More... | |
template<typename LE_Adapter > | |
Linear_Expression (const LE_Adapter &e, dimension_type space_dim, Representation r, typename Enable_If< Is_Same_Or_Derived< Expression_Adapter_Base, LE_Adapter >::value, void * >::type=0) | |
Copy constructor from a linear expression adapter that takes a space dimension and a Representation. More... | |
Linear_Expression & | operator= (const Linear_Expression &e) |
Assignment operator. More... | |
~Linear_Expression () | |
Destructor. More... | |
Linear_Expression (Coefficient_traits::const_reference n, Representation r=default_representation) | |
Builds the linear expression corresponding to the inhomogeneous term n . More... | |
Linear_Expression (Variable v, Representation r=default_representation) | |
Builds the linear expression corresponding to the variable v . More... | |
Representation | representation () const |
Returns the current representation of *this. More... | |
void | set_representation (Representation r) |
Converts *this to the specified representation. More... | |
const_iterator | begin () const |
const_iterator | end () const |
const_iterator | lower_bound (Variable v) const |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . More... | |
void | set_space_dimension (dimension_type n) |
Sets the dimension of the vector space enclosing *this to n . More... | |
Coefficient_traits::const_reference | coefficient (Variable v) const |
Returns the coefficient of v in *this . More... | |
void | set_coefficient (Variable v, Coefficient_traits::const_reference n) |
Sets the coefficient of v in *this to n . More... | |
Coefficient_traits::const_reference | inhomogeneous_term () const |
Returns the inhomogeneous term of *this . More... | |
void | set_inhomogeneous_term (Coefficient_traits::const_reference n) |
Sets the inhomogeneous term of *this to n . More... | |
void | linear_combine (const Linear_Expression &y, Variable v) |
void | linear_combine (const Linear_Expression &y, Coefficient_traits::const_reference c1, Coefficient_traits::const_reference c2) |
void | linear_combine_lax (const Linear_Expression &y, Coefficient_traits::const_reference c1, Coefficient_traits::const_reference c2) |
void | swap_space_dimensions (Variable v1, Variable v2) |
Swaps the coefficients of the variables v1 and v2 . More... | |
void | remove_space_dimensions (const Variables_Set &vars) |
Removes all the specified dimensions from the expression. More... | |
void | shift_space_dimensions (Variable v, dimension_type n) |
void | permute_space_dimensions (const std::vector< Variable > &cycle) |
Permutes the space dimensions of the expression. More... | |
bool | is_zero () const |
Returns true if and only if *this is ![]() | |
bool | all_homogeneous_terms_are_zero () const |
Returns true if and only if all the homogeneous terms of *this are ![]() | |
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 | 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 (Linear_Expression &y) |
Swaps *this with y . More... | |
Linear_Expression (const Linear_Expression &e, dimension_type space_dim) | |
Copy constructor with a specified space dimension. More... | |
Linear_Expression (const Linear_Expression &e, dimension_type space_dim, Representation r) | |
Copy constructor with a specified space dimension and representation. More... | |
bool | is_equal_to (const Linear_Expression &x) const |
void | normalize () |
void | sign_normalize () |
bool | all_zeroes (const Variables_Set &vars) const |
Returns true if the coefficient of each variable in vars [i] is ![]() | |
Private Attributes | |
Coefficient | denom |
The normalized (i.e., positive) denominator. More... | |
Related Functions | |
(Note that these are not member functions.) | |
void | swap (PIP_Tree_Node::Artificial_Parameter &x, PIP_Tree_Node::Artificial_Parameter &y) |
Swaps x with y . More... | |
std::ostream & | operator<< (std::ostream &os, const PIP_Tree_Node::Artificial_Parameter &x) |
Output operator. More... | |
void | swap (PIP_Tree_Node::Artificial_Parameter &x, PIP_Tree_Node::Artificial_Parameter &y) |
![]() | |
Linear_Expression | operator+ (const Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 + e2 . More... | |
Linear_Expression | operator+ (Variable v, Variable w) |
Returns the linear expression v + w . More... | |
Linear_Expression | operator+ (Variable v, const Linear_Expression &e) |
Returns the linear expression v + e . More... | |
Linear_Expression | operator+ (const Linear_Expression &e, Variable v) |
Returns the linear expression e + v . More... | |
Linear_Expression | operator+ (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Returns the linear expression n + e . More... | |
Linear_Expression | operator+ (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e + n . More... | |
Linear_Expression | operator+ (const Linear_Expression &e) |
Returns the linear expression e . More... | |
Linear_Expression | operator- (const Linear_Expression &e) |
Returns the linear expression - e . More... | |
Linear_Expression | operator- (const Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 - e2 . More... | |
Linear_Expression | operator- (Variable v, Variable w) |
Returns the linear expression v - w . More... | |
Linear_Expression | operator- (Variable v, const Linear_Expression &e) |
Returns the linear expression v - e . More... | |
Linear_Expression | operator- (const Linear_Expression &e, Variable v) |
Returns the linear expression e - v . More... | |
Linear_Expression | operator- (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Returns the linear expression n - e . More... | |
Linear_Expression | operator- (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e - n . More... | |
Linear_Expression | operator* (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Returns the linear expression n * e . More... | |
Linear_Expression | operator* (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e * n . More... | |
Linear_Expression & | operator+= (Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 + e2 and assigns it to e1 . More... | |
Linear_Expression & | operator+= (Linear_Expression &e, Variable v) |
Returns the linear expression e + v and assigns it to e . More... | |
Linear_Expression & | operator+= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e + n and assigns it to e . More... | |
Linear_Expression & | operator-= (Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 - e2 and assigns it to e1 . More... | |
Linear_Expression & | operator-= (Linear_Expression &e, Variable v) |
Returns the linear expression e - v and assigns it to e . More... | |
Linear_Expression & | operator-= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e - n and assigns it to e . More... | |
Linear_Expression & | operator*= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression n * e and assigns it to e . More... | |
Linear_Expression & | operator/= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression n / e and assigns it to e . More... | |
void | neg_assign (Linear_Expression &e) |
Assigns to e its own negation. More... | |
Linear_Expression & | add_mul_assign (Linear_Expression &e, Coefficient_traits::const_reference n, Variable v) |
Returns the linear expression e + n * v and assigns it to e . More... | |
void | add_mul_assign (Linear_Expression &e1, Coefficient_traits::const_reference factor, const Linear_Expression &e2) |
Sums e2 multiplied by factor into e1 . More... | |
void | sub_mul_assign (Linear_Expression &e1, Coefficient_traits::const_reference factor, const Linear_Expression &e2) |
Subtracts e2 multiplied by factor from e1 . More... | |
Linear_Expression & | sub_mul_assign (Linear_Expression &e, Coefficient_traits::const_reference n, Variable v) |
Returns the linear expression e - n * v and assigns it to e . More... | |
int | compare (const Linear_Expression &x, const Linear_Expression &y) |
The basic comparison function. More... | |
std::ostream & | operator<< (std::ostream &s, const Linear_Expression &e) |
Output operator. More... | |
void | swap (Linear_Expression &x, Linear_Expression &y) |
Swaps x with y . More... | |
Linear_Expression | operator+ (const Linear_Expression &e) |
Linear_Expression | operator+ (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Linear_Expression | operator+ (const Linear_Expression &e, const Variable v) |
Linear_Expression | operator- (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Linear_Expression | operator- (const Variable v, const Variable w) |
Linear_Expression | operator* (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Linear_Expression & | operator+= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Linear_Expression & | operator-= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Linear_Expression | operator+ (const Linear_Expression &e1, const Linear_Expression &e2) |
Linear_Expression | operator+ (const Variable v, const Linear_Expression &e) |
Linear_Expression | operator+ (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Linear_Expression | operator+ (const Variable v, const Variable w) |
Linear_Expression | operator- (const Linear_Expression &e) |
Linear_Expression | operator- (const Linear_Expression &e1, const Linear_Expression &e2) |
Linear_Expression | operator- (const Variable v, const Linear_Expression &e) |
Linear_Expression | operator- (const Linear_Expression &e, const Variable v) |
Linear_Expression | operator- (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Linear_Expression | operator* (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Linear_Expression & | operator+= (Linear_Expression &e1, const Linear_Expression &e2) |
Linear_Expression & | operator+= (Linear_Expression &e, const Variable v) |
Linear_Expression & | operator-= (Linear_Expression &e1, const Linear_Expression &e2) |
Linear_Expression & | operator-= (Linear_Expression &e, const Variable v) |
Linear_Expression & | operator*= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Linear_Expression & | operator/= (Linear_Expression &e, Coefficient_traits::const_reference n) |
void | neg_assign (Linear_Expression &e) |
Linear_Expression & | add_mul_assign (Linear_Expression &e, Coefficient_traits::const_reference n, const Variable v) |
Linear_Expression & | sub_mul_assign (Linear_Expression &e, Coefficient_traits::const_reference n, const Variable v) |
std::ostream & | operator<< (std::ostream &s, const Linear_Expression &e) |
void | swap (Linear_Expression &x, Linear_Expression &y) |
Additional Inherited Members | |
![]() | |
typedef const Linear_Expression & | const_reference |
typedef Linear_Expression | raw_type |
![]() | |
static dimension_type | max_space_dimension () |
Returns the maximum space dimension a Linear_Expression can handle. More... | |
static void | initialize () |
Initializes the class. More... | |
static void | finalize () |
Finalizes the class. More... | |
static const Linear_Expression & | zero () |
Returns the (zero-dimension space) constant 0. More... | |
![]() | |
static const Representation | default_representation = SPARSE |
Artificial parameters in PIP solution trees.
These parameters are built from a linear expression combining other parameters (constant term included) divided by a positive integer denominator. Coefficients at variables indices corresponding to PIP problem variables are always zero.
Definition at line 285 of file PIP_Tree_defs.hh.
|
inline |
Default constructor: builds a zero artificial parameter.
Definition at line 103 of file PIP_Tree_inlines.hh.
References OK().
Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::Artificial_Parameter | ( | const Linear_Expression & | expr, |
Coefficient_traits::const_reference | d | ||
) |
Constructor.
Builds artificial parameter .
expr | The expression that, after normalization, will form the numerator of the artificial parameter. |
d | The integer constant that, after normalization, will form the denominator of the artificial parameter. |
std::invalid_argument | Thrown if d is zero. |
Normalization will ensure that the denominator is positive.
Definition at line 934 of file PIP_Tree.cc.
References denom, Parma_Polyhedra_Library::Linear_Expression::exact_div_assign(), Parma_Polyhedra_Library::exact_div_assign(), Parma_Polyhedra_Library::Linear_Expression::gcd(), Parma_Polyhedra_Library::gcd_assign(), Parma_Polyhedra_Library::Linear_Expression::neg_assign, OK(), and Parma_Polyhedra_Library::Linear_Expression::space_dimension().
|
inline |
Copy constructor.
Definition at line 110 of file PIP_Tree_inlines.hh.
References OK().
void Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::ascii_dump | ( | ) | const |
Writes to std::cerr
an ASCII representation of *this
.
void Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::ascii_dump | ( | std::ostream & | s | ) | const |
Writes to s
an ASCII representation of *this
.
Definition at line 1009 of file PIP_Tree.cc.
References Parma_Polyhedra_Library::Linear_Expression::ascii_dump().
bool Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::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.
Definition at line 1016 of file PIP_Tree.cc.
References Parma_Polyhedra_Library::Linear_Expression::ascii_load(), and Parma_Polyhedra_Library::PIP_Tree_Node::OK().
Referenced by Parma_Polyhedra_Library::PIP_Tree_Node::ascii_load().
|
inline |
Returns the normalized (i.e., positive) denominator.
Definition at line 116 of file PIP_Tree_inlines.hh.
Referenced by Parma_Polyhedra_Library::IO_Operators::operator<<().
memory_size_type Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::external_memory_in_bytes | ( | ) | const |
Returns the size in bytes of the memory managed by *this
.
Definition at line 3730 of file PIP_Tree.cc.
References Parma_Polyhedra_Library::external_memory_in_bytes(), and Parma_Polyhedra_Library::Linear_Expression::external_memory_in_bytes().
|
inline |
Swaps *this
with y
.
Definition at line 121 of file PIP_Tree_inlines.hh.
References denom, Parma_Polyhedra_Library::Linear_Expression::m_swap(), and Parma_Polyhedra_Library::swap().
Referenced by swap().
bool Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::OK | ( | ) | const |
Returns true
if and only if the parameter is well-formed.
Definition at line 997 of file PIP_Tree.cc.
Referenced by Artificial_Parameter().
bool Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::operator!= | ( | const Artificial_Parameter & | y | ) | const |
Returns true
if and only if *this
and y
are different.
Definition at line 992 of file PIP_Tree.cc.
References Parma_Polyhedra_Library::operator==().
bool Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::operator== | ( | const Artificial_Parameter & | y | ) | const |
Returns true
if and only if *this
and y
are equal.
Note that two artificial parameters having different space dimensions are considered to be different.
Definition at line 979 of file PIP_Tree.cc.
References denom, Parma_Polyhedra_Library::Linear_Expression::is_equal_to(), and Parma_Polyhedra_Library::Linear_Expression::space_dimension().
void Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::print | ( | ) | const |
Prints *this
to std::cerr
using operator<<
.
memory_size_type Parma_Polyhedra_Library::PIP_Tree_Node::Artificial_Parameter::total_memory_in_bytes | ( | ) | const |
Returns the total size in bytes of the memory occupied by *this
.
Definition at line 3736 of file PIP_Tree.cc.
References Parma_Polyhedra_Library::PIP_Solution_Node::external_memory_in_bytes().
|
related |
Output operator.
Definition at line 908 of file PIP_Tree.cc.
|
related |
Definition at line 129 of file PIP_Tree_inlines.hh.
References m_swap().
|
related |
Swaps x
with y
.
|
private |
The normalized (i.e., positive) denominator.
Definition at line 348 of file PIP_Tree_defs.hh.
Referenced by Artificial_Parameter(), m_swap(), and operator==().