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 random_one_qubit_identity_circuit(num_cliffords: int) -> QuantumCircuit: """Returns a single-qubit identity circuit. Args: num_cliffords (int): Number of cliffords used to generate the circuit. Returns: circuit: Quantum circuit as a :class:`qiskit.QuantumCircuit` object. """ return to_qiskit( rb_circuits(n_qubits=1, num_cliffords=[num_cliffords], trials=1)[0])
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_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_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_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_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, )