Re-evaluate the previous executed array expression without any check.

    This is meant for accelerating loops that are re-evaluating the same
    expression repeatedly without changing anything else than the operands.
    If unsure, use evaluate() which is safer.

    Parameters
    ----------

    local_dict : dictionary, optional
        A dictionary that replaces the local operands in current frame.

def re_evaluate(local_dict=None):
    """Re-evaluate the previous executed array expression without any check.

    This is meant for accelerating loops that are re-evaluating the same
    expression repeatedly without changing anything else than the operands.
    If unsure, use evaluate() which is safer.

    Parameters
    ----------

    local_dict : dictionary, optional
        A dictionary that replaces the local operands in current frame.

    """
    try:
        compiled_ex = _numexpr_last['ex']
    except KeyError:
        raise RuntimeError("not a previous evaluate() execution found")
    argnames = _numexpr_last['argnames']
    args = getArguments(argnames, local_dict)
    kwargs = _numexpr_last['kwargs']
    with evaluate_lock:
        return compiled_ex(*args, **kwargs)