       namex = "#{name}__"
       operator name, (a) -> makeNum(a)[namex]()
 
-  operator 'sqrt', (a) -> NumberBase.downcast makeNum(a)['sqrt__']()
+  operator 'sqrt', (a) -> downcast makeNum(a)['sqrt__']()
 
   operator 'pow', (a, b) ->
     step = (p, r, s) ->

      else
        p

    NumberBase.downcast bounce step makeNum(1), makeNum(a), makeNum(b)

# ----


      namex = "#{name}__"
      operator name, (a, b) ->
        [x, y] = upcast a, b
        downcast x[namex] y

  gcd__: (other) ->
    step = (a, b) -> if b.isPos() then -> step b, a.mod(b) else a
