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
julia>precision(Float64x4)
ERROR: MethodError: no method matching _precision_with_base_2(::Type{MultiFloat{Float64, 4}})
The function`_precision_with_base_2` exists, but no method is defined for this combination of argument types.
Closest candidates are:_precision_with_base_2(::BigFloat)
@ Base mpfr.jl:957_precision_with_base_2(::Type{BigFloat})
@ Base mpfr.jl:962_precision_with_base_2(::Type{Float64})
@ Base float.jl:872...
The text was updated successfully, but these errors were encountered:
Hey @edljk, thanks for pointing this out! This is because the Julia authors have once again changed the way that Base.precision(::Type{T}) is internally implemented. It looks like Base._precision has been renamed to Base._precision_with_base_2.
It's annoying that these changes occur with no notification to package authors. I will publish a fix in the forthcoming MultiFloats.jl v3.0 release, which will also include new arithmetic algorithms fixing #42. In the meantime, you can use this patch to restore previous behavior:
using MultiFloats
@inline Base.precision(::Type{MultiFloat{T,N}}) where {T,N} =
N *precision(T) + (N -1) # implicit bits of precision between limbs
Please be aware that MultiFloat types work with a fundamentally different representation than IEEEFloat and BigFloat types, and their precision requires special interpretation. The gap between x and the next representable MultiFloat value depends on the exponent of the trailing (least significant) limb of x, as opposed to the leading (most significant) limb. Base.precision(Float64xN) is intended to provide an average-case estimate; it is neither an upper or lower bound.
.. does not seem to be available anymore for MP:
The text was updated successfully, but these errors were encountered: