Incorrect conversion for very small numbers
julia> @interval "1e-400"
[0, 0]
julia> I"1e-400"
[0, 0]
Note that:
julia> nextfloat(0.0)
5.0e-324
To fix this we would have to do all parsing via BigFloat, which may be very slow.
julia> x = parse(Interval{BigFloat}, "1e-400")
[0, 0]₂₅₆
There is also an error here!
This now gives
parse(Float64, "1e-400", RoundDown)
ERROR: ArgumentError: cannot parse "1e-400" as Float64
We now have
julia> parse(Interval{BigFloat}, "1e-400")
Interval(9.9999999999999993e-401, 1.0000000000000001e-400)
We should probably use the new parse with rounding that was implemented for Windows also on the other systems to avoid these problems.
We have
julia> convert(Interval{Float64}, parse(Interval{BigFloat}, "1e-400"))
Interval(0.0, 5.0e-324)
This is correct.
this is fixed in #522
julia> @interval "1e-400"
[0, 4.94066e-324]
julia> I"1e-400"
[0, 4.94066e-324]
@lbenet how should we deal with issues like these? Should we close them when the PR is merged to 1.0-dev or when 1.0-dev is merged to master?
We should probably keep this open to remember to port back that back from 1.0-dev... or if we don't, close them once 1.0-dev becomes 1.0 and is merged to master 😄
Fixed in #567