def plu(A: LinearOperator):
    """ Performs a cholesky decomposition A=PLU of a linear operator A.
        The returns P, L, U as linear operators, but represented using
        the triangular (and permutation) structure """
    p, L, U = A.xnp.lu(A.to_dense())
    P, L, U = Permutation(p), Triangular(L, lower=True), Triangular(U, lower=False)
    P, L, U = P.to(A.device), L.to(A.device), U.to(A.device)
    return P, L, U
 Performs a cholesky decomposition A=PLU of a linear operator A.
        The returns P, L, U as linear operators, but represented using
        the triangular (and permutation) structure 
cola/linalg/decompositions/decompositions.py