e$B1sF#$H?=$7$^$9!#e(B
double e$B$K<}$^$i$J$$HO0O$Ne(B bignum e$B$KBP$7$F>.$5$$CM$Ge(B quo
e$B$9$k$He(B
e$BL58B%k!<%W$7$^$9!#e(B
$ ./ruby -e ‘(256**128).quo(1)’
(C-c e$B$,8z$+$J$$e(B)
big_shift e$B$,:8%7%U%H$r$&$^$/07$($F$J$$$s$@$H;W$$$^$9!#e(B
Index: bignum.c
— bignum.c (revision 15159)
+++ bignum.c (working copy)
@@ -1851,7 +1851,7 @@
static VALUE big_shift(VALUE x, int n)
{
if (n < 0)
- return big_lshift(x, (unsigned int)n);
- return big_lshift(x, (unsigned int)-n);
else if (n > 0)
return big_rshift(x, (unsigned int)n);
return x;
e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B
In message “Re: [ruby-dev:33257] Bignum#quo may cause infinite loop”
on Mon, 21 Jan 2008 22:02:33 +0900, “Yusuke ENDOH” [email protected]
writes:
|double e$B$K<}$^$i$J$$HO0O$Ne(B bignum e$B$KBP$7$F>.$5$$CM$Ge(B quo e$B$9$k$He(B
|e$BL58B%k!<%W$7$^$9!#e(B
|
|$ ./ruby -e ‘(256**128).quo(1)’
|(C-c e$B$,8z$+$J$$e(B)
|
|big_shift e$B$,:8%7%U%H$r$&$^$/07$($F$J$$$s$@$H;W$$$^$9!#e(B
e$B!Ve(B(unsigned
int)-ne$B!W$N0UL#$,$h$/$o$+$i$J$$$s$G$9$,e(B(e$B;d$C$FGOe(B
e$B</e(B…)e$B!"L58B%k!<%W$9$k$h$j$O1sF#$5$s$r?.$8$kJ}$,$h$5$=$&$J$Ne(B
e$B$G%3%_%C%H$7$F$/$@$5$$!#e(B
e$B1sF#$G$9!#e(B
08/01/21 e$B$Ke(B Yukihiro M.[email protected]
e$B$5$s$O=q$-$^$7$?e(B:
e$B!Ve(B(unsigned int)-ne$B!W$N0UL#$,$h$/$o$+$i$J$$$s$G$9$,e(B(e$B;d$C$FGOe(B
e$B</e(B…)e$B!"L58B%k!<%W$9$k$h$j$O1sF#$5$s$r?.$8$kJ}$,$h$5$=$&$J$Ne(B
e$B$G%3%_%C%H$7$F$/$@$5$$!#e(B
big_shift e$B$Oe(B int e$B$r<u$1<h$C$F!"$=$l$,@5$N;~$Oe(B big_rshift
e$B$r;H$C$Fe(B
e$B1&%7%U%H$r!"Ii$N;~$Oe(B big_lshift
e$B$r;H$C$F:8%7%U%H$r$9$k4X?t$G$9!#e(B
big_lshift e$B$Oe(B unsigned int
e$B$r<u$1<h$C$F$=$N?t$@$1:8%7%U%H$r$9$ke(B
e$B4X?t$G$9$,!“e(Bbig_shift e$B$O0z?t$,Ii$N$H$-$K$bIi?t$N$^$^e(B
big_lshift e$B$Ke(B
e$BEj$2$F$$$?$N$G!”$J$s$+JQ$J$3$H$K$J$C$F$$$k$H$$$&%P%0$G$7$?!#e(B
e$B$H$$$&$o$1$G!"%3%_%C%H$7$^$7$?!#e(B