def METHOD_NAME():
    """Make sure that an output is only computed once when it's referenced multiple times."""
    x = vector("x")
    y = vector("y")
    class TestOp(Op):
        def __init__(self):
            self.called = 0
        def make_node(self, *args):
            return Apply(self, list(args), [x.type() for x in args])
        def perform(self, inputs, outputs):
            for i, inp in enumerate(inputs):
                outputs[i][0] = inp[0]
    @to_python.register(TestOp)
    def to_python_TestOp(op, **kwargs):
        def func(*args, op=op):
            op.called += 1
            return list(args)
        return func
    op1 = TestOp()
    op2 = TestOp()
    q, r = op1(x, y)
    outs = op2(q + r, q + r)
    out_fg = FunctionGraph([x, y], outs, clone=False)
    assert len(out_fg.outputs) == 2
    out_py = fgraph_to_python(out_fg, to_python)
    x_val = np.r_[1, 2].astype(config.floatX)
    y_val = np.r_[2, 3].astype(config.floatX)
    res = out_py(x_val, y_val)
    assert len(res) == 2
    assert op1.called == 1
    assert op2.called == 1
    res = out_py(x_val, y_val)
    assert len(res) == 2
    assert op1.called == 2
    assert op2.called == 2