原です。

正木さんの提案について、新たにスレッド立てます。

In [ruby-math:00913]
> まつもと ゆきひろです

|1.8.0 では却下されてしまいましたが、改めて
|Integer#gcd,bitsize,isqrt,iroot の組込みを要望します。

> それぞれ個別に議論しましょう。目的、名前、実装それぞれについ
> て私を説得してください。
> 
> gcdはインタフェース、bitsize, isqrt, irootは名前の点で引っか
> かってます。また、正木さんのgcdって結果がfixnumに収まらない
> 場合にはどうなるんでしょう。ま、そんなことは対処してあるんで
> しょうけど。

対処しているみたいです。


それでは、まとめておきますね。


(1) 最大公約数
    名称: Integer#gcd
    機能: m, n を Integer として最大公約数を返す。m あるいは n が負でも
          m.gcd(n) は正の値を返す。
    用途: 有理数の実装など、多数。

Math.gcd(m, n) というインターフェースもあり得ますね。


(2) ビット長
    名称: Integer#bitsize
    機能: n.bitsize で 2進で何桁であるかを返す。
          (Math.log(n)/Math.log(2)).floor + 1 にほぼ等しい。
    用途: 自然数の大きさの見積もり。Rational#to_f の実装など。

名称が bsize だと bytesize だと誤解されるかも。ilog2 というのもあり。


(3) 整数の平方根
    名称: Integer#isqrt
    機能: n.isqrt で i**2 <= n となる最大の整数 i >= 0 を返す。
    用途: 素数の判定など、多数。

Math.sqrt(n).floor のように n の大きさに制限がなく、また高速である事
が望まれます。Math.isqrt(n) というのもアリか。isqrt という名称は他で
使われているのを見た事があります。


(4) 整数の m 乗根
    名称: Integer#iroot
    機能: n.iroot(m) で i**m <= n となる最大の整数 i >= 0 を返す。


これははいらない気がするけど、[ruby-math:00911] の実装をみると(3)と
ほぼ同じなので、あってもいいかな。ただし root は方程式の根一般を指
す事が多いので、ちょっとどうかなと思います。
i ** Rational(1, m) をそれに充ててもいいかもしれない。つまり、

(5) 整数の p/q 乗
    名称: Integer#**
    機能: n.** Rational(p, q) で i**q <= n**p となる最大の整数 i >= 0 
         を返す。

というのはどうか。


、、、あと、実装も大事ですね。