diff --git a/src/pyrecest/distributions/nonperiodic/abstract_linear_distribution.py b/src/pyrecest/distributions/nonperiodic/abstract_linear_distribution.py index 5c587a1ee..47c49bb16 100644 --- a/src/pyrecest/distributions/nonperiodic/abstract_linear_distribution.py +++ b/src/pyrecest/distributions/nonperiodic/abstract_linear_distribution.py @@ -307,7 +307,7 @@ def f_for_nquad(*args): return float(squeeze(f(array(args).reshape(-1, dim)))) if dim == 1: - result, _ = quad(f_for_nquad, left, right) + result, _ = quad(f_for_nquad, left[0], right[0]) elif dim == 2: result, _ = nquad(f_for_nquad, [(left[0], right[0]), (left[1], right[1])]) elif dim == 3: diff --git a/tests/distributions/test_abstract_linear_distribution.py b/tests/distributions/test_abstract_linear_distribution.py index 45187dbd7..316fbc015 100644 --- a/tests/distributions/test_abstract_linear_distribution.py +++ b/tests/distributions/test_abstract_linear_distribution.py @@ -35,6 +35,25 @@ def test_integrate(self): integration_result, 1.0, rtol=1e-5 ), f"Expected 1.0, but got {integration_result}" + def test_integrate_1d_accepts_sequence_bounds(self): + """Test that 1D integration accepts per-dimension sequence bounds.""" + dist = GaussianDistribution(array([0.0]), array([[1.0]])) + integration_result = dist.integrate_numerically([-float("inf")], [float("inf")]) + assert isclose( + integration_result, 1.0, rtol=1e-5 + ), f"Expected 1.0, but got {integration_result}" + + def test_integrate_fun_over_domain_1d_accepts_sequence_bounds(self): + dist = GaussianDistribution(array([0.0]), array([[1.0]])) + + integration_result = AbstractLinearDistribution.integrate_fun_over_domain( + lambda x: dist.pdf(x), 1, [-float("inf")], [float("inf")] + ) + + assert isclose( + integration_result, 1.0, rtol=1e-5 + ), f"Expected 1.0, but got {integration_result}" + def test_integrate_fun_over_domain(self): dist = GaussianDistribution(array([1.0, 2.0]), diag(array([1.0, 2.0])))