code: def pinv(a, rcond=1e-15, hermitian=False):
      r"""
      Compute the (Moore-Penrose) pseudo-inverse of a matrix.
  
      Calculate the generalized inverse of a matrix using its
      singular-value decomposition (SVD) and including all
      *large* singular values.
  
      Parameters
      ----------
      a : (..., M, N) ndarray
          Matrix or stack of matrices to be pseudo-inverted.
      rcond : (...) {float or ndarray of float}, optional
          Cutoff for small singular values.
          Singular values less than or equal to
          ``rcond * largest_singular_value`` are set to zero.
          Broadcasts against the stack of matrices.
      hermitian : bool, optional
          If True, `a` is assumed to be Hermitian (symmetric if real-valued),
          enabling a more efficient method for finding singular values.
          Defaults to False.
  
      Returns
      -------
      B : (..., N, M) ndarray
          The pseudo-inverse of `a`. If `a` is a `matrix` instance, then so
          is `B`.
  
      Raises
      ------
      MXNetError
          If the SVD computation does not converge.
  
      Notes
      -----
      The pseudo-inverse of a matrix A, denoted :math:`A^+`, is
      defined as: "the matrix that 'solves' [the least-squares problem]
      :math:`Ax = b`," i.e., if :math:`\\bar{x}` is said solution, then
      :math:`A^+` is that matrix such that :math:`\\bar{x} = A^+b`.
  
      It can be shown that if :math:`Q_1 \\Sigma Q_2^T = A` is the singular
      value decomposition of A, then
      :math:`A^+ = Q_2 \\Sigma^+ Q_1^T`, where :math:`Q_{1,2}` are
      orthogonal matrices, :math:`\\Sigma` is a diagonal matrix consisting
      of A's so-called singular values, (followed, typically, by
      zeros), and then :math:`\\Sigma^+` is simply the diagonal matrix
      consisting of the reciprocals of A's singular values
      (again, followed by zeros). [1]_
  
      References
      ----------
      .. [1] G. Strang, *Linear Algebra and Its Applications*, 2nd Ed., Orlando,
             FL, Academic Press, Inc., 1980, pp. 139-142.
  
      Examples
      --------
      The following example checks that ``a * a+ * a == a`` and
      ``a+ * a * a+ == a+``:
      >>> a = np.random.randn(2, 3)
      >>> pinv_a = np.linalg.pinv(a)
      >>> (a - np.dot(a, np.dot(pinv_a, a))).sum()
      array(0.)
      >>> (pinv_a - np.dot(pinv_a, np.dot(a, pinv_a))).sum()
      array(0.)
      """
      if hermitian is True:
          raise NotImplementedError("hermitian is not supported yet...")
      return _api_internal.pinv(a, rcond, hermitian)
  
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 3 for calling a global function with example usage: pinv(a, rcond, hermitian) and returns: _api_internal