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 <ppl.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.

## Member Function Documentation

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.

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.

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.

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()`.

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

- ppl.hh