torch.linalg.eigvals(A, *, out=None) Tensor

Computes the eigenvalues of a square matrix.

Letting K\mathbb{K} be R\mathbb{R} or C\mathbb{C}, the eigenvalues of a square matrix AKn×nA \in \mathbb{K}^{n \times n} are defined as the roots (counted with multiplicity) of the polynomial p of degree n given by

p(λ)=det(AλIn)λCp(\lambda) = \operatorname{det}(A - \lambda \mathrm{I}_n)\mathrlap{\qquad \lambda \in \mathbb{C}}

where In\mathrm{I}_n is the n-dimensional identity matrix.

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.

The returned eigenvalues are not guaranteed to be in any specific order.


The eigenvalues of a real matrix may be complex, as the roots of a real polynomial may be complex.

The eigenvalues of a matrix are always well-defined, even when the matrix is not diagonalizable.


When inputs are on a CUDA device, this function synchronizes that device with the CPU.

See also

torch.linalg.eig() computes the full eigenvalue decomposition.


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

Keyword Arguments

out (Tensor, optional) – output tensor. Ignored if None. Default: None.


A complex-valued tensor containing the eigenvalues even when A is real.


>>> A = torch.randn(2, 2, dtype=torch.complex128)
>>> L = torch.linalg.eigvals(A)
>>> L
tensor([ 1.1226+0.5738j, -0.7537-0.1286j], dtype=torch.complex128)

>>> torch.dist(L, torch.linalg.eig(A).eigenvalues)


Access comprehensive developer documentation for PyTorch

View Docs


Get in-depth tutorials for beginners and advanced developers

View Tutorials


Find development resources and get your questions answered

View Resources