2008年2月16日

[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

投稿者 xml-rpc : 2008年2月16日 11:58
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/69804
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。