def test_transform_qregs_two_qubit_ops(new_reg_sizes): nqubits = sum(new_reg_sizes) circ = to_qiskit( cirq.testing.random_circuit(nqubits, n_moments=5, op_density=1, random_state=1)) orig = circ.copy() new_qregs = [qiskit.QuantumRegister(s) for s in new_reg_sizes] _transform_registers(circ, new_qregs=new_qregs) assert circ.qregs == new_qregs assert circ.cregs == orig.cregs assert _equal(from_qiskit(circ), from_qiskit(orig))
def test_transform_cregs(nbits, with_ops, measure): qreg = qiskit.QuantumRegister(nbits) creg = qiskit.ClassicalRegister(nbits) circ = qiskit.QuantumCircuit(qreg, creg) if with_ops: circ.h(qreg) if measure: circ.measure(qreg, creg) orig = circ.copy() new_cregs = [qiskit.ClassicalRegister(1) for _ in range(nbits)] _transform_registers(circ, new_cregs=new_cregs) assert circ.cregs == new_cregs assert circ.qregs == orig.qregs assert _equal(from_qiskit(circ), from_qiskit(orig))
def test_transform_qregs_and_cregs_random_circuit(new_reg_sizes, measure): nbits = sum(new_reg_sizes) circ = to_qiskit( cirq.testing.random_circuit(nbits, n_moments=5, op_density=1, random_state=10)) creg = qiskit.ClassicalRegister(nbits) circ.add_register(creg) if measure: circ.measure(circ.qregs[0], creg) orig = circ.copy() new_qregs = [qiskit.QuantumRegister(s) for s in new_reg_sizes] new_cregs = [qiskit.ClassicalRegister(s) for s in new_reg_sizes] _transform_registers(circ, new_qregs=new_qregs, new_cregs=new_cregs) assert circ.qregs == new_qregs assert circ.cregs == new_cregs assert _equal(from_qiskit(circ), from_qiskit(orig))
def test_bell_state_to_from_circuits(): """Tests cirq.Circuit --> qiskit.QuantumCircuit --> cirq.Circuit with a Bell state circuit. """ qreg = cirq.LineQubit.range(2) cirq_circuit = cirq.Circuit( [cirq.ops.H.on(qreg[0]), cirq.ops.CNOT.on(qreg[0], qreg[1])]) qiskit_circuit = to_qiskit(cirq_circuit) # Qiskit from Cirq circuit_cirq = from_qiskit(qiskit_circuit) # Cirq from Qiskit assert _equal(cirq_circuit, circuit_cirq)
def test_convert_with_barrier(as_qasm): """Tests converting a Qiskit circuit with a barrier to a Cirq circuit.""" n = 5 qiskit_circuit = qiskit.QuantumCircuit(qiskit.QuantumRegister(n)) qiskit_circuit.barrier() if as_qasm: cirq_circuit = from_qasm(qiskit_circuit.qasm()) else: cirq_circuit = from_qiskit(qiskit_circuit) assert _equal(cirq_circuit, cirq.Circuit())
def test_random_circuit_to_from_circuits(): """Tests cirq.Circuit --> qiskit.QuantumCircuit --> cirq.Circuit with a random two-qubit circuit. """ cirq_circuit = cirq.testing.random_circuit(qubits=2, n_moments=10, op_density=0.99, random_state=1) qiskit_circuit = to_qiskit(cirq_circuit) circuit_cirq = from_qiskit(qiskit_circuit) assert cirq.equal_up_to_global_phase(cirq_circuit.unitary(), circuit_cirq.unitary())
def test_to_qiskit_assign_qregs(qreg_sizes): nbits = sum(qreg_sizes) cirq_circuit = cirq.testing.random_circuit(nbits, n_moments=5, op_density=1, random_state=10) qregs = [qiskit.QuantumRegister(s) for s in qreg_sizes] qiskit_circuit = to_qiskit(cirq_circuit, qregs=qregs) assert qiskit_circuit.qregs == qregs assert qiskit_circuit.cregs == [] cirq.testing.assert_allclose_up_to_global_phase( cirq.unitary(from_qiskit(qiskit_circuit)), cirq.unitary(cirq_circuit), atol=1e-5, )
def test_convert_with_multiple_barriers(as_qasm): """Tests converting a Qiskit circuit with barriers to a Cirq circuit.""" n = 1 num_ops = 10 qreg = qiskit.QuantumRegister(n) qiskit_circuit = qiskit.QuantumCircuit(qreg) for _ in range(num_ops): qiskit_circuit.h(qreg) qiskit_circuit.barrier() if as_qasm: cirq_circuit = from_qasm(qiskit_circuit.qasm()) else: cirq_circuit = from_qiskit(qiskit_circuit) qbit = cirq.LineQubit(0) correct = cirq.Circuit(cirq.ops.H.on(qbit) for _ in range(num_ops)) assert _equal(cirq_circuit, correct)
def test_to_qiskit_assign_qregs_and_cregs(qreg_sizes, measure, flip_creg): nbits = sum(qreg_sizes) cirq_circuit = cirq.testing.random_circuit(nbits, n_moments=5, op_density=1, random_state=10) if measure: cirq_circuit.append(cirq.measure_each(*cirq_circuit.all_qubits())) qregs = [qiskit.QuantumRegister(s) for s in qreg_sizes] cregs = [qiskit.ClassicalRegister(s) for s in qreg_sizes] if flip_creg: cregs = cregs[::-1] qiskit_circuit = to_qiskit(cirq_circuit, qregs=qregs, cregs=cregs) assert qiskit_circuit.qregs == qregs assert qiskit_circuit.cregs == cregs cirq.testing.assert_allclose_up_to_global_phase( cirq.unitary(from_qiskit(qiskit_circuit)), cirq.unitary(cirq_circuit), atol=1e-5, )