From 2d8c0f9160812dba14c08b3602d907f561e843fe Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Thu, 8 Jun 2017 22:32:57 +0200 Subject: [PATCH] add a missing method for transpose(A::Hermitian{<:Real}) (#22280) --- base/linalg/symmetric.jl | 1 + test/linalg/symmetric.jl | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) 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