|
3 | 3 | # preserve HermOrSym wrapper |
4 | 4 | # Call `copytrito!` instead of `copy_similar` to only copy the matching triangular half |
5 | 5 | function eigencopy_oftype(A::Hermitian, ::Type{S}) where S |
6 | | - Hermitian(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), sym_uplo_unsafe(A.uplo)) |
| 6 | + Hermitian(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), _sym_uplo(A.uplo)) |
7 | 7 | end |
8 | 8 | function eigencopy_oftype(A::Symmetric, ::Type{S}) where S |
9 | | - Symmetric(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), sym_uplo_unsafe(A.uplo)) |
| 9 | + Symmetric(copytrito!(similar(parent(A), S, size(A)), A.data, A.uplo), _sym_uplo(A.uplo)) |
10 | 10 | end |
11 | 11 | eigencopy_oftype(A::Symmetric{<:Complex}, ::Type{S}) where S = copyto!(similar(parent(A), S), A) |
12 | 12 |
|
|
318 | 318 |
|
319 | 319 | # Perform U' \ A / U in-place, where U::Union{UpperTriangular,Diagonal} |
320 | 320 | UtiAUi!(A, U) = _UtiAUi!(A, U) |
321 | | -UtiAUi!(A::Symmetric, U) = Symmetric(_UtiAUi!(copytri!(parent(A), A.uplo), U), sym_uplo_unsafe(A.uplo)) |
322 | | -UtiAUi!(A::Hermitian, U) = Hermitian(_UtiAUi!(copytri!(parent(A), A.uplo, true), U), sym_uplo_unsafe(A.uplo)) |
| 321 | +UtiAUi!(A::Symmetric, U) = Symmetric(_UtiAUi!(copytri!(parent(A), A.uplo), U), _sym_uplo(A.uplo)) |
| 322 | +UtiAUi!(A::Hermitian, U) = Hermitian(_UtiAUi!(copytri!(parent(A), A.uplo, true), U), _sym_uplo(A.uplo)) |
323 | 323 | _UtiAUi!(A, U) = rdiv!(ldiv!(U', A), U) |
324 | 324 |
|
325 | 325 | function eigvals(A::HermOrSym{TA}, B::HermOrSym{TB}; kws...) where {TA,TB} |
|
0 commit comments