PPL 0.12
|
A linear expression. More...
#include <ppl.hh>
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 (Variable v) | |
Builds the linear expression corresponding to the variable v . | |
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 Grid_Generator &g) | |
Builds the linear expression corresponding to grid generator g (for points, parameters and lines 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 . | |
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 . | |
memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this . | |
void | ascii_dump () const |
Writes to std::cerr an ASCII representation of *this . | |
void | ascii_dump (std::ostream &s) const |
Writes to s an ASCII representation of *this . | |
void | print () const |
Prints *this to std::cerr using operator<< . | |
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. | |
bool | OK () const |
Checks if all the invariants are satisfied. | |
void | m_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 void | initialize () |
Initializes the class. | |
static void | finalize () |
Finalizes the class. | |
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+ (Variable v, const Linear_Expression &e) |
Returns the linear expression v + e . | |
Linear_Expression | operator+ (Variable v, Variable w) |
Returns the linear expression v + w . | |
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- (Variable v, Variable w) |
Returns the linear expression v - w . | |
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- (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* (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 . | |
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 . | |
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 . | |
Related Functions | |
(Note that these are not member functions.) | |
void | swap (Linear_Expression &x, Linear_Expression &y) |
Swaps x with y . | |
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 . | |
std::ostream & | operator<< (std::ostream &s, const Linear_Expression &e) |
Output operator. |
A linear expression.
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.
Linear expressions are the basic blocks for defining both constraints (i.e., linear equalities or inequalities) and generators (i.e., lines, rays, points and closure points). A full set of functions is defined to provide a convenient interface for building complex linear expressions starting from simpler ones and from objects of the classes Variable and Coefficient: available operators include unary negation, binary addition and subtraction, as well as multiplication by a Coefficient. The space dimension of a linear expression is defined as the maximum space dimension of the arguments used to build it: in particular, the space dimension of a Variable 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 | ( | Variable | v | ) |
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() . |
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 Grid_Generator & | g | ) | [explicit] |
Builds the linear expression corresponding to grid generator g
(for points, parameters and lines the divisor is not copied).
Given the grid generator this builds the linear expression
. The inhomogeneous term of the linear expression is always 0.
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
.
Linear_Expression operator+ | ( | const Linear_Expression & | e1, |
const Linear_Expression & | e2 | ||
) | [friend] |
Returns the linear expression e1
+ e2
.
Linear_Expression operator+ | ( | Coefficient_traits::const_reference | n, |
const Linear_Expression & | e | ||
) | [friend] |
Returns the linear expression n
+ e
.
Linear_Expression operator+ | ( | const Linear_Expression & | e, |
Coefficient_traits::const_reference | n | ||
) | [friend] |
Returns the linear expression e
+ n
.
Linear_Expression operator+ | ( | Variable | v, |
const Linear_Expression & | e | ||
) | [friend] |
Returns the linear expression v
+ e
.
Linear_Expression operator+ | ( | Variable | v, |
Variable | w | ||
) | [friend] |
Returns the linear expression v
+ w
.
Linear_Expression operator- | ( | const Linear_Expression & | e | ) | [friend] |
Returns the linear expression - e
.
Linear_Expression operator- | ( | const Linear_Expression & | e1, |
const Linear_Expression & | e2 | ||
) | [friend] |
Returns the linear expression e1
- e2
.
Linear_Expression operator- | ( | Variable | v, |
Variable | w | ||
) | [friend] |
Returns the linear expression v
- w
.
Linear_Expression operator- | ( | Coefficient_traits::const_reference | n, |
const Linear_Expression & | e | ||
) | [friend] |
Returns the linear expression n
- e
.
Linear_Expression operator- | ( | const Linear_Expression & | e, |
Coefficient_traits::const_reference | n | ||
) | [friend] |
Returns the linear expression e
- n
.
Linear_Expression operator- | ( | Variable | v, |
const Linear_Expression & | e | ||
) | [friend] |
Returns the linear expression v
- e
.
Linear_Expression operator- | ( | const Linear_Expression & | e, |
Variable | v | ||
) | [friend] |
Returns the linear expression e
- v
.
Linear_Expression operator* | ( | Coefficient_traits::const_reference | n, |
const Linear_Expression & | e | ||
) | [friend] |
Returns the linear expression n
* e
.
Linear_Expression operator* | ( | const Linear_Expression & | e, |
Coefficient_traits::const_reference | n | ||
) | [friend] |
Returns the linear expression e
* n
.
Linear_Expression & operator+= | ( | Linear_Expression & | e1, |
const Linear_Expression & | e2 | ||
) | [friend] |
Returns the linear expression e1
+ e2
and assigns it to e1
.
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, |
Coefficient_traits::const_reference | n | ||
) | [friend] |
Returns the linear expression e
+ n
and assigns it to e
.
Linear_Expression & operator-= | ( | Linear_Expression & | e1, |
const Linear_Expression & | e2 | ||
) | [friend] |
Returns the linear expression e1
- e2
and assigns it to e1
.
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, |
Coefficient_traits::const_reference | n | ||
) | [friend] |
Returns the linear expression e
- n
and assigns it to e
.
Linear_Expression & operator*= | ( | Linear_Expression & | e, |
Coefficient_traits::const_reference | n | ||
) | [friend] |
Returns the linear expression n
* e
and assigns it to e
.
Linear_Expression & add_mul_assign | ( | Linear_Expression & | e, |
Coefficient_traits::const_reference | n, | ||
Variable | v | ||
) | [friend] |
Returns the linear expression e
+ n
* v
and assigns it to e
.
Linear_Expression & sub_mul_assign | ( | Linear_Expression & | e, |
Coefficient_traits::const_reference | n, | ||
Variable | v | ||
) | [friend] |
Returns the linear expression e
- n
* v
and assigns it to e
.
void swap | ( | Linear_Expression & | x, |
Linear_Expression & | y | ||
) | [related] |
Swaps x
with y
.
Linear_Expression operator+ | ( | const Linear_Expression & | e, |
Variable | v | ||
) | [related] |
Returns the linear expression e
+ v
.
Linear_Expression operator+ | ( | const Linear_Expression & | e | ) | [related] |
Returns the linear expression e
.
std::ostream & operator<< | ( | std::ostream & | s, |
const Linear_Expression & | e | ||
) | [related] |
Output operator.