code: def eigh(a, overwrite_a=False, check_finite=True):
      """Efficient wrapper for eigh.
  
      Parameters
      ----------
      a : ndarray, shape (n_components, n_components)
          The symmetric array operate on.
      overwrite_a : bool
          If True, the contents of a can be overwritten for efficiency.
      check_finite : bool
          If True, check that all elements are finite.
  
      Returns
      -------
      w : ndarray, shape (n_components,)
          The N eigenvalues, in ascending order, each repeated according to
          its multiplicity.
      v : ndarray, shape (n_components, n_components)
          The normalized eigenvector corresponding to the eigenvalue ``w[i]``
          is the column ``v[:, i]``.
      """
      # We use SYEVD, see https://github.com/scipy/scipy/issues/9212
      if check_finite:
          a = _asarray_validated(a, check_finite=check_finite)
      evd, driver = _get_evd(a.dtype)
      w, v, info = evd(a, lower=1, overwrite_a=overwrite_a)
      if info == 0:
          return w, v
      if info < 0:
          raise ValueError(
              "illegal value in argument %d of internal %s"
              % (-info, driver)
          )
      else:
          raise linalg.LinAlgError(
              "internal fortran routine failed to converge: "
              "%i off-diagonal elements of an "
              "intermediate tridiagonal form did not converge"
              " to zero." % info
          )
  
file_path: mne-python/mne/utils/linalg.py
imports: import functools
  import numpy
  from scipy import linalg
  from scipy._lib._util import _asarray_validated
label_desc: Use image node_id 6 for calling a global function with example usage: eigh(a, overwrite_a, check_finite) and returns: w,  v