From d61f56c77f6f498398ab2d0294b53439e5abdee7 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 9 Apr 2019 04:41:14 -0600 Subject: [PATCH] cs: imprve fixnum hashing Avoid collision for 0 and -1, for example. --- racket/src/cs/rumble/hash-code.ss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/racket/src/cs/rumble/hash-code.ss b/racket/src/cs/rumble/hash-code.ss index 9546776fe0..7b7777b2a5 100644 --- a/racket/src/cs/rumble/hash-code.ss +++ b/racket/src/cs/rumble/hash-code.ss @@ -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)))]