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.

Reply via email to