   times__: (x) ->
     a = num.gcd @numer, x.denom
     b = num.gcd @denom, x.numer
-    n = @numer.div(a).times(x.numer.div(b))
-    d = @denom.div(b).times(x.denom.div(a))
+    n = @numer.idiv(a).times(x.numer.idiv(b))
+    d = @denom.idiv(b).times(x.denom.idiv(a))
     Fraction.normalized n, d
 
-  by__: (x) -> @times__ x.inv__()
+  div__: (x) -> @times__ x.inv__()
 
   toString: -> if @denom.eq 1 then "#{@numer}" else "#{@numer}/#{@denom}"
 


  times__: (x) -> new LongInt @sign * x.sign, mul @digits, x.digits

  divmod = (r, s) ->
    return [ZERO, ZERO] unless cleanup r

    scale = Math.floor BASE / (s.last() + 1)

      namex = "#{name}__"
      operator name, (a) -> makeNum(a)[namex]()

  operator 'isqrt', (a) -> downcast makeNum(a)['isqrt__']()

  operator 'pow', (a, b) ->
    step = (p, r, s) ->
