X-Git-Url: https://svn.cri.ensmp.fr/git/linpy.git/blobdiff_plain/2849330c65ff7bbc0bfefddf0f062fce51bde7b9..491b8f0501c7b3d8b7c33d85a430845d245da5c9:/pypol/linear.py?ds=inline diff --git a/pypol/linear.py b/pypol/linear.py index 2b064d4..c169049 100644 --- a/pypol/linear.py +++ b/pypol/linear.py @@ -158,7 +158,8 @@ class Expression: constant = self.constant - other.constant return Expression(coefficients, constant) - __rsub__ = __sub__ + def __rsub__(self, other): + return -(self - other) @_polymorphic_method def __mul__(self, other): @@ -359,11 +360,8 @@ class Polyhedron: raise TypeError('non-integer constraint: ' '{} <= 0'.format(constraint)) self._inequalities.append(constraint) - print('in polyhedron') - #print(self.constraints()) self._bset = self.to_isl() - #print(self._bset) - return self + return self._bset @property @@ -400,7 +398,6 @@ class Polyhedron: s = [] for constraint in self.constraints(): s.append(constraint.symbols) - print(s) return s @property @@ -508,7 +505,7 @@ class Polyhedron: def printer(self): ip = libisl.isl_printer_to_str(_CONTEXT) - ip = libisl.isl_printer_print_val(ip, self) + ip = libisl.isl_printer_print_val(ip, self) #self should be value string = libisl.isl_printer_get_str(ip).decode() print(string) return string @@ -521,6 +518,7 @@ class Polyhedron: ceq = libisl.isl_equality_alloc(libisl.isl_local_space_copy(ls)) cin = libisl.isl_inequality_alloc(libisl.isl_local_space_copy(ls)) dict_ex = Expression().__dict__ + print(dict_ex) ''' if there are equalities/inequalities, take each constant and coefficient and add as a constraint to the basic set need to change the symbols method to a lookup table for the integer value for each letter that could be a symbol @@ -532,9 +530,9 @@ class Polyhedron: for _coefficients in dict_ex: value_co = dict_ex.get('_coefficients') if value_co: - ceq = libisl.isl_constraint_set_coefficient_si(ceq, libisl.isl_set_dim, self.symbols(), value_co) - bset = libisl.isl_set_add_constraint(bset, ceq) - + ceq = libisl.isl_constraint_set_coefficient_si(ceq, libisl.isl_set_dim, self.symbols(), value_co) + bset = libisl.isl_set_add_constraint(bset, ceq) + bset = libisl.isl_basic_set_project_out(bset, libisl.isl_set_dim, 1, 1); elif self.inequalities: for _constant in dict_ex: value = dict_ex.get('_constant') @@ -543,13 +541,14 @@ class Polyhedron: value_co = dict_ex.get('_coefficients') if value_co: cin = libisl.isl_constraint_set_coefficient_si(cin, libisl.isl_set_dim, self.symbols(), value_co) - bset = libisl.isl_set_add_contraint(bset, cin) - string = self.printer() - #string = libisl.isl_printer_print_basic_set(bset) + bset = libisl.isl_set_add_contraint(bset, cin) + + string = libisl.isl_printer_print_basic_set(bset) print('here') - print(string) + print(bset) print(self) - return string + #print(string) + return bset empty = eq(1, 1)