| PPL
    1.1
    | 
A generic Sum Floating Point Expression. More...
#include <ppl.hh>

| Public Types | |
| typedef Floating_Point_Expression < FP_Interval_Type, FP_Format > ::FP_Linear_Form | FP_Linear_Form | 
| Alias for the Linear_Form<FP_Interval_Type> from Floating_Point_Expression. | |
| typedef Floating_Point_Expression < FP_Interval_Type, FP_Format > ::FP_Interval_Abstract_Store | FP_Interval_Abstract_Store | 
| Alias for the Box<FP_Interval_Type> from Floating_Point_Expression. | |
| typedef Floating_Point_Expression < FP_Interval_Type, FP_Format > ::FP_Linear_Form_Abstract_Store | FP_Linear_Form_Abstract_Store | 
| Alias for the std::map<dimension_type, FP_Linear_Form> from Floating_Point_Expression. | |
| typedef Floating_Point_Expression < FP_Interval_Type, FP_Format > ::boundary_type | boundary_type | 
| Alias for the FP_Interval_Type::boundary_type from Floating_Point_Expression. | |
| typedef Floating_Point_Expression < FP_Interval_Type, FP_Format > ::info_type | info_type | 
| Alias for the FP_Interval_Type::info_type from Floating_Point_Expression. | |
|  Public Types inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format > | |
| typedef Linear_Form < FP_Interval_Type > | FP_Linear_Form | 
| Alias for a linear form with template argument FP_Interval_Type. | |
| typedef Box< FP_Interval_Type > | FP_Interval_Abstract_Store | 
| Alias for a map that associates a variable index to an interval.  More... | |
| typedef std::map < dimension_type, FP_Linear_Form > | FP_Linear_Form_Abstract_Store | 
| Alias for a map that associates a variable index to a linear form.  More... | |
| typedef FP_Interval_Type::boundary_type | boundary_type | 
| The floating point format used by the analyzer. | |
| typedef FP_Interval_Type::info_type | info_type | 
| The interval policy used by FP_Interval_Type. | |
| Public Member Functions | |
| bool | linearize (const FP_Interval_Abstract_Store &int_store, const FP_Linear_Form_Abstract_Store &lf_store, FP_Linear_Form &result) const | 
| Linearizes the expression in a given astract store.  More... | |
| void | m_swap (Sum_Floating_Point_Expression< FP_Interval_Type, FP_Format > &y) | 
| Swaps *thiswithy. | |
| Constructors and Destructor | |
| Sum_Floating_Point_Expression (Floating_Point_Expression< FP_Interval_Type, FP_Format > *const x, Floating_Point_Expression< FP_Interval_Type, FP_Format > *const y) | |
| Constructor with two parameters: builds the sum floating point expression corresponding to x  y. | |
| ~Sum_Floating_Point_Expression () | |
| Destructor. | |
|  Public Member Functions inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format > | |
| virtual | ~Floating_Point_Expression () | 
| Destructor. | |
| Related Functions | |
| (Note that these are not member functions.) | |
| template<typename FP_Interval_Type , typename FP_Format > | |
| void | swap (Sum_Floating_Point_Expression< FP_Interval_Type, FP_Format > &x, Sum_Floating_Point_Expression< FP_Interval_Type, FP_Format > &y) | 
| Swaps xwithy.  More... | |
| template<typename FP_Interval_Type , typename FP_Format > | |
| void | swap (Sum_Floating_Point_Expression< FP_Interval_Type, FP_Format > &x, Sum_Floating_Point_Expression< FP_Interval_Type, FP_Format > &y) | 
| Additional Inherited Members | |
|  Static Public Member Functions inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format > | |
| static bool | overflows (const FP_Linear_Form &lf) | 
| Verifies if a given linear form overflows.  More... | |
| static void | relative_error (const FP_Linear_Form &lf, FP_Linear_Form &result) | 
| Computes the relative error of a given linear form.  More... | |
| static void | intervalize (const FP_Linear_Form &lf, const FP_Interval_Abstract_Store &store, FP_Interval_Type &result) | 
| Makes resultbecome an interval that overapproximates all the possible values oflfin the interval abstract storestore.  More... | |
|  Static Public Attributes inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format > | |
| static FP_Interval_Type | absolute_error = compute_absolute_error() | 
| Absolute error.  More... | |
A generic Sum Floating Point Expression.
FP_Interval_Type represents the type of the intervals used in the abstract domain.FP_Format represents the floating point format used in the concrete domain.Let  and
 and  be two linear forms and
 be two linear forms and  a sound abstract operator on linear forms such that:
 a sound abstract operator on linear forms such that:
![\[ \left(i + \sum_{v \in \cV}i_{v}v \right) \aslf \left(i' + \sum_{v \in \cV}i'_{v}v \right) = \left(i \asifp i'\right) + \sum_{v \in \cV}\left(i_{v} \asifp i'_{v} \right)v. \]](form_815.png) 
Given an expression  and a composite abstract store
 and a composite abstract store  , we construct the interval linear form
, we construct the interval linear form  as follows:
 as follows: 
![\[ \linexprenv{e_{1} \oplus e_{2}}{\rho^{\#}}{\rho^{\#}_l} = \linexprenv{e_{1}}{\rho^{\#}}{\rho^{\#}_l} \aslf \linexprenv{e_{2}}{\rho^{\#}}{\rho^{\#}_l} \aslf \varepsilon_{\mathbf{f}}\left(\linexprenv{e_{1}}{\rho^{\#}}{\rho^{\#}_l} \right) \aslf \varepsilon_{\mathbf{f}}\left(\linexprenv{e_{2}}{\rho^{\#}}{\rho^{\#}_l} \right) \aslf mf_{\mathbf{f}}[-1, 1] \]](form_818.png) 
 where  is the linear form computed by calling method
 is the linear form computed by calling method Floating_Point_Expression::relative_error on  and
 and  is a rounding error defined in
 is a rounding error defined in Floating_Point_Expression::absolute_error. 
| 
 | virtual | 
Linearizes the expression in a given astract store.
Makes result become the linearization of *this in the given composite abstract store.
| int_store | The interval abstract store. | 
| lf_store | The linear form abstract store. | 
| result | The modified linear form. | 
true if the linearization succeeded, false otherwise.Note that all variables occuring in the expressions represented by first_operand and second_operand MUST have an associated value in int_store. If this precondition is not met, calling the method causes an undefined behavior.
See the class description for a detailed explanation of how result is computed. 
Implements Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >.
| 
 | related | 
Swaps x with y. 
| 
 | related |