def intersection(self, o): if self.is_compatible(o): svl, svu = Vector(self.lower, smart=True), Vector(self.upper, smart=True) ovl, ovu = Vector(o.lower, smart=True), Vector(o.upper, smart=True) return Interval(self.dim, vmax(svl, ovl)[0], vmin(svu, ovu)[0], self.stamp) else: return NullInterval(self.dim)
def union(self, o): if o.is_Null and self.dim is o.dim: return self._rebuild() elif self.is_compatible(o): svl, svu = Vector(self.lower, smart=True), Vector(self.upper, smart=True) ovl, ovu = Vector(o.lower, smart=True), Vector(o.upper, smart=True) return Interval(self.dim, vmin(svl, ovl)[0], vmax(svu, ovu)[0], self.stamp) else: raise ValueError("Cannot compute union of non-compatible Intervals (%s, %s)" % (self, o))
def union(self, o): if o.is_Null and self.dim == o.dim: return self._rebuild() elif self.is_compatible(o): svl, svu = Vector(self.lower, smart=True), Vector(self.upper, smart=True) ovl, ovu = Vector(o.lower, smart=True), Vector(o.upper, smart=True) return Interval(self.dim, vmin(svl, ovl)[0], vmax(svu, ovu)[0], self.stamp) else: return IntervalGroup([self._rebuild(), o._rebuild()])