PPL
1.2
|
A linear form with interval coefficients. More...
#include <Linear_Form_defs.hh>
Public Member Functions | |
Linear_Form () | |
Default constructor: returns a copy of Linear_Form::zero(). More... | |
Linear_Form (const Linear_Form &f) | |
Ordinary copy constructor. More... | |
~Linear_Form () | |
Destructor. More... | |
Linear_Form (const C &n) | |
Builds the linear form corresponding to the inhomogeneous term n . More... | |
Linear_Form (Variable v) | |
Builds the linear form corresponding to the variable v . More... | |
Linear_Form (const Linear_Expression &e) | |
Builds a linear form approximating the linear expression e . More... | |
dimension_type | space_dimension () const |
Returns the dimension of the vector space enclosing *this . More... | |
const C & | coefficient (Variable v) const |
Returns the coefficient of v in *this . More... | |
const C & | inhomogeneous_term () const |
Returns the inhomogeneous term of *this . More... | |
void | negate () |
Negates all the coefficients of *this . More... | |
memory_size_type | total_memory_in_bytes () const |
Returns a lower bound to the total size in bytes of the memory occupied by *this . More... | |
memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this . More... | |
void | ascii_dump () const |
Writes to std::cerr an ASCII representation of *this . More... | |
void | ascii_dump (std::ostream &s) const |
Writes to s an ASCII representation of *this . More... | |
void | print () const |
Prints *this to std::cerr using operator<< . More... | |
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. More... | |
bool | OK () const |
Checks if all the invariants are satisfied. More... | |
void | m_swap (Linear_Form &y) |
Swaps *this with y . More... | |
bool | overflows () const |
Verifies if the linear form overflows. More... | |
void | relative_error (Floating_Point_Format analyzed_format, Linear_Form &result) const |
Computes the relative error associated to floating point computations that operate on a quantity that is overapproximated by *this . More... | |
template<typename Target > | |
bool | intervalize (const FP_Oracle< Target, C > &oracle, C &result) const |
Makes result become an interval that overapproximates all the possible values of *this . More... | |
Static Public Member Functions | |
static dimension_type | max_space_dimension () |
Returns the maximum space dimension a Linear_Form can handle. More... | |
Private Types | |
typedef std::vector< C > | vec_type |
Type of the container vector. More... | |
Private Member Functions | |
Linear_Form (dimension_type sz, bool) | |
Implementation sizing constructor. More... | |
Linear_Form (Variable v, Variable w) | |
Builds the linear form corresponding to the difference of v and w . More... | |
dimension_type | size () const |
Gives the number of generic coefficients currently in use. More... | |
void | extend (dimension_type sz) |
Extends the vector of *this to size sz . More... | |
C & | operator[] (dimension_type i) |
Returns a reference to vec [i]. More... | |
const C & | operator[] (dimension_type i) const |
Returns a const reference to vec [i]. More... | |
Private Attributes | |
vec_type | vec |
The container vector. More... | |
Static Private Attributes | |
static C | zero |
The generic coefficient equal to the singleton zero. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<typename FP_Interval_Type > | |
void | discard_occurrences (std::map< dimension_type, Linear_Form< FP_Interval_Type > > &lf_store, Variable var) |
template<typename FP_Interval_Type > | |
void | affine_form_image (std::map< dimension_type, Linear_Form< FP_Interval_Type > > &lf_store, Variable var, const Linear_Form< FP_Interval_Type > &lf) |
template<typename FP_Interval_Type > | |
void | upper_bound_assign (std::map< dimension_type, Linear_Form< FP_Interval_Type > > &ls1, const std::map< dimension_type, Linear_Form< FP_Interval_Type > > &ls2) |
template<typename C > | |
void | swap (Linear_Form< C > &x, Linear_Form< C > &y) |
Swaps x with y . More... | |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f1, const Linear_Form< C > &f2) |
Returns the linear form f1 + f2 . More... | |
template<typename C > | |
Linear_Form< C > | operator+ (Variable v, const Linear_Form< C > &f) |
Returns the linear form v + f . More... | |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f, Variable v) |
Returns the linear form f + v . More... | |
template<typename C > | |
Linear_Form< C > | operator+ (const C &n, const Linear_Form< C > &f) |
Returns the linear form n + f . More... | |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f, const C &n) |
Returns the linear form f + n . More... | |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f) |
Returns the linear form f . More... | |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f) |
Returns the linear form - f . More... | |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f1, const Linear_Form< C > &f2) |
Returns the linear form f1 - f2 . More... | |
template<typename C > | |
Linear_Form< C > | operator- (Variable v, const Linear_Form< C > &f) |
Returns the linear form v - f . More... | |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f, Variable v) |
Returns the linear form f - v . More... | |
template<typename C > | |
Linear_Form< C > | operator- (const C &n, const Linear_Form< C > &f) |
Returns the linear form n - f . More... | |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f, const C &n) |
Returns the linear form f - n . More... | |
template<typename C > | |
Linear_Form< C > | operator* (const C &n, const Linear_Form< C > &f) |
Returns the linear form n * f . More... | |
template<typename C > | |
Linear_Form< C > | operator* (const Linear_Form< C > &f, const C &n) |
Returns the linear form f * n . More... | |
template<typename C > | |
Linear_Form< C > & | operator+= (Linear_Form< C > &f1, const Linear_Form< C > &f2) |
Returns the linear form f1 + f2 and assigns it to e1 . More... | |
template<typename C > | |
Linear_Form< C > & | operator+= (Linear_Form< C > &f, Variable v) |
Returns the linear form f + v and assigns it to f . More... | |
template<typename C > | |
Linear_Form< C > & | operator+= (Linear_Form< C > &f, const C &n) |
Returns the linear form f + n and assigns it to f . More... | |
template<typename C > | |
Linear_Form< C > & | operator-= (Linear_Form< C > &f1, const Linear_Form< C > &f2) |
Returns the linear form f1 - f2 and assigns it to f1 . More... | |
template<typename C > | |
Linear_Form< C > & | operator-= (Linear_Form< C > &f, Variable v) |
Returns the linear form f - v and assigns it to f . More... | |
template<typename C > | |
Linear_Form< C > & | operator-= (Linear_Form< C > &f, const C &n) |
Returns the linear form f - n and assigns it to f . More... | |
template<typename C > | |
Linear_Form< C > & | operator*= (Linear_Form< C > &f, const C &n) |
Returns the linear form n * f and assigns it to f . More... | |
template<typename C > | |
Linear_Form< C > & | operator/= (Linear_Form< C > &f, const C &n) |
Returns the linear form f / n and assigns it to f . More... | |
template<typename C > | |
bool | operator== (const Linear_Form< C > &x, const Linear_Form< C > &y) |
Returns true if and only if x and y are equal. More... | |
template<typename C > | |
bool | operator!= (const Linear_Form< C > &x, const Linear_Form< C > &y) |
Returns true if and only if x and y are different. More... | |
template<typename C > | |
std::ostream & | operator<< (std::ostream &s, const Linear_Form< C > &f) |
Output operator. More... | |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f) |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f, const C &n) |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f, const Variable v) |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f, const C &n) |
template<typename C > | |
Linear_Form< C > | operator- (const Variable v, const Variable w) |
template<typename C > | |
Linear_Form< C > | operator* (const Linear_Form< C > &f, const C &n) |
template<typename C > | |
Linear_Form< C > & | operator+= (Linear_Form< C > &f, const C &n) |
template<typename C > | |
Linear_Form< C > & | operator-= (Linear_Form< C > &f, const C &n) |
template<typename C > | |
bool | operator!= (const Linear_Form< C > &x, const Linear_Form< C > &y) |
template<typename C > | |
void | swap (Linear_Form< C > &x, Linear_Form< C > &y) |
template<typename C > | |
Linear_Form< C > | operator+ (const Linear_Form< C > &f1, const Linear_Form< C > &f2) |
template<typename C > | |
Linear_Form< C > | operator+ (const Variable v, const Linear_Form< C > &f) |
template<typename C > | |
Linear_Form< C > | operator+ (const C &n, const Linear_Form< C > &f) |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f) |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f1, const Linear_Form< C > &f2) |
template<typename C > | |
Linear_Form< C > | operator- (const Variable v, const Linear_Form< C > &f) |
template<typename C > | |
Linear_Form< C > | operator- (const Linear_Form< C > &f, const Variable v) |
template<typename C > | |
Linear_Form< C > | operator- (const C &n, const Linear_Form< C > &f) |
template<typename C > | |
Linear_Form< C > | operator* (const C &n, const Linear_Form< C > &f) |
template<typename C > | |
Linear_Form< C > & | operator+= (Linear_Form< C > &f1, const Linear_Form< C > &f2) |
template<typename C > | |
Linear_Form< C > & | operator+= (Linear_Form< C > &f, const Variable v) |
template<typename C > | |
Linear_Form< C > & | operator-= (Linear_Form< C > &f1, const Linear_Form< C > &f2) |
template<typename C > | |
Linear_Form< C > & | operator-= (Linear_Form< C > &f, const Variable v) |
template<typename C > | |
Linear_Form< C > & | operator*= (Linear_Form< C > &f, const C &n) |
template<typename C > | |
Linear_Form< C > & | operator/= (Linear_Form< C > &f, const C &n) |
template<typename C > | |
bool | operator== (const Linear_Form< C > &x, const Linear_Form< C > &y) |
template<typename C > | |
std::ostream & | operator<< (std::ostream &s, const Linear_Form< C > &f) |
A linear form with interval coefficients.
An object of the class Linear_Form represents the interval linear form
where is the dimension of the vector space, each
is the coefficient of the
-th variable
and
is the inhomogeneous term. The coefficients and the inhomogeneous term of the linear form have the template parameter
C
as their type. C
must be the type of an Interval.
C
. Available operators include binary addition and subtraction, as well as multiplication and division by a coefficient. The space dimension of a linear form is defined as the highest variable dimension among variables that have a nonzero coefficient in the linear form, or zero if no such variable exists. The space dimension for each variable T
of an Interval with floating point coefficients (though any integral type may also be used), the following code builds the interval linear form lf_x5
is created with space dimension 6, while lf
is created with space dimension 0 and then extended first to space dimension 2 when x2
is subtracted and finally to space dimension 6 when lf_x5
is added. Definition at line 261 of file Linear_Form_defs.hh.
|
private |
Type of the container vector.
Definition at line 406 of file Linear_Form_defs.hh.
|
inline |
Default constructor: returns a copy of Linear_Form::zero().
Definition at line 41 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::compute_capacity(), and Parma_Polyhedra_Library::Linear_Form< C >::vec.
|
inline |
Ordinary copy constructor.
Definition at line 55 of file Linear_Form_inlines.hh.
|
inline |
|
inlineexplicit |
Builds the linear form corresponding to the inhomogeneous term n
.
Definition at line 80 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::compute_capacity(), and Parma_Polyhedra_Library::Linear_Form< C >::vec.
Parma_Polyhedra_Library::Linear_Form< C >::Linear_Form | ( | Variable | v | ) |
Builds the linear form corresponding to the variable v
.
std::length_error | Thrown if the space dimension of v exceeds Linear_Form::max_space_dimension() . |
Definition at line 37 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::compute_capacity(), Parma_Polyhedra_Library::Linear_Form< C >::max_space_dimension(), Parma_Polyhedra_Library::Variable::space_dimension(), Parma_Polyhedra_Library::Linear_Form< C >::vec, and Parma_Polyhedra_Library::Linear_Form< C >::zero.
Parma_Polyhedra_Library::Linear_Form< C >::Linear_Form | ( | const Linear_Expression & | e | ) |
Builds a linear form approximating the linear expression e
.
Definition at line 72 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Expression::coefficient(), Parma_Polyhedra_Library::compute_capacity(), Parma_Polyhedra_Library::Linear_Expression::inhomogeneous_term(), Parma_Polyhedra_Library::Linear_Form< C >::max_space_dimension(), Parma_Polyhedra_Library::Linear_Expression::space_dimension(), and Parma_Polyhedra_Library::Linear_Form< C >::vec.
|
inlineprivate |
Implementation sizing constructor.
The bool parameter is just to avoid problems with the constructor Linear_Form(const C& n).
Definition at line 48 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::compute_capacity(), and Parma_Polyhedra_Library::Linear_Form< C >::vec.
|
private |
Builds the linear form corresponding to the difference of v
and w
.
std::length_error | Thrown if the space dimension of v or the one of w exceed Linear_Form::max_space_dimension() . |
Definition at line 52 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::compute_capacity(), Parma_Polyhedra_Library::Linear_Form< C >::max_space_dimension(), Parma_Polyhedra_Library::Variable::space_dimension(), Parma_Polyhedra_Library::Linear_Form< C >::vec, and Parma_Polyhedra_Library::Linear_Form< C >::zero.
void Parma_Polyhedra_Library::Linear_Form< C >::ascii_dump | ( | ) | const |
Writes to std::cerr
an ASCII representation of *this
.
|
inline |
Writes to s
an ASCII representation of *this
.
Definition at line 200 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::Implementation::BD_Shapes::separator.
|
inline |
Loads from s
an ASCII representation (as produced by ascii_dump(std::ostream&) const) and sets *this
accordingly. Returns true
if successful, false
otherwise.
Definition at line 213 of file Linear_Form_inlines.hh.
|
inline |
Returns the coefficient of v
in *this
.
Definition at line 93 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::Variable::id(), and Parma_Polyhedra_Library::Variable::space_dimension().
Referenced by Parma_Polyhedra_Library::Box< ITV >::affine_form_image(), Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::intervalize(), Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::overflows(), and Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::relative_error().
|
inlineprivate |
Extends the vector of *this
to size sz
.
Definition at line 72 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::compute_capacity().
Referenced by Parma_Polyhedra_Library::Linear_Form< C >::operator+(), Parma_Polyhedra_Library::Linear_Form< C >::operator+=(), Parma_Polyhedra_Library::Linear_Form< C >::operator-(), and Parma_Polyhedra_Library::Linear_Form< C >::operator-=().
|
inline |
Returns the size in bytes of the memory managed by *this
.
Definition at line 393 of file Linear_Form_templates.hh.
|
inline |
Returns the inhomogeneous term of *this
.
Definition at line 116 of file Linear_Form_inlines.hh.
Referenced by Parma_Polyhedra_Library::Box< ITV >::affine_form_image(), Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::intervalize(), Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::overflows(), and Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::relative_error().
bool Parma_Polyhedra_Library::Linear_Form< C >::intervalize | ( | const FP_Oracle< Target, C > & | oracle, |
C & | result | ||
) | const |
Makes result
become an interval that overapproximates all the possible values of *this
.
oracle | The FP_Oracle to be queried. |
result | The linear form that will store the result. |
true
if the operation was successful, false
otherwise (the possibility of failure depends on the oracle's implementation).Target
specifies the implementation of Concrete_Expression to be used.This method makes result
become , that is an interval defined as:
where is an interval (provided by the oracle) that correctly approximates the value of
.
The result is undefined if C
is not the type of an interval with floating point boundaries.
Definition at line 492 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::FP_Oracle< Target, FP_Interval_Type >::get_interval().
|
inline |
Swaps *this
with y
.
Definition at line 193 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::swap(), and Parma_Polyhedra_Library::Linear_Form< C >::vec.
Referenced by Parma_Polyhedra_Library::Linear_Form< C >::swap().
|
inlinestatic |
Returns the maximum space dimension a Linear_Form can handle.
Definition at line 35 of file Linear_Form_inlines.hh.
Referenced by Parma_Polyhedra_Library::Linear_Form< C >::Linear_Form().
void Parma_Polyhedra_Library::Linear_Form< C >::negate | ( | ) |
Negates all the coefficients of *this
.
Definition at line 384 of file Linear_Form_templates.hh.
Referenced by Parma_Polyhedra_Library::Octagonal_Shape< T >::affine_form_image(), Parma_Polyhedra_Library::Opposite_Floating_Point_Expression< FP_Interval_Type, FP_Format >::linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::linearize(), and Parma_Polyhedra_Library::BD_Shape< T >::two_variables_affine_form_image().
bool Parma_Polyhedra_Library::Linear_Form< C >::OK | ( | ) | const |
Checks if all the invariants are satisfied.
Definition at line 404 of file Linear_Form_templates.hh.
|
inlineprivate |
Returns a reference to vec
[i].
Definition at line 102 of file Linear_Form_inlines.hh.
|
inlineprivate |
Returns a const reference to vec
[i].
Definition at line 109 of file Linear_Form_inlines.hh.
|
inline |
Verifies if the linear form overflows.
false
if all coefficients in lf
are bounded, true
otherwise.T
must be the type of possibly unbounded quantities.
Definition at line 234 of file Linear_Form_inlines.hh.
Referenced by Parma_Polyhedra_Library::Concrete_Expression< Target >::add_linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::cast_linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::div_linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::mul_linearize(), and Parma_Polyhedra_Library::Concrete_Expression< Target >::sub_linearize().
void Parma_Polyhedra_Library::Linear_Form< C >::print | ( | ) | const |
Prints *this
to std::cerr
using operator<<
.
void Parma_Polyhedra_Library::Linear_Form< C >::relative_error | ( | Floating_Point_Format | analyzed_format, |
Linear_Form< C > & | result | ||
) | const |
Computes the relative error associated to floating point computations that operate on a quantity that is overapproximated by *this
.
analyzed_format | The floating point format used by the analyzed program. |
result | Becomes the linear form corresponding to the relative error committed. |
This method makes result
become a linear form obtained by evaluating the function on the linear form. This function is defined as:
where p is the fraction size in bits for the format and
the base.
The result is undefined if T
is not the type of an interval with floating point boundaries.
Definition at line 416 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::float_ieee754_half::BASE, Parma_Polyhedra_Library::float_ieee754_single::BASE, Parma_Polyhedra_Library::float_ieee754_double::BASE, Parma_Polyhedra_Library::float_ibm_single::BASE, Parma_Polyhedra_Library::float_intel_double_extended::BASE, Parma_Polyhedra_Library::float_ieee754_quad::BASE, Parma_Polyhedra_Library::GREATER_OR_EQUAL, Parma_Polyhedra_Library::i_constraint(), Parma_Polyhedra_Library::IBM_SINGLE, Parma_Polyhedra_Library::IEEE754_DOUBLE, Parma_Polyhedra_Library::IEEE754_HALF, Parma_Polyhedra_Library::IEEE754_QUAD, Parma_Polyhedra_Library::IEEE754_SINGLE, Parma_Polyhedra_Library::INTEL_DOUBLE_EXTENDED, Parma_Polyhedra_Library::LESS_OR_EQUAL, Parma_Polyhedra_Library::float_ieee754_half::MANTISSA_BITS, Parma_Polyhedra_Library::float_ieee754_single::MANTISSA_BITS, Parma_Polyhedra_Library::float_ieee754_double::MANTISSA_BITS, Parma_Polyhedra_Library::float_ibm_single::MANTISSA_BITS, Parma_Polyhedra_Library::float_intel_double_extended::MANTISSA_BITS, Parma_Polyhedra_Library::float_ieee754_quad::MANTISSA_BITS, and Parma_Polyhedra_Library::msb_position().
Referenced by Parma_Polyhedra_Library::Concrete_Expression< Target >::add_linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::cast_linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::div_linearize(), Parma_Polyhedra_Library::Concrete_Expression< Target >::mul_linearize(), and Parma_Polyhedra_Library::Concrete_Expression< Target >::sub_linearize().
|
inlineprivate |
Gives the number of generic coefficients currently in use.
Definition at line 66 of file Linear_Form_inlines.hh.
Referenced by Parma_Polyhedra_Library::Linear_Form< C >::operator*(), Parma_Polyhedra_Library::Linear_Form< C >::operator*=(), Parma_Polyhedra_Library::Linear_Form< C >::operator+(), Parma_Polyhedra_Library::Linear_Form< C >::operator+=(), Parma_Polyhedra_Library::Linear_Form< C >::operator-(), Parma_Polyhedra_Library::Linear_Form< C >::operator-=(), Parma_Polyhedra_Library::Linear_Form< C >::operator/=(), and Parma_Polyhedra_Library::Linear_Form< C >::operator==().
|
inline |
Returns the dimension of the vector space enclosing *this
.
Definition at line 87 of file Linear_Form_inlines.hh.
Referenced by Parma_Polyhedra_Library::Box< ITV >::affine_form_image(), Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::intervalize(), Parma_Polyhedra_Library::Linear_Form< C >::operator+(), Parma_Polyhedra_Library::Linear_Form< C >::operator+=(), Parma_Polyhedra_Library::Linear_Form< C >::operator-(), Parma_Polyhedra_Library::Linear_Form< C >::operator-=(), Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::overflows(), Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >::relative_error(), Parma_Polyhedra_Library::Box< ITV >::throw_dimension_incompatible(), Parma_Polyhedra_Library::Octagonal_Shape< T >::throw_dimension_incompatible(), and Parma_Polyhedra_Library::Polyhedron::throw_dimension_incompatible().
|
inline |
Returns a lower bound to the total size in bytes of the memory occupied by *this
.
Definition at line 122 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::external_memory_in_bytes().
|
related |
Assigns the linear form lf
to var
in the linear form abstract store lf_store
, then discards all occurrences of var
from it.
Definition at line 524 of file Float_inlines.hh.
|
related |
Discards all linear forms containing variable var
from the linear form abstract store lf_store
.
Definition at line 135 of file Float_templates.hh.
|
related |
Definition at line 187 of file Linear_Form_inlines.hh.
|
related |
Returns true
if and only if x
and y
are different.
|
related |
Returns the linear form n
* f
.
|
related |
Returns the linear form f
* n
.
|
related |
Definition at line 164 of file Linear_Form_inlines.hh.
|
related |
Definition at line 253 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size().
|
friend |
|
friend |
|
related |
Returns the linear form n
* f
and assigns it to f
.
|
related |
Definition at line 328 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size().
|
friend |
|
related |
Returns the linear form f1
+ f2
.
|
related |
Returns the linear form v
+ f
.
|
related |
Returns the linear form f
+ v
.
|
related |
Returns the linear form n
+ f
.
|
related |
Returns the linear form f
+ n
.
|
related |
Returns the linear form f
.
|
related |
Definition at line 91 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size(), and Parma_Polyhedra_Library::Linear_Form< C >::vec.
|
related |
Definition at line 125 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::extend(), Parma_Polyhedra_Library::Variable::space_dimension(), and Parma_Polyhedra_Library::Linear_Form< C >::space_dimension().
|
related |
Definition at line 129 of file Linear_Form_inlines.hh.
|
related |
Definition at line 136 of file Linear_Form_inlines.hh.
|
related |
Definition at line 143 of file Linear_Form_inlines.hh.
|
related |
Definition at line 144 of file Linear_Form_templates.hh.
|
friend |
|
friend |
|
friend |
|
friend |
|
related |
Returns the linear form f1
+ f2
and assigns it to e1
.
|
related |
Returns the linear form f
+ v
and assigns it to f
.
std::length_error | Thrown if the space dimension of v exceeds Linear_Form::max_space_dimension() . |
|
related |
Returns the linear form f
+ n
and assigns it to f
.
|
related |
Definition at line 171 of file Linear_Form_inlines.hh.
|
related |
Definition at line 264 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::extend(), and Parma_Polyhedra_Library::Linear_Form< C >::size().
|
related |
Definition at line 279 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::extend(), Parma_Polyhedra_Library::Variable::space_dimension(), and Parma_Polyhedra_Library::Linear_Form< C >::space_dimension().
|
friend |
|
friend |
|
friend |
|
related |
Returns the linear form - f
.
|
related |
Returns the linear form f1
- f2
.
|
related |
Returns the linear form v
- f
.
|
related |
Returns the linear form f
- v
.
|
related |
Returns the linear form n
- f
.
|
related |
Returns the linear form f
- n
.
|
related |
Definition at line 150 of file Linear_Form_inlines.hh.
|
related |
Definition at line 153 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size().
|
related |
Definition at line 157 of file Linear_Form_inlines.hh.
|
related |
Definition at line 164 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size().
|
related |
Definition at line 200 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::extend(), Parma_Polyhedra_Library::Linear_Form< C >::size(), Parma_Polyhedra_Library::Variable::space_dimension(), and Parma_Polyhedra_Library::Linear_Form< C >::space_dimension().
|
related |
Definition at line 222 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::extend(), Parma_Polyhedra_Library::Variable::space_dimension(), and Parma_Polyhedra_Library::Linear_Form< C >::space_dimension().
|
related |
Definition at line 241 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size().
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
related |
Returns the linear form f1
- f2
and assigns it to f1
.
|
related |
Returns the linear form f
- v
and assigns it to f
.
std::length_error | Thrown if the space dimension of v exceeds Linear_Form::max_space_dimension() . |
|
related |
Returns the linear form f
- n
and assigns it to f
.
|
related |
Definition at line 179 of file Linear_Form_inlines.hh.
|
related |
Definition at line 296 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::extend(), and Parma_Polyhedra_Library::Linear_Form< C >::size().
|
related |
Definition at line 311 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::extend(), Parma_Polyhedra_Library::Variable::space_dimension(), and Parma_Polyhedra_Library::Linear_Form< C >::space_dimension().
|
friend |
|
friend |
|
friend |
|
related |
Returns the linear form f
/ n
and assigns it to f
.
Performs the division of a linear form by a scalar. It is up to the user to ensure that division by 0 is not performed.
|
related |
Definition at line 339 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size().
|
friend |
|
related |
Output operator.
|
related |
Definition at line 512 of file Linear_Form_templates.hh.
|
related |
Returns true
if and only if x
and y
are equal.
|
related |
Definition at line 350 of file Linear_Form_templates.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::size(), and Parma_Polyhedra_Library::Linear_Form< C >::zero.
|
friend |
|
friend |
|
related |
Swaps x
with y
.
|
related |
Definition at line 250 of file Linear_Form_inlines.hh.
References Parma_Polyhedra_Library::Linear_Form< C >::m_swap().
|
related |
Discards from ls1
all linear forms but those that are associated to the same variable in ls2
.
Definition at line 153 of file Float_templates.hh.
|
private |
The container vector.
Definition at line 409 of file Linear_Form_defs.hh.
Referenced by Parma_Polyhedra_Library::Linear_Form< C >::Linear_Form(), Parma_Polyhedra_Library::Linear_Form< C >::m_swap(), and Parma_Polyhedra_Library::Linear_Form< C >::operator+().
|
staticprivate |
The generic coefficient equal to the singleton zero.
Definition at line 403 of file Linear_Form_defs.hh.
Referenced by Parma_Polyhedra_Library::Linear_Form< C >::Linear_Form(), and Parma_Polyhedra_Library::Linear_Form< C >::operator==().