Public Member Functions | |
Linear_Expression () | |
Default constructor: returns a copy of Linear_Expression::zero(). | |
Linear_Expression (const Linear_Expression &e) | |
Ordinary copy-constructor. | |
~Linear_Expression () | |
Destructor. | |
Linear_Expression (Coefficient_traits::const_reference n) | |
Builds the linear expression corresponding to the inhomogeneous term n . | |
Linear_Expression (const Constraint &c) | |
Builds the linear expression corresponding to constraint c . | |
Linear_Expression (const Generator &g) | |
Builds the linear expression corresponding to generator g (for points and closure points, the divisor is not copied). | |
Linear_Expression (const Congruence &cg) | |
Builds the linear expression corresponding to congruence cg . | |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . | |
Coefficient_traits::const_reference | coefficient (Variable v) const |
Returns the coefficient of v in *this . | |
Coefficient_traits::const_reference | inhomogeneous_term () const |
Returns the inhomogeneous term of *this . | |
memory_size_type | total_memory_in_bytes () const |
Returns a lower bound to the total size in bytes of the memory occupied by *this . | |
memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this . | |
bool | OK () const |
Checks if all the invariants are satisfied. | |
void | swap (Linear_Expression &y) |
Swaps *this with y . | |
Static Public Member Functions | |
static dimension_type | max_space_dimension () |
Returns the maximum space dimension a Linear_Expression can handle. | |
static const Linear_Expression & | zero () |
Returns the (zero-dimension space) constant 0. | |
Friends | |
Linear_Expression | operator+ (const Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 + e2 . | |
Linear_Expression | operator+ (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Returns the linear expression n + e . | |
Linear_Expression | operator+ (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e + n . | |
Linear_Expression | operator- (const Linear_Expression &e) |
Returns the linear expression - e . | |
Linear_Expression | operator- (const Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 - e2 . | |
Linear_Expression | operator- (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Returns the linear expression n - e . | |
Linear_Expression | operator- (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e - n . | |
Linear_Expression | operator * (Coefficient_traits::const_reference n, const Linear_Expression &e) |
Returns the linear expression n * e . | |
Linear_Expression | operator * (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e * n . | |
Linear_Expression & | operator+= (Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 + e2 and assigns it to e1 . | |
Linear_Expression & | operator+= (Linear_Expression &e, Variable v) |
Returns the linear expression e + v and assigns it to e . | |
Linear_Expression & | operator+= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e + n and assigns it to e . | |
Linear_Expression & | operator-= (Linear_Expression &e1, const Linear_Expression &e2) |
Returns the linear expression e1 - e2 and assigns it to e1 . | |
Linear_Expression & | operator-= (Linear_Expression &e, Variable v) |
Returns the linear expression e - v and assigns it to e . | |
Linear_Expression & | operator-= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression e - n and assigns it to e . | |
Linear_Expression & | operator *= (Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the linear expression n * e and assigns it to e . | |
std::ostream & | operator<< (std::ostream &s, const Linear_Expression &e) |
Output operator. | |
Congruence | operator%= (const Linear_Expression &e1, const Linear_Expression &e2) |
Returns the congruence ![]() | |
Congruence | operator%= (const Linear_Expression &e, Coefficient_traits::const_reference n) |
Returns the congruence ![]() | |
Related Functions | |
(Note that these are not member functions.) | |
Linear_Expression (Variable v) | |
Builds the linear expression corresponding to the variable v . | |
Linear_Expression | operator+ (Variable v, Variable w) |
Returns the linear expression v + w . | |
Linear_Expression | operator+ (Variable v, const Linear_Expression &e) |
Returns the linear expression v + e . | |
Linear_Expression | operator+ (const Linear_Expression &e, Variable v) |
Returns the linear expression e + v . | |
Linear_Expression | operator+ (const Linear_Expression &e) |
Returns the linear expression e . | |
Linear_Expression | operator- (Variable v, Variable w) |
Returns the linear expression v - w . | |
Linear_Expression | operator- (Variable v, const Linear_Expression &e) |
Returns the linear expression v - e . | |
Linear_Expression | operator- (const Linear_Expression &e, Variable v) |
Returns the linear expression e - v . | |
void | swap (Parma_Polyhedra_Library::Linear_Expression &x, Parma_Polyhedra_Library::Linear_Expression &y) |
Specializes std::swap . |
An object of the class Linear_Expression represents the linear expression
where is the dimension of the vector space, each
is the integer coefficient of the
-th variable
and
is the integer for the inhomogeneous term.
x
is defined as x.id()+1
, whereas all the objects of the class Coefficient have space dimension zero.
Linear_Expression e = 4*x - 2*y - z + 14;
Linear_Expression e1 = 4*x; Linear_Expression e2 = 2*y; Linear_Expression e3 = z; Linear_Expression e = Linear_Expression(14); e += e1 - e2 - e3;
e1
, e2
and e3
have space dimension 1, 2 and 3, respectively; also, in the fourth line of code, e
is created with space dimension zero and then extended to space dimension 3 in the fifth line.
Parma_Polyhedra_Library::Linear_Expression::Linear_Expression | ( | const Constraint & | c | ) | [explicit] |
Builds the linear expression corresponding to constraint c
.
Given the constraint , where
, this builds the linear expression
. If
c
is an inequality (resp., equality) constraint, then the built linear expression is unique up to a positive (resp., non-zero) factor.
Parma_Polyhedra_Library::Linear_Expression::Linear_Expression | ( | const Generator & | g | ) | [explicit] |
Builds the linear expression corresponding to generator g
(for points and closure points, the divisor is not copied).
Given the generator (where, for lines and rays, we have
), this builds the linear expression
. The inhomogeneous term of the linear expression will always be 0. If
g
is a ray, point or closure point (resp., a line), then the linear expression is unique up to a positive (resp., non-zero) factor.
Parma_Polyhedra_Library::Linear_Expression::Linear_Expression | ( | const Congruence & | cg | ) | [explicit] |
Builds the linear expression corresponding to congruence cg
.
Given the congruence , this builds the linear expression
.
Parma_Polyhedra_Library::Linear_Expression::Linear_Expression | ( | Variable | v | ) | [related] |
Builds the linear expression corresponding to the variable v
.
std::length_error | Thrown if the space dimension of v exceeds Linear_Expression::max_space_dimension() . |
Linear_Expression & operator+= | ( | Linear_Expression & | e, | |
Variable | v | |||
) | [friend] |
Returns the linear expression e
+ v
and assigns it to e
.
std::length_error | Thrown if the space dimension of v exceeds Linear_Expression::max_space_dimension() . |
Linear_Expression & operator-= | ( | Linear_Expression & | e, | |
Variable | v | |||
) | [friend] |
Returns the linear expression e
- v
and assigns it to e
.
std::length_error | Thrown if the space dimension of v exceeds Linear_Expression::max_space_dimension() . |