computing Moore-Penrose pseudoinverse when SVD computation does not converge I am writing a routine to return the Moore-Penrose inverse of a rectangular matrix. 
Currently am computing the Moore-Penrose inverse using SVD, i.e., if the SVD is given by $A = \sum_{i=1}^r \lambda_i u_i v_i^T$, with $\lambda_i > 0 $ then $A^{+} =  \sum_{i=1}^{r} \frac{1}{\lambda_i} v_i u_i^T$. However, if SVD computation does not converge, I will have to throw an exception, I would prefer to compute the pseudo-inverse using some non-iterative method. 
I have come across the formula that $A^{+} = H(H^2)^-A^T$, where $H=A^TA$ and $(H^2)^-$ is any generalized inverse of $H^2$, and I can compute a generalized inverse using elementary row operations, this does provide a way. However, I am not fond of this method because $H^2$'s condition number is $A$'s condition number raised to the fourth power.
Do I have any other alternative?

You can compute a complete orthogonal decomposition using two QR decompositions.  See http://www.netlib.org/lapack/lug/node43.html
