- 195 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 08:18:35 ]
- >>179
精度とか有効桁とか理論的なことはよくわかりませんが >>138-139の言う通りに修正すると >>155の精度10桁指定でも ちゃんとFloatと計算が一致するので やっぱりなにか間違ってるんでしょう(数値計算はよくわからんのですが) 精度30桁指定しても、30桁まで正確に計算したわけじゃないっぽいし 素の BigMath.exp(BigDecimal("-42"),30).to_s("f") #どうやら9桁までしか正しくないようです #=> 0.00000000000000000057495222693550320909930922875156228105502282940991466724539202 素の BigDecimal("1").div(BigMath.exp(BigDecimal("42"),30),30).to_s("f") # 1/exp(-x) #=> 0.000000000000000000574952226429355980666438088057 パッチ当てたBigMath.exp(BigDecimal("-42"),30).to_s("f") #なんだか保持してる桁が増えてるが少なくとも30桁まではあってるっぽい #=> 0.00000000000000000057495222642935598066643808805734234249475579743237414826015854912862326338840462251110214952607237390266 Perl 5.10 で perl -e "use Math::BigFloat;Math::BigFloat->accuracy(30);print Math::BigFloat->bexp(Math::BigFloat->new('-42'))" #=> 0.000000000000000000574952226429355980666438088057
|

|