code: def _compute_length(nodes):
      r
      _, num_nodes = np.shape(nodes)
      # NOTE: We somewhat replicate code in ``evaluate_hodograph()``
      #       here. This is so we don't re-compute the nodes for the first
      #       derivative every time it is evaluated.
      first_deriv = (num_nodes - 1) * (nodes[:, 1:] - nodes[:, :-1])
      if num_nodes == 2:
          # NOTE: We convert to 1D to make sure NumPy uses vector norm.
          return np.linalg.norm(first_deriv[:, 0], ord=2)
  
      if _scipy_int is None:
          raise OSError("This function requires SciPy for quadrature.")
  
      size_func = functools.partial(vec_size, first_deriv)
      length, _ = _scipy_int.quad(size_func, 0.0, 1.0)
      return length
docs: r"""Approximately compute the length of a curve.
  
      .. _QUADPACK: https://en.wikipedia.org/wiki/QUADPACK
  
      If ``degree`` is :math:`n`, then the Hodograph curve
      :math:`B'(s)` is degree :math:`d = n - 1`. Using this curve, we
      approximate the integral:
  
      .. math::
  
         \int_{B\left(\left[0, 1\right]\right)} 1 \, d\mathbf{x} =
         \int_0^1 \left\lVert B'(s) \right\rVert_2 \, ds
  
      using `QUADPACK`_ (via SciPy).
  
      .. note::
  
         There is also a Fortran implementation of this function, which
         will be used if it can be built.
  
      Args:
          nodes (numpy.ndarray): The nodes defining a curve.
  
      Returns:
          float: The length of the curve.
  
      Raises:
          OSError: If SciPy is not installed.