I'm working on a header-only matrix library to provide some reasonable degree of linear algebra capability in as simple a package as possible, and I'm trying to survey what the current state of the art is re: computing the SVD of a complex matrix.
I'm doing a two-phase decomposition, bidiagonalization followed by singular value computation. Right now I'm using the householder method for the bidiagonalization (I believe LAPACK uses this as well), and I think that's about as good as it gets currently (unless someone knows of an $\mathcal{O}(N^2)$ algorithm for it..).
The singular value computation is next on my list, and I'm somewhat out of the loop on what the common algorithms are for doing this. I read here that research was heading towards a inverse-iteration method that guarantees orthogonality with $\mathcal{O}(N)$ complexity. I'd be interested in hearing about that or other advances.