Skip to content

Commit bea7abd

Browse files
committed
Added BKZ() and is_LLL_reduced() for matrices over QQ
1 parent 3dd953c commit bea7abd

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

src/sage/matrix/matrix_rational_dense.pyx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,6 +2927,24 @@ cdef class Matrix_rational_dense(Matrix_dense):
29272927
# LLL
29282928
# ###############################################
29292929

2930+
def BKZ(self, *args, **kwargs):
2931+
"""
2932+
Block Korkin-Zolotarev reduction.
2933+
2934+
For details on input parameters, see
2935+
:meth:`sage.matrix.matrix_integer_dense.Matrix_integer_dense.BKZ`.
2936+
2937+
EXAMPLES::
2938+
2939+
sage: A = Matrix(QQ, 3, 3, [1/n for n in range(1, 10)])
2940+
sage: A.BKZ()
2941+
[ 1/28 -1/40 -1/18]
2942+
[ 1/28 -1/40 1/18]
2943+
[-1/14 -1/40 0]
2944+
"""
2945+
A, d = self._clear_denom()
2946+
return A.BKZ(*args, **kwargs) / d
2947+
29302948
def LLL(self, *args, **kwargs):
29312949
"""
29322950
Return an LLL reduced or approximated LLL reduced lattice for
@@ -2946,6 +2964,23 @@ cdef class Matrix_rational_dense(Matrix_dense):
29462964
A, d = self._clear_denom()
29472965
return A.LLL(*args, **kwargs) / d
29482966

2967+
def is_LLL_reduced(self, delta=None, eta=None):
2968+
"""
2969+
Return ``True`` if this lattice is `(\delta, \eta)`-LLL reduced.
2970+
For a definition of LLL reduction, see
2971+
:meth:`sage.matrix.matrix_integer_dense.Matrix_integer_dense.LLL`.
2972+
2973+
EXAMPLES:
2974+
sage: A = random_matrix(QQ, 10, 10)
2975+
sage: L = A.LLL()
2976+
sage: A.is_LLL_reduced()
2977+
False
2978+
sage: L.is_LLL_reduced()
2979+
True
2980+
"""
2981+
A, _ = self._clear_denom()
2982+
return A.is_LLL_reduced(delta, eta)
2983+
29492984

29502985
cdef new_matrix_from_pari_GEN(parent, GEN d) noexcept:
29512986
"""

0 commit comments

Comments
 (0)