code: def pinv(
      x: Array, /, *, rtol: Optional[Union[float, Array]] = None
  ) -> Array:
      """
      Array API compatible wrapper for :py:func:`np.linalg.pinv <numpy.linalg.pinv>`.
  
      See its docstring for more information.
      """
      # Note: the restriction to floating-point dtypes only is different from
      # np.linalg.pinv.
      if x.dtype not in _floating_dtypes:
          raise TypeError(
              "Only floating-point dtypes are allowed in pinv"
          )
  
      # Note: this is different from np.linalg.pinv, which does not multiply the
      # default tolerance by max(M, N).
      if rtol is None:
          rtol = max(x.shape[-2:]) * np.finfo(x.dtype).eps
      return Array._new(np.linalg.pinv(x._array, rcond=rtol))
  
imports: from __future__ import annotations
  from ._dtypes import _floating_dtypes, _numeric_dtypes, float32, float64, complex64, complex128
  from ._manipulation_functions import reshape
  from ._elementwise_functions import conj
  from ._array_object import Array
  from .._core.numeric import normalize_axis_tuple
  from typing import TYPE_CHECKING
  from typing import NamedTuple
  import numpy.linalg
  import numpy
label_desc: Use image node_id 14 for calling a global function with example usage: pinv() and returns: Array