Beispiel #1
0
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))
Beispiel #2
0
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)
Beispiel #4
0
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
Beispiel #5
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
Beispiel #6
0
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])
Beispiel #8
0
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
Beispiel #9
0
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)
Beispiel #10
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))
Beispiel #11
0
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)
Beispiel #12
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
Beispiel #13
0
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