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).
See also
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))