diff --git a/pyerrors/covobs.py b/pyerrors/covobs.py index b0eb4efb..64d90150 100644 --- a/pyerrors/covobs.py +++ b/pyerrors/covobs.py @@ -23,6 +23,7 @@ class Covobs: self.cov = np.array(cov) if self.cov.ndim == 0: self.N = 1 + self.cov = np.diag([self.cov]) elif self.cov.ndim == 1: self.N = len(self.cov) self.cov = np.diag(self.cov) @@ -48,6 +49,8 @@ class Covobs: self.grad[pos] = 1. else: self.grad = np.array(grad) + if self.grad.ndim == 1: + self.grad = np.reshape(self.grad, (self.N, 1)) self.value = mean def errsq(self): diff --git a/pyerrors/obs.py b/pyerrors/obs.py index bea4f7e0..934b2518 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -1069,7 +1069,7 @@ def derived_observable(func, data, array_mode=False, **kwargs): for o in raveled_data: for name in o.cov_names: if name in allcov: - if not np.array_equal(allcov[name], o.covobs[name].cov): + if not np.allclose(allcov[name], o.covobs[name].cov, rtol=1e-14, atol=1e-14): raise Exception('Inconsistent covariance matrices for %s!' % (name)) else: allcov[name] = o.covobs[name].cov