Exemplo n.º 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)
Exemplo n.º 2
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()
    )
Exemplo n.º 3
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))
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,
    )
Exemplo n.º 5
0
def test_transform_qregs_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]
    _transform_registers(circ, new_qregs=new_qregs)

    assert circ.qregs == new_qregs
    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,
    )