From c444bb2c832e0443a4c1281ea07443aa2b5bc14d Mon Sep 17 00:00:00 2001 From: Eloi Torrents Date: Mon, 9 Jun 2025 21:44:29 +0200 Subject: [PATCH 1/3] simplify matrix construction --- src/sage/modular/btquotients/btquotient.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sage/modular/btquotients/btquotient.py b/src/sage/modular/btquotients/btquotient.py index 29d4db2fbba..a50b01bb2e8 100644 --- a/src/sage/modular/btquotients/btquotient.py +++ b/src/sage/modular/btquotients/btquotient.py @@ -45,6 +45,7 @@ from sage.interfaces.magma import magma from sage.matrix.constructor import Matrix from sage.matrix.matrix_space import MatrixSpace +from sage.matrix.special import column_matrix from sage.misc.cachefunc import cached_method from sage.misc.latex import latex from sage.misc.lazy_attribute import lazy_attribute @@ -3153,8 +3154,7 @@ def _find_lattice(self, v1, v2, as_edges, m): v1adj = v1.adjugate() R = self._Mat_44 vecM = [v2 * X[ii] * v1adj for ii in range(4)] - M = self._Iotainv * R([[vecM[ii][jj, kk] for ii in range(4)] - for jj in range(2) for kk in range(2)]) + M = self._Iotainv * column_matrix(4, 4, [m.list() for m in vecM]) M = M.augment(R(self._pN)).transpose() E = M.echelon_form().submatrix(0, 0, 4, 4) Et = E.transpose() From 18d5c819714afad6df52c791f1dbcb842d597c03 Mon Sep 17 00:00:00 2001 From: Eloi Torrents Date: Mon, 9 Jun 2025 22:10:52 +0200 Subject: [PATCH 2/3] simplify matrix construction --- src/sage/modular/btquotients/btquotient.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/sage/modular/btquotients/btquotient.py b/src/sage/modular/btquotients/btquotient.py index a50b01bb2e8..596f91c96ae 100644 --- a/src/sage/modular/btquotients/btquotient.py +++ b/src/sage/modular/btquotients/btquotient.py @@ -2442,12 +2442,10 @@ def get_embedding_matrix(self, prec=None, exact=False): verbose('self._prec = %s, prec = %s' % (self._prec, prec)) Iotamod = self._compute_embedding_matrix(prec) self._Iotainv_lift = Iotamod.inverse().lift() - self._Iota = Matrix(self._R, 4, 4, [Iotamod[ii, jj] - for ii in range(4) - for jj in range(4)]) + self._Iota = Matrix(self._R, Iotamod) self._prec = prec - self._Iotainv = self._Mat_44([self._Iotainv_lift[ii, jj] % self._pN for ii in range(4) for jj in range(4)]) + self._Iotainv = self._Mat_44(self._Iotainv_lift.apply_map(lambda x: x % self._pN)) return self._Iota def embed_quaternion(self, g, exact=False, prec=None): From 81ad425bfaea7dc4ae6b10d4ff2aad531a840c07 Mon Sep 17 00:00:00 2001 From: Eloi Torrents Date: Tue, 10 Jun 2025 11:44:34 +0200 Subject: [PATCH 3/3] simplify matrix construction --- src/sage/modular/btquotients/btquotient.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/sage/modular/btquotients/btquotient.py b/src/sage/modular/btquotients/btquotient.py index 596f91c96ae..e0e049649ae 100644 --- a/src/sage/modular/btquotients/btquotient.py +++ b/src/sage/modular/btquotients/btquotient.py @@ -2274,9 +2274,7 @@ def _compute_embedding_matrix(self, prec, force_computation=False): else: phi = self._local_splitting_map(prec) B = self.get_eichler_order_basis() - return Matrix(Zmod(self._p ** prec), 4, 4, - [phi(B[kk])[ii, jj] for ii in range(2) - for jj in range(2) for kk in range(4)]) + return column_matrix(Zmod(self._p ** prec), 4, 4, [phi(b).list() for b in B]) @cached_method def get_extra_embedding_matrices(self):