25 #ifndef PPL_Floating_Point_Expression_templates_hh
26 #define PPL_Floating_Point_Expression_templates_hh 1
33 template<
typename FP_Interval_Type,
typename FP_Format>
38 FP_Interval_Type error_propagator;
47 assert(current_term->is_bounded());
50 current_multiplier(std::max(std::abs(current_term->lower()),
51 std::abs(current_term->upper())));
53 current_result_term *= error_propagator;
60 assert(current_term->is_bounded());
62 = FP_Interval_Type(std::max(std::abs(current_term->lower()),
63 std::abs(current_term->upper())));
65 current_result_term *= current_multiplier;
66 current_result_term *= error_propagator;
67 result += current_result_term;
73 template<
typename FP_Interval_Type,
typename FP_Format>
78 FP_Interval_Type& result) {
85 current_addend *= curr_int;
86 result += current_addend;
92 template<
typename FP_Interval_Type,
typename FP_Format>
99 omega = std::max(pow(static_cast<Boundary>(FP_Format::BASE),
100 static_cast<Boundary>(1 - FP_Format::EXPONENT_BIAS
101 - FP_Format::MANTISSA_BITS)),
102 std::numeric_limits<Boundary>::denorm_min());
103 FP_Interval_Type result;
111 #endif // !defined(PPL_Floating_Point_Expression_templates_hh)
FP_Interval_Type::boundary_type boundary_type
The floating point format used by the analyzer.
I_Constraint< T > i_constraint(I_Constraint_Rel rel, const T &v)
dimension_type space_dimension() const
Returns the dimension of the vector space enclosing *this.
size_t dimension_type
An unsigned integral type for representing space dimensions.
static FP_Interval_Type compute_absolute_error()
Computes the absolute error.
A dimension of the vector space.
static void relative_error(const FP_Linear_Form &lf, FP_Linear_Form &result)
Computes the relative error of a given linear form.
Greater than or equal to.
A not necessarily closed, iso-oriented hyperrectangle.
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 a...
The entire library is confined to this namespace.
const ITV & get_interval(Variable var) const
Returns a reference the interval that bounds var.