I am running Sagemath 9.1 on macOS 10.15.17
but I think this issue is more about math.

Consider the following code

G = GL(2^8, GF(2^8))
A = G.random_element()
B = Matrix(A)
%time B.is_invertible()

C = Matrix(A)
%time C.nrows() == C.ncols() == C.rank()

The first timer returns 9s while the second timer returns 2ms.
I believe that this is because

   - is_invertible() computes charpoly and read off the det.
   This is a detour when the base ring is a field.
   - rank() uses m4rie, which uses asymptotically fast algorithm for rref.

Perhaps we can add one more if-brach in is_invertible() that exploits fast 
rref?

-- 
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/71da074c-81cb-47a9-9068-9fadd2c9ea3an%40googlegroups.com.

Reply via email to