Skip to content

Commit 4f0442a

Browse files
authored
Refactor orthogonal_range_search and restore ambient method
Refactor orthogonal_range_search to use library implementation and restore ambient method.
1 parent ecc90eb commit 4f0442a

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/sage/matrix/matrix_integer_dense.pyx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ from cysignals.memory cimport sig_malloc, sig_free, check_allocarray
6868
from sage.libs.gmp.mpz cimport *
6969

7070
from sage.modules.vector_integer_dense cimport Vector_integer_dense
71-
from sage.modules.free_module import vector
7271
from sage.misc.verbose import verbose, get_verbose
7372

7473
from sage.arith.misc import previous_prime
@@ -93,7 +92,6 @@ from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
9392
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
9493
from sage.rings.polynomial.polynomial_integer_dense_flint cimport Polynomial_integer_dense_flint
9594
from sage.structure.element cimport Element, Vector
96-
from sage.structure.element import Vector
9795

9896
from sage.rings.finite_rings.finite_field_constructor import GF
9997

@@ -203,7 +201,9 @@ class GraverBasis:
203201
sage: class _GB:
204202
....: def __init__(self, amb): self._ambient = amb
205203
....: def __iter__(self): return _fake_iter()
206-
....: def orthogonal_range_search(self, l, u): return orthogonal_range_search(self, l, u)
204+
....: def orthogonal_range_search(self, l, u):
205+
....: # Reuse the library implementation for filtering:
206+
....: return GraverBasis.orthogonal_range_search(self, l, u)
207207
sage: G = _GB(amb)
208208
sage: list(G.orthogonal_range_search([0,0,0], [2,2,2]))
209209
[(0, 1, 2), (1, 1, 1)]
@@ -219,25 +219,25 @@ class GraverBasis:
219219
amb = self._ambient
220220
l_vec = vector(ZZ, l)
221221
u_vec = vector(ZZ, u)
222-
def ambient(self):
223-
"""
224-
To Return the ambient free module ``ZZ^n`` of this Graver basis.
225-
"""
226-
return self._ambient
227-
228222
n = amb.rank()
229223
if len(l_vec) != n or len(u_vec) != n:
230224
raise ValueError(f"Bound vectors must have length {n}.")
231225
if any(l_vec[i] > u_vec[i] for i in range(n)):
232226
raise ValueError("All lower bound must be ≤ the corresponding upper bound.")
233227

234228
def _gen():
235-
for v in self: # To iterate over the (possibly lazy) basis
236-
w = amb(v) # To coerce to ZZ^n for consistent parent
229+
for v in self: # iterate over (possibly lazy) basis
230+
w = amb(v) # coerce to ZZ^n for consistent parent
237231
if all(l_vec[i] <= w[i] <= u_vec[i] for i in range(n)):
238232
yield w
239233
return _gen()
240234

235+
def ambient(self):
236+
r"""
237+
Return the ambient free module ``ZZ^n`` of this Graver basis.
238+
"""
239+
return self._ambient
240+
241241
cdef class Matrix_integer_dense(Matrix_dense):
242242
r"""
243243
Matrix over the integers, implemented using FLINT.

0 commit comments

Comments
 (0)