Beispiel #1
0
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)
Beispiel #2
0
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])
Beispiel #3
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())
Beispiel #4
0
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))
Beispiel #5
0
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,
    )
Beispiel #6
0
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))
Beispiel #7
0
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,
    )