For a C++ implementation I have to calculate Moore Penrose Inverse (AKA pseudo inverse) of non squared matrices. I was wondering what are advantages and disadvantages of doing this by the use of SVD or $A^{T}(A.A^{T})^{-1}$.
I'm concerned about 1. Computational complexity and 2. Behavior of each method near or at singularity.