class_docstr: Class for the affine-invariant metric on the HPD manifold.
docstr: Compute the affine-invariant logarithm map.
  
  Compute the Riemannian logarithm at point base_point,
  of point wrt the metric defined in inner_product.
  This gives a tangent vector at point base_point.
  
  Parameters
  ----------
  point : array-like, shape=[..., n, n]
      Point.
  base_point : array-like, shape=[..., n, n]
      Base point.
  
  Returns
  -------
  log : array-like, shape=[..., n, n]
      Riemannian logarithm of point at base_point.
docstr_tok: ["Compute","the","affine-invariant","logarithm","map",".","Compute","the","Riemannian","logarithm","at","point","base_point",",","of","point","wrt","the","metric","defined","in","inner_product",".","This","gives","a","tangent","vector","at","point","base_point",".","Parameters","--","--","--","--","--","point",":","array-like",",","shape=","[","...",",","n",",","n","]","Point",".","base_point",":","array-like",",","shape=","[","...",",","n",",","n","]","Base","point",".","Returns","--","--","--","-","log",":","array-like",",","shape=","[","...",",","n",",","n","]","Riemannian","logarithm","of","point","at","base_point","."]
code: def log(self, point, base_point):
      """Compute the affine-invariant logarithm map.
  
      Compute the Riemannian logarithm at point base_point,
      of point wrt the metric defined in inner_product.
      This gives a tangent vector at point base_point.
  
      Parameters
      ----------
      point : array-like, shape=[..., n, n]
          Point.
      base_point : array-like, shape=[..., n, n]
          Base point.
  
      Returns
      -------
      log : array-like, shape=[..., n, n]
          Riemannian logarithm of point at base_point.
      """
      sqrt_base_point, inv_sqrt_base_point = powermh(
          base_point, [1.0 / 2, -1.0 / 2]
      )
      point_near_id = Matrices.mul(
          inv_sqrt_base_point, point, inv_sqrt_base_point
      )
  
      # TODO: only this differs
      point_near_id = ComplexMatrices.to_hermitian(point_near_id)
  
      log_at_id = logmh(point_near_id)
      return Matrices.mul(sqrt_base_point, log_at_id, sqrt_base_point)
  
imports: import math
  import geomstats.backend
  from geomstats.geometry.base import ComplexVectorSpaceOpenSet
  from geomstats.geometry.complex_matrices import ComplexMatrices, ComplexMatricesMetric
  from geomstats.geometry.complex_riemannian_metric import ComplexRiemannianMetric
  from geomstats.geometry.general_linear import GeneralLinear
  from geomstats.geometry.hermitian_matrices import HermitianMatrices, expmh, powermh
  from geomstats.geometry.matrices import Matrices
  from geomstats.geometry.pullback_metric import PullbackDiffeoMetric
  from geomstats.geometry.spd_matrices import SymMatrixLog, logmh
  from geomstats.integrator import integrate
  from geomstats.vectorization import repeat_out
label_desc: Use image node_id 3 for calling the HPDAffineMetric obj's underlying member method code with example usage: obj.log(point, base_point) and returns: Matrices