Skip to content

Commit 5fa469b

Browse files
Broaden signature of eigen and eigvals to AbstractMatrix to allow for Adjoint and Transpose input. (#31117)
* Broaden signature of eigen and eigvals to AbstractMatrix to allow for Adjoint and Transpose input. Fixes #28714 * Update stdlib/LinearAlgebra/test/eigen.jl Co-Authored-By: andreasnoack <[email protected]> * Update stdlib/LinearAlgebra/test/eigen.jl Co-Authored-By: Nick Robinson <[email protected]>
1 parent 1e06e68 commit 5fa469b

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

stdlib/LinearAlgebra/src/eigen.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ julia> vals == F.values && vecs == F.vectors
230230
true
231231
```
232232
"""
233-
function eigen(A::StridedMatrix{T}; permute::Bool=true, scale::Bool=true, sortby::Union{Function,Nothing}=eigsortby) where T
233+
function eigen(A::AbstractMatrix{T}; permute::Bool=true, scale::Bool=true, sortby::Union{Function,Nothing}=eigsortby) where T
234234
AA = copy_oftype(A, eigtype(T))
235235
isdiag(AA) && return eigen(Diagonal(AA); permute=permute, scale=scale, sortby=sortby)
236236
return eigen!(AA; permute=permute, scale=scale, sortby=sortby)
@@ -322,7 +322,7 @@ julia> eigvals(diag_matrix)
322322
4.0
323323
```
324324
"""
325-
eigvals(A::StridedMatrix{T}; kws...) where T =
325+
eigvals(A::AbstractMatrix{T}; kws...) where T =
326326
eigvals!(copy_oftype(A, eigtype(T)); kws...)
327327

328328
"""
@@ -369,7 +369,7 @@ Stacktrace:
369369
[...]
370370
```
371371
"""
372-
function eigmax(A::Union{Number, StridedMatrix}; permute::Bool=true, scale::Bool=true)
372+
function eigmax(A::Union{Number, AbstractMatrix}; permute::Bool=true, scale::Bool=true)
373373
v = eigvals(A, permute = permute, scale = scale)
374374
if eltype(v)<:Complex
375375
throw(DomainError(A, "`A` cannot have complex eigenvalues."))

stdlib/LinearAlgebra/test/eigen.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,13 @@ end
132132
@test factstring == "$(summary(e))\neigenvalues:\n$valsstring\neigenvectors:\n$vecsstring"
133133
end
134134

135+
@testset "eigen of an Adjoint" begin
136+
A = randn(3,3)
137+
@test eigvals(A') == eigvals(copy(A'))
138+
@test eigen(A') == eigen(copy(A'))
139+
@test eigmin(A') == eigmin(copy(A'))
140+
@test eigmax(A') == eigmax(copy(A'))
141+
end
142+
143+
135144
end # module TestEigen

0 commit comments

Comments
 (0)