DoubleFloats.jl
DoubleFloats.jl copied to clipboard
Double64 subnormals bug?
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?
Well, you are "cheating" -- misusing the constructor ..
still it should have self-corrected
meanwhile b += 0 renormalizes b