@@ -61,16 +61,16 @@ julia> (3 // 5) // (2 // 1)
61
61
// (n:: Integer , d:: Integer ) = Rational (n,d)
62
62
63
63
function // (x:: Rational , y:: Integer )
64
- xn, yn = divgcd (x. num,y )
64
+ xn, yn = divgcd (promote ( x. num, y) ... )
65
65
checked_den (xn, checked_mul (x. den, yn))
66
66
end
67
67
function // (x:: Integer , y:: Rational )
68
- xn, yn = divgcd (x, y. num)
68
+ xn, yn = divgcd (promote (x, y. num) ... )
69
69
checked_den (checked_mul (xn, y. den), yn)
70
70
end
71
71
function // (x:: Rational , y:: Rational )
72
- xn,yn = divgcd (x. num,y. num)
73
- xd,yd = divgcd (x. den,y. den)
72
+ xn,yn = divgcd (promote ( x. num, y. num) ... )
73
+ xd,yd = divgcd (promote ( x. den, y. den) ... )
74
74
checked_den (checked_mul (xn, yd), checked_mul (xd, yn))
75
75
end
76
76
280
280
for (op,chop) in ((:+ ,:checked_add ), (:- ,:checked_sub ), (:rem ,:rem ), (:mod ,:mod ))
281
281
@eval begin
282
282
function ($ op)(x:: Rational , y:: Rational )
283
- xd, yd = divgcd (x. den, y. den)
283
+ xd, yd = divgcd (promote ( x. den, y. den) ... )
284
284
Rational (($ chop)(checked_mul (x. num,yd), checked_mul (y. num,xd)), checked_mul (x. den,yd))
285
285
end
286
286
@@ -305,16 +305,16 @@ for (op,chop) in ((:rem,:rem), (:mod,:mod))
305
305
end
306
306
307
307
function * (x:: Rational , y:: Rational )
308
- xn, yd = divgcd (x. num, y. den)
309
- xd, yn = divgcd (x. den, y. num)
308
+ xn, yd = divgcd (promote ( x. num, y. den) ... )
309
+ xd, yn = divgcd (promote ( x. den, y. num) ... )
310
310
unsafe_rational (checked_mul (xn, yn), checked_mul (xd, yd))
311
311
end
312
312
function * (x:: Rational , y:: Integer )
313
- xd, yn = divgcd (x. den, y)
313
+ xd, yn = divgcd (promote ( x. den, y) ... )
314
314
unsafe_rational (checked_mul (x. num, yn), xd)
315
315
end
316
316
function * (y:: Integer , x:: Rational )
317
- yn, xd = divgcd (y, x. den)
317
+ yn, xd = divgcd (promote ( y, x. den) ... )
318
318
unsafe_rational (checked_mul (yn, x. num), xd)
319
319
end
320
320
/ (x:: Rational , y:: Union{Rational, Integer, Complex{<:Union{Integer,Rational}}} ) = x// y
0 commit comments