diff --git a/base/linalg/symmetric.jl b/base/linalg/symmetric.jl index a3c2aa39c435e..9dc5bc9a083a0 100644 --- a/base/linalg/symmetric.jl +++ b/base/linalg/symmetric.jl @@ -210,6 +210,7 @@ issymmetric(A::Hermitian{<:Real}) = true issymmetric(A::Hermitian{<:Complex}) = isreal(A) issymmetric(A::Symmetric) = true transpose(A::Symmetric) = A +transpose(A::Hermitian{<:Real}) = A ctranspose(A::Symmetric{<:Real}) = A function ctranspose(A::Symmetric) AC = ctranspose(A.data) diff --git a/test/linalg/symmetric.jl b/test/linalg/symmetric.jl index 17e457d8c1082..3d686a037d09f 100644 --- a/test/linalg/symmetric.jl +++ b/test/linalg/symmetric.jl @@ -93,14 +93,20 @@ let n=10 @test ishermitian(Symmetric(b + b')) end - #transpose, ctranspose + # transpose, ctranspose + S = Symmetric(asym) + H = Hermitian(asym) if eltya <: Real - @test transpose(Symmetric(asym)) == asym + @test transpose(S) === S == asym + @test ctranspose(S) === S == asym + @test transpose(H) === H == asym + @test ctranspose(H) === H == asym else - @test transpose(Hermitian(asym)) == transpose(asym) + @test transpose(S) === S + @test ctranspose(S) == Symmetric(conj(asym)) + @test transpose(H) == Hermitian(transpose(asym)) + @test ctranspose(H) === H == asym end - @test ctranspose(Symmetric(asym)) == Symmetric(conj(asym)) - @test ctranspose(Hermitian(asym)) == asym #tril/triu for di in -n:n