def make_circuit()-> Program: prog = Program() # circuit begin prog += H(3) # number=15 prog += CZ(0,3) # number=16 prog += H(3) # number=17 prog += CNOT(0,3) # number=32 prog += X(3) # number=33 prog += CNOT(0,3) # number=34 prog += H(3) # number=20 prog += CZ(0,3) # number=21 prog += H(3) # number=22 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(1) # number=29 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=9 prog += H(0) # number=23 prog += CZ(2,0) # number=24 prog += H(0) # number=25 prog += Y(2) # number=30 prog += CNOT(2,0) # number=11 prog += CNOT(2,0) # number=18 prog += H(0) # number=26 prog += X(2) # number=31 prog += CZ(2,0) # number=27 prog += H(0) # number=28 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += CNOT(0,3) # number=10 prog += H(3) # number=30 prog += X(3) # number=11 prog += H(3) # number=13 prog += CZ(0,3) # number=14 prog += H(1) # number=18 prog += CZ(3,1) # number=19 prog += CNOT(3,0) # number=31 prog += Z(3) # number=32 prog += CNOT(3,0) # number=33 prog += H(1) # number=20 prog += RX(-3.141592653589793,3) # number=26 prog += H(3) # number=15 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(2) # number=17 prog += H(3) # number=4 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=9 prog += H(0) # number=27 prog += CZ(1,0) # number=28 prog += H(0) # number=29 prog += CNOT(1,0) # number=22 prog += X(1) # number=23 prog += X(1) # number=24 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(3) # number=31 prog += CZ(0,3) # number=32 prog += H(3) # number=33 prog += X(3) # number=13 prog += H(3) # number=28 prog += CZ(0,3) # number=29 prog += H(3) # number=30 prog += Z(3) # number=10 prog += H(1) # number=2 prog += H(2) # number=3 prog += RX(2.708052867394402,1) # number=11 prog += H(3) # number=4 prog += H(0) # number=5 prog += H(1) # number=6 prog += Y(2) # number=16 prog += CNOT(1,0) # number=19 prog += H(3) # number=25 prog += Z(1) # number=20 prog += H(0) # number=22 prog += CZ(1,0) # number=23 prog += H(0) # number=24 prog += Z(2) # number=15 prog += H(2) # number=7 prog += H(3) # number=8 prog += Y(2) # number=18 prog += H(0) # number=9 prog += CNOT(1,0) # number=26 prog += CNOT(1,0) # number=27 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += CNOT(0,3) # number=28 prog += CNOT(0,3) # number=31 prog += X(3) # number=32 prog += CNOT(0,3) # number=33 prog += CNOT(0,3) # number=30 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += H(3) # number=8 prog += Y(1) # number=19 prog += H(0) # number=9 prog += Y(2) # number=10 prog += Y(2) # number=11 prog += Y(3) # number=20 prog += Y(1) # number=12 prog += RX(-2.158274153016188,3) # number=24 prog += H(0) # number=16 prog += CZ(2,0) # number=17 prog += H(0) # number=18 prog += CNOT(1,0) # number=21 prog += Z(1) # number=22 prog += CNOT(1,0) # number=23 prog += H(0) # number=25 prog += CZ(2,0) # number=26 prog += H(0) # number=27 # circuit end return prog
def make_circuit() -> Program: prog = Program() # circuit begin prog += CNOT(0, 3) # number=14 prog += X(3) # number=15 prog += RX(1.8001325905069514, 3) # number=18 prog += Z(1) # number=27 prog += CNOT(0, 3) # number=16 prog += H(1) # number=22 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += H(0) # number=5 prog += CNOT(0, 3) # number=28 prog += X(3) # number=29 prog += CNOT(0, 3) # number=30 prog += H(1) # number=6 prog += X(1) # number=25 prog += H(2) # number=7 prog += H(3) # number=8 prog += Z(1) # number=21 prog += H(0) # number=9 prog += CNOT(2, 0) # number=10 prog += X(1) # number=17 prog += CNOT(2, 0) # number=11 prog += Y(0) # number=12 prog += Y(0) # number=13 prog += Z(2) # number=26 prog += CNOT(2, 1) # number=23 prog += X(0) # number=19 prog += X(0) # number=20 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += X(3) # number=1 prog += RX(-1.9352210746113125,3) # number=14 prog += CNOT(1,2) # number=22 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += Y(2) # number=13 prog += RX(0.13823007675795101,2) # number=24 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=9 prog += RX(-1.9069467407290044,2) # number=20 prog += H(3) # number=21 prog += H(3) # number=27 prog += Y(2) # number=10 prog += H(1) # number=17 prog += CZ(3,1) # number=18 prog += H(1) # number=19 prog += Y(2) # number=11 prog += CNOT(1,0) # number=15 prog += CNOT(1,0) # number=16 prog += Z(3) # number=23 prog += Y(1) # number=25 prog += Y(1) # number=26 prog += Y(2) # number=28 prog += Y(2) # number=29 # circuit end return prog
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(0) # number=1 prog += CNOT(0, 2) # number=11 prog += H(2) # number=34 prog += CZ(0, 2) # number=35 prog += H(2) # number=36 prog += X(2) # number=32 prog += CNOT(0, 2) # number=33 prog += H(2) # number=25 prog += CZ(0, 2) # number=26 prog += H(2) # number=27 prog += H(1) # number=7 prog += CZ(2, 1) # number=8 prog += RX(-0.3989822670059037, 1) # number=30 prog += H(1) # number=9 prog += H(1) # number=18 prog += CZ(2, 1) # number=19 prog += H(1) # number=20 prog += Y(1) # number=14 prog += H(1) # number=22 prog += CZ(2, 1) # number=23 prog += H(1) # number=24 prog += Z(2) # number=3 prog += X(1) # number=17 prog += Y(2) # number=5 prog += X(2) # number=21 prog += CNOT(1, 0) # number=15 prog += CNOT(1, 0) # number=16 prog += X(2) # number=28 prog += X(2) # number=29 # circuit end return prog
def make_circuit() -> Program: prog = Program() # circuit begin prog += CNOT(0, 3) # number=14 prog += H(3) # number=22 prog += X(3) # number=15 prog += H(3) # number=19 prog += CZ(0, 3) # number=20 prog += H(3) # number=21 prog += Z(3) # number=10 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=9 prog += H(0) # number=26 prog += CZ(1, 0) # number=27 prog += H(0) # number=28 prog += CNOT(1, 0) # number=32 prog += Z(1) # number=33 prog += CNOT(1, 0) # number=34 prog += H(0) # number=29 prog += CZ(1, 0) # number=30 prog += H(0) # number=31 prog += H(1) # number=18 prog += RX(2.8902652413026093, 2) # number=13 prog += Y(1) # number=11 prog += Y(1) # number=12 # circuit end return prog
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(0) # number=1 prog += RX(-0.09738937226128368, 2) # number=2 prog += H(1) # number=33 prog += CZ(2, 1) # number=34 prog += H(1) # number=35 prog += H(1) # number=3 prog += CNOT(1, 0) # number=4 prog += Y(1) # number=15 prog += CNOT(1, 0) # number=10 prog += H(1) # number=19 prog += CZ(0, 1) # number=20 prog += RX(-0.6000441968356504, 1) # number=28 prog += H(1) # number=21 prog += H(1) # number=30 prog += CZ(0, 1) # number=31 prog += H(1) # number=32 prog += X(1) # number=23 prog += H(2) # number=29 prog += CNOT(0, 1) # number=24 prog += CNOT(0, 1) # number=18 prog += Z(1) # number=11 prog += CNOT(1, 0) # number=12 prog += CNOT(2, 1) # number=26 prog += Y(1) # number=14 prog += CNOT(1, 0) # number=5 prog += X(1) # number=6 prog += Z(1) # number=8 prog += X(1) # number=7 prog += RX(-2.42845112122491, 1) # number=25 # circuit end return prog
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(3) # number=23 prog += RX(-0.6848671984825748, 1) # number=26 prog += CZ(0, 3) # number=24 prog += H(3) # number=25 prog += CNOT(0, 3) # number=17 prog += CNOT(0, 3) # number=30 prog += X(3) # number=31 prog += CNOT(0, 3) # number=32 prog += CNOT(0, 3) # number=19 prog += CNOT(0, 3) # number=15 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += Y(3) # number=12 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += CNOT(3, 0) # number=20 prog += CNOT(3, 0) # number=33 prog += Z(3) # number=34 prog += CNOT(3, 0) # number=35 prog += H(0) # number=27 prog += CZ(3, 0) # number=28 prog += H(0) # number=29 prog += H(3) # number=8 prog += H(0) # number=9 prog += Y(2) # number=10 prog += Y(2) # number=11 # circuit end return prog
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(3) # number=19 prog += CZ(0, 3) # number=20 prog += H(3) # number=21 prog += CNOT(0, 3) # number=14 prog += CNOT(0, 3) # number=25 prog += CNOT(0, 3) # number=28 prog += X(3) # number=29 prog += CNOT(0, 3) # number=30 prog += CNOT(3, 1) # number=35 prog += Y(2) # number=34 prog += CNOT(0, 3) # number=27 prog += H(3) # number=22 prog += CZ(0, 3) # number=23 prog += H(3) # number=24 prog += CNOT(0, 3) # number=13 prog += H(3) # number=18 prog += Z(3) # number=10 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += CNOT(3, 0) # number=31 prog += Z(3) # number=32 prog += CNOT(3, 0) # number=33 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=9 # circuit end return prog
def u3_replacement(theta: float, phi: float, lam: float): """ implemented with a custom gate """ # implemented with two X90 pulse: https://arxiv.org/pdf/1707.03429.pdf # p = Program() # p += RZ(phi + 3*np.pi, 0) # p += RX(np.pi/2, 0) # p += RZ(np.pi + theta, 0) # p += RX(np.pi/2, 0) # p += RZ(lam, 0) # formula from https://qiskit.org/documentation/stubs/qiskit.circuit.library.U3Gate.html (13.07.2020) gives wrong results # p = Program() # p += RZ(phi - np.pi/2, 0) # p += RX(np.pi/2, 0) # p += RZ(np.pi - theta, 0) # p += RX(np.pi/2, 0) # p += RZ(lam - np.pi/2, 0) theta_param = Parameter('theta') phi_param = Parameter('phi') lam_param = Parameter('lam') matrix = np.array( [[ quil_cos(theta_param / 2), -quil_exp(1j * lam_param) * quil_sin(theta_param / 2) ], [ quil_exp(1j * phi_param) * quil_sin(theta_param / 2), quil_exp(1j * (phi_param + lam_param)) * quil_cos(theta_param / 2) ]]) definition = DefGate('U3', matrix, [theta_param, phi_param, lam_param]) U3 = definition.get_constructor() p = Program() p += definition p += U3(theta, phi, lam)(0) return p
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(3) # number=19 prog += CZ(0, 3) # number=20 prog += H(3) # number=21 prog += H(3) # number=31 prog += CZ(0, 3) # number=32 prog += H(3) # number=33 prog += X(3) # number=24 prog += CNOT(0, 3) # number=25 prog += CNOT(0, 3) # number=17 prog += RX(-0.48380526865282825, 3) # number=26 prog += H(1) # number=2 prog += Y(3) # number=18 prog += H(2) # number=3 prog += H(3) # number=4 prog += Y(3) # number=12 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += CNOT(0, 1) # number=28 prog += X(1) # number=29 prog += CNOT(0, 1) # number=30 prog += H(3) # number=8 prog += H(0) # number=9 prog += Y(2) # number=10 prog += X(2) # number=22 prog += Y(2) # number=11 prog += X(0) # number=13 prog += X(0) # number=14 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += H(1) # number=4 prog += H(2) # number=5 prog += H(1) # number=29 prog += CZ(3,1) # number=30 prog += H(1) # number=31 prog += H(3) # number=6 prog += H(4) # number=21 prog += H(0) # number=1 prog += H(1) # number=2 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=38 prog += CZ(1,0) # number=39 prog += H(0) # number=40 prog += H(0) # number=51 prog += CZ(1,0) # number=52 prog += H(0) # number=53 prog += H(0) # number=64 prog += CZ(1,0) # number=65 prog += H(0) # number=66 prog += X(0) # number=49 prog += H(0) # number=57 prog += CZ(1,0) # number=58 prog += H(0) # number=59 prog += H(0) # number=54 prog += CZ(1,0) # number=55 prog += H(0) # number=56 prog += H(4) # number=41
def build(self, a): pq = Program() code, x_qubits = to_qubits(1, self.n) pq += code code, b_qubits = to_qubits(0, self.n + 1) pq += code total_iters = 2 * (self.n) ro = pq.declare('ro', 'BIT', total_iters + len(x_qubits)) c = QubitPlaceholder() curr_a = a ''' code, ctrl_qubits = to_qubits(0, total_iters) pq += code for i in range(total_iters): ind = total_iters - 1 - i c = ctrl_qubits[ind] pq += H(c) pq += self.u_a(b_qubits, curr_a, c, x_qubits) curr_a = curr_a ** 2 % self.N for i in range(len(x_qubits)): pq += MEASURE(x_qubits[i], ro[total_iters + i]) ctrl_qubits = ctrl_qubits[::-1] pq += self.inv_qft(ctrl_qubits) #print(wave.wavefunction(address_qubits(pq))) for i in range(total_iters): pq += MEASURE(ctrl_qubits[i], ro[i]) ''' a_vals = [] for i in range(total_iters): a_vals.append(curr_a) curr_a = pow(curr_a, 2, self.N) for ind in range(total_iters - 1, -1, -1): pq += H(c) pq += self.u_a(b_qubits, a_vals[ind], c, x_qubits) pq += self.partial_inv_qft(c, ind, ro, total_iters) pq += MEASURE(c, ro[ind]) then_prog = Program(X(c)) pq.if_then(ro[ind], then_prog) return address_qubits(pq)
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += H(1) # number=4 prog += H(2) # number=5 prog += H(3) # number=6 prog += H(4) # number=21 prog += H(0) # number=1 prog += H(1) # number=2 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=28 prog += CZ(1,0) # number=29 prog += H(0) # number=30 prog += H(0) # number=36 prog += CZ(1,0) # number=37 prog += H(0) # number=38 prog += H(2) # number=34
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(0) # number=1 prog += CNOT(0, 2) # number=11 prog += CNOT(0, 2) # number=17 prog += X(2) # number=18 prog += CNOT(0, 2) # number=19 prog += CNOT(0, 2) # number=13 prog += H(1) # number=7 prog += CZ(2, 1) # number=8 prog += H(1) # number=9 prog += CNOT(2, 1) # number=4 prog += Y(1) # number=14 prog += CNOT(2, 1) # number=10 prog += Z(2) # number=3 prog += Y(2) # number=5 prog += CNOT(1, 0) # number=15 prog += CNOT(1, 0) # number=16 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += H(1) # number=4 prog += H(2) # number=5 prog += H(2) # number=34 prog += CZ(3,2) # number=35 prog += H(2) # number=36 prog += Y(2) # number=33 prog += H(3) # number=6 prog += H(4) # number=21 prog += H(0) # number=1 prog += H(1) # number=2 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(3) # number=30 prog += CZ(4,3) # number=31 prog += H(3) # number=32 prog += H(2) # number=29
def test_run(client_configuration: QCSClientConfiguration): quantum_processor = NxQuantumProcessor(nx.complete_graph(3)) qc = QuantumComputer( name="testy!", qam=QVM(client_configuration=client_configuration, gate_noise=(0.01, 0.01, 0.01)), compiler=DummyCompiler(quantum_processor=quantum_processor, client_configuration=client_configuration), ) result = qc.run( Program( Declare("ro", "BIT", 3), H(0), CNOT(0, 1), CNOT(1, 2), MEASURE(0, MemoryReference("ro", 0)), MEASURE(1, MemoryReference("ro", 1)), MEASURE(2, MemoryReference("ro", 2)), ).wrap_in_numshots_loop(1000)) bitstrings = result.readout_data.get("ro") assert bitstrings.shape == (1000, 3) parity = np.sum(bitstrings, axis=1) % 3 assert 0 < np.mean(parity) < 0.15
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += H(1) # number=4 prog += H(2) # number=50 prog += CZ(4,2) # number=51 prog += H(2) # number=52 prog += H(2) # number=5 prog += H(3) # number=6 prog += H(4) # number=21 prog += H(0) # number=1 prog += H(1) # number=2 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=28 prog += CNOT(3,0) # number=53 prog += Z(3) # number=54 prog += CNOT(3,0) # number=55
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += H(1) # number=4 prog += H(2) # number=5 prog += H(3) # number=6 prog += H(0) # number=38 prog += CZ(1,0) # number=39 prog += H(0) # number=40 prog += H(0) # number=51 prog += CZ(1,0) # number=52 prog += H(0) # number=53 prog += CNOT(1,0) # number=54 prog += Z(1) # number=55 prog += CNOT(1,0) # number=56 prog += H(0) # number=57 prog += CZ(1,0) # number=58 prog += H(0) # number=59 prog += H(0) # number=32 prog += CZ(1,0) # number=33 prog += H(0) # number=34 prog += H(4) # number=21 prog += H(0) # number=1 prog += H(1) # number=2 prog += H(2) # number=7 prog += H(3) # number=8 prog += CNOT(3,0) # number=41 prog += Z(3) # number=42 prog += CNOT(3,0) # number=43 prog += CNOT(1,3) # number=44 prog += CNOT(3,2) # number=45
def controlled_modular_add_product(ancilla_cache, control, constant, modulus, multiplier, summand): """ Performs a modular multiply-and-add by integer constants on a qubit register. Implements the map |x, y> ==> |x, y + a*x mod N> for the given modulus N, constant multiplier a, and summand y. Parameters: control (QubitPlaceholder): The control qubit constant (int): An integer "a" to be added to each basis state label modulus (int): The modulus "N" which addition and multiplication is taken with respect to. multiplier (list[QubitPlaceholder]): A quantum register representing an unsigned integer whose value is to be added to each basis state label of "summand". summand (list[QubitPlaceholder]): A quantum register representing an unsigned integer to use as the target for this operation. Remarks: See the Q# source for the "ModularAddProductLE" function at https://github.com/Microsoft/QuantumLibraries/blob/master/Canon/src/Arithmetic/Arithmetic.qs """ extra_zero_bit = None if not "extra_zero_bit" in ancilla_cache: extra_zero_bit = QubitPlaceholder() ancilla_cache["extra_zero_bit"] = extra_zero_bit else: extra_zero_bit = ancilla_cache["extra_zero_bit"] operation_args = (constant, modulus, multiplier) phase_summand = summand + [extra_zero_bit] program = Program() controlled_apply_phase_operation_on_register( ancilla_cache, program, control, controlled_modular_add_product_phase, phase_summand, operation_args) return program
def make_circuit() -> Program: prog = Program() # circuit begin prog += CNOT(0, 3) # number=13 prog += CNOT(0, 3) # number=17 prog += X(3) # number=18 prog += RX(-3.1101767270538954, 1) # number=27 prog += CNOT(0, 3) # number=19 prog += CNOT(0, 3) # number=15 prog += H(1) # number=2 prog += H(2) # number=3 prog += H(3) # number=4 prog += Y(3) # number=12 prog += H(1) # number=26 prog += H(0) # number=5 prog += H(1) # number=6 prog += X(3) # number=29 prog += H(2) # number=7 prog += H(0) # number=30 prog += CZ(3, 0) # number=31 prog += H(0) # number=32 prog += CNOT(3, 0) # number=23 prog += Z(3) # number=24 prog += CNOT(3, 0) # number=25 prog += CNOT(3, 0) # number=22 prog += H(3) # number=8 prog += Z(3) # number=28 prog += H(0) # number=9 prog += Y(2) # number=10 prog += Y(2) # number=11 # circuit end return prog
def maxcut_qaoa_program(gamma: float) -> Program: """ Generates a 2Q MAXCUT QAOA circuit with beta = pi/8 and with the provided gamma. Args: gamma: One of the two variational parameters (the other is fixed). Returns: A 2Q MAXCUT QAOA circuit with fixed beta and gamma. """ q0, q1 = (0, 1) p = Program() p += H(q0) p += H(q1) p += CNOT(q0, q1) p += RZ(2 * gamma, q1) p += CNOT(q0, q1) p += H(q0) p += H(q1) p += RZ(np.pi / 4, q0) p += RZ(np.pi / 4, q1) p += H(q0) p += H(q1) return p
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(0) # number=1 prog += RX(-0.09738937226128368, 2) # number=2 prog += H(1) # number=3 prog += CNOT(1, 0) # number=4 prog += Y(1) # number=15 prog += CNOT(1, 0) # number=10 prog += CNOT(0, 1) # number=16 prog += X(1) # number=17 prog += CNOT(0, 1) # number=18 prog += Z(1) # number=11 prog += CNOT(1, 0) # number=12 prog += Y(1) # number=14 prog += CNOT(1, 0) # number=5 prog += X(1) # number=6 prog += Z(1) # number=8 prog += X(1) # number=7 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += H(1) # number=4 prog += X(1) # number=48 prog += H(1) # number=26 prog += CZ(4,1) # number=27 prog += H(1) # number=28 prog += H(2) # number=5 prog += H(3) # number=6 prog += H(4) # number=21 prog += H(1) # number=34 prog += CZ(4,1) # number=35 prog += Z(4) # number=46 prog += RX(0.8011061266653969,2) # number=37 prog += H(1) # number=36 prog += H(0) # number=1 prog += H(1) # number=2 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=49 prog += CZ(1,0) # number=50 prog += H(0) # number=51 prog += X(0) # number=39 prog += CNOT(1,0) # number=40 prog += CNOT(0,1) # number=42 prog += X(1) # number=43 prog += CNOT(0,1) # number=44 prog += X(2) # number=11 prog += Y(1) # number=45
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += H(1) # number=4 prog += H(2) # number=5 prog += H(3) # number=6 prog += H(0) # number=41 prog += CZ(1,0) # number=42 prog += H(0) # number=43 prog += Z(1) # number=37 prog += H(0) # number=51 prog += CZ(1,0) # number=52 prog += H(0) # number=53 prog += H(4) # number=21 prog += X(2) # number=39 prog += H(0) # number=1 prog += H(1) # number=2 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=56 prog += CZ(3,0) # number=57 prog += H(0) # number=58 prog += H(0) # number=48 prog += CZ(3,0) # number=49 prog += H(0) # number=50 prog += Z(3) # number=46 prog += CNOT(3,0) # number=47 prog += X(4) # number=40 prog += H(0) # number=59 prog += CZ(3,0) # number=60 prog += H(0) # number=61
def make_circuit()-> Program: prog = Program() # circuit begin prog += H(0) # number=3 prog += CNOT(2,0) # number=45 prog += Z(2) # number=46 prog += H(0) # number=52 prog += CZ(2,0) # number=53 prog += H(0) # number=54 prog += H(1) # number=4 prog += RX(2.664070570244145,1) # number=39 prog += H(2) # number=5 prog += H(3) # number=6 prog += H(2) # number=49 prog += CZ(3,2) # number=50 prog += H(2) # number=51 prog += H(4) # number=21 prog += H(0) # number=1 prog += H(3) # number=40 prog += Y(4) # number=35
def make_circuit() -> Program: prog = Program() # circuit begin prog += H(0) # number=1 prog += Y(1) # number=2 prog += Y(1) # number=4 prog += Y(1) # number=3 prog += H(0) # number=13 prog += CZ(1, 0) # number=14 prog += H(0) # number=15 prog += X(0) # number=8 prog += H(0) # number=18 prog += CZ(1, 0) # number=19 prog += H(0) # number=20 prog += CNOT(1, 0) # number=10 prog += X(0) # number=11 prog += CNOT(1, 0) # number=12 prog += X(0) # number=16 prog += X(0) # number=17 # circuit end return prog
def make_circuit()-> Program: prog = Program() # circuit begin prog += X(3) # number=1 prog += H(0) # number=18 prog += X(1) # number=28 prog += CZ(3,0) # number=19 prog += H(2) # number=24 prog += H(0) # number=20 prog += RX(-1.8378317023500288,1) # number=25 prog += Z(3) # number=14 prog += CNOT(3,0) # number=15 prog += H(1) # number=2 prog += H(3) # number=16 prog += H(2) # number=3 prog += H(3) # number=4 prog += H(0) # number=5 prog += H(1) # number=6 prog += H(2) # number=7 prog += H(3) # number=8 prog += H(0) # number=9 prog += H(3) # number=29 prog += CZ(0,3) # number=30 prog += H(3) # number=31 prog += X(3) # number=22 prog += CNOT(0,3) # number=23 prog += Z(1) # number=26 prog += X(2) # number=11 prog += X(2) # number=12 prog += Z(1) # number=27 # circuit end return prog