code: def exp_map_riemann(X, Cref, Cm12=False):
      r"""Project matrices back to manifold by Riemannian exponential map.
  
      The projection of a matrix :math:`\mathbf{X}` from tangent space
      to SPD/HPD manifold with Riemannian exponential map
      according to a reference SPD/HPD matrix :math:`\mathbf{C}_\text{ref}` is:
  
      .. math::
          \mathbf{X}_\text{original} = \mathbf{C}_\text{ref}^{1/2}
          \exp(\mathbf{X}) \mathbf{C}_\text{ref}^{1/2}
  
      When Cm12=True, it returns the full Riemannian exponential map:
  
      .. math::
          \mathbf{X}_\text{original} = \mathbf{C}_\text{ref}^{1/2}
          \exp( \mathbf{C}_\text{ref}^{-1/2} \mathbf{X}
          \mathbf{C}_\text{ref}^{-1/2}) \mathbf{C}_\text{ref}^{1/2}
  
      Parameters
      ----------
      X : ndarray, shape (..., n, n)
          Matrices in tangent space.
      Cref : ndarray, shape (n, n)
          The reference SPD/HPD matrix.
      Cm12 : bool, default=False
          If True, it returns the full Riemannian exponential map.
  
      Returns
      -------
      X_original : ndarray, shape (..., n, n)
          Matrices in SPD/HPD manifold.
  
      Notes
      -----
      .. versionadded:: 0.4
      """
      if Cm12:
          Cm12 = invsqrtm(Cref)
          X = Cm12 @ X @ Cm12
      C12 = sqrtm(Cref)
      return C12 @ expm(X) @ C12
  
file_path: pyRiemann/pyriemann/utils/tangentspace.py
imports: import numpy
  from .base import sqrtm, invsqrtm, logm, expm
  from .mean import mean_covariance
label_desc: Use image node_id 4 for calling a global function with example usage: exp_map_riemann(X, Cref, Cm12) and returns: unknown