00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <ppl-config.h>
00025 #include "Box.defs.hh"
00026
00027 namespace PPL = Parma_Polyhedra_Library;
00028
00029 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
00030
00031 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
00032 bool
00033 PPL::extract_interval_constraint(const Constraint& c,
00034 const dimension_type c_space_dim,
00035 dimension_type& c_num_vars,
00036 dimension_type& c_only_var) {
00037
00038 PPL_ASSERT(c.space_dimension() == c_space_dim);
00039 PPL_ASSERT(c_num_vars == 0 && c_only_var == 0);
00040
00041 for (dimension_type i = c_space_dim; i-- > 0; )
00042 if (c.coefficient(Variable(i)) != 0) {
00043 if (c_num_vars == 0) {
00044 c_only_var = i;
00045 ++c_num_vars;
00046 }
00047 else
00048
00049 return false;
00050 }
00051 return true;
00052 }
00053
00054 bool
00055 PPL::extract_interval_congruence(const Congruence& cg,
00056 const dimension_type cg_space_dim,
00057 dimension_type& cg_num_vars,
00058 dimension_type& cg_only_var) {
00059
00060 PPL_ASSERT(cg.space_dimension() == cg_space_dim);
00061 PPL_ASSERT(cg_num_vars == 0 && cg_only_var == 0);
00062
00063 PPL_ASSERT(cg.is_equality());
00064
00065
00066 for (dimension_type i = cg_space_dim; i-- > 0; )
00067 if (cg.coefficient(Variable(i)) != 0) {
00068 if (cg_num_vars == 0) {
00069 cg_only_var = i;
00070 ++cg_num_vars;
00071 }
00072 else
00073
00074 return false;
00075 }
00076 return true;
00077 }