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.
|
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 &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+ (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+ (const Linear_Expression &e) |
| | Returns the linear expression e.
|
| 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- (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* (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.
|
| std::ostream & | operator<< (std::ostream &s, const Linear_Expression &e) |
| | Output operator.
|
| 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) |
| void | swap (Linear_Expression &x, Linear_Expression &y) |
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.
- How to build a linear expression.
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.
- Example
- The following code builds the linear expression
, having space dimension
: Another way to build the same linear expression is: Note that 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.