|
PPL
1.1
|
A generic Multiplication 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 (Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format > &y) |
Swaps *this with y. | |
Constructors and Destructor | |
| Multiplication_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 multiplication floating point expression corresponding to x y. | |
| ~Multiplication_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 (Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format > &x, Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format > &y) |
Swaps x with y. More... | |
| template<typename FP_Interval_Type , typename FP_Format > | |
| void | swap (Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format > &x, Multiplication_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 result become an interval that overapproximates all the possible values of lf in the interval abstract store store. 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 Multiplication 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
be two linear forms,
and
two sound abstract operators on linear forms such that:
Given an expression
and a composite abstract store
, we construct the interval linear form
as follows:
.
Given an expression
and a composite abstract store
, we construct the interval linear form
as follows:
Given an expression
and a composite abstract store
, we construct the interval linear form
as follows:
where
is the linear form computed by calling method Floating_Point_Expression::relative_error on
,
is the linear form computed by calling method Floating_Point_Expression::intervalize on
and
, and
is a rounding error defined in Floating_Point_Expression::absolute_error.
Even though we intervalize the first operand in the above example, the actual implementation utilizes an heuristics for choosing which of the two operands must be intervalized in order to obtain the most precise result.
|
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 |