原です。 >近岡です。 >私だったら、 > > 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 で代用できますかね。