# Rational#hash

**URL:** <https://www.ruby-forum.com/t/rational-hash/172499>\
**Category:** Development\
**Created:** [July 22, 2009, 1:53pm UTC](https://www.ruby-forum.com/t/rational-hash/172499 "2009-07-22T13:53:20Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tadayoshi\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/2bfe46/32.png) [@Tadayoshi\_F](https://www.ruby-forum.com/u/Tadayoshi_F)\
**Post date:** [July 22, 2009, 1:53pm UTC](https://www.ruby-forum.com/t/rational-hash/172499/1 "2009-07-22T13:53:20Z")

</div>

e$B$$$D$@$C$?$+!"e(Brational e$B$J$I$Ne(B hash  
e$B$,JQ$C$?$h$&$G$9$,!“0UL#$,2r$C$F$$$Je(B  
e$B$$$s$G$9$,!”$_$F$_$k$H!"e(B

```
h[0] = rb_hash(rb_obj_class(self));
n = rb_hash(dat->num);
h[1] = NUM2LONG(n);
n = rb_hash(dat->den);
h[2] = NUM2LONG(n);

```

rb\_hash e$B$rET9ge(B3e$B2s8F$s$G$$$F!“8e$Ne(B2e$B2s$Oe(B NUM2LONG  
e$B$7$F$$$F!”:G=i$N$O$=$&e(B  
e$B$8$c$J$$$s$G$9$,!"$3$l$O$3$&$$$&$b$N$H$$$&$3$H$G$$$$$s$G$9$+!#e(B

---

<div class="post-metadata">

**Author:** ![Tadayoshi\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/2bfe46/32.png) [@Tadayoshi\_F](https://www.ruby-forum.com/u/Tadayoshi_F)\
**Post date:** [July 25, 2009, 3:25am UTC](https://www.ruby-forum.com/t/rational-hash/172499/2 "2009-07-25T03:25:44Z")

</div>

r22317 | mame | 2009-02-15 04:55:34 +0900 (Sun, 15 Feb 2009) | 8 lines

- string.c (rb\_hash\_uint32, rb\_hash\_uint, rb\_hash\_start, rb\_hash\_end),  
include/ruby/intern.h: add Murmurhash API. [ruby-dev:37784]

- complex.c (nucomp\_hash), array.c (rb\_ary\_hash), time.c (time\_hash),  
string.c (rb\_str\_hsah), object.c (rb\_obj\_hash), range.c  
(range\_hash), struct.c (rb\_struct\_hash), hash.c (rb\_any\_hash),  
rational.c (nurat\_hash): use Murmurhash. [ruby-dev:37784]

e$B$3$l$\_$?$$$G$9$,!"H?1~$,$J$$$h$&$J$iE,Ev$KD\>$9$+!"85$KLa$7$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Tadayoshi\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/2bfe46/32.png) [@Tadayoshi\_F](https://www.ruby-forum.com/u/Tadayoshi_F)\
**Post date:** [July 25, 2009, 6:05am UTC](https://www.ruby-forum.com/t/rational-hash/172499/3 "2009-07-25T06:05:30Z")

</div>

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

At Wed, 22 Jul 2009 20:52:46 +0900,  
Tadayoshi F. wrote in [ruby-dev:38850]:

> e$B$$$D$@$C$?$+!"e(Brational e$B$J$I$Ne(B hash e$B$,JQ$C$?$h$&$G$9$,!“0UL#$,2r$C$F$$$Je(B  
> e$B$$$s$G$9$,!”$_$F$_$k$H!"e(B

e$BJQ99$NM}M3$Oe(B[ruby-dev:37777]e$B$N8eH\>$K$"$k$h$&$K!"e(Bhashe$BCM$N\>WFM$,B?e(B  
e$B$$$H$$$&LdBj$N$?$a$G$9!#e(B

At Fri, 16 Jan 2009 20:00:08 +0900,  
Keiju ISHITSUKA wrote in [ruby-dev:37777]:

> e$B$1$$$8$e!w$$$7$D$+$G$9e(B.  
> (snip)  
> e$BF1MM$G$9e(B. e$B$^$?e(B, Fixnum#hashe$B$He(BObject#hashe$B$bJL$Ne(Bseede$B$rM?$($k$N$b$h$5$=$&e(B  
> e$B$J5$$,$7$^$9e(B.

> ```
> h[0] = rb_hash(rb_obj_class(self));
> n = rb_hash(dat->num);
> h[1] = NUM2LONG(n);
> n = rb_hash(dat->den);
> h[2] = NUM2LONG(n);
> 
> ```
> 
> rb\_hash e$B$rET9ge(B3e$B2s8F$s$G$$$F!“8e$Ne(B2e$B2s$Oe(B NUM2LONG e$B$7$F$$$F!”:G=i$N$O$=$&e(B  
> e$B$8$c$J$$$s$G$9$,!"$3$l$O$3$&$$$&$b$N$H$$$&$3$H$G$$$$$s$G$9$+!#e(B

e$B$?$7$+$K!"e(BBignume$B$,JV$5$l$k$He(Bhashe$BCM$,JQ$o$C$F$7$^$C$F$^$:$$$N$G:Ge(B  
e$B=i$be(BNUM2LONG()e$B$9$Y$-$G$7$g$&$,!“e(BArraye$B$J$IB\>$N%/%i%9$G$O%5%V%/%ie(B  
e$B%9$G$bF1$8e(Bhashe$BCM$K$J$k$h$&$K$J$C$F$$$k$N$G!”:G=i$Ne(Brb\_hash()  
e$B$r=|e(B  
e$B$/$[$&$,$$$$$H;W$$$^$9!#e(B

# Index: complex.c

— complex.c (revision 24266)  
+++ complex.c (working copy)  
@@ -1157,13 +1157,12 @@ static VALUE  
nucomp\_hash(VALUE self)  
{

- long v, h[3];

- long v, h[2];  
VALUE n;

- h[0] = rb\_hash(rb\_obj\_class(self));  
n = rb\_hash(dat-\>real);
- h[1] = NUM2LONG(n);

- h[0] = NUM2LONG(n);  
n = rb\_hash(dat-\>imag);

- h[2] = NUM2LONG(n);

- h[1] = NUM2LONG(n);  
v = rb\_memhash(h, sizeof(h));  
return LONG2FIX(v);  
Index: rational.c  
===================================================================  
— rational.c (revision 24266)  
+++ rational.c (working copy)  
@@ -1361,13 +1361,12 @@ static VALUE  
nurat\_hash(VALUE self)  
{

- long v, h[3];

- long v, h[2];  
VALUE n;

- h[0] = rb\_hash(rb\_obj\_class(self));  
n = rb\_hash(dat-\>num);
- h[1] = NUM2LONG(n);

- h[0] = NUM2LONG(n);  
n = rb\_hash(dat-\>den);

- h[2] = NUM2LONG(n);

- h[1] = NUM2LONG(n);  
v = rb\_memhash(h, sizeof(h));  
return LONG2FIX(v);

---

<div class="post-metadata">

**Author:** ![Tadayoshi\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/2bfe46/32.png) [@Tadayoshi\_F](https://www.ruby-forum.com/u/Tadayoshi_F)\
**Post date:** [July 25, 2009, 6:17am UTC](https://www.ruby-forum.com/t/rational-hash/172499/4 "2009-07-25T06:17:47Z")

</div>

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

In message “Re: [ruby-dev:38897] Re: Rational#hash”  
on Sat, 25 Jul 2009 13:05:12 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|\> rb\_hash e$B$rET9ge(B3e$B2s8F$s$G$$$F!“8e$Ne(B2e$B2s$Oe(B NUM2LONG e$B$7$F$$$F!”:G=i$N$O$=$&e(B  
|\> e$B$8$c$J$$$s$G$9$,!"$3$l$O$3$&$$$&$b$N$H$$$&$3$H$G$$$$$s$G$9$+!#e(B  
|  
|e$B$?$7$+$K!"e(BBignume$B$,JV$5$l$k$He(Bhashe$BCM$,JQ$o$C$F$7$^$C$F$^$:$$$N$G:Ge(B  
|e$B=i$be(BNUM2LONG()e$B$9$Y$-$G$7$g$&$,!“e(BArraye$B$J$IB\>$N%/%i%9$G$O%5%V%/%ie(B  
|e$B%9$G$bF1$8e(Bhashe$BCM$K$J$k$h$&$K$J$C$F$$$k$N$G!”:G=i$Ne(Brb\_hash() e$B$r=|e(B  
|e$B$/$[$&$,$$$$$H;W$$$^$9!#e(B

e$B%3%\_%C%H$7$F$/$@$5$$!#e(B

---

<div class="post-metadata">

**Author:** ![Tadayoshi\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/2bfe46/32.png) [@Tadayoshi\_F](https://www.ruby-forum.com/u/Tadayoshi_F)\
**Post date:** [July 26, 2009, 11:17am UTC](https://www.ruby-forum.com/t/rational-hash/172499/5 "2009-07-26T11:17:48Z")

</div>

e$BBP1~$I$&$b!#e(B  
e$B$J$+$@$5$s$,%Q%C%A=q$$$?$N$KJL?M$,%3%\_%C%H$7$F$?$H$O!"$A$g$C$HIT;W5D!#e(B

---

<div class="post-metadata">

**Author:** ![Tadayoshi\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/2bfe46/32.png) [@Tadayoshi\_F](https://www.ruby-forum.com/u/Tadayoshi_F)\
**Post date:** [July 25, 2009, 7:18am UTC](https://www.ruby-forum.com/t/rational-hash/172499/6 "2009-07-25T07:18:39Z")

</div>

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

At Sat, 25 Jul 2009 13:05:12 +0900,  
Nobuyoshi N. wrote in [ruby-dev:38897]:

> e$B$?$7$+$K!"e(BBignume$B$,JV$5$l$k$He(Bhashe$BCM$,JQ$o$C$F$7$^$C$F$^$:$$$N$G:Ge(B  
> e$B=i$be(BNUM2LONG()e$B$9$Y$-$G$7$g$&$,!“e(BArraye$B$J$IB\>$N%/%i%9$G$O%5%V%/%ie(B  
> e$B%9$G$bF1$8e(Bhashe$BCM$K$J$k$h$&$K$J$C$F$$$k$N$G!”:G=i$Ne(Brb\_hash() e$B$r=|e(B  
> e$B$/$[$&$,$$$$$H;W$$$^$9!#e(B

e$B\>/!9D{@5!#e(Brb\_hash()e$B$NLa$jCM$Oe(Bhashe$B%a%=%C%I$=$N$^$^$G$O$J$/!"\>o$Ke(B  
Fixnume$B$rJV$9$h$&$K$J$C$F$$$k$N$G!"A0H\>$N!Ve(BNUM2LONGe$B$7$J$1$l$P$J$ie(B  
e$B$J$$!W$H$$$&$N$O8m$j$G$7$?!#e(B
