Computation of a Drazin inverse

I need to compute the Drazin inverse $A^D$ of a singular M-matrix $A$, i.e., a matrix in the form $A=\lambda I -P$, where $P$ has nonnegative entries and $\lambda$ is the spectral radius (Perron value) of $P$. I already know the right and left eigenvectors $v$ and $u^T$ of $P$ with eigenvalue $\lambda$ (that is, the vectors in the left and right kernel of $A$).

1) Is there a Matlab subroutine around for computing Drazin inverses? I can't seem to find any, so I had to create my own (which is probably very inefficient)

2) Is there a way to exploit the knowledge of the two nullspaces (and the fact that they are 1-dimensional) to speed up this computation?

-
Have you seen dx.doi.org/10.1137/S0895479891228279 already? –  J. M. Oct 2 '10 at 1:32
@J. M. I don't have access to the full-text from my institution, but from the abstract it does not seem related to what I'm doing. I already know the Perron right and left eigenvectors, I need to compute the group/Drazin inverse –  Federico Poloni Oct 2 '10 at 12:34
By the way, an answer to question (ii) for the Moore-Penrose pseudo-inverse instead of the Drazin inverse would be most welcome as well. –  Federico Poloni Oct 2 '10 at 12:35
Hey, I don't know if you've already found an answer to this, but it looks to me that the results of dx.doi.org/10.1007/BFb0120751 and dx.doi.org/10.1137/0131057 might be applicable to your problem. –  J. M. Dec 14 '11 at 13:28
The first link is a "DOI not found". I'll check the second, though, thanks! –  Federico Poloni Dec 14 '11 at 20:11