コード例 #1
0
def test_consistency_with_qasm_output_and_qiskit():
    qubits = [cirq.NamedQubit('q_{}'.format(i)) for i in range(4)]
    a, b, c, d = qubits
    circuit1 = cirq.Circuit(
        cirq.rx(np.pi / 2).on(a),
        cirq.ry(np.pi / 2).on(b),
        cirq.rz(np.pi / 2).on(b),
        cirq.X.on(a),
        cirq.Y.on(b),
        cirq.Z.on(c),
        cirq.H.on(d),
        cirq.S.on(a),
        cirq.T.on(b),
        cirq.S.on(c) ** -1,
        cirq.T.on(d) ** -1,
        cirq.X.on(d) ** 0.125,
        cirq.TOFFOLI.on(a, b, c),
        cirq.CSWAP.on(d, a, b),
        cirq.SWAP.on(c, d),
        cirq.CX.on(a, b),
        cirq.ControlledGate(cirq.Y).on(c, d),
        cirq.CZ.on(a, b),
        cirq.ControlledGate(cirq.H).on(b, c),
        cirq.IdentityGate(1).on(c),
        cirq.circuits.qasm_output.QasmUGate(1.0, 2.0, 3.0).on(d),
    )

    qasm = cirq.qasm(circuit1)

    circuit2 = circuit_from_qasm(qasm)

    cirq_unitary = cirq.unitary(circuit2)
    ct.assert_allclose_up_to_global_phase(cirq_unitary, cirq.unitary(circuit1), atol=1e-8)

    cq.assert_qiskit_parsed_qasm_consistent_with_unitary(qasm, cirq_unitary)
コード例 #2
0
ファイル: qasm_output_test.py プロジェクト: ybc1991/Cirq
def test_output_unitary_same_as_qiskit():
    qubits = tuple(_make_qubits(5))
    operations = _all_operations(*qubits, include_measurements=False)
    output = cirq.QasmOutput(operations, qubits, header='Generated from Cirq', precision=10)
    text = str(output)

    circuit = cirq.Circuit(operations)
    cirq_unitary = circuit.unitary(qubit_order=qubits)
    cq.assert_qiskit_parsed_qasm_consistent_with_unitary(text, cirq_unitary)