@@ -448,8 +448,7 @@ function singleShiftQR!(
448448end
449449
450450symtri! (A:: Hermitian ) = A. uplo == ' L' ? symtriLower! (A. data) : symtriUpper! (A. data)
451- symtri! (A:: Symmetric{T} ) where {T<: Real } =
452- A. uplo == ' L' ? symtriLower! (A. data) : symtriUpper! (A. data)
451+ symtri! (A:: Symmetric{<:Real} ) = A. uplo == ' L' ? symtriLower! (A. data) : symtriUpper! (A. data)
453452
454453# Assume that lower triangle stores the relevant part
455454function symtriLower! (
@@ -580,6 +579,7 @@ _eigvals!(A::SymTridiagonal; tol = eps(real(eltype(A))), sortby::Union{Function,
580579
581580_eigvals! (A:: Hermitian ; tol = eps (real (eltype (A))), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = eigvals! (symtri! (A); tol, sortby)
582581
582+ _eigvals! (A:: Symmetric{<:Real} ; tol = eps (eltype (A)), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = eigvals! (symtri! (A); tol, sortby)
583583
584584LinearAlgebra. eigvals! (A:: SymmetricTridiagonalFactorization ; tol = eps (real (eltype (A))), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) =
585585 _eigvals! (A; tol, sortby)
@@ -589,6 +589,7 @@ LinearAlgebra.eigvals!(A::SymTridiagonal; tol = eps(real(eltype(A))), sortby::Un
589589
590590LinearAlgebra. eigvals! (A:: Hermitian ; tol = eps (real (eltype (A))), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = _eigvals! (A; tol, sortby)
591591
592+ LinearAlgebra. eigvals! (A:: Symmetric{<:Real} ; tol = eps (eltype (A)), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = _eigvals! (A; tol, sortby)
592593
593594_eigen! (A:: SymmetricTridiagonalFactorization ; tol = eps (real (eltype (A))), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) =
594595 LinearAlgebra. Eigen (LinearAlgebra. sorteig! (eigQL! (A. diagonals, vectors = Array (A. Q), tol = tol)... , sortby)... )
@@ -599,6 +600,7 @@ _eigen!(A::SymTridiagonal; tol = eps(real(eltype(A))), sortby::Union{Function,No
599600
600601_eigen! (A:: Hermitian ; tol = eps (real (eltype (A))), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = _eigen! (symtri! (A), tol = tol)
601602
603+ _eigen! (A:: Symmetric{<:Real} ; tol = eps (eltype (A)), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = _eigen! (symtri! (A), tol = tol)
602604
603605LinearAlgebra. eigen! (A:: SymmetricTridiagonalFactorization ; tol = eps (real (eltype (A))), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) =
604606 _eigen! (A; tol, sortby)
@@ -607,6 +609,8 @@ LinearAlgebra.eigen!(A::SymTridiagonal; tol = eps(real(eltype(A))), sortby::Unio
607609
608610LinearAlgebra. eigen! (A:: Hermitian ; tol = eps (real (eltype (A))), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = _eigen! (A; tol, sortby)
609611
612+ LinearAlgebra. eigen! (A:: Symmetric{<:Real} ; tol = eps (eltype (A)), sortby:: Union{Function,Nothing} = LinearAlgebra. eigsortby) = _eigen! (A; tol, sortby)
613+
610614
611615function eigen2! (
612616 A:: SymmetricTridiagonalFactorization ;
@@ -628,12 +632,17 @@ end
628632eigen2! (A:: Hermitian ; tol = eps (float (real (one (eltype (A)))))) =
629633 eigen2! (symtri! (A), tol = tol)
630634
635+ eigen2! (A:: Symmetric{<:Real} ; tol = eps (float (one (eltype (A))))) =
636+ eigen2! (symtri! (A), tol = tol)
637+
631638
632639eigen2 (A:: SymTridiagonal ; tol = eps (float (real (one (eltype (A)))))) =
633640 eigen2! (copy (A), tol = tol)
634641
635642eigen2 (A:: Hermitian , tol = eps (float (real (one (eltype (A)))))) = eigen2! (copy (A), tol = tol)
636643
644+ eigen2 (A:: Symmetric{<:Real} , tol = eps (float (one (eltype (A))))) = eigen2! (copy (A), tol = tol)
645+
637646# First method of each type here is identical to the method defined in
638647# LinearAlgebra but is needed for disambiguation
639648const _eigencopy_oftype = if VERSION >= v " 1.9"
0 commit comments