code: def matrix_rank(M, tol=None, hermitian=False):
      """
      Return matrix rank of array using SVD method
  
      Rank of the array is the number of singular values of the array that are
      greater than `tol`.
  
      Parameters
      M : {(M,), (..., M, N)} ndarray
          Input vector or stack of matrices.
      tol : (...) ndarray, float, optional
          Threshold below which SVD values are considered zero. If `tol` is
          None, and ``S`` is an array with singular values for `M`, and
          ``eps`` is the epsilon value for datatype of ``S``, then `tol` is
          set to ``S.max() * max(M.shape) * eps``.
      hermitian : bool, optional
          If True, `M` is assumed to be Hermitian (symmetric if real-valued),
          enabling a more efficient method for finding singular values.
          Defaults to False.
  
      Returns
      -------
      rank : (...) ndarray
          Rank of M.
  
      Examples
      --------
      >>> from mxnet import np
      >>> np.matrix_rank(np.eye(4)) # Full rank matrix
      4
      >>> I=np.eye(4); I[-1,-1] = 0. # rank deficient matrix
      >>> np.matrix_rank(I)
      3
      >>> np.matrix_rank(np.ones((4,))) # 1 dimension - rank 1 unless all 0
      1
      >>> np.matrix_rank(np.zeros((4,)))
      0
      """
      finfo_eps_32 = _np.finfo(_np.float32).eps
      finfo_eps_64 = _np.finfo(_np.float64).eps
      if hermitian is True:
          raise NotImplementedError("hermitian is not supported yet...")
      return _api_internal.matrix_rank(
          M, tol, hermitian, finfo_eps_32, finfo_eps_64
      )
  
file_path: mxnet/python/mxnet/ndarray/numpy/linalg.py
imports: import numpy
  from .None import _op
  from .None import _api_internal
label_desc: Use image node_id 1 for calling a global function with example usage: matrix_rank(M, tol, hermitian) and returns: _api_internal