Exemplo n.º 1
0
    def test_rotate_euler(self):
        qubit_basis = (bases.general(2), )
        dm = PauliVector(qubit_basis + qubit_basis)

        rotate90x = lib.rotate_euler(0, 0.5 * np.pi, 0)
        rotate90y = lib.rotate_euler(0, 0.5 * np.pi, 0)

        rotate90x(dm, 0)
        assert np.allclose(dm.meas_prob(0), (0.5, 0.5))

        rotate90y(dm, 1)
        assert np.allclose(dm.meas_prob(1), (0.5, 0.5))
    def test_hadamard(self):
        qubit_basis = (bases.general(3), )
        sys_bases = qubit_basis + qubit_basis
        dm = PauliVector(sys_bases)

        hadamard = lib.hadamard()

        hadamard(dm, 1)
        assert np.allclose(dm.meas_prob(0), (1, 0, 0))
        assert np.allclose(dm.meas_prob(1), (0.5, 0.5, 0))

        hadamard(dm, 1)
        assert np.allclose(dm.meas_prob(1), (1, 0, 0))
    def test_rotate_y(self):
        basis = (bases.general(3), )
        sys_bases = basis * 3
        dm = PauliVector(sys_bases)

        rotate90 = lib.rotate_y(0.5 * np.pi)
        rotate180 = lib.rotate_y(np.pi)
        rotate360 = lib.rotate_y(2 * np.pi)

        rotate90(dm, 1)
        rotate180(dm, 2)
        assert np.allclose(dm.meas_prob(0), (1, 0, 0))
        assert np.allclose(dm.meas_prob(1), (0.5, 0.5, 0))
        assert np.allclose(dm.meas_prob(2), (0, 1, 0))

        rotate180(dm, 1)
        assert np.allclose(dm.meas_prob(1), (0.5, 0.5, 0))

        rotate90(dm, 1)
        assert np.allclose(dm.meas_prob(1), (1, 0, 0))

        rotate360(dm, 0)
        assert np.allclose(dm.meas_prob(0), (1, 0, 0))