From 2ec5bb0c16919221af55530600ff6bfcdf8ec0df Mon Sep 17 00:00:00 2001 From: Florian Pfaff <6773539+FlorianPfaff@users.noreply.github.com> Date: Sat, 29 Aug 2026 03:51:32 +0800 Subject: [PATCH 1/2] Reject extra integration-bound rows for 1-D hypertori --- .../hypertorus/abstract_hypertoroidal_distribution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pyrecest/distributions/hypertorus/abstract_hypertoroidal_distribution.py b/src/pyrecest/distributions/hypertorus/abstract_hypertoroidal_distribution.py index 9ea50d7393..82431c09dd 100644 --- a/src/pyrecest/distributions/hypertorus/abstract_hypertoroidal_distribution.py +++ b/src/pyrecest/distributions/hypertorus/abstract_hypertoroidal_distribution.py @@ -108,7 +108,7 @@ def integrate_numerically(self, integration_boundaries=None): ) integration_boundaries = atleast_2d(integration_boundaries) - if self.dim not in (1, integration_boundaries.shape[0]): + if integration_boundaries.shape[0] != self.dim: raise ValueError( "integration_boundaries must contain one row per dimension." ) From 9f0a707e744e0e8ba56f642ff764e9337ba1e16a Mon Sep 17 00:00:00 2001 From: Florian Pfaff <6773539+FlorianPfaff@users.noreply.github.com> Date: Sat, 29 Aug 2026 03:51:40 +0800 Subject: [PATCH 2/2] Add 1-D hypertoroidal boundary-count regression --- ...al_numerical_integration_boundary_count.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/distributions/test_hypertoroidal_numerical_integration_boundary_count.py diff --git a/tests/distributions/test_hypertoroidal_numerical_integration_boundary_count.py b/tests/distributions/test_hypertoroidal_numerical_integration_boundary_count.py new file mode 100644 index 0000000000..ed8a28fe36 --- /dev/null +++ b/tests/distributions/test_hypertoroidal_numerical_integration_boundary_count.py @@ -0,0 +1,23 @@ +import unittest + +import pyrecest.backend +from pyrecest.backend import array +from pyrecest.distributions.circle.wrapped_normal_distribution import ( + WrappedNormalDistribution, +) + + +@unittest.skipIf( + pyrecest.backend.__backend_name__ != "numpy", + reason="Numerical hypertoroidal integration is supported only on NumPy.", +) +class TestHypertoroidalNumericalIntegrationBoundaryCount(unittest.TestCase): + def test_one_dimensional_distribution_rejects_extra_boundary_rows(self): + dist = WrappedNormalDistribution(array(0.0), array(1.0)) + + with self.assertRaisesRegex(ValueError, "one row per dimension"): + dist.integrate_numerically(array([[0.0, 1.0], [0.0, 1.0]])) + + +if __name__ == "__main__": + unittest.main()