From: Tadashi Saito Date: 2008-02-16T11:58:39+09:00 Subject: [ruby-list:44651] [ANN] Decimal 0.0 released 斎藤と申します。 自作の数値演算拡張ライブラリ、Decimal 0.0 をとりあえずリリースしてみました。 http://decimal.rubyforge.org/ Decimalは、既存の数値クラス群との親和性を第一に設計した、多倍長精度の 10進浮動小数点数演算ライブラリです。標準添付のBigDecimalに追い付き 追い越せる存在になりたいと思っています。 「まずは」リリースしようとしたので、tarballに含まれるのは恐らくバグばかりで、 残念ながらドキュメントは一つもありません。ですが、BigDecimalやFloatとほぼ 同じ感覚でいじってみて下さい。基本的なメソッドは一通り実装してあります。 …と、これだけではなんなので、いくつかコマンドを実行した結果でごく簡単な 自己紹介に変えさせていただきます $ cd ~/svn/ruby/trunk/ext/bigdecimal/ $ wc -c bigdecimal.[ch] 123348 bigdecimal.c 8031 bigdecimal.h 131379 合計 $ cd ~/svn/decimal/trunk/ $ wc -c decimal.c 37997 decimal.c $ time ruby -rbigdecimal -e 'BigDecimal("1.1") ** (2 ** 16)' real 0m9.462s user 0m9.433s sys 0m0.008s $ time ruby -rdecimal -e 'Decimal("1.1") ** (2 ** 16)' real 0m0.338s user 0m0.328s sys 0m0.000s $ cat mem.rb def mem File.read("/proc/#{$$}/status").grep(/VmSize/) end $ ruby -rmem -rbigdecimal -e 'GC.disable; d=BigDecimal("1"); 2_000_000.times {d+d}; puts mem' VmSize: 129208 kB $ ruby -rmem -rdecimal -e 'GC.disable; d=Decimal(1); 2_000_000.times {d+d}; puts mem' VmSize: 82340 kB こんな感じです。 リリースらしいリリースは初めてなので不備ばかりあると思いますが、ご指摘いただけ れば励みになります。どうぞよろしくお願いいたします。 # Ruby 1.9.ん 辺りで本体に取り込んでもらえるようにがんばろうと思います -- 斎藤ただし 「整数を扱う古典的アルゴリズムを、小数点を含む数や多倍長精度浮動小数点数に 応用することは簡単である。」 ーー Donald E. Knuth