豊福です。

[ruby-dev:8448] えぐちさん
>> |  bignum.c の
>> |    #define BIGDN(x) (((x)<0) ? ~((~(x))>>BITSPERDIG) : (x)>>BITSPERDIG)
>> |
>> |    ((x)>>BITSPERDIG)
>> |と結果が違うときあるんでしたっけ。
>>
>> おぼろげな記憶によれば >> 演算子の挙動は符号の扱いについて処
>> 理系依存の部分があるのに対応するためだと思いました。
> 
> [ruby-dev:3097] bignum of ruby11b9_28
> からのスレッドですね、 HPUX-10.x が該当するらしいです。

  HPUX-10.x ですか。仕事先にあったみたいなので余裕が
できたら試してみます。
  [ruby-dev:3097] から読みました。昔読み流していた話題を
今読むのは面白いですね。
  "bignum of ruby11b9_28" のサブジェクトで追った限り決着が
ついたところが見つからなかったのですがどのメールで落ち着い
たのでしょうか。

> さて、BIGDN() がブランチを生成する可能性が気になるのであれば、
> configure で処理系による差を RSHIFT() というマクロで吸収しているので、
> BIGDN(x) の定義も RSHIFT(x,BITSPERDIG) が良いと思います。

  [ruby-dev:3149] に
    #define BIGDN(x) RSHIFT(x,BITSPERDIG)
としたらエラーになったとあったと思いますが、その後
configure の 判定が向上して RSHIFT の質が上がったと
いうことでしょうか。
---
                        豊福
                        toyofuku / juice.or.jp