原です。

>近岡です。

>私だったら、
>
>  def isqrt_ini
>    return <FIXNUM用ルーチン呼出し> if <FIXNUMの場合>
>    j = bitlength >> 2
>    x = (self >> (j << 1)).isqrt_ini
>    ((x<<j) + (self>>j).div(x)) >> 1
>  end
>
>とします。

そうする事になるでしょうね。私の(正木さんも?)「速くは
ならない」というのはあくまで超巨大整数の話で。

ところで、前から疑問なんだけど、n が FIXNUM 程度だったら、
n.isqrt は Math.sqrt(n).floor で代用できますかね。