# torch.linalg.slogdet¶

torch.linalg.slogdet(A, *, out=None)

Computes the sign and natural logarithm of the absolute value of the determinant of a square matrix.

For complex A, it returns the angle and the natural logarithm of the modulus of the determinant, that is, a logarithmic polar decomposition of the determinant.

Supports input of float, double, cfloat and cdouble dtypes. Also supports batches of matrices, and if A is a batch of matrices then the output has the same batch dimensions.

Note

This function is computed using torch.lu(). When inputs are on a CUDA device, this function synchronizes that device with the CPU.

Note

The determinant can be recovered as sign * exp(logabsdet).

Note

When a matrix has a determinant of zero, it returns (0, -inf).

torch.linalg.det() computes the determinant of square matrices.

Parameters

A (Tensor) – tensor of shape (*, n, n) where * is zero or more batch dimensions.

Keyword Arguments

out (tuple, optional) – output tuple of two tensors. Ignored if None. Default: None.

Returns

A named tuple (sign, logabsdet).

logabsdet will always be real-valued, even when A is complex.

sign will have the same dtype as A.

Examples:

>>> A = torch.randn(3, 3)
>>> A
tensor([[ 0.0032, -0.2239, -1.1219],
[-0.6690,  0.1161,  0.4053],
[-1.6218, -0.9273, -0.0082]])
>>> torch.linalg.det(A)
tensor(-0.7576)
>>> torch.linalg.logdet(A)
tensor(nan)
>>> torch.linalg.slogdet(A)
torch.return_types.linalg_slogdet(sign=tensor(-1.), logabsdet=tensor(-0.2776))