summaryrefslogtreecommitdiff
path: root/numeric.c
diff options
context:
space:
mode:
Diffstat (limited to 'numeric.c')
-rw-r--r--numeric.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/numeric.c b/numeric.c
index 3000158be1..255b6b52b4 100644
--- a/numeric.c
+++ b/numeric.c
@@ -836,15 +836,11 @@ static VALUE
flo_hash(VALUE num)
{
double d;
- char *c;
- int i, hash;
+ int hash;
d = RFLOAT(num)->value;
if (d == 0) d = fabs(d);
- c = (char*)&d;
- for (hash=0, i=0; i<sizeof(double);i++) {
- hash += c[i] * 971;
- }
+ hash = rb_memhash(&d, sizeof(d)) ^ RBASIC(num)->klass;
if (hash < 0) hash = -hash;
return INT2FIX(hash);
}