Cleaner implementation of Domain.__sub__()
authorVivien Maisonneuve <v.maisonneuve@gmail.com>
Tue, 19 Aug 2014 14:32:38 +0000 (16:32 +0200)
committerVivien Maisonneuve <v.maisonneuve@gmail.com>
Tue, 19 Aug 2014 14:32:38 +0000 (16:32 +0200)
linpy/domains.py

index 57c08ba..9fdc7d5 100644 (file)
@@ -363,14 +363,16 @@ class Domain(GeometricObject):
         """
         Return the difference of two domains as a new domain.
         """
         """
         Return the difference of two domains as a new domain.
         """
-        symbols = self._xsymbols([self, other])
-        islset1 = self._toislset(self.polyhedra, symbols)
-        islset2 = other._toislset(other.polyhedra, symbols)
-        islset = libisl.isl_set_subtract(islset1, islset2)
-        return self._fromislset(islset, symbols)
+        return self - other
 
     def __sub__(self, other):
 
     def __sub__(self, other):
-        return self.difference(other)
+        if isinstance(other, Domain):
+            symbols = self._xsymbols([self, other])
+            islset1 = self._toislset(self.polyhedra, symbols)
+            islset2 = other._toislset(other.polyhedra, symbols)
+            islset = libisl.isl_set_subtract(islset1, islset2)
+            return self._fromislset(islset, symbols)
+        return NotImplemented
     __sub__.__doc__ = difference.__doc__
 
     def lexmin(self):
     __sub__.__doc__ = difference.__doc__
 
     def lexmin(self):