code: def test_trace():
      rng = np.random.default_rng(utt.fetch_seed())
      x = matrix()
      with pytest.warns(FutureWarning):
          g = trace(x)
      f = pytensor.function([x], g)
  
      for shp in [(2, 3), (3, 2), (3, 3)]:
          m = rng.random(shp).astype(config.floatX)
          v = np.trace(m)
          assert v == f(m)
  
      xx = vector()
      ok = False
      try:
          with pytest.warns(FutureWarning):
              trace(xx)
      except TypeError:
          ok = True
      except ValueError:
          ok = True
  
      assert ok
  
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 12 for calling a global function with example usage: test_trace() without return types