code: def test_svd_simple_real():
      x = np.array([[1, 2, 3], [3, 4, 3], [1, 0, 2], [0, 0, 1]], float)
      y = np.array(
          [[1, 2, 3, 8], [3, 4, 3, 5], [1, 0, 2, 3], [0, 0, 1, 0]],
          float,
      )
      z = csc_matrix(x)
  
      for solver in [None, "arpack", "lobpcg"]:
          for m in [x.T, x, y, z, z.T]:
              for k in range(1, min(m.shape)):
                  u, s, vh = sorted_svd(m, k)
                  su, ss, svh = svds(m, k, solver=solver)
  
                  m_hat = svd_estimate(u, s, vh)
                  sm_hat = svd_estimate(su, ss, svh)
  
                  assert_array_almost_equal_nulp(
                      m_hat, sm_hat, nulp=1000
                  )
  
imports: import threading
  import itertools
  import sys
  import platform
  import numpy
  from numpy.testing import assert_allclose, assert_array_almost_equal_nulp, assert_equal, assert_array_equal, suppress_warnings
  from pytest import raises
  import pytest
  from numpy import dot, conj, random
  from scipy.linalg import eig, eigh, hilbert, svd
  from scipy.sparse import csc_matrix, csr_matrix, isspmatrix, diags, rand
  from scipy.sparse.linalg import LinearOperator, aslinearoperator
  from scipy.sparse.linalg.eigen.arpack import eigs, eigsh, svds, ArpackNoConvergence, arpack
  from scipy._lib._gcutils import assert_deallocated, IS_PYPY
label_desc: Use image node_id 23 for calling a global function with example usage: test_svd_simple_real() without return types