# ~big\_zero after big\_zero % big\_neg

**URL:** <https://www.ruby-forum.com/t/big-zero-after-big-zero-big-neg/109451>\
**Category:** Development\
**Created:** [July 15, 2007, 2:48am UTC](https://www.ruby-forum.com/t/big-zero-after-big-zero-big-neg/109451 "2007-07-15T02:48:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [July 15, 2007, 2:48am UTC](https://www.ruby-forum.com/t/big-zero-after-big-zero-big-neg/109451/1 "2007-07-15T02:48:46Z")

</div>

e$B0J2\<$N$h$&$K!“e(BBignum e$B$Ne(B 0 e$B$r%S%C%H1i;;$NH]Dj$7$?$H$-$Ke(B  
0 e$B$Ke(B  
e$B$J$k$3$H$,$”$j$^$9!#e(B

% ./ruby -ve ’  
big\_neg = 0x40000000.coerce(-1)[0]  
big\_zero = 0x40000000.coerce(0)[0]  
p big\_zero % big\_neg  
p ~big\_zero’  
ruby 1.9.0 (2007-07-15 patchlevel 0) [i686-linux]  
0  
0

e$B$,!"\>e5-$+$ie(B p big\_zero % big\_neg e$B$r\>J$/$H!"5sF0$,JQ$o$C$F$=e(B  
e$B$&$O$J$i$J$/$J$j$^$9!#e(B

% ./ruby -ve ’  
big\_neg = 0x40000000.coerce(-1)[0]  
big\_zero = 0x40000000.coerce(0)[0]  
#p big\_zero % big\_neg  
p ~big\_zero’  
ruby 1.9.0 (2007-07-15 patchlevel 0) [i686-linux]  
-1

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [July 15, 2007, 6:27am UTC](https://www.ruby-forum.com/t/big-zero-after-big-zero-big-neg/109451/2 "2007-07-15T06:27:59Z")

</div>

e$B$J$+$@$G$9!#e(B

At Sun, 15 Jul 2007 09:47:44 +0900,  
Tanaka A. wrote in [ruby-dev:31229]:

> e$B0J2\<$N$h$&$K!“e(BBignum e$B$Ne(B 0 e$B$r%S%C%H1i;;$NH]Dj$7$?$H$-$Ke(B 0 e$B$Ke(B  
> e$B$J$k$3$H$,$”$j$^$9!#e(B

> e$B$,!"\>e5-$+$ie(B p big\_zero % big\_neg e$B$r\>J$/$H!"5sF0$,JQ$o$C$F$=e(B  
> e$B$&$O$J$i$J$/$J$j$^$9!#e(B

Bignume$B$Ne(B0e$B$Oe(B(%e$B7PM3$Ge(B)bigtrunc()e$B$rDL$k$He(Blen=0e$B$K$J$k$s$G$9$,!"e(B  
rb\_big\_neg()e$B$,e(Blen==0e$B$N\>l9g$r9MN8$7$F$$$J$$$?$a$G$9$M!#e(B

bigtrunc()e$B$Ge(B0e$B$K$7$J$$$h$&$K$9$k$+!“e(Brb\_big\_neg()e$B$Ge(Blen==0e$B$N\>l9g$re(B  
e$B9MN8$9$k$+!”$I$C$A$,$$$$$G$7$g$&!#8e\<T$@$1$@$H!"B\>$G$b$A$c$s$He(B  
e$B9MN8$7$F$$$k$+A4It%A%’%C%/$7$J$$$H$$$1$J$$$+$i!"KI1RE\*$KN\>J}$Ge(B  
e$B$9$+$M$’!#e(B

# Index: trunk/bignum.c

— trunk/bignum.c (revision 12794)  
+++ trunk/bignum.c (working copy)  
@@ -98,5 +98,5 @@ bigtrunc(VALUE x)  
BDIGIT \*ds = BDIGITS(x);

- while (len-- && !ds[len]);

- while (–len && !ds[len]);  
RBIGNUM(x)-\>len = ++len;  
return x;  
@@ -1038,4 +1038,5 @@ rb\_big\_neg(VALUE x)  
ds = BDIGITS(z);  
i = RBIGNUM(x)-\>len;
- if (!i) return INT2FIX(~(SIGNED\_VALUE)0);  
while (i–) {  
ds[i] = ~ds[i];  
Index: stable/bignum.c  
===================================================================  
— stable/bignum.c (revision 12794)  
+++ stable/bignum.c (working copy)  
@@ -105,5 +105,5 @@ bigtrunc(x)  
BDIGIT \*ds = BDIGITS(x);

- while (len-- && !ds[len]);

- while (–len && !ds[len]);  
RBIGNUM(x)-\>len = ++len;  
return x;  
@@ -1100,4 +1100,5 @@ rb\_big\_neg(x)  
ds = BDIGITS(z);  
i = RBIGNUM(x)-\>len;
- if (!i) return INT2FIX(~(SIGNED\_VALUE)0);  
while (i–) ds[i] = ~ds[i];  
RBIGNUM(z)-\>sign = !RBIGNUM(z)-\>sign;

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [July 15, 2007, 12:59pm UTC](https://www.ruby-forum.com/t/big-zero-after-big-zero-big-neg/109451/3 "2007-07-15T12:59:33Z")

</div>

In article  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid),  
Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

> bigtrunc()e$B$Ge(B0e$B$K$7$J$$$h$&$K$9$k$+!“e(Brb\_big\_neg()e$B$Ge(Blen==0e$B$N\>l9g$re(B  
> e$B9MN8$9$k$+!”$I$C$A$,$$$$$G$7$g$&!#8e\<T$@$1$@$H!"B\>$G$b$A$c$s$He(B  
> e$B9MN8$7$F$$$k$+A4It%A%‘%C%/$7$J$$$H$$$1$J$$$+$i!"KI1RE\*$KN\>J}$Ge(B  
> e$B$9$+$M$’!#e(B

e$B$=$&$G$9$M!#8e\<T$@$1%Q%C%A$rEv$F$F!“e(Btest\_integer.rb e$B$Ge(B VS  
e$B$re(B  
e$B$\<$s$Ve(B Bignum e$B$K$7$F;n$9$H!”$^$@2x$7$$7k2L$,=P$F$-$^$9$+$i!#e(B
