# Bignum $B$N%a%=%C%I$+$i$N(B bigzero\_p

**URL:** <https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272>\
**Category:** Development\
**Created:** [May 11, 2008, 8:15am UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272 "2008-05-11T08:15:54Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [May 11, 2008, 8:15am UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272/1 "2008-05-11T08:15:54Z")

</div>

e$B%o%J%Y$H?=$7$^$9!#e(B

Ruby e$B$+$ie(B Bignum e$B%$%s%9%?%s%9$N%a%=%C%I$,8F$P$l$?\>l9g$K$Oe(B  
bigzero\_p e$B$G$9$Y$F$N%S%C%H$r8+$kI,MW$O$"$^$jL5$$$h$&$K;W$$$^$9!#e(B

e$B$=$3$G!"3N\<B$Ke(B Fixnum  
e$B$NHO0O$K$J$$$3$H$r\<($9%U%i%0$GJ,4t$9$k%Q%C%A$r=q$-$^$7$?!#e(B  
e$B;n83E\*$Ke(B to\_s e$B$,8F$P$l$?$H$-$K$@$1IU2C$7$F$$$^$9!#e(B

# Index: include/ruby/ruby.h

— include/ruby/ruby.h (revision 16344)  
+++ include/ruby/ruby.h (working copy)  
@@ -610,9 +610,11 @@  
#define RBIGNUM\_POSITIVE\_P(b) RBIGNUM\_SIGN(b)  
#define RBIGNUM\_NEGATIVE\_P(b) (!RBIGNUM\_SIGN(b))

# -#define RBIGNUM\_EMBED\_FLAG FL\_USER2 -#define RBIGNUM\_EMBED\_LEN\_MASK (FL\_USER5|FL\_USER4|FL\_USER3) -#define RBIGNUM\_EMBED\_LEN\_SHIFT (FL\_USHIFT+3) +#define RBIGNUM\_UNFIXABLE\_FLAG FL\_USER2 + +#define RBIGNUM\_EMBED\_FLAG FL\_USER3 +#define RBIGNUM\_EMBED\_LEN\_MASK (FL\_USER6|FL\_USER5|FL\_USER4) +#define RBIGNUM\_EMBED\_LEN\_SHIFT (FL\_USHIFT+4) #define RBIGNUM\_LEN(b) ((RBASIC(b)-\>flags & RBIGNUM\_EMBED\_FLAG) ? (long)((RBASIC(b)-\>flags \>\> RBIGNUM\_EMBED\_LEN\_SHIFT) & Index: bignum.c

— bignum.c (revision 16344)  
+++ bignum.c (working copy)  
@@ -44,6 +44,10 @@  
bigzero\_p(VALUE x)  
{  
long i;  
+

- if (FL\_TEST(x, RBIGNUM\_UNFIXABLE\_FLAG)) {

- return 0;

- }  
for (i = 0; i \< RBIGNUM\_LEN(x); ++i) {  
if (BDIGITS(x)[i]) return 0;  
}  
@@ -1000,6 +1004,7 @@  
{  
int base;

- FL\_SET(x, RBIGNUM\_UNFIXABLE\_FLAG);  
if (argc == 0) base = 10;  
else {  
VALUE b;

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [May 11, 2008, 8:56am UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272/2 "2008-05-11T08:56:17Z")

</div>

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

> Ruby e$B$+$ie(B Bignum e$B%$%s%9%?%s%9$N%a%=%C%I$,8F$P$l$?\>l9g$K$Oe(B  
> bigzero\_p e$B$G$9$Y$F$N%S%C%H$r8+$kI,MW$O$"$^$jL5$$$h$&$K;W$$$^$9!#e(B

e$B;W$C$?$s$G$9$,!“:G\>e0L%S%C%H$+$i8!::$9$k$”$?$j$G\<j$rBG$D$N$Oe(B  
e$B$I$&$G$9$+$M!#e(B

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [May 12, 2008, 5:39am UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272/3 "2008-05-12T05:39:16Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:34651] Re: Bignum e$B$N%a%=%C%I$+$i$Ne(B  
bigzero\_p”  
on Sun, 11 May 2008 23:44:49 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|At Sun, 11 May 2008 15:55:26 +0900,  
|Tanaka A. wrote in [ruby-dev:34649]:  
|\> \> Ruby e$B$+$ie(B Bignum e$B%$%s%9%?%s%9$N%a%=%C%I$,8F$P$l$?\>l9g$K$Oe(B  
|\> \> bigzero\_p e$B$G$9$Y$F$N%S%C%H$r8+$kI,MW$O$“$^$jL5$$$h$&$K;W$$$^$9!#e(B  
|\>  
|\> e$B;W$C$?$s$G$9$,!”:G\>e0L%S%C%H$+$i8!::$9$k$“$?$j$G\<j$rBG$D$N$Oe(B  
|\> e$B$I$&$G$9$+$M!#e(B  
|  
|e$B$[$H$s$I$N%1!\<%9$G$Oe(BRBIGNUM\_LENe$B$Oe(B0e$B$+e(B1e$B!”$^$l$J%1!\<%9$G$be(B2e$B;\_$^$j$@e(B  
|e$B$m$&$H;W$C$F$$$?$N$G$9$,!“$=$s$J$KBg$-$Je(BBignum 0e$B$,BgNL$K$G$-$k%1!\<e(B  
|e$B%9$,$”$j$^$7$?$+!#e(B

e$B$h$C$]$I$N$3$H$,$J$$$H:9$O=P$J$$$@$m$&$H$$$&$3$H$G!“$”$^$jI,e(B  
e$BMW@-$O46$8$^$;$s!#$+$J$jBg$-$J?t$G2\<$NJ}$N%S%C%H$,$\<$s$V%\<%m$Ce(B  
e$B$F%1!\<%9$@$H$A$g$C$H$O:9$,=P$k$N$+$J!#$G$b!"$=$l$J$ie(Bakre$B$5$se(B  
e$B$N$\*$C$7$c$k$h$&$K\>e0L$+$i%A%'%C%/$7$F$$$/$N$,$h$5$=$&$G$9$M!#e(B

e$B2\>$K85$N%Q%C%A$NJ}8~$G9T$/$H$9$k$H!"e(Bbigzero\_pe$B$G??$rJV$9D\>A0$Ke(B  
e$B$b%U%i%0$r%;%C%H$7$?J}$,$h$$$G$7$g$&$M!#e(B

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [May 11, 2008, 4:45pm UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272/4 "2008-05-11T16:45:40Z")

</div>

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

At Sun, 11 May 2008 15:55:26 +0900,  
Tanaka A. wrote in [ruby-dev:34649]:

> > Ruby e$B$+$ie(B Bignum e$B%$%s%9%?%s%9$N%a%=%C%I$,8F$P$l$?\>l9g$K$Oe(B  
> > bigzero\_p e$B$G$9$Y$F$N%S%C%H$r8+$kI,MW$O$"$^$jL5$$$h$&$K;W$$$^$9!#e(B
> 
> e$B;W$C$?$s$G$9$,!":G\>e0L%S%C%H$+$i8!::$9$k$"$?$j$G\<j$rBG$D$N$Oe(B  
> e$B$I$&$G$9$+$M!#e(B

e$B$[$H$s$I$N%1!\<%9$G$Oe(BRBIGNUM\_LENe$B$Oe(B0e$B$+e(B1e$B!"$^$l$J%1!\<%9$G$be(B2e$B;\_$^$j$@e(B  
e$B$m$&$H;W$C$F$$$?$N$G$9$,!"$=$s$J$KBg$-$Je(BBignum  
0e$B$,BgNL$K$G$-$k%1!\<e(B  
e$B%9$,$"$j$^$7$?$+!#e(B

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [May 12, 2008, 12:45pm UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272/5 "2008-05-12T12:45:40Z")

</div>

e$B%o%J%Y$G$9!#e(B

2008/05/11 23:44 Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> At Sun, 11 May 2008 15:55:26 +0900,  
> Tanaka A. wrote in [ruby-dev:34649]:
> 
> > e$B;W$C$?$s$G$9$,!“:G\>e0L%S%C%H$+$i8!::$9$k$”$?$j$G\<j$rBG$D$N$Oe(B  
> > e$B$I$&$G$9$+$M!#e(B
> 
> e$B$[$H$s$I$N%1!\<%9$G$Oe(BRBIGNUM\_LENe$B$Oe(B0e$B$+e(B1e$B!“$^$l$J%1!\<%9$G$be(B2e$B;\_$^$j$@e(B  
> e$B$m$&$H;W$C$F$$$?$N$G$9$,!”$=$s$J$KBg$-$Je(BBignum 0e$B$,BgNL$K$G$-$k%1!\<e(B  
> e$B%9$,$"$j$^$7$?$+!#e(B

test/ruby/test\_bignum.rb e$B$Ne(B test\_too\_big\_to\_s  
e$B$N%%H%k%M%C%/$rC5$7$?7k2Le(B  
bigzero\_p e$B$K9T$-Ce$-$^$7$?!#e(B  
e$B$G$9$,M\>J,$J%U%i%0$r?7@\_$9$k$h$je(B akr  
e$B$5$s$N0F$N$[$&$,$h$C$]$I$h$5$=$&$K;W$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [May 12, 2008, 4:34pm UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272/6 "2008-05-12T16:34:58Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:34657] Re: Bignum e$B$N%a%=%C%I$+$i$Ne(B  
bigzero\_p”  
on Mon, 12 May 2008 19:44:59 +0900, wanabe [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|\> e$B$[$H$s$I$N%1!\<%9$G$Oe(BRBIGNUM\_LENe$B$Oe(B0e$B$+e(B1e$B!"$^$l$J%1!\<%9$G$be(B2e$B;_$^$j$@e(B  
|\> e$B$m$&$H;W$C$F$$$?$N$G$9$,!“$=$s$J$KBg$-$Je(BBignum 0e$B$,BgNL$K$G$-$k%1!\<e(B  
|\> e$B%9$,$”$j$^$7$?$+!#e(B  
|  
|test/ruby/test\_bignum.rb e$B$Ne(B test\_too\_big\_to\_s e$B$N%%H%k%M%C%/$rC5$7$?7k2Le(B  
|bigzero\_p e$B$K9T$-Ce$-$^$7$?!#e(B  
|e$B$G$9$,M\>J,$J%U%i%0$r?7@_$9$k$h$je(B akr e$B$5$s$N0F$N$[$&$,$h$C$]$I$h$5$=$&$K;W$$$^$9!#e(B

e$B$=$&$G$7$?$+!#:#F|e(Bakre$B$5$s$,%3%\_%C%H$5$l$^$7$?$N$G$=$l$K$h$je(B  
e$B%%H%k%M%C%/$,$I$&$J$C$?$+4X?4$,$"$j$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![wanabe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/51bf81/32.png) [@wanabe](https://www.ruby-forum.com/u/wanabe)\
**Post date:** [May 19, 2008, 11:32am UTC](https://www.ruby-forum.com/t/bignum-b-n-a-c-i-i-n-b-bigzero-p/137272/7 "2008-05-19T11:32:02Z")

</div>

e$B%o%J%Y$G$9!#e(B

2008/05/12 23:33 Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> |test/ruby/test\_bignum.rb e$B$Ne(B test\_too\_big\_to\_s e$B$N%%H%k%M%C%/$rC5$7$?7k2Le(B  
> |bigzero\_p e$B$K9T$-Ce$-$^$7$?!#e(B  
> |e$B$G$9$,M\>J,$J%U%i%0$r?7@\_$9$k$h$je(B akr e$B$5$s$N0F$N$[$&$,$h$C$]$I$h$5$=$&$K;W$$$^$9!#e(B
> 
> e$B$=$&$G$7$?$+!#:#F|e(Bakre$B$5$s$,%3%\_%C%H$5$l$^$7$?$N$G$=$l$K$h$je(B  
> e$B%%H%k%M%C%/$,$I$&$J$C$?$+4X?4$,$"$j$^$9!#e(B

to\_s e$B$,8F$S=P$5$l$F$+$ie(B RangeError  
e$B$^$G?t==IC$+$+$C$F$$$?$H$3$m$,e(B  
e$B0l=V$G$9$`$h$&$K$J$j$^$7$?!#e(B  
e$B$\*IU$-9g$$$$$?$@$$$?3’$5$s!JFC$Ke(B akr  
e$B$5$s!K$"$j$,$H$&$4$6$$$^$7$?!#e(B
