Skip to content

Commit 047adf1

Browse files
committed
Faster promoting arithmetic
Reference: #21065
1 parent c399558 commit 047adf1

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

base/promotion.jl

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,22 @@ function sametype_error(input...)
243243
" failed to change any input types")
244244
end
245245

246-
+(x::Number, y::Number) = +(promote(x,y)...)
247-
*(x::Number, y::Number) = *(promote(x,y)...)
248-
-(x::Number, y::Number) = -(promote(x,y)...)
249-
/(x::Number, y::Number) = /(promote(x,y)...)
246+
function +(x::Number, y::Number)
247+
T = promote_type(typeof(x), typeof(y))
248+
convert(T, x) + convert(T, y)
249+
end
250+
function *(x::Number, y::Number)
251+
T = promote_type(typeof(x), typeof(y))
252+
convert(T, x) * convert(T, y)
253+
end
254+
function -(x::Number, y::Number)
255+
T = promote_type(typeof(x), typeof(y))
256+
convert(T, x) - convert(T, y)
257+
end
258+
function /(x::Number, y::Number)
259+
T = promote_type(typeof(x), typeof(y))
260+
convert(T, x) / convert(T, y)
261+
end
250262

251263
"""
252264
^(x, y)

0 commit comments

Comments
 (0)