Fast partial SVD by implicitly-restarted Lanczos