def test_state_transformations_no_frame(self): """Test frame transformations with no frame.""" frame = Frame(Array(np.zeros(2))) t = 0.123 y = Array([1.0, 1j]) out = frame.state_into_frame(t, y) self.assertAllClose(out, y) out = frame.state_out_of_frame(t, y) self.assertAllClose(out, y) t = 100.12498 y = Array(np.eye(2)) out = frame.state_into_frame(t, y) self.assertAllClose(out, y) out = frame.state_out_of_frame(t, y) self.assertAllClose(out, y)
def _test_state_out_of_frame(self, t, frame_op, y, y_in_frame_basis=False, return_in_frame_basis=False): evals, U = np.linalg.eigh(1j * frame_op) evals = -1j * Array(evals) frame = Frame(frame_op) value = frame.state_out_of_frame(t, y, y_in_frame_basis, return_in_frame_basis) expected = y if not y_in_frame_basis: expected = U.conj().transpose() @ expected expected = np.diag(np.exp(t * evals)) @ expected if not return_in_frame_basis: expected = U @ expected self.assertAllClose(value, expected, rtol=1e-10, atol=1e-10)