def test_rotation(self, init_state, tol): """Test three axis rotation gate""" dev = DefaultQubitTF(wires=1) state = init_state(1) a = 0.542 b = 1.3432 c = -0.654 queue = [qml.QubitStateVector(state, wires=[0])] queue += [qml.Rot(a, b, c, wires=0)] dev.apply(queue) res = dev.state expected = Rot3(a, b, c) @ state assert np.allclose(res, expected, atol=tol, rtol=0)
def test_inverse_operation(self, init_state, tol): """Test that the inverse of an operation is correctly applied""" """Test three axis rotation gate""" dev = DefaultQubitTF(wires=1) state = init_state(1) a = 0.542 b = 1.3432 c = -0.654 queue = [qml.QubitStateVector(state, wires=[0])] queue += [qml.Rot(a, b, c, wires=0).inv()] dev.apply(queue) res = dev.state expected = np.linalg.inv(Rot3(a, b, c)) @ state assert np.allclose(res, expected, atol=tol, rtol=0)
def U3(theta, phi, lam): return Rphi(phi) @ Rphi(lam) @ Rot3(lam, theta, -lam)