code: def test_gesvdj(self):
      a = cupy.array(self.a, order=self.order)
      u, s, v = cusolver.gesvdj(
          a,
          full_matrices=self.full_matrices,
          overwrite_a=self.overwrite_a,
      )
  
      # sigma = diag(s)
      shape = self.shape
      mn = min(shape[-2:])
      if self.full_matrices:
          sigma_shape = shape
      else:
          sigma_shape = shape[:-2] + (mn, mn)
      sigma = cupy.zeros(sigma_shape, self.dtype)
      ix = numpy.arange(mn)
      sigma[..., ix, ix] = s
  
      vh = v.swapaxes(-2, -1).conjugate()
      aa = cupy.matmul(cupy.matmul(u, sigma), vh)
      if self.dtype in (numpy.float32, numpy.complex64):
          decimal = 5
      else:
          decimal = 10
      testing.assert_array_almost_equal(aa, self.a, decimal=decimal)
  
imports: import numpy
  import pytest
  import cupy
  from cupyx import cusolver
  from cupy import testing
  from cupy._core import _routines_linalg
  import cupyx
label_desc: Use image node_id 2 for calling the TestGesvdj obj's underlying member method code with example usage: obj.test_gesvdj() without return types