PPL
1.2
|
A generic Multiplication Floating Point Expression. More...
#include <Multiplication_Floating_Point_Expression_defs.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. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
![]() | |
typedef Linear_Form< FP_Interval_Type > | FP_Linear_Form |
Alias for a linear form with template argument FP_Interval_Type . More... | |
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. More... | |
typedef FP_Interval_Type::info_type | info_type |
The interval policy used by FP_Interval_Type . More... | |
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 . More... | |
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 . More... | |
~Multiplication_Floating_Point_Expression () | |
Destructor. More... | |
![]() | |
virtual | ~Floating_Point_Expression () |
Destructor. More... | |
Private Member Functions | |
Multiplication_Floating_Point_Expression (const Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format > &e) | |
Inhibited copy constructor. More... | |
Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format > & | operator= (const Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format > &e) |
Inhibited assignment operator. More... | |
Private Attributes | |
Floating_Point_Expression< FP_Interval_Type, FP_Format > * | first_operand |
Pointer to the first operand. More... | |
Floating_Point_Expression< FP_Interval_Type, FP_Format > * | second_operand |
Pointer to the second operand. More... | |
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 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 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.
Definition at line 131 of file Multiplication_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::boundary_type Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format >::boundary_type |
Alias for the FP_Interval_Type::boundary_type from Floating_Point_Expression.
Definition at line 166 of file Multiplication_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::FP_Interval_Abstract_Store Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format >::FP_Interval_Abstract_Store |
Alias for the Box<FP_Interval_Type> from Floating_Point_Expression.
Definition at line 150 of file Multiplication_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::FP_Linear_Form Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format >::FP_Linear_Form |
Alias for the Linear_Form<FP_Interval_Type> from Floating_Point_Expression.
Definition at line 142 of file Multiplication_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>:: FP_Linear_Form_Abstract_Store Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format >::FP_Linear_Form_Abstract_Store |
Alias for the std::map<dimension_type, FP_Linear_Form> from Floating_Point_Expression.
Definition at line 158 of file Multiplication_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::info_type Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format >::info_type |
Alias for the FP_Interval_Type::info_type from Floating_Point_Expression.
Definition at line 172 of file Multiplication_Floating_Point_Expression_defs.hh.
|
inline |
Constructor with two parameters: builds the multiplication floating point expression corresponding to x
y
.
Definition at line 35 of file Multiplication_Floating_Point_Expression_inlines.hh.
|
inline |
Destructor.
Definition at line 46 of file Multiplication_Floating_Point_Expression_inlines.hh.
|
private |
Inhibited copy constructor.
|
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 >.
Definition at line 32 of file Multiplication_Floating_Point_Expression_templates.hh.
|
inline |
Swaps *this
with y
.
Definition at line 54 of file Multiplication_Floating_Point_Expression_inlines.hh.
References Parma_Polyhedra_Library::swap().
Referenced by Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format >::swap().
|
private |
Inhibited assignment operator.
|
related |
Swaps x
with y
.
|
related |
Definition at line 64 of file Multiplication_Floating_Point_Expression_inlines.hh.
References Parma_Polyhedra_Library::Multiplication_Floating_Point_Expression< FP_Interval_Type, FP_Format >::m_swap().
|
private |
Pointer to the first operand.
Definition at line 221 of file Multiplication_Floating_Point_Expression_defs.hh.
|
private |
Pointer to the second operand.
Definition at line 223 of file Multiplication_Floating_Point_Expression_defs.hh.