From 32b608a3b8c13c9e76583562e65794fba0e739e6 Mon Sep 17 00:00:00 2001 From: kimikage Date: Sun, 27 Sep 2026 23:06:12 +0900 Subject: [PATCH] Relax the type constraints for `promote_rule(::Type{<:FixedPoint}, ::Type{<:FixedPoint})` --- src/FixedPointNumbers.jl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/FixedPointNumbers.jl b/src/FixedPointNumbers.jl index 3b11d11..130fa29 100644 --- a/src/FixedPointNumbers.jl +++ b/src/FixedPointNumbers.jl @@ -531,12 +531,12 @@ promote_rule(::Type{X}, ::Type{Tr}) where {X <: FixedPoint, Tr <: Rational} = Tr promote_rule(::Type{X}, ::Type{Ti}) where {X <: FixedPoint, Ti <: Integer} = floattype(X) -function promote_rule(::Type{X1}, ::Type{X2}) where {T1, f1, X1 <: FixedPoint{T1,f1}, - T2, f2, X2 <: FixedPoint{T2,f2}} +function promote_rule(::Type{X1}, ::Type{X2}) where {X1 <: FixedPoint, X2 <: FixedPoint} X = wrapper(X1) X !== wrapper(X2) && return promote_type(floattype(X1), floattype(X2)) - f = max(f1, f2) # ensure we have enough precision + T1, T2 = rawtype(X1), rawtype(X2) + f = max(nbitsfrac(X1), nbitsfrac(X2)) # ensure we have enough precision Tp = promote_type(T1, T2) T = (T1 <: Signed || T2 <: Signed) ? signedtype(Tp) : Tp # make sure we have enough integer bits