You could do the same thing as you do with Gaussian elimination to track the row operations: augment the matrix with an identity matrix. In order for the augmentation to not affect your LLL reduction, you'd want to multiply your original matrix by a large constant, so that the augmented coordinates do not affect the norms significantly.
On Sunday, September 27, 2020 at 11:20:28 AM UTC-7, Dima Pasechnik wrote: > > > > On Sun, 27 Sep 2020, 18:43 Santanu Sarkar, <sarkar.s...@gmail.com > <javascript:>> wrote: > >> 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. >> > one needs to do some Cython programming, as suggested by > the trac ticket mentioned above. > > > >> Thanks again for your help. >> >> Regards, >> Santanu >> >> >> >> On Sun, 27 Sep 2020 at 20:45, 'Martin R. Albrecht' via sage-devel < >> sage-...@googlegroups.com <javascript:>> 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.s...@gmail.com <javascript:>> 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-...@googlegroups.com <javascript:>. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/sage-devel/87h7rjmesx.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-...@googlegroups.com <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sage-devel/CAOe8sPLQ8%2BqnGwJq%3DCGTi5f-HcZAJc3%2Bgpe6sf-qASGnvPVRJw%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/sage-devel/CAOe8sPLQ8%2BqnGwJq%3DCGTi5f-HcZAJc3%2Bgpe6sf-qASGnvPVRJw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- 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/7a0e4e01-74b0-4076-beb5-c8fc4dbb05eeo%40googlegroups.com.