On Tuesday, January 30, 2018 at 3:50:45 PM UTC, Simon Brandhorst wrote:
>
> The following may be a bug or me not understanding p-adic floating point 
> computations:
>
>
> sage: R = Qp(2,type='floating-point',print_mode='terse')
> sage: M = Matrix(R,4,[0, 0, 1, 1, 2^20, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1])
> sage: M.det()
> 1048575
> sage: M.inverse()
> ---------------------------------------------------------------------------
> ZeroDivisionError                         Traceback (most recent call last
> )
>

So, for this particular example:

sage: P=Matrix(R,4,[0,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0])
sage: M* (P*(M*P)^(-1))
[            1             0             0             0]
[1099510579200             1             0       1048576]
[            0             0             1             0]
[            0             0             0             1]

Which is indeed congruent to the identity matrix modulo 2^20 (which is 
about what you could hope for)

The key is that the inversion routine should be figuring out a suitable 
permutation on the fly.


 

> ....
>
> ZeroDivisionError: input matrix must be nonsingular
>
> sage: M = Matrix(R,4,[0, 0, 1, 1, 2^19, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1])
> sage: M.inverse()
> [     1048575            2            0            1]
> [274878955520       524288            1      1048575]
> [      524289       524287            1       524287]
> [274877382656       524289      1048575       524289]
>
> Works. 
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to