|
PPL
0.12.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 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. | |
| 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. | |
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. | |
| 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) |
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 |