25 #ifndef PPL_Division_Floating_Point_Expression_templates_hh
26 #define PPL_Division_Floating_Point_Expression_templates_hh 1
30 template <
typename FP_Interval_Type,
typename FP_Format>
36 if (!second_operand->linearize(int_store, lf_store,
37 linearized_second_operand)) {
40 FP_Interval_Type intervalized_second_operand;
41 this->intervalize(linearized_second_operand, int_store,
42 intervalized_second_operand);
45 if (intervalized_second_operand.lower() <= 0
46 && intervalized_second_operand.upper() >= 0) {
50 if (!first_operand->linearize(int_store, lf_store, result)) {
54 relative_error(result, rel_error);
55 result /= intervalized_second_operand;
56 rel_error /= intervalized_second_operand;
58 result += this->absolute_error;
59 return !this->overflows(result);
64 #endif // !defined(PPL_Division_Floating_Point_Expression_templates_hh)
Floating_Point_Expression< FP_Interval_Type, FP_Format >::FP_Linear_Form_Abstract_Store FP_Linear_Form_Abstract_Store
Alias for the std::map from Floating_Point_Expression.
A not necessarily closed, iso-oriented hyperrectangle.
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.
The entire library is confined to this namespace.