原です。

In [ruby-math:00956]

>正木です。

>|あと、やっぱり ilog2 の方が好きなんだよなあ。^^;
>
>それで同意が得られるのなら、私もその方がいいです。
>私自身は ilog2 も必要なので定義して使っています。

bitlength をアルゴリズムでもどうしても ilog2 相当を求めてから
+1 をするような形になってしまうし。スクリプト中の使用頻度でも
ilog2 の方が多いような気がします。

ilog2 か bitlength、他の方はどうでしょうか?


>In [ruby-math:00950]
>
>|0.bitlength == 0 というのも気になるなあ。
>
>http://mathworld.wolfram.com/BitLength.html
>
>でそうなっていたので、そのとおりにしています。
>(ここに書いてある定義式は明らかに間違っていますが)
>それ以降は n[i]==0 となる所までの bit 数という風に考えれば
>それでいいのではないかと思います。

そういう気もしますね。しかし 0.ilog2 はどうしても例外発生
なので、ilog2 なら迷わなくて済むな。

>同じ page に log2 を lg と書いてありますが、この記法はどれ位
>一般的な書き方ですか?

私は初めて知りました。

>ついでに:
>一般論ですが Fixnum と Bignum に別々に定義してあると自分で再定義
>するときに面倒です。できればまとめて Integer に定義してもらえる
>とありがたいのですが。

私も最初にテストするときは Integer に定義したりしますが、組み込み
にするなら Fixnum と Bignum に定義することになるでしょうね。なぜ
ならメソッド探索順が Fixnum -> Integer, Bignum -> Integer ですし、
Integer での定義が場合分けの形になっているなら、もともとシステム
が分けてくれていたものを Integer で集めてからまた分けたことになっ
てしまいますから。