We should probably create a class to represent the return value of this instead of returning a tuple. A class will be easier to use because you won't have to memorize the order of the matrices in it. Maybe you can call this class SVD and the algorithm in this file SparseSVD.