You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Update the arithmetic code to use algorithms published since
twiceprecision.jl got written.
Handle complex numbers.
Prevent some harmful promotions.
Some of the introduced extended precision arithmetic code will also be
used in `base/div.jl` to tackle issue JuliaLang#49450 with PR JuliaLang#49561.
Results:
The example in JuliaLang#33677 still gives the same result.
I wasn't able to evaluate JuliaLang#23497 because of how much Julia changed in
the meantime.
Proof that JuliaLang#26553 is fixed:
```julia-repl
julia> const TwicePrecision = Base.TwicePrecision
Base.TwicePrecision
julia> a = TwicePrecision{Float64}(0.42857142857142855, 2.3790493384824782e-17)
Base.TwicePrecision{Float64}(0.42857142857142855, 2.3790493384824782e-17)
julia> b = TwicePrecision{Float64}(3.4, 8.881784197001253e-17)
Base.TwicePrecision{Float64}(3.4, 8.881784197001253e-17)
julia> a_minus_b_inexact = Tuple(a - b)
(-2.9714285714285715, 1.0150610510858574e-16)
julia> BigFloat(a) == sum(map(BigFloat, Tuple(a)))
true
julia> BigFloat(b) == sum(map(BigFloat, Tuple(b)))
true
julia> a_minus_b = BigFloat(a) - BigFloat(b)
-2.971428571428571428571428571428577679589762353999797347402693647078382455095635
julia> Float64(a_minus_b) == first(a_minus_b_inexact)
true
julia> Float64(a_minus_b - Float64(a_minus_b)) == a_minus_b_inexact[begin + 1]
true
```
FixesJuliaLang#26553
Updates JuliaLang#49589
0 commit comments