def test_to_from_braket_common_one_qubit_gates(): """These gates should stay the same (i.e., not get decomposed) when converting Cirq -> Braket -> Cirq. """ rots = [ops.rx, ops.ry, ops.rz] angles = [1 / 5, 3 / 5, -4 / 5] qubit = LineQubit(0) cirq_circuit = Circuit( # Paulis. ops.X(qubit), ops.Y(qubit), ops.Z(qubit), # Single-qubit rotations. [rot(angle).on(qubit) for rot, angle in zip(rots, angles)], # Rz alter egos. ops.T(qubit), ops.T(qubit)**-1, ops.S(qubit), ops.S(qubit)**-1, # Rx alter egos. ops.X(qubit)**0.5, ops.X(qubit)**-0.5, ) test_circuit = from_braket(to_braket(cirq_circuit)) assert _equal(test_circuit, cirq_circuit, require_qubit_equality=True)
def test_from_braket_non_parameterized_single_qubit_gates(): braket_circuit = BKCircuit() instructions = [ Instruction(braket_gates.I(), target=0), Instruction(braket_gates.X(), target=1), Instruction(braket_gates.Y(), target=2), Instruction(braket_gates.Z(), target=3), Instruction(braket_gates.H(), target=0), Instruction(braket_gates.S(), target=1), Instruction(braket_gates.Si(), target=2), Instruction(braket_gates.T(), target=3), Instruction(braket_gates.Ti(), target=0), Instruction(braket_gates.V(), target=1), Instruction(braket_gates.Vi(), target=2), ] for instr in instructions: braket_circuit.add_instruction(instr) cirq_circuit = from_braket(braket_circuit) for i, op in enumerate(cirq_circuit.all_operations()): assert np.allclose( instructions[i].operator.to_matrix(), protocols.unitary(op) ) qreg = LineQubit.range(4) expected_cirq_circuit = Circuit( ops.I(qreg[0]), ops.X(qreg[1]), ops.Y(qreg[2]), ops.Z(qreg[3]), ops.H(qreg[0]), ops.S(qreg[1]), ops.S(qreg[2]) ** -1, ops.T(qreg[3]), ops.T(qreg[0]) ** -1, ops.X(qreg[1]) ** 0.5, ops.X(qreg[2]) ** -0.5, ) assert _equal(cirq_circuit, expected_cirq_circuit)