def test_belltest(): prog = qf.Program() prog += qf.Call('H', [], [0]) prog += qf.Call('CNOT', [], [0, 1]) ket = prog.run() assert qf.states_close(ket, qf.ghz_state(2))
def test_purity(): density = qf.ghz_state(4).asdensity() assert qf.asarray(qf.purity(density)) == ALMOST_ONE for _ in range(10): rho = qf.random_density(4) purity = np.real(qf.asarray(qf.purity(rho))) assert purity < 1.0 assert purity >= 0.0
def test_states_close() -> None: ket0 = qf.w_state(4) ket1 = qf.w_state(3) ket2 = qf.w_state(4) ket3 = qf.ghz_state(3) assert qf.states_close(ket0, ket2) assert not qf.states_close(ket1, ket3) assert qf.states_close(ket2, ket2)
def test_purity() -> None: density = qf.ghz_state(4).asdensity() assert np.isclose(qf.purity(density), 1.0) for _ in range(10): rho = qf.random_density(4) purity = np.real(qf.purity(rho)) assert purity < 1.0 assert purity >= 0.0
def test_purity() -> None: density = qf.ghz_state(4).asdensity() assert np.isclose(qf.purity(density), 1.0) for _ in range(10): density = qf.random_density(4) purity = np.real(qf.purity(density)) assert purity < 1.0 assert purity >= 0.0 rho = qf.Density(np.diag([0.9, 0.1])) assert np.isclose(qf.purity(rho), 0.82) # Kudos: Josh Combs
def test_purity(): density = qf.ghz_state(4).asdensity() assert qf.asarray(qf.purity(density)) == ALMOST_ONE for _ in range(10): density = qf.random_density(4) purity = np.real(qf.asarray(qf.purity(density))) assert purity < 1.0 assert purity >= 0.0 rho = qf.Density(np.diag([0.9, 0.1])) assert np.isclose(qf.asarray(qf.purity(rho)), 0.82) # Kudos: Josh Combes
def test_state_to_density() -> None: density = qf.ghz_state(4).asdensity() assert density.tensor.shape == (2, ) * 8 prob = density.probabilities() assert np.isclose(prob[0, 0, 0, 0], 0.5) assert np.isclose(prob[0, 1, 0, 0], 0) assert np.isclose(prob[1, 1, 1, 1], 0.5) ket = qf.random_state(3) density = ket.asdensity() ket_prob = ket.probabilities() density_prob = density.probabilities() for index, prob in np.ndenumerate(ket_prob): assert np.isclose(prob, density_prob[index])
def test_state_to_density(): density = qf.ghz_state(4).asdensity() assert list(density.vec.asarray().shape) == [2] * 8 prob = qf.asarray(density.probabilities()) assert prob[0, 0, 0, 0] - 0.5 == ALMOST_ZERO assert prob[0, 1, 0, 0] == ALMOST_ZERO assert prob[1, 1, 1, 1] - 0.5 == ALMOST_ZERO ket = qf.random_state(3) density = ket.asdensity() ket_prob = qf.asarray(ket.probabilities()) density_prob = qf.asarray(density.probabilities()) for index, prob in np.ndenumerate(ket_prob): assert prob - density_prob[index] == ALMOST_ZERO
def test_state_to_density() -> None: density = qf.ghz_state(4).asdensity() assert list(density.tensor.shape) == [2] * 8 prob = density.probabilities() assert np.isclose(prob[0, 0, 0, 0] - 0.5, 0.0) assert np.isclose(prob[0, 1, 0, 0], 0.0) assert np.isclose(prob[1, 1, 1, 1] - 0.5, 0.0) ket = qf.random_state(3) density = ket.asdensity() ket_prob = ket.probabilities() density_prob = density.probabilities() for index, prob in np.ndenumerate(ket_prob): assert np.isclose(prob - density_prob[index], 0.0)
def test_defgate(): prog = qf.parse_quil(HADAMARD) ket = prog.run() qf.print_state(ket) assert qf.states_close(ket, qf.ghz_state(1))
def test_ghz_state() -> None: ket = qf.ghz_state(4) assert ket.tensor[0, 0, 0, 1] == 0 assert np.isclose(2.0 * ket.tensor[0, 0, 0, 0]**2.0, 1.0)
def test_ghz_state(): vec = qf.ghz_state(4).vec.asarray() assert vec[0, 0, 0, 1] == ALMOST_ZERO assert 2. * vec[0, 0, 0, 0]**2. == ALMOST_ONE
def test_getitem(): ket = qf.ghz_state(6) assert qf.asarray(ket.vec[0, 1, 0, 0, 0, 0]) == ALMOST_ZERO assert qf.asarray(ket.vec[1, 1, 1, 1, 1, 1]) != 0.0