Beispiel #1
0
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")
Beispiel #2
0
def test_qasm_xx():
    """Testing the MolmerSorensenXX gate with the QASM backend"""
    circuit = Circuit()
    circuit += ops.DefinitionBit(name='ro', length=2, is_output=True)
    circuit += ops.MolmerSorensenXX(control=0, target=1)
    circuit += ops.MeasureQubit(qubit=0, readout='ro', readout_index=0)
    circuit += ops.MeasureQubit(qubit=1, readout='ro', readout_index=1)

    backend = QasmBackend(number_qubits=2)
    backend.run_circuit(circuit=circuit, overwrite=True)
    circuit = [
        'creg ro[2];', 'rxx(pi/2) q[0],q[1];', 'measure q[0] -> ro[0];',
        'measure q[1] -> ro[1];'
    ]
    npt.assert_equal(backend.circuit, circuit)

@pytest.mark.parametrize("op", [
    ops.Bogoliubov(1, 0, 0.01, 0.02),
    ops.CNOT(1, 0),
    ops.ControlledPauliY(1, 0),
    ops.ControlledPauliZ(1, 0),
    ops.ControlledPhaseShift(1, 0, 0.01),
    ops.FSwap(1, 0),
    ops.Fsim(1, 0, 0.01, 0.02, 0.03),
    ops.Qsim(1, 0, 0.01, 0.02, 0.03),
    ops.GivensRotation(1, 0, 0.01, 0.02),
    ops.GivensRotationLittleEndian(0, 1, 0.01, 0.02),
    ops.ISwap(1, 0),
    ops.InvSqrtISwap(1, 0),
    ops.MolmerSorensenXX(1, 0),
    ops.VariableMSXX(1, 0, 0.01),
    ops.PMInteraction(1, 0, 0.01),
    ops.ComplexPMInteraction(1, 0, 0.01, 0.02),
    ops.SWAP(1, 0),
    ops.SqrtISwap(1, 0),
    ops.XY(1, 0, 0.01),
    ops.SpinInteraction(1, 0, 0.01, 0.02, .003),
    ops.SingleQubitGate(0, 0.1, 0.0, 0.0, 0.0, 0.0),
    ops.Hadamard(0),
    ops.PauliX(0),
    ops.PauliY(0),
    ops.PauliZ(0),
    ops.TGate(0),
    ops.SGate(0),
    ops.SqrtPauliX(0),
from qoqo_qasm import qasm_call_operation


@pytest.mark.parametrize("gate", [
    (ops.RotateX(0, -np.pi), 'rx(-3.141592653589793) q[0]'),
    (ops.RotateY(0, -np.pi), 'ry(-3.141592653589793) q[0]'),
    (ops.RotateZ(0, -np.pi), 'rz(-3.141592653589793) q[0]'),
    (ops.CNOT(0, 1), 'cx q[0],q[1]'),
    (ops.Hadamard(0), 'h q[0]'),
    (ops.PauliX(0), 'x q[0]'),
    (ops.PauliY(0), 'y q[0]'),
    (ops.PauliZ(0), 'z q[0]'),
    (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]):