So after finishing H.6, we got to know that we can use LCU for simulating time evolution. But how to find the expectation value of the LCU, for example, U+V? I am planning to use it on quantum signal processing, so it can approximate arbitrary function (not just odd or even function), but I don’t know how to code it. Can anyone help me?

Hello @verstrikt

Welcome to the forum, this is a great question! If I understand your question correctly, the `postselect`

option for mid-circuit measurements might be just what you need.

Let’s say your circuit with two wires looks like this:

```
dev = qml.device("default.qubit", wires = [0,1])
@qml.qnode(dev)
def lcu_circuit():
Your LCU circuit calculating U + V
return qml.expval(qml.PauliZ(1))
```

But that’s not what you want, since you only want the state when we have already measured `0`

in `wire = 0`

. This means you have to add a mid circuit measurement that selects only the results that end up with a \vert 0 \rangle state in the first wire. You can do this as follows

```
dev = qml.device("default.qubit", wires = [0,1])
@qml.qnode(dev)
def lcu_circuit():
Your LCU circuit calculating U+V
m0 = qml.measure(0, postselect = 0)
return qml.expval(qml.PauliZ(1))
```

You won’t be able to return `qml.state()`

in this case, but you can also return `qml.density_matrix(wires = 1)`

if you want to debug! That’ll return the state in the last wires when the first wire is measured to be \vert 0 \rangle.

I hope this helps, let me know if you have any follow-up questions .

Cheers,

Alvaro