From 850b9a28d0733c47199b4353c171a84649dcf5e4 Mon Sep 17 00:00:00 2001 From: Cody Tapscott Date: Wed, 20 Aug 2025 19:38:29 -0400 Subject: [PATCH] Improve type-stability of `eigencopy_oftype` As-is this can end up inferred as e.g. `eigencopy_oftype(::Symmetric{ComplexF64, ...}, ::Type)::Matrix` (eltype was lost) --- src/symmetriceigen.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/symmetriceigen.jl b/src/symmetriceigen.jl index a57f3a6e..f6640bc1 100644 --- a/src/symmetriceigen.jl +++ b/src/symmetriceigen.jl @@ -2,9 +2,9 @@ # preserve HermOrSym wrapper # Call `copytrito!` instead of `copy_similar` to only copy the matching triangular half -eigencopy_oftype(A::Hermitian, S) = Hermitian(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), sym_uplo(A.uplo)) -eigencopy_oftype(A::Symmetric, S) = Symmetric(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), sym_uplo(A.uplo)) -eigencopy_oftype(A::Symmetric{<:Complex}, S) = copyto!(similar(parent(A), S), A) +eigencopy_oftype(A::Hermitian, ::Type{S}) where S = Hermitian(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), sym_uplo(A.uplo)) +eigencopy_oftype(A::Symmetric, ::Type{S}) where S = Symmetric(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), sym_uplo(A.uplo)) +eigencopy_oftype(A::Symmetric{<:Complex}, ::Type{S}) where S = copyto!(similar(parent(A), S), A) """ default_eigen_alg(A)