DoubleFloats.jl icon indicating copy to clipboard operation
DoubleFloats.jl copied to clipboard

Double64 subnormals bug?

Open milankl opened this issue 2 years ago • 1 comments

Just stumbled across this one here

julia> a = Double64(floatmin(Float64))
2.2250738585072014e-308

julia> b = Double64(0.0,floatmin(Float64))
2.22507385850720138309023271733240406e-308

julia> Float64(a)
2.2250738585072014e-308

julia> Float64(b)
0.0

a,b are technically the same number but one has floatmin in hi one in low, the conversion to Float64 disregards the lo, which for all other Double64s makes sense because as far as I understand eps(hi) > 2lo so truncation to hi is round to nearest in those cases. With b ☝🏼 however I created a Double64 for which eps(hi) > 2lo and so it doesn't round correctly. Is there a function that recalculates hi, lo given a Double64 so that this eps-requirement holds again?

milankl avatar Dec 22 '23 13:12 milankl

Well, you are "cheating" -- misusing the constructor .. still it should have self-corrected meanwhile b += 0 renormalizes b

JeffreySarnoff avatar Dec 26 '23 07:12 JeffreySarnoff