ruby-trunk-changes r42746 - r42760

今日は Bignum と Fixnum に bit_length という新しいメソッドの追加がありました。

akr:r42746 2013-09-01 00:09:20 +0900

Bignum#bit_length および Fixnum#bit_length というその数を表現するのに必要なビット数を返すメソッドを追加しています。 rdoc によると正確には「符号ビットと異なる値の最上位のビット位置」を返すものだそうで、2の補数表現なので 0.bit_length が 0 になるのはもちろん、(-1).bit_length も 0 になります。 [ruby-core:56247] [Feature #8700]

svn:r42747 2013-09-01 00:09:25 +0900

version.h の日付更新。

akr:r42748 2013-09-01 00:12:39 +0900

NEWS ファイルに昨日の Process.clock_getres の追加と Bignum の GMP の利用についてと、Fixnum#bit_length, Bignum#bit_length の追加について追記しています。

akr:r42749 2013-09-01 03:34:42 +0900

bignum.c の bitsize() というマクロを bit_length() に改名しています。

akr:r42750 2013-09-01 09:57:00 +0900

bit_length() と nlz_int(), nlz_long(), nlz_long_long(), nlz_int128() の定義を bignum.c から internal.h に移動しています。

akr:r42751 2013-09-01 10:00:15 +0900

Bignum#bit_length と Fixnum#bit_length の rdoc に bit_length が ceil(log2(self < 0 ? -self : self+1)) と同じであることを追記しています。

akr:r42752 2013-09-01 10:31:16 +0900

Fixnum#bit_length の実装が bignum.c にあったので numeric.c に移動しています。

akr:r42753 2013-09-01 10:57:45 +0900

Process.clock_getres のテストのいくつかに具体的な値についての assertion も追加しています。

akr:r42754 2013-09-01 11:39:05 +0900

bignum.c の maxpow_in_bdigit() という関数が既に不要になっていたので削除しています。

akr:r42755 2013-09-01 13:03:32 +0900

bignum.c に書いてあった BITSPERDIG >= INT_MAX のチェックを削除しています。 STATIC_ASSERT() による SIZEOF_BDIGITS <= sizeof(BDIGIT) のチェックで充分なので不要とのこと。

akr:r42756 2013-09-01 15:21:52 +0900

bignum.c の big2str_orig() を big2str_2bdigits() に改名しています。

nobu:r42757 2013-09-01 18:04:10 +0900

process.c の Process.clock_getres の実装で #if defined(HAVE_CLOCK_GETRES) の条件の時しか使っていない変数をそのブロックの中で行うようにして環境によって起きる未使用変数の警告除去。

akr:r42758 2013-09-01 20:35:57 +0900

bignum.c の big2str_base_powerof2() という関数を big2str_base_poweroftwo() に改名して、この static 関数をテストする為に rb_big2str_poweroftwo() という wrapper 関数を定義してテスト用拡張ライブラリを追加しています。

nobu:r42759 2013-09-01 20:38:40 +0900

r42758 で新規追加されたファイルの svn property 設定。

akr:r42760 2013-09-01 21:19:15 +0900

Net::HTTP の local_port のテストで空きポートを得るために 10000 から 20000 の数のなかからランダムに選択していたのを、実際に Addrinfo#bind で使えるポートをみつけてその番号を利用するようにしています。