cs: imprve fixnum hashing

Avoid collision for 0 and -1, for example.
This commit is contained in:
Matthew Flatt 2019-04-09 04:41:14 -06:00
parent cc45dc044d
commit d61f56c77f

View File

@ -41,7 +41,7 @@
(define number-hash
(lambda (z)
(cond
[(fixnum? z) (if (fx< z 0) (fxnot z) z)]
[(fixnum? z) (if (fx< z 0) (fxand z (most-positive-fixnum)) z)]
[(flonum? z) (#3%$flhash z)]
[(bignum? z) (modulo z (most-positive-fixnum))]
[(ratnum? z) (number-hash (+ (* (numerator z) 5) (denominator z)))]