Playing around with IntMod

I see, thanks!

Looking in conversion.jl line 190,

+(x::Number, y::Number) = +(promote(x,y)...)
*(x::Number, y::Number) = *(promote(x,y)...)  # A
-(x::Number, y::Number) = -(promote(x,y)...)
/(x::Number, y::Number) = /(promote(x,y)...)  # B
^(x::Number, y::Number) = ^(promote(x,y)...)

So 1*k finds (A) whereas 1/k finds:

# int.jl line 35
/(x::Integer, y::Integer) = float(x)/float(y)  

i.e. a specialisation of (B) that exists because Integer / Integer typically produces a nonInteger.

PS @edit is really useful!

1 Like