Example #1
0
def test_contract_copy_node_dangling_edge_value_error(backend):
    a = tn.Node(np.array([1, 2, 3]), backend=backend)
    b = tn.Node(np.array([10, 20, 30]), backend=backend)
    c = tn.Node(np.array([5, 6, 7]), backend=backend)
    cn = tn.CopyNode(rank=4, dimension=3, backend=backend)
    tn.connect(a[0], cn[0])
    tn.connect(b[0], cn[1])
    tn.connect(c[0], cn[2])

    with pytest.raises(ValueError):
        tn.contract_copy_node(cn)
Example #2
0
def test_contract_copy_node(backend):
    a = tn.Node(np.array([1, 2, 3]), backend=backend)
    b = tn.Node(np.array([10, 20, 30]), backend=backend)
    c = tn.Node(np.array([5, 6, 7]), backend=backend)
    d = tn.Node(np.array([1, -1, 1]), backend=backend)
    cn = tn.CopyNode(rank=4, dimension=3, backend=backend)
    tn.connect(a[0], cn[0])
    tn.connect(b[0], cn[1])
    tn.connect(c[0], cn[2])
    tn.connect(d[0], cn[3])

    val = tn.contract_copy_node(cn)
    result = val.tensor
    assert list(result.shape) == []
    np.testing.assert_allclose(result, 50 - 240 + 630)
Example #3
0
def test_contract_copy_node_connected_neighbors(backend):
    a = tn.Node(np.array([[1, 2, 3], [10, 20, 30]]), backend=backend)
    b = tn.Node(np.array([[2, 1, 1], [2, 2, 2]]), backend=backend)
    c = tn.Node(np.array([3, 4, 4]), backend=backend)
    cn = tn.CopyNode(rank=3, dimension=3, backend=backend)
    tn.connect(a[0], b[0])
    tn.connect(a[1], cn[0])
    tn.connect(b[1], cn[1])
    tn.connect(c[0], cn[2])

    n = tn.contract_copy_node(cn)

    assert len(n.edges) == 2
    assert n.edges[0] == n.edges[1]

    val = tn.contract_parallel(n.edges[0])
    result = val.tensor
    assert list(result.shape) == []
    np.testing.assert_allclose(result, 26 + 460)