Exemplo n.º 1
0
def test_hypercontractivity_coefficient_tensorization(dist1, dist2):
    """
    Test tensorization:
        hc(X X' : Y Y') = max(hc(X:Y), hc(X', Y'))
    """
    import dit
    dit.ditParams['repr.print'] = True
    mixed = dist1.__matmul__(dist2)
    hc_mixed = hypercontractivity_coefficient(mixed, [[0, 2], [1, 3]])
    hc_a = hypercontractivity_coefficient(dist1, [[0], [1]])
    hc_b = hypercontractivity_coefficient(dist2, [[0], [1]])
    assert hc_mixed == pytest.approx(max(hc_a, hc_b), abs=1e-2)
Exemplo n.º 2
0
def test_hypercontractivity_coefficient2():
    """
    Test against a known value.
    """
    d = Distribution(['00', '01', '10', '11'], [1 / 4] * 4)
    hc = hypercontractivity_coefficient(d, [[0], [1]])
    assert hc == pytest.approx(0.0)
Exemplo n.º 3
0
def test_mi_hc(dist):
    """
    given U - X - Y:
        I[U:Y] <= s*(X||Y)*I[U:X]
    """
    a = I(dist, [[0], [2]])
    b = hypercontractivity_coefficient(dist, [[1], [2]], niter=20)
    c = I(dist, [[0], [1]])
    assert a <= b * c + epsilon
Exemplo n.º 4
0
def test_mi_hc(dist):
    """
    given U - X - Y:
        I[U:Y] <= s*(X||Y)*I[U:X]
    """
    a = I(dist, [[0], [2]])
    b = hypercontractivity_coefficient(dist, [[1], [2]], niter=20)
    c = I(dist, [[0], [1]])
    assert a <= b*c + epsilon
Exemplo n.º 5
0
def test_hypercontractivity_coefficient_failure(rvs):
    """ Test that hypercontractivity_coefficient fails with len(rvs) != 2 """
    with pytest.raises(ditException):
        hypercontractivity_coefficient(dyadic, rvs)
Exemplo n.º 6
0
def test_hypercontractivity_coefficient(dist, rvs):
    """ Test against known values """
    assert hypercontractivity_coefficient(dist, rvs) == pytest.approx(1.0)