PPL: Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > Class Template Reference

PPL 1.2

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Related Functions | List of all members
Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format > Class Template Reference
C++ Language Interface

A generic Division Floating Point Expression. More...

`#include <ppl.hh>`

Inheritance diagram for Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >:
[legend]

## 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 Types inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >
typedef Linear_Form< FP_Interval_Type > | FP_Linear_Form
| Alias for a linear form with template argument `FP_Interval_Type`.
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.
typedef FP_Interval_Type::info_type | info_type
| The interval policy used by `FP_Interval_Type`.

## 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`.
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`.
| ~Division_Floating_Point_Expression ()
| Destructor.
Public Member Functions inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >
virtual | ~Floating_Point_Expression ()
| Destructor.

## 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 Public Member Functions inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >
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 Public Attributes inherited from Parma_Polyhedra_Library::Floating_Point_Expression< FP_Interval_Type, FP_Format >
static FP_Interval_Type | absolute_error = compute_absolute_error()
| Absolute error. More...

## Detailed Description

### template<typename FP_Interval_Type, typename FP_Format>
class Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >

A generic Division Floating Point Expression.

Template type parameters

- The class template type parameter `FP_Interval_Type` represents the type of the intervals used in the abstract domain.
- The class template type parameter `FP_Format` represents the floating point format used in the concrete domain.

Linearizationd of division floating-point expressions

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

## Member Function Documentation

template<typename FP_Interval_Type , typename FP_Format >

bool Parma_Polyhedra_Library::Division_Floating_Point_Expression< FP_Interval_Type, FP_Format >::linearize | ( | const FP_Interval_Abstract_Store & | int_store,
|  | const FP_Linear_Form_Abstract_Store & | lf_store,
|  | FP_Linear_Form & | result
| ) |  | const
| virtual

Linearizes the expression in a given astract store.

Makes `result` become the linearization of `*this` in the given composite abstract store.

Parameters

  int_store | The interval abstract store.
  lf_store | The linear form abstract store.
  result | The modified linear form.

Returns
  `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 >.

## Friends And Related Function Documentation

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
| ) |  |
| related

Swaps `x` with `y`.

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
| ) |  |
| related

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

- ppl.hh