@@ -2927,6 +2927,24 @@ cdef class Matrix_rational_dense(Matrix_dense):
2927
2927
# LLL
2928
2928
# ###############################################
2929
2929
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
+
2930
2948
def LLL (self , *args , **kwargs ):
2931
2949
"""
2932
2950
Return an LLL reduced or approximated LLL reduced lattice for
@@ -2946,6 +2964,23 @@ cdef class Matrix_rational_dense(Matrix_dense):
2946
2964
A, d = self ._clear_denom()
2947
2965
return A.LLL(* args, ** kwargs) / d
2948
2966
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
+
2949
2984
2950
2985
cdef new_matrix_from_pari_GEN(parent, GEN d) noexcept:
2951
2986
"""
0 commit comments