遠藤です。

> ちょっと違う形ですが、チェックを直しました。

修正確認しました。なるほどそう直せばいいのか……。


> > 1024*1024 が即値で埋め込まれているのが気持ち悪いんですが、
> > bignum の最大値ってちゃんと決まってないんでしょうか。
>
> とくに決まってないです。今のところ「メモリの許す限り」という制
> 限だけなんですが、どこかに明示的な線引きをしたほうがいいでしょ
> うかねぇ。

私も「メモリの許す限り」だと思っていたので、大きすぎる Bignum が
Float になると知って驚きました。どこかに書いてましたっけ。


> > ついでに、重箱の隅ですが、以下の仕様変更は意図されたものでしょうか。
> >
> > $ ./ruby -ve 'p(0**(1<<30))'
> > ruby 1.8.6 (2007-06-07 patchlevel 36) [i686-linux]
> > -e:1: warning: in a**b, b may be too big
> > 0.0
> >
> > $ ./ruby -ve 'p(0**(1<<30))'
> > ruby 1.8.6 (2007-07-17 patchlevel 5000) [i686-linux]
> > 0
>
> 0**((1<<30)-1)まではFixnumが返って来ているので、同じ0が返るほう
> が一貫性はあると思いますが。

それを言うなら、「n**(1<<30) は 0 と 1 以外の n に対して Float を返す
ので、0 と 1 も Float を返すほうが一貫性がある」という議論も成り立つ
気がします。けれど、この挙動に依存するコードを書く事はなさそうですし、
個人的にも特にこだわりはないので、エンバグでないならそれでいいです。

-- 
Yusuke ENDOH <mame / tsg.ne.jp>