Skip to content

Commit d8605b1

Browse files
authored
Clean-up of version-dependent code (#97)
1 parent 85e6867 commit d8605b1

File tree

3 files changed

+23
-52
lines changed

3 files changed

+23
-52
lines changed

src/eigenGeneral.jl

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -247,41 +247,26 @@ _eigvals!(A::StridedMatrix; kwargs...) = _eigvals!(_schur!(A; kwargs..
247247
_eigvals!(H::HessenbergMatrix; kwargs...) = _eigvals!(_schur!(H; kwargs...))
248248
_eigvals!(H::HessenbergFactorization; kwargs...) = _eigvals!(_schur!(H; kwargs...))
249249

250-
# Overload methods from LinearAlgebra to make them work generically
251-
if VERSION > v"1.2.0-DEV.0"
252-
function LinearAlgebra.eigvals!(
253-
A::StridedMatrix;
254-
sortby::Union{Function,Nothing}=LinearAlgebra.eigsortby,
255-
kwargs...)
256-
257-
if ishermitian(A)
258-
return LinearAlgebra.sorteig!(eigvals!(Hermitian(A)), sortby)
259-
end
260-
LinearAlgebra.sorteig!(_eigvals!(A; kwargs...), sortby)
261-
end
262-
263-
LinearAlgebra.eigvals!(
264-
H::HessenbergMatrix;
265-
sortby::Union{Function,Nothing}=LinearAlgebra.eigsortby,
266-
kwargs...) = LinearAlgebra.sorteig!(_eigvals!(H; kwargs...), sortby)
267-
268-
LinearAlgebra.eigvals!(
269-
H::HessenbergFactorization;
270-
sortby::Union{Function,Nothing}=LinearAlgebra.eigsortby,
271-
kwargs...) = LinearAlgebra.sorteig!(_eigvals!(H; kwargs...), sortby)
272-
else
273-
function LinearAlgebra.eigvals!(A::StridedMatrix; kwargs...)
274-
if ishermitian(A)
275-
return eigvals!(Hermitian(A))
276-
else
277-
return _eigvals!(A; kwargs...)
278-
end
250+
function LinearAlgebra.eigvals!(
251+
A::StridedMatrix;
252+
sortby::Union{Function,Nothing}=LinearAlgebra.eigsortby,
253+
kwargs...)
254+
255+
if ishermitian(A)
256+
return LinearAlgebra.sorteig!(eigvals!(Hermitian(A)), sortby)
279257
end
258+
LinearAlgebra.sorteig!(_eigvals!(A; kwargs...), sortby)
259+
end
280260

281-
LinearAlgebra.eigvals!(H::HessenbergMatrix; kwargs...) = _eigvals!(H; kwargs...)
261+
LinearAlgebra.eigvals!(
262+
H::HessenbergMatrix;
263+
sortby::Union{Function,Nothing}=LinearAlgebra.eigsortby,
264+
kwargs...) = LinearAlgebra.sorteig!(_eigvals!(H; kwargs...), sortby)
282265

283-
LinearAlgebra.eigvals!(H::HessenbergFactorization; kwargs...) = _eigvals!(H; kwargs...)
284-
end
266+
LinearAlgebra.eigvals!(
267+
H::HessenbergFactorization;
268+
sortby::Union{Function,Nothing}=LinearAlgebra.eigsortby,
269+
kwargs...) = LinearAlgebra.sorteig!(_eigvals!(H; kwargs...), sortby)
285270

286271
# To compute the eigenvalue of the pseudo triangular Schur matrix we just return
287272
# the values of the 1x1 diagonal blocks and compute the eigenvalues of the 2x2

src/svd.jl

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -303,23 +303,15 @@ function Base.getproperty(F::BidiagonalFactorization, s::Symbol)
303303
if s === :leftQ
304304
return LinearAlgebra.QRPackedQ(R, τl)
305305
elseif s === :rightQ
306-
if VERSION < v"1.3.0-DEV.243"
307-
return LinearAlgebra.HessenbergQ(copy(transpose(R[1:size(R,2),:])), τr)
308-
else
309-
factors = copy(transpose(R[1:size(R,2),:]))
310-
return LinearAlgebra.HessenbergQ{eltype(factors),typeof(factors),typeof(τr),false}('U', factors, τr)
311-
end
306+
factors = copy(transpose(R[1:size(R,2),:]))
307+
return LinearAlgebra.HessenbergQ{eltype(factors),typeof(factors),typeof(τr),false}('U', factors, τr)
312308
else
313309
return getfield(F, s)
314310
end
315311
else
316312
if s === :leftQ
317-
if VERSION < v"1.3.0-DEV.243"
318-
return LinearAlgebra.HessenbergQ(R[:,1:size(R,1)], τl)
319-
else
320-
factors = R[:,1:size(R,1)]
321-
return LinearAlgebra.HessenbergQ{eltype(factors),typeof(factors),typeof(τr),false}('U', factors, τl)
322-
end
313+
factors = R[:,1:size(R,1)]
314+
return LinearAlgebra.HessenbergQ{eltype(factors),typeof(factors),typeof(τr),false}('U', factors, τl)
323315
elseif s === :rightQ
324316
# return transpose(LinearAlgebra.LQPackedQ(R, τr)) # FixMe! check that this shouldn't be adjoint
325317
LinearAlgebra.QRPackedQ(copy(transpose(R)), τr)

test/eigengeneral.jl

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ cplxord = t -> (real(t), imag(t))
1414
vBig = eigvals(big.(A)) # not defined in LinearAlgebra so will dispatch to the version in GenericLinearAlgebra
1515
@test sort(vGLA, by = cplxord) sort(vLAPACK, by = cplxord)
1616
@test sort(vGLA, by = cplxord) sort(complex(eltype(A)).(vBig), by = cplxord)
17-
if VERSION > v"1.2.0-DEV.0"
18-
@test issorted(vBig, by = cplxord)
19-
end
17+
@test issorted(vBig, by = cplxord)
2018
end
2119

2220
@testset "make sure that solver doesn't hang" begin
@@ -86,11 +84,7 @@ end
8684
(7 - adjoint(z1)*z2),
8785
(7 + [2, 2]'*z2)])/3
8886

89-
if VERSION > v"1.2.0-DEV.0"
90-
@test eigvals(big.(A)) truevals
91-
else
92-
@test sort(eigvals(big.(A)), by=real) truevals
93-
end
87+
@test eigvals(big.(A)) truevals
9488
end
9589

9690
Demmel(η) = [0 1 0 0

0 commit comments

Comments
 (0)