@@ -10,9 +10,9 @@ eigencopy_oftype(A::Symmetric{<:Complex}, S) = copyto!(similar(parent(A), S), A)
10
10
default_eigen_alg(A)
11
11
12
12
Return the default algorithm used to solve the eigensystem `A v = λ v` for a symmetric matrix `A`.
13
- Defaults to `LinearAlegbra.DivideAndConquer ()`, which corresponds to the LAPACK function `LAPACK.syevd !`.
13
+ Defaults to `LinearAlegbra.RobustRepresentations ()`, which corresponds to the LAPACK function `LAPACK.syevr !`.
14
14
"""
15
- default_eigen_alg (@nospecialize (A)) = DivideAndConquer ()
15
+ default_eigen_alg (@nospecialize (A)) = RobustRepresentations ()
16
16
17
17
# Eigensolvers for symmetric and Hermitian matrices
18
18
function eigen! (A:: RealHermSymComplexHerm{<:BlasReal,<:StridedMatrix} ; alg:: Algorithm = default_eigen_alg (A), sortby:: Union{Function,Nothing} = nothing )
31
31
eigen(A::Union{Hermitian, Symmetric}; alg::LinearAlgebra.Algorithm = LinearAlgebra.default_eigen_alg(A)) -> Eigen
32
32
33
33
Compute the eigenvalue decomposition of `A`, returning an [`Eigen`](@ref) factorization object `F`
34
- which contains the eigenvalues in `F.values` and the eigenvectors in the columns of the
34
+ which contains the eigenvalues in `F.values` and the orthonormal eigenvectors in the columns of the
35
35
matrix `F.vectors`. (The `k`th eigenvector can be obtained from the slice `F.vectors[:, k]`.)
36
36
37
37
Iterating the decomposition produces the components `F.values` and `F.vectors`.
38
38
39
39
`alg` specifies which algorithm and LAPACK method to use for eigenvalue decomposition:
40
- - `alg = DivideAndConquer()` (default) : Calls `LAPACK.syevd!`.
40
+ - `alg = DivideAndConquer()`: Calls `LAPACK.syevd!`.
41
41
- `alg = QRIteration()`: Calls `LAPACK.syev!`.
42
- - `alg = RobustRepresentations()`: Multiple relatively robust representations method, Calls `LAPACK.syevr!`.
42
+ - `alg = RobustRepresentations()` (default) : Multiple relatively robust representations method, Calls `LAPACK.syevr!`.
43
43
44
44
See James W. Demmel et al, SIAM J. Sci. Comput. 30, 3, 1508 (2008) for
45
45
a comparison of the accuracy and performance of different algorithms.
@@ -76,7 +76,7 @@ eigen!(A::RealHermSymComplexHerm{<:BlasReal,<:StridedMatrix}, irange::UnitRange)
76
76
eigen(A::Union{SymTridiagonal, Hermitian, Symmetric}, irange::UnitRange) -> Eigen
77
77
78
78
Compute the eigenvalue decomposition of `A`, returning an [`Eigen`](@ref) factorization object `F`
79
- which contains the eigenvalues in `F.values` and the eigenvectors in the columns of the
79
+ which contains the eigenvalues in `F.values` and the orthonormal eigenvectors in the columns of the
80
80
matrix `F.vectors`. (The `k`th eigenvector can be obtained from the slice `F.vectors[:, k]`.)
81
81
82
82
Iterating the decomposition produces the components `F.values` and `F.vectors`.
@@ -101,7 +101,7 @@ eigen!(A::RealHermSymComplexHerm{T,<:StridedMatrix}, vl::Real, vh::Real) where {
101
101
eigen(A::Union{SymTridiagonal, Hermitian, Symmetric}, vl::Real, vu::Real) -> Eigen
102
102
103
103
Compute the eigenvalue decomposition of `A`, returning an [`Eigen`](@ref) factorization object `F`
104
- which contains the eigenvalues in `F.values` and the eigenvectors in the columns of the
104
+ which contains the eigenvalues in `F.values` and the orthonormal eigenvectors in the columns of the
105
105
matrix `F.vectors`. (The `k`th eigenvector can be obtained from the slice `F.vectors[:, k]`.)
106
106
107
107
Iterating the decomposition produces the components `F.values` and `F.vectors`.
@@ -140,14 +140,18 @@ end
140
140
Return the eigenvalues of `A`.
141
141
142
142
`alg` specifies which algorithm and LAPACK method to use for eigenvalue decomposition:
143
- - `alg = DivideAndConquer()` (default) : Calls `LAPACK.syevd!`.
143
+ - `alg = DivideAndConquer()`: Calls `LAPACK.syevd!`.
144
144
- `alg = QRIteration()`: Calls `LAPACK.syev!`.
145
- - `alg = RobustRepresentations()`: Multiple relatively robust representations method, Calls `LAPACK.syevr!`.
145
+ - `alg = RobustRepresentations()` (default) : Multiple relatively robust representations method, Calls `LAPACK.syevr!`.
146
146
147
147
See James W. Demmel et al, SIAM J. Sci. Comput. 30, 3, 1508 (2008) for
148
148
a comparison of the accuracy and performance of different methods.
149
149
150
150
The default `alg` used may change in the future.
151
+
152
+ !!! compat "Julia 1.12"
153
+ The `alg` keyword argument requires Julia 1.12 or later.
154
+
151
155
"""
152
156
function eigvals (A:: RealHermSymComplexHerm ; alg:: Algorithm = default_eigen_alg (A), sortby:: Union{Function,Nothing} = nothing )
153
157
S = eigtype (eltype (A))
0 commit comments