This function tries to quickly determine whether the matrix has a given rank. isRankAtLeast calls getSubmatrixOfRank. If that function finds a submatrix of a certain rank, this returns true. If that function fails to find a submatrix of a certain rank, this simply calls rank. To control the number of times getSubmatrixOfRank considers submatrices, use the option MaxMinors.
i1 : R = QQ[x,y]; |
i2 : M = matrix{{x,y,2,0,2*x+y}, {0,0,1,0,x}, {x,y,0,0,y}}; 3 5 o2 : Matrix R <--- R |
i3 : rank M o3 = 2 |
i4 : isRankAtLeast(2, M) o4 = true |
i5 : isRankAtLeast(3, M) o5 = false |
The option Threads can be used allow the function use multiple threads of execution. If allowableThreads is above 2 and Threads is set above 1, then this function will try to simultaneously compute the rank of the matrix while looking for a submatrix of a certain rank.
The object isRankAtLeast is a method function with options.