def test_arbitrary_rotation(self, tol): """Test arbitrary single qubit rotation is correct""" # test identity for phi,theta,omega=0 assert np.allclose(Rot3(0, 0, 0), np.identity(2), atol=tol, rtol=0) # expected result def arbitrary_rotation(x, y, z): """arbitrary single qubit rotation""" c = np.cos(y / 2) s = np.sin(y / 2) return np.array( [ [np.exp(-0.5j * (x + z)) * c, -np.exp(0.5j * (x - z)) * s], [np.exp(-0.5j * (x - z)) * s, np.exp(0.5j * (x + z)) * c], ] ) a, b, c = 0.432, -0.152, 0.9234 assert np.allclose(Rot3(a, b, c), arbitrary_rotation(a, b, c), atol=tol, rtol=0)
def test_arbitrary_rotation(self): """Test arbitrary single qubit rotation is correct""" self.logTestName() # test identity for theta=0 self.assertAllAlmostEqual(Rot3(0, 0, 0), np.identity(2), delta=self.tol) # expected result def arbitrary_rotation(x, y, z): """arbitrary single qubit rotation""" c = np.cos(y / 2) s = np.sin(y / 2) return np.array( [ [np.exp(-0.5j * (x + z)) * c, -np.exp(0.5j * (x - z)) * s], [np.exp(-0.5j * (x - z)) * s, np.exp(0.5j * (x + z)) * c], ] ) a, b, c = 0.432, -0.152, 0.9234 self.assertAllAlmostEqual( Rot3(a, b, c), arbitrary_rotation(a, b, c), delta=self.tol )
def U3(theta, phi, lam): return Rphi(phi) @ Rphi(lam) @ Rot3(lam, theta, -lam)