> I've looked for other packages that could be wrapped, but couldn't find any that offers this feature. The only thing I found is a description of the "svds" Matlab routine, which is apparently based on "eigs".
If you want a canned routine, you're best off with svds(A) in base Julia (wraps ARPACK) or tsvd(A) in https://github.com/andreasnoack/PROPACK.jl (work in progress to wrap PROPACK). The other package I'm aware of is SLEPc, but it requires the entire PETSc stack. Note that the singular values of A are essentially the square root of the magnitude of the eigenvalues of AA', or A'A, or [0 A; A' 0], so eigenvalue routines can be used to solve the singular value problem. If you only need the largest singular value and its left singular vector, a simple quick and dirty DIY scheme is to do power iteration on AA': A = randn(m, n) u = randn(n) #some guess for i=1:10 #some number of iterations u = A*(A'u) scale!(u, 1/norm(u)) end σ = norm(A'u) #σ, u are the largest singular value and its left singular vector There is a simple generalization to the largest k singular values and their left singular vectors.
