Not necessary for this PR but again: have you tried `scipy.sparse.linalg.svds`? That works on dense inputs as well and returns the truncated U, s, V.