diff --git a/base/linalg/uniformscaling.jl b/base/linalg/uniformscaling.jl index 81a3ee1e6b29c..bbb1dfa46e793 100644 --- a/base/linalg/uniformscaling.jl +++ b/base/linalg/uniformscaling.jl @@ -31,7 +31,13 @@ eltype(::Type{UniformScaling{T}}) where {T} = T ndims(J::UniformScaling) = 2 getindex(J::UniformScaling, i::Integer,j::Integer) = ifelse(i==j,J.λ,zero(J.λ)) -show(io::IO, J::UniformScaling) = print(io, "$(typeof(J))\n$(J.λ)*I") +function show(io::IO, J::UniformScaling) + s = "$(J.λ)" + if ismatch(r"\w+\s*[\+\-]\s*\w+", s) + s = "($s)" + end + print(io, "$(typeof(J))\n$s*I") +end copy(J::UniformScaling) = UniformScaling(J.λ) transpose(J::UniformScaling) = J diff --git a/test/linalg/uniformscaling.jl b/test/linalg/uniformscaling.jl index 4049a44f79284..f61bdef3f4dad 100644 --- a/test/linalg/uniformscaling.jl +++ b/test/linalg/uniformscaling.jl @@ -38,6 +38,7 @@ end end @test copy(UniformScaling(one(Float64))) == UniformScaling(one(Float64)) +@test sprint(show,UniformScaling(one(Complex128))) == "UniformScaling{Complex{Float64}}\n(1.0 + 0.0im)*I" @test sprint(show,UniformScaling(one(Float32))) == "UniformScaling{Float32}\n1.0*I" λ = complex(randn(),randn())