Example #1
0
    def test_unroll_single_entry(self):
        q1 = self.q1
        # since single qubit pulse will be modified convert to APSWaveform
        Xq1 = APSPattern.APSWaveform(Compiler.Waveform(Z(q1)))
        seqs = [repeat(5, [Xq1]) + [Y(q1)]]
        a, b = APSPattern.unroll_loops(seqs)

        Xq1_looped = APSPattern.APSWaveform(Compiler.Waveform(Z(q1)))
        Xq1_looped.repeat = 5
        seqUnrolled = [Xq1_looped, Y(q1)]

        assert (a[0] == seqUnrolled)
        assert (b == 0)
Example #2
0
    def test_unroll_nested_loops(self):
        q1 = self.q1
        # since single qubit pulse will be modified convert to APSWaveform
        Zq1 = APSPattern.APSWaveform(Compiler.Waveform(Z(q1)))
        seqs = [
            repeat(2, [X(q1), Y(q1)] + repeat(3, [Zq1]) + [Y(q1), X(q1)]),
            [X(q1), Y(q1)]
        ]
        a, b = APSPattern.unroll_loops(seqs)

        Zq1_looped = APSPattern.APSWaveform(Compiler.Waveform(Z(q1)))
        Zq1_looped.repeat = 3
        seqUnrolled = ([X(q1), Y(q1), Zq1_looped, Y(q1), X(q1)]) * 2

        assert (a[0] == seqUnrolled)

        assert (b == 0)