docstr: ivy.Container instance method variant of ivy.matrix_rank. This
  method returns the rank (i.e., number of non-zero singular values) of a
  matrix (or a stack of matrices).
  
  Parameters
  ----------
  self
      input container having shape ``(..., M, N)`` and whose innermost two
      dimensions form ``MxN`` matrices. Should have a floating-point data type.
  
  atol
      absolute tolerance. When None it’s considered to be zero.
  
  rtol
      relative tolerance for small singular values. Singular values approximately
      less than or equal to ``rtol * largest_singular_value`` are set to zero. If
      a ``float``, the value is equivalent to a zero-dimensional array having a
      floating-point data type determined by :ref:`type-promotion` (as applied to
      ``x``) and must be broadcast against each matrix. If an ``array``, must have
      a floating-point data type and must be compatible with ``shape(x)[:-2]``
      (see :ref:`broadcasting`). If ``None``, the default value is
      ``max(M, N) * eps``, where ``eps`` must be the machine epsilon associated
      with the floating-point data type determined by :ref:`type-promotion`
      (as applied to ``x``). Default: ``None``.
  
  hermitian
      indicates whether ``x`` is Hermitian. When ``hermitian=True``, ``x`` is
      assumed to be Hermitian, enabling a more efficient method for finding
      eigenvalues, but x is not checked inside the function. Instead, We just use
      the lower triangular of the matrix to compute.
      Default: ``False``.
  key_chains
      The key-chains to apply or not apply the method to. Default is ``None``.
  to_apply
      If True, the method will be applied to key_chains, otherwise key_chains
      will be skipped. Default is ``True``.
  prune_unapplied
      Whether to prune key_chains for which the function was not applied.
      Default is ``False``.
  map_sequences
      Whether to also map method to sequences (lists, tuples).
      Default is ``False``.
  out
      optional output array, for writing the result to. It must have a shape that
      the inputs broadcast to.
  
  Returns
  -------
  ret
      a container containing the ranks. The returned array must have a
      floating-point data type determined by :ref:`type-promotion` and must have
      shape ``(...)`` (i.e., must have a shape equal to ``shape(x)[:-2]``).
  
  Examples
  --------
  With :class:`ivy.Container` input:
  >>> x = ivy.Container(a=ivy.array([[1., 0.], [0., 1.]]),
  ...                   b=ivy.array([[1., 0.], [0., 0.]]))
  >>> y = x.matrix_rank()
  >>> print(y)
  {
      a: ivy.array(2),
      b: ivy.array(1)
  }
code: def matrix_rank(
      self: ivy.Container,
      /,
      *,
      atol: Optional[Union[float, Tuple[float], ivy.Container]] = None,
      rtol: Optional[Union[float, Tuple[float], ivy.Container]] = None,
      hermitian: Optional[Union[bool, ivy.Container]] = False,
      key_chains: Optional[
          Union[List[str], Dict[str, str], ivy.Container]
      ] = None,
      to_apply: Union[bool, ivy.Container] = True,
      prune_unapplied: Union[bool, ivy.Container] = False,
      map_sequences: Union[bool, ivy.Container] = False,
      out: Optional[ivy.Container] = None,
  ) -> ivy.Container:
      """ivy.Container instance method variant of ivy.matrix_rank. This
      method returns the rank (i.e., number of non-zero singular values) of a
      matrix (or a stack of matrices).
  
      Parameters
      ----------
      self
          input container having shape ``(..., M, N)`` and whose innermost two
          dimensions form ``MxN`` matrices. Should have a floating-point data type.
  
      atol
          absolute tolerance. When None it’s considered to be zero.
  
      rtol
          relative tolerance for small singular values. Singular values approximately
          less than or equal to ``rtol * largest_singular_value`` are set to zero. If
          a ``float``, the value is equivalent to a zero-dimensional array having a
          floating-point data type determined by :ref:`type-promotion` (as applied to
          ``x``) and must be broadcast against each matrix. If an ``array``, must have
          a floating-point data type and must be compatible with ``shape(x)[:-2]``
          (see :ref:`broadcasting`). If ``None``, the default value is
          ``max(M, N) * eps``, where ``eps`` must be the machine epsilon associated
          with the floating-point data type determined by :ref:`type-promotion`
          (as applied to ``x``). Default: ``None``.
  
      hermitian
          indicates whether ``x`` is Hermitian. When ``hermitian=True``, ``x`` is
          assumed to be Hermitian, enabling a more efficient method for finding
          eigenvalues, but x is not checked inside the function. Instead, We just use
          the lower triangular of the matrix to compute.
          Default: ``False``.
      key_chains
          The key-chains to apply or not apply the method to. Default is ``None``.
      to_apply
          If True, the method will be applied to key_chains, otherwise key_chains
          will be skipped. Default is ``True``.
      prune_unapplied
          Whether to prune key_chains for which the function was not applied.
          Default is ``False``.
      map_sequences
          Whether to also map method to sequences (lists, tuples).
          Default is ``False``.
      out
          optional output array, for writing the result to. It must have a shape that
          the inputs broadcast to.
  
      Returns
      -------
      ret
          a container containing the ranks. The returned array must have a
          floating-point data type determined by :ref:`type-promotion` and must have
          shape ``(...)`` (i.e., must have a shape equal to ``shape(x)[:-2]``).
  
      Examples
      --------
      With :class:`ivy.Container` input:
      >>> x = ivy.Container(a=ivy.array([[1., 0.], [0., 1.]]),
      ...                   b=ivy.array([[1., 0.], [0., 0.]]))
      >>> y = x.matrix_rank()
      >>> print(y)
      {
          a: ivy.array(2),
          b: ivy.array(1)
      }
      """
      return self._static_matrix_rank(
          self,
          atol=atol,
          rtol=rtol,
          hermitian=hermitian,
          key_chains=key_chains,
          to_apply=to_apply,
          prune_unapplied=prune_unapplied,
          map_sequences=map_sequences,
          out=out,
      )
  
imports: from typing import Union, Optional, Tuple, Literal, List, Dict, Sequence
  from ivy.data_classes.container.base import ContainerBase
  import ivy
label_desc: Use image node_id 28 for calling the _ContainerWithLinearAlgebra obj's underlying member method code with example usage: obj.matrix_rank() and returns: self