#include <ppl.hh>
Inherits Parma_Polyhedra_Library::Linear_Row.
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 . | |
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 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- (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* (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 . | |
Related Functions | |
(Note that these are not member functions.) | |
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, 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 . | |
std::ostream & | operator<< (std::ostream &s, const Linear_Expression &e) |
Output operator. | |
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 | ( | Variable | v | ) | [inline] |
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- | ( | 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* | ( | 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 operator+ | ( | Variable | v, | |
Variable | w | |||
) | [related] |
Returns the linear expression v
+ w
.
Linear_Expression operator+ | ( | Variable | v, | |
const Linear_Expression & | e | |||
) | [related] |
Returns the linear expression v
+ e
.
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
.
Linear_Expression operator- | ( | Variable | v, | |
const Linear_Expression & | e | |||
) | [related] |
Returns the linear expression v
- e
.
Linear_Expression operator- | ( | const Linear_Expression & | e, | |
Variable | v | |||
) | [related] |
Returns the linear expression e
- v
.
std::ostream & operator<< | ( | std::ostream & | s, | |
const Linear_Expression & | e | |||
) | [related] |
Output operator.
void swap | ( | Parma_Polyhedra_Library::Linear_Expression & | x, | |
Parma_Polyhedra_Library::Linear_Expression & | y | |||
) | [related] |
Specializes std::swap
.