Main Page | Modules | Namespace List | Class Hierarchy | Class List | Namespace Members | Class Members | Related Pages

Parma_Polyhedra_Library::LinExpression Class Reference

A linear expression. More...

List of all members.

Public Member Functions

 LinExpression ()
 Default constructor: returns a copy of LinExpression::zero().
 LinExpression (const LinExpression &e)
 Ordinary copy-constructor.
 ~LinExpression ()
 Destructor.
 LinExpression (const Integer &n)
 Builds the linear expression corresponding to the inhomogeneous term n.
 LinExpression (const Variable v)
 Builds the linear expression corresponding to the variable v.
 LinExpression (const Constraint &c)
 Builds the linear expression corresponding to constraint c.
 LinExpression (const Generator &g)
 Builds the linear expression corresponding to generator g (for points and closure points, the divisor is not copied).
dimension_type space_dimension () const
 Returns the dimension of the vector space enclosing *this.
const Integercoefficient (Variable v) const
 Returns the coefficient of v in *this.
const Integerinhomogeneous_term () const
 Returns the inhomogeneous term of *this.

Static Public Member Functions

const LinExpressionzero ()
 Returns the (zero-dimension space) constant 0.

Related Functions

(Note that these are not member functions.)

LinExpression operator+ (const LinExpression &e1, const LinExpression &e2)
 Returns the linear expression e1 + e2.
LinExpression operator+ (const Integer &n, const LinExpression &e)
 Returns the linear expression n + e.
LinExpression operator+ (const LinExpression &e, const Integer &n)
 Returns the linear expression e + n.
LinExpression operator+ (const LinExpression &e)
 Returns the linear expression e.
LinExpression operator- (const LinExpression &e)
 Returns the linear expression - e.
LinExpression operator- (const LinExpression &e1, const LinExpression &e2)
 Returns the linear expression e1 - e2.
LinExpression operator- (const Integer &n, const LinExpression &e)
 Returns the linear expression n - e.
LinExpression operator- (const LinExpression &e, const Integer &n)
 Returns the linear expression e - n.
LinExpression operator * (const Integer &n, const LinExpression &e)
 Returns the linear expression n * e.
LinExpression operator * (const LinExpression &e, const Integer &n)
 Returns the linear expression e * n.
LinExpressionoperator+= (LinExpression &e1, const LinExpression &e2)
 Returns the linear expression e1 + e2 and assigns it to e1.
LinExpressionoperator+= (LinExpression &e, const Variable v)
 Returns the linear expression e + v and assigns it to e.
LinExpressionoperator+= (LinExpression &e, const Integer &n)
 Returns the linear expression e + n and assigns it to e.
LinExpressionoperator-= (LinExpression &e1, const LinExpression &e2)
 Returns the linear expression e1 - e2 and assigns it to e1.
LinExpressionoperator-= (LinExpression &e, const Variable v)
 Returns the linear expression e - v and assigns it to e.
LinExpressionoperator-= (LinExpression &e, const Integer &n)
 Returns the linear expression e - n and assigns it to e.
LinExpressionoperator *= (LinExpression &e, const Integer &n)
 Returns the linear expression n * e and assigns it to e.
std::ostream & operator<< (std::ostream &s, const LinExpression &e)
 Output operator.
void swap (Parma_Polyhedra_Library::LinExpression &x, Parma_Polyhedra_Library::LinExpression &y)
 Specializes std::swap.


Detailed Description

A linear expression.

An object of the class LinExpression represents the linear expression

\[ \sum_{i=0}^{n-1} a_i x_i + b \]

where $n$ is the dimension of the space, each $a_i$ is the integer coefficient of the i -th variable $x_i$ and $b$ 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 Integer: available operators include unary negation, binary addition and subtraction, as well as multiplication by an Integer. 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 Integer have space-dimension zero.

Example
The following code builds the linear expression $4x - 2y - z + 14$, having space-dimension $3$:
  LinExpression e = 4*x - 2*y - z + 14;
Another way to build the same linear expression is:
  LinExpression e1 = 4*x;
  LinExpression e2 = 2*y;
  LinExpression e3 = z;
  LinExpression e = LinExpression(14);
  e += e1 - e2 - e3;
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.


Constructor & Destructor Documentation

Parma_Polyhedra_Library::LinExpression::LinExpression const Constraint c  )  [explicit]
 

Builds the linear expression corresponding to constraint c.

Given the constraint $c = \bigl(\sum_{i=0}^{n-1} a_i x_i + b \relsym 0\bigr)$, where $\mathord{\relsym} \in \{ =, \geq, > \}$, builds the linear expression $\sum_{i=0}^{n-1} a_i x_i + b$. 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::LinExpression::LinExpression 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 $g = (\frac{a_0}{d}, \ldots, \frac{a_{n-1}}{d})^\transpose$ (where, for lines and rays, we have $d = 1$), builds the linear expression $\sum_{i=0}^{n-1} a_i x_i$. 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.


Generated on Fri Aug 20 20:04:45 2004 for PPL by doxygen 1.3.8-20040812