Ejemplo n.º 1
0
 def test_Xgate_displacement(self):
     """Test displacement vector matches Xgate"""
     self.logTestName()
     x = 0.1234
     H, _ = xdisplacement(x)
     _, d = quadratic_coefficients(H)
     expected = np.array([1, 0])
     self.assertTrue(np.allclose(d, expected))
Ejemplo n.º 2
0
    def test_displacement_vector(self):
        """Test displacement vector extracted"""
        self.logTestName()
        H = QuadOperator('q0', -0.432) + QuadOperator('p0', 3.213)
        A, d = quadratic_coefficients(H)
        expected_A = np.zeros([2, 2])
        expected_d = np.array([3.213, 0.432])
        self.assertTrue(np.allclose(A, expected_A))
        self.assertTrue(np.allclose(d, expected_d))

        _, d = quadratic_coefficients(QuadOperator('q0 q0'))
        expected = np.array([0, 0])
        self.assertTrue(np.allclose(d, expected))

        _, d = quadratic_coefficients(QuadOperator('p0 p1'))
        expected = np.array([0, 0, 0, 0])
        self.assertTrue(np.allclose(d, expected))
Ejemplo n.º 3
0
 def test_controlled_addition(self):
     """Test quadratic coefficients for CXgate"""
     self.logTestName()
     H, _ = controlled_addition(0.23)
     res, d = quadratic_coefficients(H)
     expected = np.fliplr(np.diag([1, 0, 0, 1]))
     self.assertTrue(np.allclose(res, expected))
     self.assertTrue(np.allclose(d, np.zeros([4])))
Ejemplo n.º 4
0
 def test_two_mode_squeeze_coeff(self):
     """Test quadratic coefficients for S2gate"""
     self.logTestName()
     H, _ = two_mode_squeezing(0.23, hbar=self.hbar)
     res, d = quadratic_coefficients(get_quad_operator(H, self.hbar))
     expected = np.fliplr(np.diag([1]*4))
     self.assertTrue(np.allclose(res, expected))
     self.assertTrue(np.allclose(d, np.zeros([4])))
Ejemplo n.º 5
0
    def test_rotation_coeff(self):
        """Test quadratic coefficients for Rgate"""
        # one mode
        H, _ = rotation(0.23, hbar=self.hbar)
        res, d = quadratic_coefficients(get_quad_operator(H, self.hbar))
        expected = -np.diag(np.array([1, 1]))
        self.assertTrue(np.allclose(res, expected))
        self.assertTrue(np.allclose(d, np.zeros([2])))

        # two modes
        H, _ = rotation(0.23, mode=1, hbar=self.hbar)
        res, d = quadratic_coefficients(get_quad_operator(H, self.hbar))
        expected = np.zeros([4, 4])
        expected[1, 1] = -1
        expected[3, 3] = -1
        self.assertTrue(np.allclose(res, expected))
        self.assertTrue(np.allclose(d, np.zeros([4])))
Ejemplo n.º 6
0
 def test_controlled_phase(self):
     """Test quadratic coefficients for CZgate"""
     H, _ = controlled_phase(0.23)
     res, d = quadratic_coefficients(H)
     expected = np.zeros([4, 4])
     expected[0, 1] = expected[1, 0] = -1
     self.assertTrue(np.allclose(res, expected))
     self.assertTrue(np.allclose(d, np.zeros([4])))
Ejemplo n.º 7
0
    def test_quadratic_phase_coeff(self):
        """Test quadratic coefficients for Pgate"""
        # one mode
        H, _ = quadratic_phase(0.23)
        res, d = quadratic_coefficients(H)
        expected = np.zeros([2, 2])
        expected[0, 0] = -1
        self.assertTrue(np.allclose(res, expected))
        self.assertTrue(np.allclose(d, np.zeros([2])))

        # two modes
        H, _ = quadratic_phase(0.23, mode=1)
        res, d = quadratic_coefficients(H)
        expected = np.zeros([4, 4])
        expected[1, 1] = -1
        self.assertTrue(np.allclose(res, expected))
        self.assertTrue(np.allclose(d, np.zeros([4])))
Ejemplo n.º 8
0
    def test_squeeze_coeff(self, hbar):
        """Test quadratic coefficients for Sgate"""
        # one mode
        # pylint: disable=invalid-unary-operand-type
        H, _ = squeezing(0.23, hbar=hbar)
        res, d = quadratic_coefficients(get_quad_operator(H, hbar))
        expected = -np.array([[0, 1], [1, 0]])
        assert np.allclose(res, expected)
        assert np.allclose(d, np.zeros([2]))

        # two modes
        H, _ = squeezing(0.23, mode=1, hbar=hbar)
        res, d = quadratic_coefficients(get_quad_operator(H, hbar))
        expected = np.zeros([4, 4])
        expected[1, 3] = -1
        expected[3, 1] = -1
        assert np.allclose(res, expected)
        assert np.allclose(d, np.zeros([4]))
Ejemplo n.º 9
0
 def test_Dgate_displacement(self):
     """Test displacement vector matches Dgate"""
     self.logTestName()
     a = 0.23-0.432j
     H, t = displacement(a, hbar=self.hbar)
     _, d = quadratic_coefficients(get_quad_operator(H, self.hbar))
     expected = np.array([a.real, a.imag])*np.sqrt(2*self.hbar)/t
     self.assertTrue(np.allclose(d, expected))
     self.assertTrue(np.allclose(a, t*(d[0]+d[1]*1j)/np.sqrt(2*self.hbar)))
Ejemplo n.º 10
0
 def test_beamsplitter_coeff(self, hbar):
     """Test quadratic coefficients for BSgate"""
     # arbitrary beamsplitter
     theta = 0.5423
     phi = 0.3242
     H, _ = beamsplitter(theta, phi, hbar=hbar)
     res, d = quadratic_coefficients(get_quad_operator(H, hbar=hbar))
     expected = np.zeros([4, 4])
     expected[0, 3] = expected[3, 0] = -np.cos(np.pi - phi)
     expected[1, 2] = expected[2, 1] = np.cos(np.pi - phi)
     expected[0, 1] = expected[1, 0] = -np.sin(np.pi - phi)
     expected[2, 3] = expected[3, 2] = -np.sin(np.pi - phi)
     assert np.allclose(res, expected)
     assert np.allclose(d, np.zeros([4]))
Ejemplo n.º 11
0
 def test_non_gaussian(self):
     """Test exception with non-Gaussian Hamiltonian"""
     with pytest.raises(ValueError, match="Hamiltonian must be Gaussian"):
         quadratic_coefficients(QuadOperator('q0 p0 p1'))
Ejemplo n.º 12
0
 def test_non_gaussian(self):
     """Test exception with non-Gaussian Hamiltonian"""
     self.logTestName()
     with self.assertRaisesRegex(ValueError, "Hamiltonian must be Gaussian"):
         quadratic_coefficients(QuadOperator('q0 p0 p1'))
Ejemplo n.º 13
0
 def test_non_hermitian(self):
     """Test exception with non-Hermitian Hamiltonian"""
     with self.assertRaisesRegex(ValueError,
                                 "Hamiltonian must be Hermitian"):
         quadratic_coefficients(QuadOperator('q0 p0'))