diff --git a/src/symmetric.jl b/src/symmetric.jl index 50f34022..fd4b9ada 100644 --- a/src/symmetric.jl +++ b/src/symmetric.jl @@ -1003,6 +1003,7 @@ end """ hermitianpart(A::AbstractMatrix, uplo::Symbol=:U) -> Hermitian + hermitianpart(x::Number) -> Number Return the Hermitian part of the square matrix `A`, defined as `(A + A') / 2`, as a [`Hermitian`](@ref) matrix. For real matrices `A`, this is also known as the symmetric part @@ -1016,6 +1017,7 @@ See also [`hermitianpart!`](@ref) for the corresponding in-place operation. This function requires Julia 1.10 or later. """ hermitianpart(A::AbstractMatrix, uplo::Symbol=:U) = Hermitian(_hermitianpart(A), uplo) +hermitianpart(x::Number) = real(x) """ hermitianpart!(A::AbstractMatrix, uplo::Symbol=:U) -> Hermitian diff --git a/test/symmetric.jl b/test/symmetric.jl index 031dac27..03529fc0 100644 --- a/test/symmetric.jl +++ b/test/symmetric.jl @@ -1035,6 +1035,12 @@ end @test Aherm isa Hermitian @test Aherm.uplo == LinearAlgebra.char_uplo(uplo) end + @testset "hermitianpart for numbers" begin + @test hermitianpart(3 + 4im) == 3 + @test hermitianpart(5) == 5.0 + @test hermitianpart(2.5 + 4.3im) == 2.5 + @test hermitianpart(-1 + 0im) == -1 + end end @testset "Structured display" begin