かみぽわーる

kamipo's blog

Math::BigInt::Liteはx86だとテストが通らない?

前からDBIx::MoCoを入れようとするたびにMath::BigInt::Lite 0.12のテストが通らなくてゲンナリするんだけど
今日x86_64のperl5.10でやったら余裕でテスト通った。


通らないテストはt/bigintpm.incの200行目で、

x86 perl5.8.9
try: $x = Math::BigInt::Lite->new("10000000");$y = Math::BigInt::Lite->new('10');$x->blog($y); ans:  7
not ok 77
# Tried: '$x = Math::BigInt::Lite->new("10000000");$y = Math::BigInt::Lite->new('10');$x->blog($y);'

x86_64 perl5.10.0
try: $x = Math::BigInt::Lite->new("10000000");$y = Math::BigInt::Lite->new('10');$x->blog($y); ans: 7 7
ok 77

10**7の常用対数をとるとx86_64だとちゃんと7が返ってくるけど
x86だとundefになってしまうみたい。

Math::BigInt::Lite.pm 86行目のコメントをはずして

- # print "MAX_NEW_LEN $MAX_NEW_LEN MAX_ADD $MAX_ADD MAX_MUL $MAX_MUL\n\n";
+  print "MAX_NEW_LEN $MAX_NEW_LEN MAX_ADD $MAX_ADD MAX_MUL $MAX_MUL\n\n";

Math::BigInt::Liteをuseしてみると

x86 perl5.8.9
MAX_NEW_LEN 7 MAX_ADD 10000000 MAX_MUL 10000000

x86_64 perl5.10.0
MAX_NEW_LEN 8 MAX_ADD 100000000 MAX_MUL 100000000

MAX_NEW_LENを勝手に8にしたらMath::BigInt::Liteのテストは通ったけど
DBIx::MoCoのt/08-muid.tは失敗するまま\(^o^)/

t/08-muid.t ............ 1/?
#   Failed test 'greater than 2 ** 56'
#   at t/08-muid.t line 22.
#   (in ThisTest->muid)

#   Failed test 'greater than 2 ** 56'
#   at t/08-muid.t line 28.
#   (in ThisTest->muid)
# Looks like you failed 2 tests of 11.
t/08-muid.t ............ Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/11 subtests 

結局make installして入れちゃったけど、


自分の感性とかユースケースに近いのは
Data::Model > Data::ObjectDriver > DBIx::MoCoな感じだから
MoCoはこのまま放置になりそ。