class_docstr: Private class for the n-dimensional hypersphere.
  
  Class for the n-dimensional hypersphere embedded in the
  (n+1)-dimensional Euclidean space.
  
  By default, points are parameterized by their extrinsic
  (n+1)-coordinates. For dimensions 1 and 2, this can be changed with the
  `default_coords_type` parameter. For dimensions 1 (the circle),
  the intrinsic coordinates correspond angles in radians, with 0. mapping
  to point [1., 0.]. For dimension 2, the intrinsic coordinates are the
  spherical coordinates from the north pole, i.e. where angles [0., 0.]
  correspond to point [0., 0., 1.].
  
  Parameters
  ----------
  dim : int
      Dimension of the hypersphere.
  
  default_coords_type : str, {'extrinsic', 'intrinsic'}
      Type of representation for dimensions 1 and 2.
docstr: Convert tangent vector from spherical to extrinsic coordinates.
  
  Convert from the spherical coordinates in the hypersphere
  to the extrinsic coordinates in Euclidean space for a tangent
  vector. Only implemented in dimension 2.
  
  Parameters
  ----------
  tangent_vec_spherical : array-like, shape=[..., 2]
      Tangent vector to the sphere, in spherical coordinates.
  base_point_spherical : array-like, shape=[..., 2]
      Point on the sphere, in spherical coordinates.
  
  Returns
  -------
  tangent_vec_extrinsic : array-like, shape=[..., 3]
      Tangent vector to the sphere, at base point,
      in extrinsic coordinates in Euclidean space.
docstr_tok: ["Convert","tangent","vector","from","spherical","to","extrinsic","coordinates",".","Convert","from","the","spherical","coordinates","in","the","hypersphere","to","the","extrinsic","coordinates","in","Euclidean","space","for","a","tangent","vector",".","Only","implemented","in","dimension","2",".","Parameters","--","--","--","--","--","tangent_vec_spherical",":","array-like",",","shape=","[","...",",","2","]","Tangent","vector","to","the","sphere",",","in","spherical","coordinates",".","base_point_spherical",":","array-like",",","shape=","[","...",",","2","]","Point","on","the","sphere",",","in","spherical","coordinates",".","Returns","--","--","--","-","tangent_vec_extrinsic",":","array-like",",","shape=","[","...",",","3","]","Tangent","vector","to","the","sphere",",","at","base","point",",","in","extrinsic","coordinates","in","Euclidean","space","."]
code: def tangent_spherical_to_extrinsic(
      self, tangent_vec_spherical, base_point_spherical
  ):
      """Convert tangent vector from spherical to extrinsic coordinates.
  
      Convert from the spherical coordinates in the hypersphere
      to the extrinsic coordinates in Euclidean space for a tangent
      vector. Only implemented in dimension 2.
  
      Parameters
      ----------
      tangent_vec_spherical : array-like, shape=[..., 2]
          Tangent vector to the sphere, in spherical coordinates.
      base_point_spherical : array-like, shape=[..., 2]
          Point on the sphere, in spherical coordinates.
  
      Returns
      -------
      tangent_vec_extrinsic : array-like, shape=[..., 3]
          Tangent vector to the sphere, at base point,
          in extrinsic coordinates in Euclidean space.
      """
      if self.dim != 2:
          raise NotImplementedError(
              "The conversion from spherical coordinates"
              " to extrinsic coordinates is implemented"
              " only in dimension 2."
          )
  
      axes = (2, 0, 1) if base_point_spherical.ndim == 2 else (0, 1)
      theta = base_point_spherical[..., 0]
      phi = base_point_spherical[..., 1]
      phi = gs.where(theta == 0.0, 0.0, phi)
  
      zeros = gs.zeros_like(theta)
  
      jac = gs.array(
          [
              [
                  gs.cos(theta) * gs.cos(phi),
                  -gs.sin(theta) * gs.sin(phi),
              ],
              [
                  gs.cos(theta) * gs.sin(phi),
                  gs.sin(theta) * gs.cos(phi),
              ],
              [-gs.sin(theta), zeros],
          ]
      )
      jac = gs.transpose(jac, axes)
  
      return gs.einsum("...ij,...j->...i", jac, tangent_vec_spherical)
  
imports: import logging
  import math
  from itertools import product
  from scipy.stats import beta
  import geomstats.algebra_utils
  import geomstats.backend
  from geomstats.geometry.base import LevelSet
  from geomstats.geometry.euclidean import Euclidean
  from geomstats.geometry.riemannian_metric import RiemannianMetric
  from geomstats.vectorization import get_batch_shape, repeat_out
label_desc: Use image node_id 11 for calling the _Hypersphere obj's underlying member method code with example usage: obj.tangent_spherical_to_extrinsic(tangent_vec_spherical, base_point_spherical) and returns: gs