MATLAB: Find true rank of a Matrix

MATLABsvd

I am comparing some Matlab code with c++ code. It appears as though the Matlab code is inverting a matrix which is rank deficient: at least to the c++ code. Additionally, Wolfram's CAS, reports the matrix as slightly rank deficient: although it still happily inverts it. For example, rank 5 instead of 6.
Doing some research it appears that the Matlab code does an svd style analysis. I was interest in 3 things:
1. Is there a different routine for rank calculation.
2. How do I get Matlab to spit out the same error that I get in c++ when inverting matrixes. This is pivotal – no pun intended – for verifying that my c++ code works. Is there a precision modifier?
3. Why is SVD considered "the most reliable". How much of the SVD does it do? Any musings on using SVD for rank analysis are welcome – I am just starting out in the numerical simulation field.

Best Answer

I am not an expert in this, but from scanning the documentation it looks like you might be able to use pinv() or svds(), and set the tolerance to a specific value. The rank() command might also be handy.