diff --git a/pyerrors/obs.py b/pyerrors/obs.py index 7d8f9911..d1e4f5c7 100644 --- a/pyerrors/obs.py +++ b/pyerrors/obs.py @@ -278,7 +278,7 @@ class Obs: def _compute_drho(i): tmp = (self.e_rho[e_name][i + 1:w_max] - + np.concatenate([self.e_rho[e_name][i - 1:None if i - w_max // 2 <= 0 else (2 * i - (2 * w_max) // 2):-1], + + np.concatenate([self.e_rho[e_name][i - 1:None if i - (w_max - 1) // 2 <= 0 else (2 * i - (2 * w_max) // 2):-1], self.e_rho[e_name][1:max(1, w_max - 2 * i)]]) - 2 * self.e_rho[e_name][i] * self.e_rho[e_name][1:w_max - i]) self.e_drho[e_name][i] = np.sqrt(np.sum(tmp ** 2) / e_N) diff --git a/tests/data/compute_drho_fails.json.gz b/tests/data/compute_drho_fails.json.gz new file mode 100644 index 00000000..3fc335bd Binary files /dev/null and b/tests/data/compute_drho_fails.json.gz differ diff --git a/tests/obs_test.py b/tests/obs_test.py index a77c6863..c8b741c2 100644 --- a/tests/obs_test.py +++ b/tests/obs_test.py @@ -1282,3 +1282,8 @@ def test_f_string_obs(): print(f"{o1:+3}") print(f"{o1:-1}") print(f"{o1: 8}") + +def test_compute_drho_fails(): + obs = pe.input.json.load_json("tests/data/compute_drho_fails.json.gz") + obs.gm() + assert np.isclose(obs.dvalue, 0.0022150779611891094)