code: def eig(a):
      r"""
      Compute the eigenvalues and right eigenvectors of a square array.
  
      Parameters
      ----------
      a : (..., M, M) ndarray
          Matrices for which the eigenvalues and right eigenvectors will
          be computed
  
      Returns
      -------
      w : (..., M) ndarray
          The eigenvalues, each repeated according to its multiplicity.
          The eigenvalues are not necessarily ordered.
      v : (..., M, M) ndarray
          The normalized (unit "length") eigenvectors, such that the
          column ``v[:,i]`` is the eigenvector corresponding to the
          eigenvalue ``w[i]``.
  
      Raises
      ------
      MXNetError
          If the eigenvalue computation does not converge.
  
      See Also
      --------
      eigvals : eigenvalues of a non-symmetric array.
      eigh : eigenvalues and eigenvectors of a real symmetric array.
      eigvalsh : eigenvalues of a real symmetric.
  
      .. note::
         This is implemented using the ``_geev`` LAPACK routines which compute
         the eigenvalues and eigenvectors of general square arrays.
  
         The number `w` is an eigenvalue of `a` if there exists a vector
         `v` such that ``dot(a,v) = w * v``. Thus, the arrays `a`, `w`, and
         `v` satisfy the equations ``dot(a[:,:], v[:,i]) = w[i] * v[:,i]``
         for :math:`i \\in \\{0,...,M-1\\}`.
  
         The array `v` of eigenvectors may not be of maximum rank, that is, some
         of the columns may be linearly dependent, although round-off error may
         obscure that fact. If the eigenvalues are all different, then theoretically
         the eigenvectors are linearly independent.
  
         This function differs from the original `numpy.linalg.eig
         <https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eig.html>`_ in
         the following way(s):
         * Does not support complex input and output.
  
      Examples
      --------
      >>> from numpy import linalg as LA
      >>> a = np.array([[-1.9147992 ,  6.054115  , 18.046988  ],
      ...               [ 0.77563655, -4.860152  ,  2.1012988 ],
      ...               [ 2.6083658 ,  2.3705218 ,  0.3192524 ]])
      >>> w, v = LA.eig(a)
      >>> w
      array([ 6.9683027, -7.768063 , -5.655937 ])
      >>> v
      array([[ 0.90617794,  0.9543622 ,  0.2492316 ],
             [ 0.13086087, -0.04077047, -0.9325615 ],
             [ 0.4021404 , -0.29585576,  0.26117516]])
      """
      return _mx_nd_np.linalg.eig(a)
  
imports: from functools import reduce
  from ..ndarray import numpy
  from ..util import wrap_data_api_linalg_func
  from .fallback_linalg import *
  from .None import fallback_linalg
label_desc: Use image node_id 26 for calling a global function with example usage: eig(a) and returns: _mx_nd_np