@@ -206,15 +206,15 @@ for (S, H) in ((:Symmetric, :Hermitian), (:Hermitian, :Symmetric))
206206 throw (ArgumentError (" Cannot construct $($ S) ; uplo doesn't match" ))
207207 end
208208 end
209- $ S (A:: $H ) = $ S (A, sym_uplo (A. uplo))
209+ $ S (A:: $H ) = $ S (A, _sym_uplo (A. uplo))
210210 function $S (A:: $H , uplo:: Symbol )
211211 if A. uplo == char_uplo (uplo)
212212 if $ H === Hermitian && ! (eltype (A) <: Real ) &&
213213 any (! isreal, A. data[i] for i in diagind (A. data, IndexStyle (A. data)))
214214
215215 throw (ArgumentError (" Cannot construct $($ S) ($($ H) )); diagonal contains complex values" ))
216216 end
217- return $ S (A. data, sym_uplo (A. uplo))
217+ return $ S (A. data, _sym_uplo (A. uplo))
218218 else
219219 throw (ArgumentError (" Cannot construct $($ S) ; uplo doesn't match" ))
220220 end
286286@inline function getindex (A:: Symmetric , i:: Int , j:: Int )
287287 @boundscheck checkbounds (A, i, j)
288288 @inbounds if i == j
289- return symmetric (A. data[i, j], sym_uplo (A. uplo)):: symmetric_type (eltype (A. data))
289+ return symmetric (A. data[i, j], _sym_uplo (A. uplo)):: symmetric_type (eltype (A. data))
290290 elseif (A. uplo == ' U' ) == (i < j)
291291 return A. data[i, j]
292292 else
296296@inline function getindex (A:: Hermitian , i:: Int , j:: Int )
297297 @boundscheck checkbounds (A, i, j)
298298 @inbounds if i == j
299- return hermitian (A. data[i, j], sym_uplo (A. uplo)):: hermitian_type (eltype (A. data))
299+ return hermitian (A. data[i, j], _sym_uplo (A. uplo)):: hermitian_type (eltype (A. data))
300300 elseif (A. uplo == ' U' ) == (i < j)
301301 return A. data[i, j]
302302 else
@@ -329,14 +329,14 @@ Base._reverse(A::Hermitian, ::Colon) = Hermitian(reverse(A.data), A.uplo == 'U'
329329end
330330
331331Base. dataids (A:: HermOrSym ) = Base. dataids (parent (A))
332- Base. unaliascopy (A:: Hermitian ) = Hermitian (Base. unaliascopy (parent (A)), sym_uplo (A. uplo))
333- Base. unaliascopy (A:: Symmetric ) = Symmetric (Base. unaliascopy (parent (A)), sym_uplo (A. uplo))
332+ Base. unaliascopy (A:: Hermitian ) = Hermitian (Base. unaliascopy (parent (A)), _sym_uplo (A. uplo))
333+ Base. unaliascopy (A:: Symmetric ) = Symmetric (Base. unaliascopy (parent (A)), _sym_uplo (A. uplo))
334334
335335_conjugation (:: Union{Symmetric, Hermitian{<:Real}} ) = transpose
336336_conjugation (:: Hermitian ) = adjoint
337337
338- diag (A:: Symmetric ) = symmetric .(diag (parent (A)), sym_uplo (A. uplo))
339- diag (A:: Hermitian ) = hermitian .(diag (parent (A)), sym_uplo (A. uplo))
338+ diag (A:: Symmetric ) = symmetric .(diag (parent (A)), _sym_uplo (A. uplo))
339+ diag (A:: Hermitian ) = hermitian .(diag (parent (A)), _sym_uplo (A. uplo))
340340
341341function applytri (f, A:: HermOrSym )
342342 if A. uplo == ' U'
@@ -374,15 +374,15 @@ similar(A::Union{Symmetric,Hermitian}, ::Type{T}, dims::Dims{N}) where {T,N} = s
374374parent (A:: HermOrSym ) = A. data
375375Symmetric {T,S} (A:: Symmetric{T,S} ) where {T,S<: AbstractMatrix{T} } = A
376376Symmetric {T,S} (A:: Symmetric ) where {T,S<: AbstractMatrix{T} } = Symmetric {T,S} (convert (S,A. data),A. uplo)
377- AbstractMatrix {T} (A:: Symmetric ) where {T} = Symmetric (convert (AbstractMatrix{T}, A. data), sym_uplo (A. uplo))
377+ AbstractMatrix {T} (A:: Symmetric ) where {T} = Symmetric (convert (AbstractMatrix{T}, A. data), _sym_uplo (A. uplo))
378378AbstractMatrix {T} (A:: Symmetric{T} ) where {T} = copy (A)
379379Hermitian {T,S} (A:: Hermitian{T,S} ) where {T,S<: AbstractMatrix{T} } = A
380380Hermitian {T,S} (A:: Hermitian ) where {T,S<: AbstractMatrix{T} } = Hermitian {T,S} (convert (S,A. data),A. uplo)
381- AbstractMatrix {T} (A:: Hermitian ) where {T} = Hermitian (convert (AbstractMatrix{T}, A. data), sym_uplo (A. uplo))
381+ AbstractMatrix {T} (A:: Hermitian ) where {T} = Hermitian (convert (AbstractMatrix{T}, A. data), _sym_uplo (A. uplo))
382382AbstractMatrix {T} (A:: Hermitian{T} ) where {T} = copy (A)
383383
384- copy (A:: Symmetric ) = (Symmetric (parentof_applytri (copy, A), sym_uplo (A. uplo)))
385- copy (A:: Hermitian ) = (Hermitian (parentof_applytri (copy, A), sym_uplo (A. uplo)))
384+ copy (A:: Symmetric ) = (Symmetric (parentof_applytri (copy, A), _sym_uplo (A. uplo)))
385+ copy (A:: Hermitian ) = (Hermitian (parentof_applytri (copy, A), _sym_uplo (A. uplo)))
386386
387387function copyto! (dest:: Symmetric , src:: Symmetric )
388388 if axes (dest) != axes (src)
@@ -423,13 +423,13 @@ end
423423end
424424@inline function _symmetrize_diagonal! (B, A:: Symmetric )
425425 for i = 1 : size (A, 1 )
426- B[i,i] = symmetric (A[i,i], sym_uplo (A. uplo)):: symmetric_type (eltype (A. data))
426+ B[i,i] = symmetric (A[i,i], _sym_uplo (A. uplo)):: symmetric_type (eltype (A. data))
427427 end
428428 return B
429429end
430430@inline function _symmetrize_diagonal! (B, A:: Hermitian )
431431 for i = 1 : size (A, 1 )
432- B[i,i] = hermitian (A[i,i], sym_uplo (A. uplo)):: hermitian_type (eltype (A. data))
432+ B[i,i] = hermitian (A[i,i], _sym_uplo (A. uplo)):: hermitian_type (eltype (A. data))
433433 end
434434 return B
435435end
@@ -501,9 +501,9 @@ transpose(A::Hermitian{<:Real}) = A
501501
502502real (A:: Symmetric{<:Real} ) = A
503503real (A:: Hermitian{<:Real} ) = A
504- real (A:: Symmetric ) = Symmetric (parentof_applytri (real, A), sym_uplo (A. uplo))
505- real (A:: Hermitian ) = Hermitian (parentof_applytri (real, A), sym_uplo (A. uplo))
506- imag (A:: Symmetric ) = Symmetric (parentof_applytri (imag, A), sym_uplo (A. uplo))
504+ real (A:: Symmetric ) = Symmetric (parentof_applytri (real, A), _sym_uplo (A. uplo))
505+ real (A:: Hermitian ) = Hermitian (parentof_applytri (real, A), _sym_uplo (A. uplo))
506+ imag (A:: Symmetric ) = Symmetric (parentof_applytri (imag, A), _sym_uplo (A. uplo))
507507
508508Base. copy (A:: Adjoint{<:Any,<:Symmetric} ) =
509509 Symmetric (copy (adjoint (A. parent. data)), ifelse (A. parent. uplo == ' U' , :L , :U ))
@@ -513,8 +513,8 @@ Base.copy(A::Transpose{<:Any,<:Hermitian}) =
513513tr (A:: Symmetric{<:Number} ) = tr (A. data) # to avoid AbstractMatrix fallback (incl. allocations)
514514tr (A:: Hermitian{<:Number} ) = real (tr (A. data))
515515
516- Base. conj (A:: Symmetric ) = Symmetric (parentof_applytri (conj, A), sym_uplo (A. uplo))
517- Base. conj (A:: Hermitian ) = Hermitian (parentof_applytri (conj, A), sym_uplo (A. uplo))
516+ Base. conj (A:: Symmetric ) = Symmetric (parentof_applytri (conj, A), _sym_uplo (A. uplo))
517+ Base. conj (A:: Hermitian ) = Hermitian (parentof_applytri (conj, A), _sym_uplo (A. uplo))
518518Base. conj! (A:: HermOrSym ) = typeof (A)(parentof_applytri (conj!, A), A. uplo)
519519
520520# tril/triu
@@ -731,25 +731,25 @@ function _hermkron!(C, A, B, conj, real, Auplo, Buplo)
731731 end
732732end
733733
734- (- )(A:: Symmetric ) = Symmetric (parentof_applytri (- , A), sym_uplo (A. uplo))
735- (- )(A:: Hermitian ) = Hermitian (parentof_applytri (- , A), sym_uplo (A. uplo))
734+ (- )(A:: Symmetric ) = Symmetric (parentof_applytri (- , A), _sym_uplo (A. uplo))
735+ (- )(A:: Hermitian ) = Hermitian (parentof_applytri (- , A), _sym_uplo (A. uplo))
736736
737737# # Addition/subtraction
738738for f ∈ (:+ , :- ), Wrapper ∈ (:Hermitian , :Symmetric )
739739 @eval function $f (A:: $Wrapper , B:: $Wrapper )
740- uplo = A. uplo == B. uplo ? sym_uplo (A. uplo) : (:U )
740+ uplo = A. uplo == B. uplo ? _sym_uplo (A. uplo) : (:U )
741741 $ Wrapper (parentof_applytri ($ f, A, B), uplo)
742742 end
743743end
744744
745745for f in (:+ , :- )
746746 @eval begin
747- $ f (A:: Hermitian , B:: Symmetric{<:Real} ) = $ f (A, Hermitian (parent (B), sym_uplo (B. uplo)))
748- $ f (A:: Symmetric{<:Real} , B:: Hermitian ) = $ f (Hermitian (parent (A), sym_uplo (A. uplo)), B)
749- $ f (A:: SymTridiagonal , B:: Symmetric ) = $ f (Symmetric (A, sym_uplo (B. uplo)), B)
750- $ f (A:: Symmetric , B:: SymTridiagonal ) = $ f (A, Symmetric (B, sym_uplo (A. uplo)))
751- $ f (A:: SymTridiagonal{<:Real} , B:: Hermitian ) = $ f (Hermitian (A, sym_uplo (B. uplo)), B)
752- $ f (A:: Hermitian , B:: SymTridiagonal{<:Real} ) = $ f (A, Hermitian (B, sym_uplo (A. uplo)))
747+ $ f (A:: Hermitian , B:: Symmetric{<:Real} ) = $ f (A, Hermitian (parent (B), _sym_uplo (B. uplo)))
748+ $ f (A:: Symmetric{<:Real} , B:: Hermitian ) = $ f (Hermitian (parent (A), _sym_uplo (A. uplo)), B)
749+ $ f (A:: SymTridiagonal , B:: Symmetric ) = $ f (Symmetric (A, _sym_uplo (B. uplo)), B)
750+ $ f (A:: Symmetric , B:: SymTridiagonal ) = $ f (A, Symmetric (B, _sym_uplo (A. uplo)))
751+ $ f (A:: SymTridiagonal{<:Real} , B:: Hermitian ) = $ f (Hermitian (A, _sym_uplo (B. uplo)), B)
752+ $ f (A:: Hermitian , B:: SymTridiagonal{<:Real} ) = $ f (A, Hermitian (B, _sym_uplo (A. uplo)))
753753 end
754754end
755755
@@ -799,12 +799,12 @@ function dot(x::AbstractVector, A::HermOrSym, y::AbstractVector)
799799end
800800
801801# Scaling with Number
802- * (A:: Symmetric , x:: Number ) = Symmetric (parentof_applytri (y -> y * x, A), sym_uplo (A. uplo))
803- * (x:: Number , A:: Symmetric ) = Symmetric (parentof_applytri (y -> x * y, A), sym_uplo (A. uplo))
804- * (A:: Hermitian , x:: Real ) = Hermitian (parentof_applytri (y -> y * x, A), sym_uplo (A. uplo))
805- * (x:: Real , A:: Hermitian ) = Hermitian (parentof_applytri (y -> x * y, A), sym_uplo (A. uplo))
806- / (A:: Symmetric , x:: Number ) = Symmetric (parentof_applytri (y -> y/ x, A), sym_uplo (A. uplo))
807- / (A:: Hermitian , x:: Real ) = Hermitian (parentof_applytri (y -> y/ x, A), sym_uplo (A. uplo))
802+ * (A:: Symmetric , x:: Number ) = Symmetric (parentof_applytri (y -> y * x, A), _sym_uplo (A. uplo))
803+ * (x:: Number , A:: Symmetric ) = Symmetric (parentof_applytri (y -> x * y, A), _sym_uplo (A. uplo))
804+ * (A:: Hermitian , x:: Real ) = Hermitian (parentof_applytri (y -> y * x, A), _sym_uplo (A. uplo))
805+ * (x:: Real , A:: Hermitian ) = Hermitian (parentof_applytri (y -> x * y, A), _sym_uplo (A. uplo))
806+ / (A:: Symmetric , x:: Number ) = Symmetric (parentof_applytri (y -> y/ x, A), _sym_uplo (A. uplo))
807+ / (A:: Hermitian , x:: Real ) = Hermitian (parentof_applytri (y -> y/ x, A), _sym_uplo (A. uplo))
808808
809809factorize (A:: HermOrSym ) = _factorize (A)
810810function _factorize (A:: HermOrSym{T} ; check:: Bool = true ) where T
@@ -850,8 +850,8 @@ function _inv(A::HermOrSym)
850850 B
851851end
852852# StridedMatrix restriction seems necessary due to inv! call in _inv above
853- inv (A:: Hermitian{<:Any,<:StridedMatrix} ) = Hermitian (_inv (A), sym_uplo (A. uplo))
854- inv (A:: Symmetric{<:Any,<:StridedMatrix} ) = Symmetric (_inv (A), sym_uplo (A. uplo))
853+ inv (A:: Hermitian{<:Any,<:StridedMatrix} ) = Hermitian (_inv (A), _sym_uplo (A. uplo))
854+ inv (A:: Symmetric{<:Any,<:StridedMatrix} ) = Symmetric (_inv (A), _sym_uplo (A. uplo))
855855
856856function svd (A:: RealHermSymComplexHerm ; full:: Bool = false )
857857 vals, vecs = eigen (A)
0 commit comments