なかだです。

At Tue, 17 Jul 2007 22:30:38 +0900,
Yusuke ENDOH wrote in [ruby-dev:31242]:
> bignum の大きさのチェックで integer overflow しているのが原因のようです。
> 1.8 での応急措置です。

ありがとうございます。ちょっと違う形ですが、チェックを直しました。

> 1024*1024 が即値で埋め込まれているのが気持ち悪いんですが、
> bignum の最大値ってちゃんと決まってないんでしょうか。

とくに決まってないです。今のところ「メモリの許す限り」という制
限だけなんですが、どこかに明示的な線引きをしたほうがいいでしょ
うかねぇ。

> ついでに、重箱の隅ですが、以下の仕様変更は意図されたものでしょうか。
> 
> $ ./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が返るほう
が一貫性はあると思いますが。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦