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)
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)
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)