def test_acceptance_with_qiskit(): """Test gate operations with QASM interface""" circuit = Circuit() circuit += ops.RotateX(0, -np.pi) circuit += ops.RotateY(0, -np.pi) circuit += ops.RotateZ(0, -np.pi) circuit += ops.CNOT(0, 1) circuit += ops.Hadamard(0) circuit += ops.PauliX(0) circuit += ops.PauliY(0) circuit += ops.PauliZ(0) circuit += ops.SGate(0) circuit += ops.TGate(0) circuit += ops.SqrtPauliX(0) circuit += ops.MolmerSorensenXX(0, 1) circuit += ops.ControlledPauliY(0, 1) circuit += ops.ControlledPauliZ(0, 1) circuit += ops.SingleQubitGate(0, 1, 0, 1, 0, 1.0) circuit += ops.PragmaRepeatedMeasurement('ro', 1, None) circuit += ops.MeasureQubit(0, 'ro', 0) circuit += ops.DefinitionFloat(name='rof', length=1, is_output=True) circuit += ops.DefinitionBit(name='ro', length=2, is_output=True) circuit += ops.DefinitionComplex(name='roc', length=1, is_output=True) circuit += ops.InputSymbolic('other', 0) circuit += ops.PragmaSetNumberOfMeasurements(20, 'ro') backend = QasmBackend(number_qubits=2) backend.run_circuit(circuit=circuit, overwrite=True) q_circuit = QuantumCircuit.from_qasm_file( "default_qasm_backend_output.qasm")
def test_pyquest_global_phase(): """Test with PyQuEST""" circuit = Circuit() circuit += ops.DefinitionBit(name='out', length=2, is_output=True) circuit += ops.DefinitionFloat(name='global_phase', length=1, is_output=True) circuit += ops.PauliX(qubit=0) circuit += ops.PragmaGlobalPhase(phase=1) circuit += ops.PragmaGlobalPhase(phase='test') circuit += ops.MeasureQubit(qubit=0, readout='out', readout_index=0) circuit += ops.MeasureQubit(qubit=1, readout='out', readout_index=1) circuit += ops.InputSymbolic(name="test", input=-2) circuit = circuit.substitute_parameters({}) pyquest = PyQuestBackend(number_qubits=2) (output_bit_register_dict, output_float_register_dict, output_complex_register_dict) = pyquest.run_circuit(circuit) assert output_bit_register_dict['out'] == [[True, False]] assert len(output_bit_register_dict['out']) == 1 assert output_float_register_dict['global_phase'][0][0] == -1
ops.PragmaConditional('ro', 0, Circuit()), ops.PragmaRepeatGate(3), ops.PragmaBoostNoise(0.004), ops.PragmaStopParallelBlock([0, 1], 0.002), ops.PragmaSleep([0, 1], 0.002), ops.PragmaActiveReset(0), ops.PragmaGlobalPhase(0.03), ops.MeasureQubit(0, 'ro', 0), ops.PragmaRepeatedMeasurement('ro', 20, {}), ops.PragmaGetStateVector('ro', Circuit()), ops.PragmaGetDensityMatrix('ro', Circuit()), ops.PragmaGetOccupationProbability('ro', Circuit()), ops.PragmaGetPauliProduct({}, 'ro', Circuit()), ops.PragmaStartDecompositionBlock([0, 1], {}), ops.PragmaStopDecompositionBlock([0, 1]), ops.InputSymbolic('other', 0), ]) def test_all_operations(op: Any): """Test all operations with mocked interface""" circuit = Circuit() circuit += ops.DefinitionFloat(name='ro', length=1, is_output=False) circuit += ops.DefinitionBit(name='ro', length=1, is_output=False) circuit += ops.DefinitionComplex(name='ro', length=1, is_output=False) circuit += ops.DefinitionUsize(name='ro', length=1, is_output=False) circuit += op mocked_call_circuit(circuit=circuit, classical_bit_registers={}, classical_float_registers={}, classical_complex_registers={}, output_bit_register_dict={}, output_complex_register_dict={},
(ops.SGate(0), 's q[0]'), (ops.TGate(0), 't q[0]'), (ops.SqrtPauliX(0), 'rx(1.5707963267948966) q[0]'), (ops.MolmerSorensenXX(0, 1), 'rxx(pi/2) q[0],q[1]'), (ops.ControlledPauliY(0, 1), 'cy q[0],q[1]'), (ops.ControlledPauliZ(0, 1), 'cz q[0],q[1]'), (ops.SingleQubitGate(0, 1, 0, 1, 0, 1.0), 'u3(0.0,0.0,-0.0) q[0]'), (ops.PragmaRepeatedMeasurement('ro', 1, None), 'measure q -> ro;\n'), (ops.PragmaRepeatedMeasurement('ro', 1, {0: 1, 1: 0}), 'measure q[1] -> ro[0];\nmeasure q[0] -> ro[1];\n'), (ops.MeasureQubit(0, 'ro', 0), 'measure q[0] -> ro[0]'), (ops.DefinitionFloat(name='ro', length=1, is_output=True), 'creg ro[1]'), (ops.DefinitionUsize(name='ro', length=1, is_output=True), 'creg ro[1]'), (ops.DefinitionBit(name='ro', length=1, is_output=True), 'creg ro[1]'), (ops.DefinitionComplex(name='ro', length=1, is_output=True), 'creg ro[1]'), (ops.InputSymbolic('other', 0), None), (ops.PragmaSetNumberOfMeasurements(20, 'ro'), None) ]) def test_gate_translation(gate: Tuple[Any, str]): """Test gate operations with QASM interface""" qasm_operation = qasm_call_operation(operation=gate[0], number_qubits=2) if gate[1] is None: assert qasm_operation is None else: npt.assert_string_equal(qasm_operation, gate[1]) @pytest.mark.parametrize("gate", [ (ops.RotateX(0, -np.pi), 'rx(-3.141592653589793) s[1]'),