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
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
def eager_contraction_to_reduce(red_op, bin_op, reduced_vars, term): args = red_op, term, reduced_vars return eager.dispatch(Reduce, *args)(*args)
def eager_contraction_to_reduce(red_op, bin_op, reduced_vars, term): return eager.dispatch(Reduce, red_op, term, reduced_vars)