def circuit(params): """Parametrized circuit.""" for layer in range(n): qml.broadcast(qml.RX, pattern="single", wires=self.all_wires, parameters=params[layer]) for _layer in range(n): qml.broadcast(qml.CNOT, pattern="double", wires=self.all_wires) return [bu.expval(qml.PauliZ(w)) for w in self.all_wires]
def circuit(params1, params2): """Parametrized circuit with nearest-neighbour gates.""" for layer in range(n): qml.broadcast( qml.RX, pattern="single", wires=self.all_wires, parameters=params1[layer], ) qml.broadcast( qml.CRY, pattern="chain", wires=self.all_wires, parameters=params2[layer], ) return bu.expval(qml.PauliZ(0))
def circuit(): """Mutable IQP quantum circuit.""" for i in range(self.n_wires): qml.Hadamard(i) for i in range(n * self.n_wires): wires = random_iqp_wires(self.n_wires) if len(wires) == 1: qml.PauliZ(wires=wires) elif len(wires) == 2: qml.CZ(wires=wires) elif len(wires) == 3: CCZ(wires) for i in range(self.n_wires): qml.Hadamard(i) return bu.expval(qml.PauliZ(0))