예제 #1
0
def test_qudit_measure_quil():
    q0 = cirq.LineQid(0, 3)
    qubit_id_map = {q0: '0'}
    assert cirq.quil(
        cirq.measure(q0, key='a'),
        formatter=cirq.QuilFormatter(qubit_id_map=qubit_id_map,
                                     measurement_id_map={})) == None
예제 #2
0
    def _write_quil(self, output_func: Callable[[str], None]) -> None:
        """Calls `output_func` for successive lines of QUIL output.

        Args:
            output_func: A function that accepts a string of QUIL. This will likely
                write the QUIL to a file.

        Returns:
            None.
        """
        if self._decompose_operation is None:
            return super()._write_quil(output_func)

        output_func("# Created using Cirq.\n\n")

        if len(self.measurements) > 0:
            measurements_declared: Set[str] = set()
            for m in self.measurements:
                key = cirq.measurement_key_name(m)
                if key in measurements_declared:
                    continue
                measurements_declared.add(key)
                output_func(
                    f"DECLARE {self.measurement_id_map[key]} BIT[{len(m.qubits)}]\n"
                )
            output_func("\n")

        for main_op in self.operations:
            decomposed = self._decompose_operation(main_op)
            for decomposed_op in decomposed:
                output_func(cirq.quil(decomposed_op, formatter=self.formatter))
예제 #3
0
def test_qudit_measure_quil():
    q0 = cirq.LineQid(0, 3)
    qubit_id_map = {q0: '0'}
    with cirq.testing.assert_deprecated(deadline='v1.0', count=3):
        assert (cirq.quil(
            cirq.measure(q0, key='a'),
            formatter=cirq.QuilFormatter(qubit_id_map=qubit_id_map,
                                         measurement_id_map={}),
        ) is None)
예제 #4
0
def test_confused_measure_quil():
    q0 = cirq.LineQubit(0)
    qubit_id_map = {q0: '0'}
    with cirq.testing.assert_deprecated(deadline='v1.0', count=3):
        assert (cirq.quil(
            cirq.measure(q0,
                         key='a',
                         confusion_map={(0, ): np.array([[0, 1], [1, 0]])}),
            formatter=cirq.QuilFormatter(qubit_id_map=qubit_id_map,
                                         measurement_id_map={}),
        ) is None)