code: def eigh(a, UPLO="L"):
      r"""
      Return the eigenvalues and eigenvectors real symmetric matrix.
  
      Returns two objects, a 1-D array containing the eigenvalues of `a`, and
      a 2-D square array or matrix (depending on the input type) of the
      corresponding eigenvectors (in columns).
  
      Parameters
      ----------
      a : (..., M, M) ndarray
          real symmetric matrices whose eigenvalues and eigenvectors are to be computed.
      UPLO : {'L', 'U'}, optional
          Specifies whether the calculation is done with the lower triangular
          part of `a` ('L', default) or the upper triangular part ('U').
          Irrespective of this value only the real parts of the diagonal will
          be considered in the computation to preserve the notion of a Hermitian
          matrix. It therefore follows that the imaginary part of the diagonal
          will always be treated as zero.
  
      Returns
      -------
      w : (..., M) ndarray
          The eigenvalues in ascending order, each repeated according to
          its multiplicity.
      v : {(..., M, M) ndarray, (..., M, M) matrix}
          The column ``v[:, i]`` is the normalized eigenvector corresponding
          to the eigenvalue ``w[i]``.  Will return a matrix object if `a` is
          a matrix object.
  
      Raises
      ------
      MXNetError
          If the eigenvalue computation does not converge.
  
      See Also
      --------
      eig : eigenvalues and right eigenvectors of general arrays
      eigvals : eigenvalues of a non-symmetric array.
      eigvalsh : eigenvalues of a real symmetric.
  
      Notes
      -----
      The eigenvalues/eigenvectors are computed using LAPACK routines ``_syevd``.
  
      This function differs from the original `numpy.linalg.eigh
      <https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eigh.html>`_ in
      the following way(s):
       - Does not support complex input and output.
  
      Examples
      --------
      >>> from numpy import linalg as LA
      >>> a = np.array([[ 6.8189726 , -3.926585  ,  4.3990498 ],
                        [-0.59656644, -1.9166266 ,  9.54532   ],
                        [ 2.1093285 ,  0.19688708, -1.1634291 ]])
      >>> w, v = LA.eigh(a, UPLO='L')
      >>> w
      array([-2.175445 , -1.4581827,  7.3725457])
      >>> v
      array([[ 0.1805163 , -0.16569263,  0.9695154 ],
             [ 0.8242942 ,  0.56326365, -0.05721384],
             [-0.53661287,  0.80949366,  0.23825769]])
      """
      w, v = _api_internal.eigh(a, UPLO)
      return (w, v)
  
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 17 for calling a global function with example usage: eigh(a, UPLO) and returns: w,  v