PPL  1.2
Parma_Polyhedra_Library::FP_Oracle< Target, FP_Interval_Type > Class Template Referenceabstract

An abstract class to be implemented by an external analyzer such as ECLAIR in order to provide to the PPL the necessary information for performing the analysis of floating point computations. More...

#include <Float_defs.hh>

Public Member Functions

virtual bool get_interval (dimension_type dim, FP_Interval_Type &result) const =0
 Asks the external analyzer for an interval that correctly approximates the floating point entity referenced by dim. Result is stored into result. More...
 
virtual bool get_fp_constant_value (const Floating_Point_Constant< Target > &expr, FP_Interval_Type &result) const =0
 Asks the external analyzer for an interval that correctly approximates the value of floating point constant expr. Result is stored into result. More...
 
virtual bool get_integer_expr_value (const Concrete_Expression< Target > &expr, FP_Interval_Type &result) const =0
 Asks the external analyzer for an interval that correctly approximates the value of expr, which must be of integer type. Result is stored into result. More...
 
virtual bool get_associated_dimensions (const Approximable_Reference< Target > &expr, std::set< dimension_type > &result) const =0
 Asks the external analyzer for the possible space dimensions that are associated to the approximable reference expr. Result is stored into result. More...
 

Detailed Description

template<typename Target, typename FP_Interval_Type>
class Parma_Polyhedra_Library::FP_Oracle< Target, FP_Interval_Type >

An abstract class to be implemented by an external analyzer such as ECLAIR in order to provide to the PPL the necessary information for performing the analysis of floating point computations.

Template type parameters
  • The class template parameter Target specifies the implementation of Concrete_Expression to be used.
  • The class template parameter FP_Interval_Type represents the type of the intervals used in the abstract domain. The interval bounds should have a floating point type.

Definition at line 399 of file Float_defs.hh.

Member Function Documentation

template<typename Target, typename FP_Interval_Type>
virtual bool Parma_Polyhedra_Library::FP_Oracle< Target, FP_Interval_Type >::get_associated_dimensions ( const Approximable_Reference< Target > &  expr,
std::set< dimension_type > &  result 
) const
pure virtual

Asks the external analyzer for the possible space dimensions that are associated to the approximable reference expr. Result is stored into result.

Returns
true if the analyzer was able to return the (possibly empty!) set, false otherwise.

The resulting set MUST NOT contain not_a_dimension().

Referenced by Parma_Polyhedra_Library::Concrete_Expression< Target >::linearize().

template<typename Target, typename FP_Interval_Type>
virtual bool Parma_Polyhedra_Library::FP_Oracle< Target, FP_Interval_Type >::get_fp_constant_value ( const Floating_Point_Constant< Target > &  expr,
FP_Interval_Type &  result 
) const
pure virtual

Asks the external analyzer for an interval that correctly approximates the value of floating point constant expr. Result is stored into result.

Returns
true if the analyzer was able to find a correct approximation, false otherwise.

Referenced by Parma_Polyhedra_Library::Concrete_Expression< Target >::linearize().

template<typename Target, typename FP_Interval_Type>
virtual bool Parma_Polyhedra_Library::FP_Oracle< Target, FP_Interval_Type >::get_integer_expr_value ( const Concrete_Expression< Target > &  expr,
FP_Interval_Type &  result 
) const
pure virtual

Asks the external analyzer for an interval that correctly approximates the value of expr, which must be of integer type. Result is stored into result.

Returns
true if the analyzer was able to find a correct approximation, false otherwise.

Referenced by Parma_Polyhedra_Library::Concrete_Expression< Target >::cast_linearize().

template<typename Target, typename FP_Interval_Type>
virtual bool Parma_Polyhedra_Library::FP_Oracle< Target, FP_Interval_Type >::get_interval ( dimension_type  dim,
FP_Interval_Type &  result 
) const
pure virtual

Asks the external analyzer for an interval that correctly approximates the floating point entity referenced by dim. Result is stored into result.

Returns
true if the analyzer was able to find a correct approximation, false otherwise.

Referenced by Parma_Polyhedra_Library::Linear_Form< C >::intervalize(), and Parma_Polyhedra_Library::Concrete_Expression< Target >::linearize().


The documentation for this class was generated from the following file: