[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002383] NArray-NMath の精度



倉富といいます。

NArray に付属する NMath の三角関数の精度について質問です。
Ruby は Mac OS X の DarwinPorts にてコンパイルした 1.8.2、
NArray は 0.5.7p4 です。以下、コマンドラインの実行結果ですが、

yuhei yuhei $ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.2.0]

yuhei yuhei $ irb
irb(main):001:0> require 'narray'
=> true
irb(main):002:0> Math.sin(1.0)
=> 0.841470984807897
irb(main):003:0> NMath.sin(1.0)
=> 0.841470956802368
irb(main):004:0> Math.sin(1.0) - NMath.sin(1.0)
=> 2.80055283408132e-08
irb(main):005:0> NMath.sin(NArray.to_na([1.0])) - NMath.sin([1.0])
=> NArray.float(1): 
[ 2.80055e-08 ]
irb(main):006:0> NMath.sin(NArray.to_na([1.0]))
=> NArray.float(1): 
[ 0.841471 ]
irb(main):007:0> NMath.sin([1.0])
=> NArray.sfloat(1): 
[ 0.8415 ]

どうも NMath では Float オブジェクトを引数とした場合、single として値を
返すようです。NMath においても、配列ではなく Float を引数とした場合は 
Math クラスと同じ動作をすべきだと思いますが、どうでしょうか。それとも何
か理由があっての仕様でしょうか。

よろしくお願いします。

-- 
Yuhei Kuratomi <yuhei@xxxxxxxxxxxxxxx>