PPL
1.2
|
A generic Division Floating Point Expression. More...
#include <Division_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 (Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > &y) |
Swaps *this with y . More... | |
Constructors and Destructor | |
Division_Floating_Point_Expression (Floating_Point_Expression< FP_Interval_Type, FP_Format > *const num, Floating_Point_Expression< FP_Interval_Type, FP_Format > *const den) | |
Constructor with two parameters: builds the division floating point expression corresponding to num ![]() den . More... | |
~Division_Floating_Point_Expression () | |
Destructor. More... | |
![]() | |
virtual | ~Floating_Point_Expression () |
Destructor. More... | |
Private Member Functions | |
Division_Floating_Point_Expression (const Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > &e) | |
Copy constructor: temporary inhibited. More... | |
Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > & | operator= (const Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > &e) |
Assignment operator: temporary inhibited. 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 (Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > &x, Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > &y) |
Swaps x with y . More... | |
template<typename FP_Interval_Type , typename FP_Format > | |
void | swap (Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > &x, Division_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 Division 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 operator 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:
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
.
Definition at line 118 of file Division_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::boundary_type Parma_Polyhedra_Library::Division_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 153 of file Division_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::FP_Interval_Abstract_Store Parma_Polyhedra_Library::Division_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 137 of file Division_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::FP_Linear_Form Parma_Polyhedra_Library::Division_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 129 of file Division_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>:: FP_Linear_Form_Abstract_Store Parma_Polyhedra_Library::Division_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 145 of file Division_Floating_Point_Expression_defs.hh.
typedef Floating_Point_Expression<FP_Interval_Type, FP_Format>::info_type Parma_Polyhedra_Library::Division_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 159 of file Division_Floating_Point_Expression_defs.hh.
|
inline |
Constructor with two parameters: builds the division floating point expression corresponding to num
den
.
Definition at line 34 of file Division_Floating_Point_Expression_inlines.hh.
|
inline |
Destructor.
Definition at line 45 of file Division_Floating_Point_Expression_inlines.hh.
|
private |
Copy constructor: temporary inhibited.
|
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 Division_Floating_Point_Expression_templates.hh.
|
inline |
Swaps *this
with y
.
Definition at line 53 of file Division_Floating_Point_Expression_inlines.hh.
References Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >::first_operand, Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >::second_operand, and Parma_Polyhedra_Library::swap().
Referenced by Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >::swap().
|
private |
Assignment operator: temporary inhibited.
|
related |
Swaps x
with y
.
|
related |
Definition at line 62 of file Division_Floating_Point_Expression_inlines.hh.
References Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >::m_swap().
|
private |
Pointer to the first operand.
Definition at line 208 of file Division_Floating_Point_Expression_defs.hh.
Referenced by Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >::m_swap().
|
private |
Pointer to the second operand.
Definition at line 210 of file Division_Floating_Point_Expression_defs.hh.
Referenced by Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >::m_swap().