# Bignum#quo may cause infinite loop

**URL:** <https://www.ruby-forum.com/t/bignum-quo-may-cause-infinite-loop/126696>\
**Category:** Development\
**Created:** [January 21, 2008, 2:03pm UTC](https://www.ruby-forum.com/t/bignum-quo-may-cause-infinite-loop/126696 "2008-01-21T14:03:28Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [January 21, 2008, 2:03pm UTC](https://www.ruby-forum.com/t/bignum-quo-may-cause-infinite-loop/126696/1 "2008-01-21T14:03:28Z")

</div>

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;

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [January 21, 2008, 3:30pm UTC](https://www.ruby-forum.com/t/bignum-quo-may-cause-infinite-loop/126696/2 "2008-01-21T15:30:28Z")

</div>

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” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [January 21, 2008, 4:54pm UTC](https://www.ruby-forum.com/t/bignum-quo-may-cause-infinite-loop/126696/3 "2008-01-21T16:54:49Z")

</div>

e$B1sF#$G$9!#e(B

08/01/21 e$B$Ke(B Yukihiro M.[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
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
