def qr(self,
        tensor: Tensor,
        pivot_axis: int = -1,
        non_negative_diagonal: bool = False) -> Tuple[Tensor, Tensor]:
     if non_negative_diagonal:
         errstr = "Can't specify non_negative_diagonal with BlockSparse."
         raise NotImplementedError(errstr)
     return decompositions.qr(self.bs, tensor, pivot_axis)
Exemple #2
0
def test_qr(dtype, R, R1):
    np.random.seed(10)
    D = 30
    charges = [
        U1Charge.random(dimension=D, minval=-5, maxval=5) for n in range(R)
    ]
    flows = [True] * R
    A = BlockSparseTensor.random(
        [Index(charges[n], flows[n]) for n in range(R)], dtype=dtype)

    q, r = decompositions.qr(bs, A, R1)
    res = bs.tensordot(q, r, 1)
    q_dense, r_dense = np_decompositions.qr(np, A.todense(), R1, False)
    res2 = np.tensordot(q_dense, r_dense, 1)
    np.testing.assert_almost_equal(res.todense(), res2)