How to get lower triangular and diagonal matrices separately with torch.linalg.ldl_factor

Hi All,

TL;DR how can I use torch.linalg.ldl_factor to get a lower triangular and diagonal matrix separately rather than a compact representation with pivoting?

I have a question about how exactly torch.linalg.ldl_factor is used to extract the lower triangular and diagonal components of a matrix. I understand a compact representation involving pivoting is used, but I’m not familiar with it.

For example, the Wiki article on Cholesky decompositions has an LDL decomposition example,

However, when computing this within pytorch it gives a different representation. For example,

matrix = torch.tensor([[4,12,-16],
                       [-16,-43,98]], dtype=torch.float32)
LD, pivot = torch.linalg.ldl_factor(matrix)
tensor([[ 4.0000,  0.0000,  0.0000],
        [ 3.0000, 34.0000,  0.0000],
        [-4.0000,  0.1471,  0.2647]])
#returns tensor([1, 3, 3], dtype=torch.int32)

So I assume there’s some way to take LD and pivots and use them to compute L and D separately? Is there a way to do this efficiently? Is this possible in pytorch?