Dear Martin, Kindly see the following code. from fpylll import (IntegerMatrix, LLL) row=160 col=100 tt=cputime() A = random_matrix(ZZ, row,col,x=-2000, y=2000) U = IntegerMatrix.identity(row) tt=cputime() B = LLL.reduction(IntegerMatrix.from_matrix(A), U).to_matrix(matrix(ZZ, row,col)) print cputime(tt) tt=cputime() A=A.LLL() print cputime(tt)
Lattice reduction takes 49 seconds in the first case and 7 seconds in the second case. Maybe I am missing something. Best regards, Santanu On Tue, 29 Sep 2020 at 09:01, 'Martin R. Albrecht' via sage-devel < sage-devel@googlegroups.com> wrote: > Hi there, > > Sage is using FP(y)LLL under the hood, so there shouldn’t be that much of > a performance difference. As far as I can see, both Sage and FPyLLL have > the same defaults so it’s not clear to me why you see this performance > difference. > > Cheers, > Martin > > > Santanu Sarkar <sarkar.santanu....@gmail.com> writes: > > Dear Martin, > > Thank you so much. It works! > > Can we make it faster? > > It took 17 seconds for my problem but > > M1.LLL() took only 3 seconds. Of course I understand we > > are calculating extra matrix U. > > > > Thanks again for your help. > > > > Regards, > > Santanu > > > > > > > > On Sun, 27 Sep 2020 at 20:45, 'Martin R. Albrecht' via sage-devel < > > sage-devel@googlegroups.com> wrote: > > > >> Hi there, > >> > >> This should do the trick: > >> > >> sage: from fpylll import * > >> sage: A = random_matrix(ZZ, 6, 90) > >> sage: U = IntegerMatrix.identity(6) > >> sage: B = LLL.reduction(IntegerMatrix.from_matrix(A), > >> U).to_matrix(matrix(ZZ, 6, > >> 90)) > >> sage: U = U.to_matrix(matrix(ZZ, 6,6)) > >> sage: B == U*A > >> True > >> sage: abs(U.det()) > >> 1 > >> > >> Cheers, > >> Martin > >> > >> > >> Santanu Sarkar <sarkar.santanu....@gmail.com> writes: > >> > Dear all, > >> > I have a matrix M1 with integer entries with 90 rows and 6 columns. > >> > After applying LLL algorithm of M1, I get M2=M1.LLL(). I want to get > >> > corresponding unimodular transformation matrix T such that > >> > T*M1=M2. We can find T by > >> > T=M2*M1.pseudoinverse() or T== M1.solve_left(M2), but determinant of T > >> > becomes 0 i.e., T.det()=0. > >> > I want T.det()=1. > >> > > >> > Best regards, > >> > Santanu > >> > >> > >> -- > >> > >> _pgp: https://keybase.io/martinralbrecht > >> _www: https://malb.io > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups > >> "sage-devel" group. > >> To unsubscribe from this group and stop receiving emails from it, send > an > >> email to sage-devel+unsubscr...@googlegroups.com. > >> To view this discussion on the web visit > >> > https://groups.google.com/d/msgid/sage-devel/87h7rjmesx.fsf%40googlemail.com > >> . > >> > > > -- > > _pgp: https://keybase.io/martinralbrecht > _www: https://malb.io > > -- > You received this message because you are subscribed to the Google Groups > "sage-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-devel+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sage-devel/87blhrm5uu.fsf%40googlemail.com > . > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/CAOe8sPJP1-ZWg9hnZvRfpU7x7nkyLw7%2BO%2BT8i0Sm8RevbVzQEA%40mail.gmail.com.