The GUPTRI algorithm makes use of the SVD for determining the numerical rank. Let be the SVD of an , where and are unitary and with .
Given a tolerance , the numerical rank of the matrix is the largest such that . This definition does not ensure that the rank is stable in the sense that a small perturbation relative to could cause the matrix to change rank. The rank is sensitive to perturbations if is only slightly larger than . Given a constant , the requirement that should be chosen as the largest number such that and is added [121,122]. In practice, is used; i.e., is replaced by . If the gap criterion fails, is also treated as zero. This process is repeated until the gap criterion is satisfied. If this is not possible, the numerical rank is not defined for the tolerance parameters and .