def projection_error(nodes, projected):
    """Compute the error between ``nodes`` and the projected nodes.

    .. note::

        This is a helper for :func:`maybe_reduce`, which is in turn a helper
        for :func:`_full_reduce`. Hence there is no corresponding Fortran
        speedup.

    For now, just compute the relative error in the Frobenius norm. But,
    we may wish to consider the error per row / point instead.

    Args:
        nodes (numpy.ndarray): Nodes in a curve.
        projected (numpy.ndarray): The ``nodes`` projected into the
            space of degree-elevated nodes.

    Returns:
        float: The relative error.
    """
    relative_err = np.linalg.norm(nodes - projected, ord="fro")
    if relative_err != 0.0:
        relative_err /= np.linalg.norm(nodes, ord="fro")
    return relative_err
def projection_error ( nodes , projected ) : relative_err = np . linalg . norm ( nodes - projected , ord = "fro" ) if relative_err != 0.0 : relative_err /= np . linalg . norm ( nodes , ord = "fro" ) return relative_err
Compute the error between ``nodes`` and the projected nodes.

    .. note::

        This is a helper for :func:`maybe_reduce`, which is in turn a helper
        for :func:`_full_reduce`. Hence there is no corresponding Fortran
        speedup.

    For now, just compute the relative error in the Frobenius norm. But,
    we may wish to consider the error per row / point instead.

    Args:
        nodes (numpy.ndarray): Nodes in a curve.
        projected (numpy.ndarray): The ``nodes`` projected into the
            space of degree-elevated nodes.

    Returns:
        float: The relative error.