@@ -706,6 +706,12 @@ function LinearAlgebra.eigvals(A::Symmetric{<:Dual{Tg,T,N}}) where {Tg,T<:Real,N
706706 Dual {Tg} .(λ, tuple .(parts... ))
707707end
708708
709+ function LinearAlgebra. eigvals (A:: Symmetric{<:Dual{Tg,T,N}, <:StaticArrays.StaticMatrix} ) where {Tg,T<: Real ,N}
710+ λ,Q = eigen (Symmetric (value .(parent (A))))
711+ parts = ntuple (j -> diag (Q' * getindex .(partials .(A), j) * Q), N)
712+ Dual {Tg} .(λ, tuple .(parts... ))
713+ end
714+
709715function LinearAlgebra. eigvals (A:: Hermitian{<:Complex{<:Dual{Tg,T,N}}} ) where {Tg,T<: Real ,N}
710716 λ,Q = eigen (Hermitian (value .(real .(parent (A))) .+ im .* value .(imag .(parent (A)))))
711717 parts = ntuple (j -> diag (real .(Q' * (getindex .(partials .(real .(A)) .+ im .* partials .(imag .(A)), j)) * Q)), N)
730736
731737function LinearAlgebra. eigen (A:: Symmetric{<:Dual{Tg,T,N}} ) where {Tg,T<: Real ,N}
732738 λ = eigvals (A)
733- _,Q = eigen (SymTridiagonal (value .(parent (A). dv),value .(parent (A). ev)))
739+ _,Q = eigen (Symmetric (value .(parent (A))))
740+ parts = ntuple (j -> Q* _lyap_div! (Q' * getindex .(partials .(A), j) * Q - Diagonal (getindex .(partials .(λ), j)), value .(λ)), N)
741+ Eigen (λ,Dual {Tg} .(Q, tuple .(parts... )))
742+ end
743+
744+ function LinearAlgebra. eigen (A:: Symmetric{<:Dual{Tg,T,N}, <:StaticArrays.StaticMatrix} ) where {Tg,T<: Real ,N}
745+ λ = eigvals (A)
746+ _,Q = eigen (Symmetric (value .(parent (A))))
734747 parts = ntuple (j -> Q* _lyap_div! (Q' * getindex .(partials .(A), j) * Q - Diagonal (getindex .(partials .(λ), j)), value .(λ)), N)
735748 Eigen (λ,Dual {Tg} .(Q, tuple .(parts... )))
736749end
0 commit comments