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.
