Exemple #1
0
def eager_contraction_to_binary(red_op, bin_op, reduced_vars, lhs, rhs):

    if reduced_vars - (reduced_vars.intersection(lhs.inputs, rhs.inputs)):
        result = eager.dispatch(Contraction, red_op, bin_op, reduced_vars,
                                (lhs, rhs))
        if result is not None:
            return result

    result = eager.dispatch(Binary, bin_op, lhs, rhs)
    if result is not None and reduced_vars:
        result = eager.dispatch(Reduce, red_op, result, reduced_vars)
    return result
Exemple #2
0
def eager_contraction_binary_to_integrate(red_op, bin_op, reduced_vars, lhs, rhs):

    if reduced_vars - reduced_vars.intersection(lhs.inputs, rhs.inputs):
        args = red_op, bin_op, reduced_vars, (lhs, rhs)
        result = eager.dispatch(Contraction, *args)(*args)
        if result is not None:
            return result

    args = lhs.log(), rhs, reduced_vars
    result = eager.dispatch(Integrate, *args)(*args)
    if result is not None:
        return result

    return None
Exemple #3
0
def eager_contraction_to_reduce(red_op, bin_op, reduced_vars, term):
    args = red_op, term, reduced_vars
    return eager.dispatch(Reduce, *args)(*args)
Exemple #4
0
def eager_contraction_to_reduce(red_op, bin_op, reduced_vars, term):
    return eager.dispatch(Reduce, red_op, term, reduced_vars)