Let $A$ be a matrix with real entries, and let $A_+$ be $A$ augmented by a single column. From linear algebra we know \begin{equation} \operatorname{rank}(A_+) = \operatorname{rank}(A) \hspace{10pt} or \hspace{10pt} \operatorname{rank}(A_+) = \operatorname{rank}(A)+1 \end{equation} But what if $A$ has double-precision entries and $\operatorname{rank}()$ is a commonly used function in a numerical library ?
The most popular rank function seems to be the one in MATLAB, which computes the rank as the number of singular values that are larger than a specific tolerance ${\tt tol}$. The default ${\tt tol = max(size(A))*eps(norm(A))}$ seems to be carefully chosen.
Q1: Does MATLAB's ${\tt rank()}$ satisfy the above ?
Q2: If not, then is there a more clever choice of ${\tt tol}$ that does ?
Thanks, Glenn