code: def jacobian_vec(fun, point_ndim=1):
      """Wrap autograd jacobian function.
  
      We note that the jacobian function of autograd is not vectorized
      by default, thus we modify its behavior here.
  
      Default autograd behavior:
  
      If the jacobian for one point of shape (2,) is of shape (3, 2),
      then calling the jacobian on 4 points with shape (4, 2) will
      be of shape (3, 2, 4, 2).
  
      Modified behavior:
  
      Calling the jacobian on 4 points gives a tensor of shape (4, 3, 2).
  
      We use a for-loop to allow this function to be vectorized with
      respect to several inputs in point, because the flag vectorize=True
      fails.
  
      Parameters
      ----------
      fun : callable
          Function whose jacobian values
          will be computed.
  
      Returns
      -------
      func_with_jacobian : callable
          Function that returns func's jacobian
          values at its inputs args.
      """
  
      def _jac(x):
          if x.ndim == point_ndim:
              return jacobian(fun)(x)
          return _np.stack([jacobian(fun)(one_x) for one_x in x])
  
      return _jac
  
file_path: geomstats/geomstats/_backend/autograd/autodiff.py
imports: import autograd
  import autograd.numpy
  from autograd import jacobian
label_desc: Use image node_id 7 for calling a global function with example usage: jacobian_vec(fun, point_ndim) and returns: _jac, _np, jacobian