示例#1
0
    def test_compress_between(self, backend):
        A = rand_tensor((3, 4, 5), 'abd', tags={'T1'})
        tensor_direct_product(A, A, inplace=True)
        B = rand_tensor((5, 6), 'dc', tags={'T2'})
        tensor_direct_product(B, B, inplace=True)
        tn = A & B

        assert A.shared_bond_size(B) == 10

        tn.compress_between('T1', 'T2', backend=backend)
示例#2
0
    def test_direct_product(self):
        a1 = rand_tensor((2, 3, 4), inds='abc')
        b1 = rand_tensor((3, 4, 5), inds='bcd')
        a2 = rand_tensor((2, 3, 4), inds='abc')
        b2 = rand_tensor((3, 4, 5), inds='bcd')

        c1 = (a1 @ b1) + (a2 @ b2)
        c2 = (tensor_direct_product(a1, a2, sum_inds=('a'))
              @ tensor_direct_product(b1, b2, sum_inds=('d')))
        assert c1.almost_equals(c2)
示例#3
0
    def test_direct_product_triple(self):
        a1 = rand_tensor((2, 3, 4), inds='abc')
        b1 = rand_tensor((3, 4, 5, 6), inds='bcde')
        c1 = rand_tensor((6, 7), inds='ef')

        a2 = rand_tensor((2, 3, 4), inds='abc')
        b2 = rand_tensor((3, 4, 5, 6), inds='bcde').transpose(*'decb')
        c2 = rand_tensor((6, 7), inds='ef')

        d1 = (a1 @ b1 @ c1) + (a2 @ b2 @ c2)
        d2 = (tensor_direct_product(a1, a2, sum_inds=('a'))
              @ tensor_direct_product(b1, b2, sum_inds=('d'))
              @ tensor_direct_product(c1, c2, sum_inds=('f')))
        assert d1.almost_equals(d2)