# 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?

-
When does SVD not converge? I haven't encountered any cases where SVD doesn't converge. –  Shiyu Jun 22 '11 at 15:32
Unfortunately OP has not been able to share an example of a matrix that chokes SVD... –  Guess who it is. Oct 19 '11 at 0:26