diff --git a/quantities/tests/test_uncertainty.py b/quantities/tests/test_uncertainty.py index 94cec2a..c4980bb 100644 --- a/quantities/tests/test_uncertainty.py +++ b/quantities/tests/test_uncertainty.py @@ -60,3 +60,10 @@ def test_uncertainquantity_divide(self): self.assertQuantityEqual((a/2).uncertainty, [0.05, 0.1 ]*pq.m) self.assertQuantityEqual(1/a, [1., 0.5]/pq.m) self.assertQuantityEqual((1/a).uncertainty, [0.1, 0.05]/pq.m) + + def test_uncertainquantity_subtract(self): + import numpy as np + a = UncertainQuantity(1, 'm', 1) + b = a.copy() # different object + self.assertQuantityEqual(a-a, UncertainQuantity(0, 'm', 0)) + self.assertQuantityEqual(a-b, UncertainQuantity(0, 'm', np.sqrt(2))) diff --git a/quantities/uncertainquantity.py b/quantities/uncertainquantity.py index 9294677..db84e9a 100644 --- a/quantities/uncertainquantity.py +++ b/quantities/uncertainquantity.py @@ -102,7 +102,10 @@ def __radd__(self, other): @scale_other_units def __sub__(self, other): res = super(UncertainQuantity, self).__sub__(other) - u = (self.uncertainty**2+other.uncertainty**2)**0.5 + if self is not other: + u = (self.uncertainty**2+other.uncertainty**2)**0.5 + else: + u = self.uncertainty*0 return UncertainQuantity(res, uncertainty=u, copy=False) @with_doc(Quantity.__rsub__, use_header=False)