えぐち@エスアンドイー です。

>>> In message [ruby-dev:8480] Re: [patch] RSHIFT (Re: BIGDN)
    On Thu, 2 Dec 1999 04:14:53 +0900, Toyofuku <toyofuku / juice.or.jp> said:

豊福>   豊福です。
豊福> 
豊福> [ruby-dev:8448] えぐちさん

豊福> > [ruby-dev:3097] bignum of ruby11b9_28
豊福> > からのスレッドですね、 HPUX-10.x が該当するらしいです。
豊福> 
豊福>   HPUX-10.x ですか。仕事先にあったみたいなので余裕が
豊福> できたら試してみます。

よろしくおねがいします。

豊福>   [ruby-dev:3097] から読みました。昔読み流していた話題を
豊福> 今読むのは面白いですね。

そうですね、bignum.c に手をいれて当時の自分の発言なんか、
今になって、確認してしまいました。^^;;

豊福>   "bignum of ruby11b9_28" のサブジェクトで追った限り決着が
豊福> ついたところが見つからなかったのですがどのメールで落ち着い
豊福> たのでしょうか。

メールアーカイブからは、追い切れませんでしたが、
cvs によると、 $Date: 1998/06/19 09:31:58 $ に commit された、

#define BIGDN(x) (((x)<0) ? ~((~(x))>>BITSPERDIG) : (x)>>BITSPERDIG)

と対応されたのだと思います。ただ、ChangeLog では、

 Fri Jun 19 14:34:49 1998  Yukihiro Matsumoto  <matz / netlab.co.jp>
	 ...

	 * configure.in: RSHIFT check moved to configure.

とあるので、cvs の違うブランチを追っているかも知れません。

豊福> > さて、BIGDN() がブランチを生成する可能性が気になるのであれば、
豊福> > configure で処理系による差を RSHIFT() というマクロで吸収しているので、
豊福> > BIGDN(x) の定義も RSHIFT(x,BITSPERDIG) が良いと思います。
豊福> 
豊福>   [ruby-dev:3149] に
豊福>     #define BIGDN(x) RSHIFT(x,BITSPERDIG)
豊福> としたらエラーになったとあったと思いますが、その後
豊福> configure の 判定が向上して RSHIFT の質が上がったと
豊福> いうことでしょうか。

これは、[ruby-dev:3103] で助田さんが、
ほぼ同等の処置を、bignum.c を書き換える事で
make test を問題なく通ったとの事ですので、
この結果からみると、[ruby-dev:3149] での
RSHIFT(x) は [ruby-dev:3100] と同じ、
#define RSHIFT(x,y) ((x)>>y)
だったのではないかと思います。

	えぐち