From: Masahiro Tanaka Date: 2001-01-08T05:42:01+09:00 Subject: [ruby-list:27051] Re: BigNum#modulo problem? >From: Ogino Junya >Subject: [ruby-list:27050] BigNum#modulo problem? > 以下のように modulo が期待通りの結果を返しません。 > > % ruby -ve 'p 6800000000%4000000000' > ruby 1.6.2 (2000-12-25) [i386-netbsd1.5.] > -1494967296 以下のパッチで直ると思います。 田中昌宏 --- bignum.c~ Thu Dec 21 22:21:53 2000 +++ bignum.c Sun Jan 7 15:27:40 2001 @@ -829,8 +829,12 @@ t2 %= dd; } RBIGNUM(z)->sign = RBIGNUM(x)->sign==RBIGNUM(y)->sign; - if (!RBIGNUM(x)->sign) t2 = -(long)t2; - if (modp) *modp = rb_int2big((long)t2); + if (modp) { + *modp = bignew(1,RBIGNUM(x)->sign); + BDIGITS(*modp)[0] = (BDIGIT)t2; + if (!t2) + RBIGNUM(*modp)->len = 0; + } if (divp) *divp = z; return; }