# Optimize rb\_big2str0 and big2str\_karatsuba

**URL:** <https://www.ruby-forum.com/t/optimize-rb-big2str0-and-big2str-karatsuba/148040>\
**Category:** Development\
**Created:** [September 8, 2008, 3:49pm UTC](https://www.ruby-forum.com/t/optimize-rb-big2str0-and-big2str-karatsuba/148040 "2008-09-08T15:49:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![TOYOFUKU\_Chikanobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/5daacb/32.png) [@TOYOFUKU\_Chikanobu](https://www.ruby-forum.com/u/TOYOFUKU_Chikanobu)\
**Post date:** [September 8, 2008, 3:49pm UTC](https://www.ruby-forum.com/t/optimize-rb-big2str0-and-big2str-karatsuba/148040/1 "2008-09-08T15:49:04Z")

</div>

e$BK-J!$G$9!#e(B

e$BITMW$Je(B FIXNUMe$BMQ$N=hM}$N:o=|$H%o!\<%/MQe(BBignum  
e$B$N8eJRIU$1$G$9!#e(B

— [bignum.c.org](http://bignum.c.org)  
+++ bignum.c  
@@ -893,21 +893,6 @@  
long lh, ll, m1;  
VALUE b, q, r;

- if (FIXNUM\_P(x)) {
- 

```
  VALUE str = rb_fix2str(x, base);

```

- 

```
  char* str_ptr = RSTRING_PTR(str);

```

- 

```
  long str_len = RSTRING_LEN(str);

```

- 

```
  if (trim) {

```

- 

```
      if (FIX2INT(x) == 0) return 0;

```

- 

```
      MEMCPY(ptr, str_ptr, char, str_len);

```

- 

```
      return str_len;

```

- 

```
  }

```

- 

```
  else {

```

- 

```
      memset(ptr, '0', len - str_len);

```

- 

```
      MEMCPY(ptr + len - str_len, str_ptr, char, str_len);

```

- 

```
      return len;

```

- 

```
  }

```

- }  
if (BIGZEROP(x)) {  
if (trim) return 0;  
else {  
@@ -924,8 +909,10 @@  
bigdivmod(x, b, &q, &r);  
lh = big2str\_karatsuba(q, base, ptr, (len - m1)/2,  
len - m1, hbase, trim);

- rb\_big\_resize(q, 0);  
ll = big2str\_karatsuba(r, base, ptr + lh, m1/2,  
m1, hbase, !lh && trim);

- rb\_big\_resize(r, 0);

- rb\_big\_resize(xx, 0);

* * *

---

<div class="post-metadata">

**Author:** ![TOYOFUKU\_Chikanobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/5daacb/32.png) [@TOYOFUKU\_Chikanobu](https://www.ruby-forum.com/u/TOYOFUKU_Chikanobu)\
**Post date:** [September 10, 2008, 4:28pm UTC](https://www.ruby-forum.com/t/optimize-rb-big2str0-and-big2str-karatsuba/148040/2 "2008-09-10T16:28:46Z")

</div>

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

In message “Re: [ruby-dev:36217] optimize rb\_big2str0 and  
big2str\_karatsuba”  
on Mon, 8 Sep 2008 22:17:46 +0900, TOYOFUKU Chikanobu  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

| e$BITMW$Je(B FIXNUMe$BMQ$N=hM}$N:o=|$H%o!\<%/MQe(BBignum e$B$N8eJRIU$1$G$9!#e(B

Fixnume$B=hM}$r:o=|$9$k$N$O$h$$$G$9$,!"%o!\<%/MQe(BBignume$B$N8eJR$E$1e(B  
e$B$OI,MW$G$9$+$M!#%5%$%:e(B0e$B$K$J$kItJ,$rKPLG$G$-$kJ]\>Z$,$J$$8B$j7ke(B  
e$B6I$O@55,2=$5$l$J$$e(BBignume$B$KBP1~$9$kKI8fE\*%3!\<%G%#%s%0$OI,MW$Ge(B  
e$B$7$g$&$7!#e(B

---

<div class="post-metadata">

**Author:** ![TOYOFUKU\_Chikanobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/5daacb/32.png) [@TOYOFUKU\_Chikanobu](https://www.ruby-forum.com/u/TOYOFUKU_Chikanobu)\
**Post date:** [September 16, 2008, 4:14pm UTC](https://www.ruby-forum.com/t/optimize-rb-big2str0-and-big2str-karatsuba/148040/3 "2008-09-16T16:14:03Z")

</div>

e$BK-J!$G$9!#e(B

In [ruby-dev:36252]

> | e$BITMW$Je(B FIXNUMe$BMQ$N=hM}$N:o=|$H%o!\<%/MQe(BBignum e$B$N8eJRIU$1$G$9!#e(B
> 
> Fixnume$B=hM}$r:o=|$9$k$N$O$h$$$G$9$,!"%o!\<%/MQe(BBignume$B$N8eJR$E$1e(B  
> e$B$OI,MW$G$9$+$M!#%5%$%:e(B0e$B$K$J$kItJ,$rKPLG$G$-$kJ]\>Z$,$J$$8B$j7ke(B  
> e$B6I$O@55,2=$5$l$J$$e(BBignume$B$KBP1~$9$kKI8fE\*%3!\<%G%#%s%0$OI,MW$Ge(B  
> e$B$7$g$&$7!#e(B

## e$B%5%$%🇮🇹GE,$rKPLG$G$-$k$H$O;W$$$^$9$,B\>$N%P%0$HF1MM$KKPLGe(B e$B$G$-$?J]\>Z$O$G$-$J$$$G$9$M!#KI8fE\*%3!\<%G%#%s%0$r;D$5$M$P$J$ie(B e$B$J$$$N$O$7$g$&$,$J$$$H;W$$$^$9!#e(B Bignume$B$N8eJR$E$1$O%5%$%:$N:GE,2=$N0U?^$b$b$A$m$s$G$9$,ITI,MW$He(B e$B$J$C$?e(B digits e$B$rAa$/2rJ|$7$?J}$,$h$$$N$G$O$H$$$&0U?^$b$"$j$^$9!#e(B
