def _compute_length(nodes):
    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.
    """
    _, 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
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.