From 232504ceb0e28a22d07ccf465e2415fabaff4a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefanos=20Carlstr=C3=B6m?= Date: Mon, 27 Nov 2023 13:12:19 +0100 Subject: [PATCH] Improve display of coefficients --- src/show_coefficients.jl | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/show_coefficients.jl b/src/show_coefficients.jl index ddd2494..5c5d8a3 100644 --- a/src/show_coefficients.jl +++ b/src/show_coefficients.jl @@ -1,13 +1,18 @@ -function showcoeff(io::IO, n::Number, show_sign::Bool, show_one::Bool=false) - isimag(n) = !iszero(n) && isreal(im*n) - isneg(n) = n < 0 +const RealOrComplex{T<:Real} = Union{T,Complex{T}} + +isimag(::Real) = false +isimag(n) = !iszero(n) && !isreal(n) && isreal(1im*n) +isneg(n::Real) = n < 0 +function showcoeff(io::IO, n::Number, show_sign::Bool, show_one::Bool=false) if isreal(n) && isneg(real(n)) || isimag(n) && isneg(imag(n)) write(io, "- ") else show_sign && write(io, "+ ") end - n = round(n, digits=6) + printable(n::RealOrComplex{<:AbstractFloat}) = round(n, digits=6) + printable(n) = n + n = printable(n) if !(isone(n) || isone(-n)) if !(isreal(n) || isimag(n)) write(io, "($n)")