[#37248] [Feature:1.9] Enumerator#inspect — "Yusuke ENDOH" <mame@...>

遠藤です。

12 messages 2008/12/02

[#37337] [Feature #841] Object#self — "rubikitch ." <redmine@...>

Feature #841: Object#self

13 messages 2008/12/09

[#37513] Current status of 1.9.1 RC1's issues — "Yugui (Yuki Sonoda)" <yugui@...>

Hi, folks

14 messages 2008/12/20
[#37516] Re: Current status of 1.9.1 RC1's issues — Masatoshi SEKI <m_seki@...> 2008/12/20

咳といいます。

[#37576] [BUG:trunk] encoding for stdio's — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

11 messages 2008/12/24

[ruby-dev:37370] IA-64とx64でBigDecimalの割り算の計算結果がおかしい

From: TAKANO Mitsuhiro <tak@...32.tk>
Date: 2008-12-11 02:04:56 UTC
List: ruby-dev #37370
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

高野です。

IA-64とx64でBigDecimalの割り算の計算結果がおかしいです。

- ----
  1) Failure:
test_power(TestBigDecimal)
[/home/takano/ruby/test/bigdecimal/test_bigdecimal.rb:585]:
<0.0123456790123457> expected but was
<#<BigDecimal:64c9ea0,'0.1234567912 3456791234 5679123456 7912345679
1234567912 345679E-1',63(63)>>.
- ----

0.1234567912 3456791234 5679123456 7912345679 1234567912 345679E-1 は
$ ./ruby -rbigdecimal -e 'x = BigDecimal.new("3");p (x ** -4)'
の結果なのですが、これを電卓やx86で計算すると
確かに 0.0123456780 123456780 123456780 ... という値になります。

BigDecimalにはあまり詳しくないのですが、少しソースコードを読んでみたとこ
ろ、 x ** 4 を やってから 1 / (x ** 4) をしている、つまり乗算してから
除算しているようです。
具体的にはVpPowerしてからsignが負なら VpDivd(w1, w2, VpConstOne, y);
を結果とするようなソースコードになっていました。どうやら、このVpDivdの中
身があやしいようです。

もう少し、読みすすめていったところ、"ext/bigdecimal/bigdecimal.c" 3395
行目あたりのループで桁ひとつ分短い気がしています。

自力ではここまでが限界でした。(苦笑
もしかしたら↑の読み方も間違っているかもしれません。

よく分かってなくて恐縮なのですが、どなたか64ビットに依存してそうな部分な
どが見つかりそうでしたらよろしくお願いします。

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAklAdwoACgkQzTee3rzDvxEskQCgqayGPbrCP6CS/WsDpNCoboIw
bVUAn1Olp9VpyO9Uy7xCAfPVQh+7XwPf
=ygR5
-----END PGP SIGNATURE-----

In This Thread

Prev Next