Skip to content

Commit 4d8f616

Browse files
committed
Make printing of big(NaN) consistent (#23382)
1 parent 6a47db8 commit 4d8f616

File tree

3 files changed

+11
-14
lines changed

3 files changed

+11
-14
lines changed

base/mpfr.jl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -895,9 +895,7 @@ end
895895
setprecision(f::Function, precision::Integer) = setprecision(f, BigFloat, precision)
896896

897897
function string(x::BigFloat)
898-
if isnan(x) || isinf(x)
899-
return string("BigFloat(", Float64(x), ", ", precision(x), ")")
900-
end
898+
isfinite(x) || return string(Float64(x))
901899

902900
# In general, the number of decimal places needed to read back the number exactly
903901
# is, excluding the most significant, ceil(log(10, 2^precision(x)))

test/mpfr.jl

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -880,12 +880,6 @@ for prec in (10, 100, 1000)
880880
end
881881
end
882882

883-
setprecision(256) do
884-
@test string(big(Inf)) == "BigFloat(Inf, 256)"
885-
@test string(big(-Inf)) == "BigFloat(-Inf, 256)"
886-
@test string(big(NaN)) == "BigFloat(NaN, 256)"
887-
end
888-
889883
# issue #22758
890884
if MPFR.version() > v"3.1.5" || "r11590" in MPFR.version().build
891885
setprecision(2_000_000) do

test/numbers.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3028,9 +3028,14 @@ end
30283028
end
30293029
end
30303030

3031-
@testset "compact NaN printing" begin
3032-
@test sprint(io->show(IOContext(io, :compact => true), NaN16)) == "NaN"
3033-
@test sprint(io->show(IOContext(io, :compact => true), NaN32)) == "NaN"
3034-
@test sprint(io->show(IOContext(io, :compact => true), NaN64)) == "NaN"
3035-
@test_broken sprint(io->show(IOContext(io, :compact => true), big(NaN))) == "NaN"
3031+
@testset "printing non finite floats" for T in subtypes(AbstractFloat)
3032+
for (x, sx) in [(T(NaN), "NaN"),
3033+
(-T(NaN), "NaN"),
3034+
(T(Inf), "Inf"),
3035+
(-T(Inf), "-Inf")]
3036+
@assert x isa T
3037+
@test string(x) == sx
3038+
@test sprint(io -> show(IOContext(io, :compact => true), x)) == sx
3039+
@test sprint(print, x) == sx
3040+
end
30363041
end

0 commit comments

Comments
 (0)