code: def matrix_exp(
      x: np.ndarray,
      /,
      *,
      out: Optional[np.ndarray] = None,
  ) -> np.ndarray:
      eig_vals, eig_vecs = np.linalg.eig(x)
      exp_diag = np.exp(eig_vals)
      exp_diag_mat = np.diag(exp_diag)
      exp_mat = eig_vecs @ exp_diag_mat @ np.linalg.inv(eig_vecs)
      return exp_mat.astype(x.dtype)
  
file_path: ivy/ivy/functional/backends/numpy/experimental/linear_algebra.py
imports: import math
  from typing import Optional, Tuple, Sequence, Union, Any
  import numpy
  import ivy
  from ivy.func_wrapper import with_supported_dtypes, with_unsupported_dtypes
  from ivy.utils.exceptions import IvyNotImplementedException
  from ..None import backend_version
  from ivy.functional.ivy.experimental.linear_algebra import _check_valid_dimension_size
label_desc: Use image node_id 3 for calling a global function with example usage: matrix_exp() and returns: exp_mat