code: def test_svd(self):
      A = matrix("A", dtype=self.dtype)
      U, S, VT = svd(A)
      fn = function([A], [U, S, VT])
      a = self.rng.random((4, 4)).astype(self.dtype)
      n_u, n_s, n_vt = np.linalg.svd(a)
      t_u, t_s, t_vt = fn(a)
  
      assert _allclose(n_u, t_u)
      assert _allclose(n_s, t_s)
      assert _allclose(n_vt, t_vt)
  
      fn = function([A], svd(A, compute_uv=False))
      t_s = fn(a)
      assert _allclose(n_s, t_s)
  
imports: import numpy
  import numpy.linalg
  import pytest
  from numpy import inf
  from numpy.testing import assert_array_almost_equal
  import pytensor
  from pytensor import function
  from pytensor.configdefaults import config
  from pytensor.tensor.math import _allclose
  from pytensor.tensor.nlinalg import SVD, Eig, MatrixInverse, TensorInv, det, eig, eigh, lstsq, matrix_dot, matrix_inverse, matrix_power, norm, pinv, qr, slogdet, svd, tensorinv, tensorsolve, trace
  from pytensor.tensor.type import lmatrix, lscalar, matrix, scalar, tensor3, tensor4, vector
  from tests import unittest_tools
label_desc: Use image node_id 2 for calling the TestSvd obj's underlying member method code with example usage: obj.test_svd() without return types