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)
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)