PPL
1.2
|
A generic, not necessarily closed, possibly restricted interval. More...
#include <Interval_defs.hh>
Public Types | |
typedef Boundary | boundary_type |
typedef Info | info_type |
typedef Interval_NS::Property | Property |
Public Member Functions | |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, Interval & >::type | operator= (const T &x) |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, Interval & >::type | operator+= (const T &x) |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, Interval & >::type | operator-= (const T &x) |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, Interval & >::type | operator*= (const T &x) |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, Interval & >::type | operator/= (const T &x) |
void | m_swap (Interval &y) |
Swaps *this with y . More... | |
Info & | info () |
const Info & | info () const |
Boundary & | lower () |
const Boundary & | lower () const |
Boundary & | upper () |
const Boundary & | upper () const |
I_Constraint< boundary_type > | lower_constraint () const |
I_Constraint< boundary_type > | upper_constraint () const |
bool | is_empty () const |
bool | check_empty (I_Result r) const |
bool | is_singleton () const |
bool | lower_is_open () const |
bool | upper_is_open () const |
bool | lower_is_boundary_infinity () const |
bool | upper_is_boundary_infinity () const |
bool | lower_is_domain_inf () const |
bool | upper_is_domain_sup () const |
bool | is_bounded () const |
bool | is_universe () const |
I_Result | lower_extend () |
template<typename C > | |
Enable_If< Is_Same_Or_Derived< I_Constraint_Base, C >::value, I_Result >::type | lower_extend (const C &c) |
I_Result | upper_extend () |
template<typename C > | |
Enable_If< Is_Same_Or_Derived< I_Constraint_Base, C >::value, I_Result >::type | upper_extend (const C &c) |
I_Result | build () |
template<typename C > | |
Enable_If< Is_Same_Or_Derived< I_Constraint_Base, C >::value, I_Result >::type | build (const C &c) |
template<typename C1 , typename C2 > | |
Enable_If< Is_Same_Or_Derived< I_Constraint_Base, C1 >::value &&Is_Same_Or_Derived< I_Constraint_Base, C2 >::value, I_Result >::type | build (const C1 &c1, const C2 &c2) |
template<typename C > | |
Enable_If< Is_Same_Or_Derived< I_Constraint_Base, C >::value, I_Result >::type | add_constraint (const C &c) |
I_Result | assign (Degenerate_Element e) |
template<typename From > | |
Enable_If< Is_Special< From >::value, I_Result >::type | assign (const From &) |
I_Result | set_infinities () |
bool | is_topologically_closed () const |
void | topological_closure_assign () |
Assigns to *this its topological closure. More... | |
void | remove_inf () |
void | remove_sup () |
int | infinity_sign () const |
bool | contains_integer_point () const |
void | drop_some_non_integer_points () |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | wrap_assign (Bounded_Integer_Type_Width w, Bounded_Integer_Type_Representation r, const From &refinement) |
memory_size_type | total_memory_in_bytes () const |
Returns the total size in bytes of the memory occupied by *this . More... | |
memory_size_type | external_memory_in_bytes () const |
Returns the size in bytes of the memory managed by *this . More... | |
void | ascii_dump (std::ostream &s) const |
bool | ascii_load (std::istream &s) |
bool | OK () const |
Interval () | |
template<typename T > | |
Interval (const T &x) | |
Interval (const char *s) | |
Builds the smallest interval containing the number whose textual representation is contained in s . More... | |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, bool >::type | contains (const T &y) const |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, bool >::type | strictly_contains (const T &y) const |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, bool >::type | is_disjoint_from (const T &y) const |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | assign (const From &x) |
template<typename Type > | |
Enable_If< Is_Singleton< Type >::value||Is_Interval< Type >::value, bool >::type | can_be_exactly_joined_to (const Type &x) const |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | join_assign (const From &x) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | join_assign (const From1 &x, const From2 &y) |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | intersect_assign (const From &x) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | intersect_assign (const From1 &x, const From2 &y) |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | difference_assign (const From &x) |
Assigns to *this the smallest interval containing the set-theoretic difference of *this and x . More... | |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | difference_assign (const From1 &x, const From2 &y) |
Assigns to *this the smallest interval containing the set-theoretic difference of x and y . More... | |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | lower_approximation_difference_assign (const From &x) |
Assigns to *this the largest interval contained in the set-theoretic difference of *this and x . More... | |
template<typename From > | |
Enable_If< Is_Interval< From >::value, bool >::type | simplify_using_context_assign (const From &y) |
Assigns to *this a meet-preserving simplification of *this with respect to y . More... | |
template<typename From > | |
Enable_If< Is_Interval< From >::value, void >::type | empty_intersection_assign (const From &y) |
Assigns to *this an interval having empty intersection with y . The assigned interval should be as large as possible. More... | |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | refine_existential (Relation_Symbol rel, const From &x) |
Refines to according to the existential relation rel with x . More... | |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | refine_universal (Relation_Symbol rel, const From &x) |
Refines to so that it satisfies the universal relation rel with x . More... | |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | neg_assign (const From &x) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | add_assign (const From1 &x, const From2 &y) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | sub_assign (const From1 &x, const From2 &y) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | mul_assign (const From1 &x, const From2 &y) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | div_assign (const From1 &x, const From2 &y) |
template<typename From , typename Iterator > | |
Enable_If< Is_Interval< From >::value, void >::type | CC76_widening_assign (const From &y, Iterator first, Iterator last) |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, bool >::type | contains (const T &y) const |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, bool >::type | strictly_contains (const T &y) const |
template<typename T > | |
Enable_If< Is_Singleton< T >::value||Is_Interval< T >::value, bool >::type | is_disjoint_from (const T &y) const |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | assign (const From &x) |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | join_assign (const From &x) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | join_assign (const From1 &x, const From2 &y) |
template<typename Type > | |
Enable_If< Is_Singleton< Type >::value||Is_Interval< Type >::value, bool >::type | can_be_exactly_joined_to (const Type &x) const |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | intersect_assign (const From &x) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | intersect_assign (const From1 &x, const From2 &y) |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | difference_assign (const From &x) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | difference_assign (const From1 &x, const From2 &y) |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | refine_existential (Relation_Symbol rel, const From &x) |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | refine_universal (Relation_Symbol rel, const From &x) |
template<typename From > | |
Enable_If< Is_Singleton< From >::value||Is_Interval< From >::value, I_Result >::type | neg_assign (const From &x) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | add_assign (const From1 &x, const From2 &y) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | sub_assign (const From1 &x, const From2 &y) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | mul_assign (const From1 &x, const From2 &y) |
template<typename From1 , typename From2 > | |
Enable_If<((Is_Singleton< From1 >::value||Is_Interval< From1 >::value)&&(Is_Singleton< From2 >::value||Is_Interval< From2 >::value)), I_Result >::type | div_assign (const From1 &x, const From2 &y) |
template<typename C > | |
Enable_If< Is_Same_Or_Derived< I_Constraint_Base, C >::value, I_Result >::type | lower_extend (const C &c) |
template<typename C > | |
Enable_If< Is_Same_Or_Derived< I_Constraint_Base, C >::value, I_Result >::type | upper_extend (const C &c) |
template<typename From , typename Iterator > | |
Enable_If< Is_Interval< From >::value, void >::type | CC76_widening_assign (const From &y, Iterator first, Iterator last) |
template<typename From > | |
Enable_If< Is_Interval< From >::value, bool >::type | simplify_using_context_assign (const From &y) |
template<typename From > | |
Enable_If< Is_Interval< From >::value, void >::type | empty_intersection_assign (const From &) |
Static Public Member Functions | |
static bool | is_always_topologically_closed () |
Private Member Functions | |
PPL_COMPILE_TIME_CHECK (!Info::store_special||!std::numeric_limits< Boundary >::has_infinity,"store_special is meaningless"" when boundary type may contains infinity") | |
Info & | w_info () const |
Private Attributes | |
Boundary | lower_ |
Boundary | upper_ |
Related Functions | |
(Note that these are not member functions.) | |
template<typename Boundary , typename Info > | |
void | swap (Interval< Boundary, Info > &x, Interval< Boundary, Info > &y) |
Swaps x with y . More... | |
template<typename Boundary , typename Info > | |
void | swap (Interval< Boundary, Info > &x, Interval< Boundary, Info > &y) |
A generic, not necessarily closed, possibly restricted interval.
The class template type parameter Boundary
represents the type of the interval boundaries, and can be chosen, among other possibilities, within one of the following number families:
signed char
to long long
and from int8_t
to int64_t
);float
, double
or long double
);mpz_class
or mpq_class
).The class template type parameter Info
allows to control a number of features of the class, among which:
Definition at line 81 of file Interval_defs.hh.
typedef Boundary Parma_Polyhedra_Library::Interval< Boundary, Info >::boundary_type |
Definition at line 92 of file Interval_defs.hh.
typedef Info Parma_Polyhedra_Library::Interval< Boundary, Info >::info_type |
Definition at line 93 of file Interval_defs.hh.
typedef Interval_NS::Property Parma_Polyhedra_Library::Interval< Boundary, Info >::Property |
Definition at line 95 of file Interval_defs.hh.
|
inline |
Definition at line 585 of file Interval_defs.hh.
|
inlineexplicit |
Definition at line 589 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign().
|
explicit |
Builds the smallest interval containing the number whose textual representation is contained in s
.
Definition at line 143 of file Interval_templates.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_r(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::result_relation_class(), Parma_Polyhedra_Library::ROUND_DOWN, Parma_Polyhedra_Library::ROUND_UP, Parma_Polyhedra_Library::Interval_NS::SCALAR_INFO, Parma_Polyhedra_Library::Boundary_NS::set_minus_infinity(), Parma_Polyhedra_Library::Boundary_NS::set_plus_infinity(), Parma_Polyhedra_Library::UNIVERSE, Parma_Polyhedra_Library::Boundary_NS::UPPER, Parma_Polyhedra_Library::V_CVT_STR_UNK, Parma_Polyhedra_Library::V_EQ, Parma_Polyhedra_Library::V_EQ_MINUS_INFINITY, Parma_Polyhedra_Library::V_EQ_PLUS_INFINITY, Parma_Polyhedra_Library::V_GE, Parma_Polyhedra_Library::V_GT, Parma_Polyhedra_Library::V_GT_MINUS_INFINITY, Parma_Polyhedra_Library::V_LE, Parma_Polyhedra_Library::V_LT, Parma_Polyhedra_Library::V_LT_PLUS_INFINITY, and Parma_Polyhedra_Library::V_NAN.
|
inline |
Definition at line 618 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::add_assign(), Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::infinity_sign(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::MINUS_INFINITY, Parma_Polyhedra_Library::PLUS_INFINITY, PPL_DIRTY_TEMP, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<((Is_Singleton<From1>::value || Is_Interval<From1>::value) && (Is_Singleton<From2>::value || Is_Interval<From2>::value)), I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::add_assign | ( | const From1 & | x, |
const From2 & | y | ||
) |
Referenced by Parma_Polyhedra_Library::operator+().
|
inline |
Definition at line 302 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Interval< Boundary, Info >::build().
|
inline |
Definition at line 1113 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::ascii_dump().
|
inline |
Definition at line 1126 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::ascii_load().
|
inline |
Definition at line 243 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::LOWER, PPL_DIRTY_TEMP, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inline |
Definition at line 308 of file Interval_defs.hh.
References Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::I_EMPTY, Parma_Polyhedra_Library::I_EXACT, Parma_Polyhedra_Library::I_UNIVERSE, Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::set_unbounded(), Parma_Polyhedra_Library::UNIVERSE, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Referenced by Parma_Polyhedra_Library::operator>>().
|
inline |
Definition at line 333 of file Interval_defs.hh.
References Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::set_minus_infinity(), Parma_Polyhedra_Library::Boundary_NS::set_plus_infinity(), Parma_Polyhedra_Library::Boundary_NS::UPPER, Parma_Polyhedra_Library::V_NAN, Parma_Polyhedra_Library::VC_MINUS_INFINITY, and Parma_Polyhedra_Library::VC_PLUS_INFINITY.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::assign | ( | const From & | x | ) |
|
inline |
Definition at line 246 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), and Parma_Polyhedra_Library::UNIVERSE.
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::add_constraint().
|
inline |
Definition at line 252 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::UNIVERSE, Parma_Polyhedra_Library::V_EQ, Parma_Polyhedra_Library::V_GE, Parma_Polyhedra_Library::V_GT, Parma_Polyhedra_Library::V_GT_MINUS_INFINITY, Parma_Polyhedra_Library::V_LE, Parma_Polyhedra_Library::V_LGE, Parma_Polyhedra_Library::V_LT, Parma_Polyhedra_Library::V_LT_PLUS_INFINITY, and Parma_Polyhedra_Library::V_NE.
|
inline |
Definition at line 278 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::I_CHANGED, Parma_Polyhedra_Library::I_UNCHANGED, Parma_Polyhedra_Library::V_LGE, and Parma_Polyhedra_Library::V_NAN.
|
inline |
Definition at line 313 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::eq(), Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), PPL_DIRTY_TEMP, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Singleton<Type>::value || Is_Interval<Type>::value, bool>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::can_be_exactly_joined_to | ( | const Type & | x | ) | const |
Enable_If<Is_Interval<From>::value, void>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign | ( | const From & | y, |
Iterator | first, | ||
Iterator | last | ||
) |
Definition at line 88 of file Interval_templates.hh.
References Parma_Polyhedra_Library::Interval< Boundary, Info >::lower(), Parma_Polyhedra_Library::Interval< Boundary, Info >::lower_extend(), Parma_Polyhedra_Library::Interval< Boundary, Info >::lower_is_boundary_infinity(), Parma_Polyhedra_Library::Interval< Boundary, Info >::upper(), Parma_Polyhedra_Library::Interval< Boundary, Info >::upper_extend(), and Parma_Polyhedra_Library::Interval< Boundary, Info >::upper_is_boundary_infinity().
Enable_If<Is_Interval<From>::value, void>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign | ( | const From & | y, |
Iterator | first, | ||
Iterator | last | ||
) |
|
inline |
Definition at line 177 of file Interval_defs.hh.
References Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::I_EMPTY, and Parma_Polyhedra_Library::I_NOT_EMPTY.
|
inline |
Definition at line 193 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::ge(), Parma_Polyhedra_Library::Boundary_NS::le(), Parma_Polyhedra_Library::Boundary_NS::LOWER, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Singleton<T>::value || Is_Interval<T>::value, bool>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::contains | ( | const T & | y | ) | const |
|
inline |
Definition at line 418 of file Interval_defs.hh.
References Parma_Polyhedra_Library::ROUND_DOWN, and Parma_Polyhedra_Library::ROUND_UP.
|
inline |
Definition at line 366 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::Boundary_NS::complement(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::ge(), Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::Boundary_NS::le(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), Parma_Polyhedra_Library::Boundary_NS::UPPER, and Parma_Polyhedra_Library::V_EQ.
|
inline |
Definition at line 399 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::Boundary_NS::complement(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::ge(), Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::Boundary_NS::le(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), PPL_DIRTY_TEMP, Parma_Polyhedra_Library::Boundary_NS::UPPER, and Parma_Polyhedra_Library::V_EQ.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::difference_assign | ( | const From & | x | ) |
Assigns to *this
the smallest interval containing the set-theoretic difference of *this
and x
.
Enable_If<((Is_Singleton<From1>::value || Is_Interval<From1>::value) && (Is_Singleton<From2>::value || Is_Interval<From2>::value)), I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::difference_assign | ( | const From1 & | x, |
const From2 & | y | ||
) |
Assigns to *this
the smallest interval containing the set-theoretic difference of x
and y
.
Enable_If<((Is_Singleton<From1>::value || Is_Interval<From1>::value) && (Is_Singleton<From2>::value || Is_Interval<From2>::value)), I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::div_assign | ( | const From1 & | x, |
const From2 & | y | ||
) |
Referenced by Parma_Polyhedra_Library::operator/().
|
inline |
+———–+———–+———–+ | / | yu < 0 | yl > 0 | +———–+———–+———–+ | xu<=0 |xu/yl,xl/yu|xl/yl,xu/yu| +———–+———–+———–+ |xl<=0 xu>=0|xu/yu,xl/yu|xl/yl,xu/yl| +———–+———–+———–+ | xl>=0 |xu/yu,xl/yl|xl/yu,xu/yl| +———–+———–+———–+
Definition at line 889 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::Boundary_NS::div_assign_z(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::I_SINGULARITIES, Parma_Polyhedra_Library::infinity_sign(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::MINUS_INFINITY, Parma_Polyhedra_Library::PLUS_INFINITY, PPL_DIRTY_TEMP, Parma_Polyhedra_Library::Boundary_NS::sgn_b(), Parma_Polyhedra_Library::UNIVERSE, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inline |
Definition at line 445 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::OPEN, Parma_Polyhedra_Library::ROUND_DOWN, Parma_Polyhedra_Library::ROUND_UP, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Interval<From>::value, void>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::empty_intersection_assign | ( | const From & | ) |
Definition at line 432 of file Interval_templates.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), and Parma_Polyhedra_Library::EMPTY.
Enable_If<Is_Interval<From>::value, void>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::empty_intersection_assign | ( | const From & | y | ) |
Assigns to *this
an interval having empty intersection with y
. The assigned interval should be as large as possible.
|
inline |
Returns the size in bytes of the memory managed by *this
.
Definition at line 31 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::external_memory_in_bytes().
|
inline |
Definition at line 405 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_reverse_infinity(), Parma_Polyhedra_Library::Boundary_NS::LOWER, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Referenced by Parma_Polyhedra_Library::infinity_sign().
|
inline |
Definition at line 132 of file Interval_defs.hh.
Referenced by Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval< Boundary, Info >::m_swap(), and Parma_Polyhedra_Library::operator>>().
|
inline |
Definition at line 136 of file Interval_defs.hh.
|
inline |
Definition at line 331 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::max_assign(), Parma_Polyhedra_Library::min_assign(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inline |
Definition at line 345 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::I_NOT_EMPTY, Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::max_assign(), Parma_Polyhedra_Library::min_assign(), PPL_DIRTY_TEMP, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::intersect_assign | ( | const From & | x | ) |
Enable_If<((Is_Singleton<From1>::value || Is_Interval<From1>::value) && (Is_Singleton<From2>::value || Is_Interval<From2>::value)), I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::intersect_assign | ( | const From1 & | x, |
const From2 & | y | ||
) |
|
inlinestatic |
Definition at line 364 of file Interval_defs.hh.
|
inline |
Definition at line 216 of file Interval_defs.hh.
|
inline |
Definition at line 229 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Singleton<T>::value || Is_Interval<T>::value, bool>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::is_disjoint_from | ( | const T & | y | ) | const |
|
inline |
Definition at line 173 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Referenced by Parma_Polyhedra_Library::f_is_empty().
|
inline |
Definition at line 182 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::eq(), Parma_Polyhedra_Library::Boundary_NS::LOWER, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Referenced by Parma_Polyhedra_Library::f_is_singleton().
|
inline |
Definition at line 368 of file Interval_defs.hh.
|
inline |
Definition at line 221 of file Interval_defs.hh.
|
inline |
Definition at line 263 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::max_assign(), Parma_Polyhedra_Library::min_assign(), Parma_Polyhedra_Library::Boundary_NS::UPPER, and Parma_Polyhedra_Library::V_EQ.
|
inline |
Definition at line 285 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::max_assign(), Parma_Polyhedra_Library::min_assign(), PPL_DIRTY_TEMP, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::join_assign | ( | const From & | x | ) |
Enable_If<((Is_Singleton<From1>::value || Is_Interval<From1>::value) && (Is_Singleton<From2>::value || Is_Interval<From2>::value)), I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::join_assign | ( | const From1 & | x, |
const From2 & | y | ||
) |
|
inline |
Definition at line 140 of file Interval_defs.hh.
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::BD_Shape< T >::inhomogeneous_affine_form_image(), Parma_Polyhedra_Library::Interval< Boundary, Info >::m_swap(), Parma_Polyhedra_Library::BD_Shape< T >::one_variable_affine_form_image(), and Parma_Polyhedra_Library::operator>>().
|
inline |
Definition at line 144 of file Interval_defs.hh.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::lower_approximation_difference_assign | ( | const From & | x | ) |
Assigns to *this
the largest interval contained in the set-theoretic difference of *this
and x
.
|
inline |
Definition at line 156 of file Interval_defs.hh.
References Parma_Polyhedra_Library::GREATER_OR_EQUAL, Parma_Polyhedra_Library::GREATER_THAN, Parma_Polyhedra_Library::i_constraint(), Parma_Polyhedra_Library::Boundary_NS::LOWER, and Parma_Polyhedra_Library::Boundary_NS::SPECIAL.
Enable_If<Is_Same_Or_Derived<I_Constraint_Base, C>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::lower_extend | ( | const C & | c | ) |
Definition at line 34 of file Interval_templates.hh.
References Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::I_EXACT, Parma_Polyhedra_Library::I_NOT_EMPTY, Parma_Polyhedra_Library::I_UNCHANGED, Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::min_assign(), Parma_Polyhedra_Library::V_EQ, Parma_Polyhedra_Library::V_GE, Parma_Polyhedra_Library::V_GT, Parma_Polyhedra_Library::V_LGE, and Parma_Polyhedra_Library::V_NAN.
|
inline |
Definition at line 226 of file Interval_defs.hh.
References Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::Boundary_NS::LOWER, and Parma_Polyhedra_Library::Boundary_NS::set_unbounded().
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign().
Enable_If<Is_Same_Or_Derived<I_Constraint_Base, C>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::lower_extend | ( | const C & | c | ) |
|
inline |
Definition at line 196 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_boundary_infinity(), and Parma_Polyhedra_Library::Boundary_NS::LOWER.
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign().
|
inline |
Definition at line 206 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_domain_inf(), and Parma_Polyhedra_Library::Boundary_NS::LOWER.
|
inline |
Definition at line 186 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_open(), and Parma_Polyhedra_Library::Boundary_NS::LOWER.
|
inline |
Swaps *this
with y
.
Definition at line 44 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Interval< Boundary, Info >::info(), Parma_Polyhedra_Library::Interval< Boundary, Info >::lower(), Parma_Polyhedra_Library::swap(), and Parma_Polyhedra_Library::Interval< Boundary, Info >::upper().
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::swap().
|
inline |
+———+———–+———–+—————–+ | * | yl > 0 | yu < 0 | yl < 0, yu > 0 | +———+———–+———–+—————–+ | xl > 0 |xl*yl,xu*yu|xu*yl,xl*yu| xu*yl,xu*yu | +———+———–+———–+—————–+ | xu < 0 |xl*yu,xu*yl|xu*yu,xl*yl| xl*yu,xl*yl | +———+———–+———–+—————–+ |xl<0 xu>0|xl*yu,xu*yu|xu*yl,xl*yl|min(xl*yu,xu*yl),| | | | |max(xl*yl,xu*yu) | +———+———–+———–+—————–+
Definition at line 714 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::infinity_sign(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), Parma_Polyhedra_Library::MINUS_INFINITY, Parma_Polyhedra_Library::Boundary_NS::mul_assign(), Parma_Polyhedra_Library::Boundary_NS::mul_assign_z(), Parma_Polyhedra_Library::PLUS_INFINITY, PPL_DIRTY_TEMP, Parma_Polyhedra_Library::Boundary_NS::sgn_b(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<((Is_Singleton<From1>::value || Is_Interval<From1>::value) && (Is_Singleton<From2>::value || Is_Interval<From2>::value)), I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::mul_assign | ( | const From1 & | x, |
const From2 & | y | ||
) |
Referenced by Parma_Polyhedra_Library::operator*().
|
inline |
Definition at line 594 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::neg_assign(), PPL_DIRTY_TEMP, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::neg_assign | ( | const From & | x | ) |
|
inline |
Definition at line 524 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_minus_infinity(), Parma_Polyhedra_Library::is_not_a_number(), Parma_Polyhedra_Library::Boundary_NS::is_open(), Parma_Polyhedra_Library::Boundary_NS::is_plus_infinity(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::SPECIAL, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inline |
Definition at line 118 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::mul_assign().
|
inline |
Definition at line 106 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::add_assign().
|
inline |
Definition at line 112 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::sub_assign().
|
inline |
Definition at line 124 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::div_assign().
|
inline |
Definition at line 99 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign().
|
private |
|
inline |
Definition at line 437 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Boundary_NS::eq(), Parma_Polyhedra_Library::EQUAL, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::f_is_singleton(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::ge(), Parma_Polyhedra_Library::GREATER_OR_EQUAL, Parma_Polyhedra_Library::GREATER_THAN, Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::I_EMPTY, Parma_Polyhedra_Library::Boundary_NS::le(), Parma_Polyhedra_Library::LESS_OR_EQUAL, Parma_Polyhedra_Library::LESS_THAN, Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), Parma_Polyhedra_Library::NOT_EQUAL, Parma_Polyhedra_Library::Boundary_NS::UPPER, and Parma_Polyhedra_Library::V_EQ.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::refine_existential | ( | Relation_Symbol | rel, |
const From & | x | ||
) |
Refines to
according to the existential relation rel
with x
.
The to
interval is restricted to become, upon successful exit, the smallest interval of its type that contains the set
|
inline |
Definition at line 512 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Boundary_NS::eq(), Parma_Polyhedra_Library::EQUAL, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::f_is_singleton(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::ge(), Parma_Polyhedra_Library::GREATER_OR_EQUAL, Parma_Polyhedra_Library::GREATER_THAN, Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::I_EMPTY, Parma_Polyhedra_Library::Boundary_NS::is_open(), Parma_Polyhedra_Library::Boundary_NS::le(), Parma_Polyhedra_Library::LESS_OR_EQUAL, Parma_Polyhedra_Library::LESS_THAN, Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), Parma_Polyhedra_Library::NOT_EQUAL, PPL_USED, Parma_Polyhedra_Library::Interval_NS::SCALAR_INFO, Parma_Polyhedra_Library::Boundary_NS::UPPER, and Parma_Polyhedra_Library::V_EQ.
Enable_If<Is_Singleton<From>::value || Is_Interval<From>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::refine_universal | ( | Relation_Symbol | rel, |
const From & | x | ||
) |
Refines to
so that it satisfies the universal relation rel
with x
.
The to
interval is restricted to become, upon successful exit, the smallest interval of its type that contains the set
|
inline |
Definition at line 389 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::LOWER, and Parma_Polyhedra_Library::Boundary_NS::OPEN.
|
inline |
Definition at line 397 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::OPEN, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inline |
Definition at line 356 of file Interval_defs.hh.
References Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::set_minus_infinity(), Parma_Polyhedra_Library::Boundary_NS::set_plus_infinity(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Interval<From>::value, bool>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::simplify_using_context_assign | ( | const From & | y | ) |
Definition at line 406 of file Interval_templates.hh.
References Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Interval<From>::value, bool>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::simplify_using_context_assign | ( | const From & | y | ) |
Assigns to *this
a meet-preserving simplification of *this
with respect to y
.
false
if and only if the meet of *this
and y
is empty.
|
inline |
Definition at line 210 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::Boundary_NS::ge(), Parma_Polyhedra_Library::Boundary_NS::gt(), Parma_Polyhedra_Library::Boundary_NS::le(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::lt(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Singleton<T>::value || Is_Interval<T>::value, bool>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::strictly_contains | ( | const T & | y | ) | const |
|
inline |
Definition at line 658 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::assign_or_swap(), Parma_Polyhedra_Library::check_empty_arg(), Parma_Polyhedra_Library::combine(), Parma_Polyhedra_Library::EMPTY, Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::Interval_NS::f_lower(), Parma_Polyhedra_Library::f_OK(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::infinity_sign(), Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::MINUS_INFINITY, Parma_Polyhedra_Library::PLUS_INFINITY, PPL_DIRTY_TEMP, Parma_Polyhedra_Library::Boundary_NS::sub_assign(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<((Is_Singleton<From1>::value || Is_Interval<From1>::value) && (Is_Singleton<From2>::value || Is_Interval<From2>::value)), I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::sub_assign | ( | const From1 & | x, |
const From2 & | y | ||
) |
Referenced by Parma_Polyhedra_Library::operator-().
|
inline |
Assigns to *this
its topological closure.
Definition at line 377 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::LOWER, Parma_Polyhedra_Library::Boundary_NS::OPEN, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inline |
Returns the total size in bytes of the memory occupied by *this
.
Definition at line 38 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::external_memory_in_bytes().
|
inline |
Definition at line 148 of file Interval_defs.hh.
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign(), Parma_Polyhedra_Library::Interval_NS::f_upper(), Parma_Polyhedra_Library::BD_Shape< T >::inhomogeneous_affine_form_image(), Parma_Polyhedra_Library::Interval< Boundary, Info >::m_swap(), Parma_Polyhedra_Library::BD_Shape< T >::one_variable_affine_form_image(), and Parma_Polyhedra_Library::operator>>().
|
inline |
Definition at line 152 of file Interval_defs.hh.
|
inline |
Definition at line 164 of file Interval_defs.hh.
References Parma_Polyhedra_Library::i_constraint(), Parma_Polyhedra_Library::LESS_OR_EQUAL, Parma_Polyhedra_Library::LESS_THAN, Parma_Polyhedra_Library::Boundary_NS::SPECIAL, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Enable_If<Is_Same_Or_Derived<I_Constraint_Base, C>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::upper_extend | ( | const C & | c | ) |
Definition at line 61 of file Interval_templates.hh.
References Parma_Polyhedra_Library::Interval_NS::f_info(), Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::I_EXACT, Parma_Polyhedra_Library::I_NOT_EMPTY, Parma_Polyhedra_Library::I_UNCHANGED, Parma_Polyhedra_Library::max_assign(), Parma_Polyhedra_Library::Boundary_NS::UPPER, Parma_Polyhedra_Library::V_EQ, Parma_Polyhedra_Library::V_LE, Parma_Polyhedra_Library::V_LGE, Parma_Polyhedra_Library::V_LT, and Parma_Polyhedra_Library::V_NAN.
|
inline |
Definition at line 236 of file Interval_defs.hh.
References Parma_Polyhedra_Library::I_ANY, Parma_Polyhedra_Library::Boundary_NS::set_unbounded(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign().
Enable_If<Is_Same_Or_Derived<I_Constraint_Base, C>::value, I_Result>::type Parma_Polyhedra_Library::Interval< Boundary, Info >::upper_extend | ( | const C & | c | ) |
|
inline |
Definition at line 201 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_boundary_infinity(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
Referenced by Parma_Polyhedra_Library::Interval< Boundary, Info >::CC76_widening_assign().
|
inline |
Definition at line 211 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_domain_sup(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inline |
Definition at line 191 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::is_open(), and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
inlineprivate |
Definition at line 87 of file Interval_defs.hh.
|
inline |
Definition at line 469 of file Interval_defs.hh.
References Parma_Polyhedra_Library::Boundary_NS::assign(), Parma_Polyhedra_Library::I_EMPTY, Parma_Polyhedra_Library::Boundary_NS::le(), Parma_Polyhedra_Library::Boundary_NS::LOWER, PPL_DIRTY_TEMP, Parma_Polyhedra_Library::result_overflow(), Parma_Polyhedra_Library::ROUND_UP, Parma_Polyhedra_Library::Boundary_NS::set_unbounded(), Parma_Polyhedra_Library::SIGNED_2_COMPLEMENT, Parma_Polyhedra_Library::Boundary_NS::smod_2exp_assign(), Parma_Polyhedra_Library::Boundary_NS::umod_2exp_assign(), Parma_Polyhedra_Library::UNSIGNED, and Parma_Polyhedra_Library::Boundary_NS::UPPER.
|
related |
Swaps x
with y
.
|
related |
Definition at line 1223 of file Interval_inlines.hh.
References Parma_Polyhedra_Library::Interval< Boundary, Info >::m_swap().
|
private |
Definition at line 767 of file Interval_defs.hh.
|
private |
Definition at line 768 of file Interval_defs.hh.