From 395af2246b028691a323c1fcba35114b36efb525 Mon Sep 17 00:00:00 2001 From: Raymond Toy <toy.raymond@gmail.com> Date: Fri, 29 Dec 2017 15:57:59 -0800 Subject: [PATCH] RANDOM should do the same as the deftransform would do. Make RANDOM compute the value the same way as the deftransform would do when the arg is a 32-bit integer. The deftransform is still currently disabled for random-xoroshiro, though. --- src/code/rand-xoroshiro.lisp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/code/rand-xoroshiro.lisp b/src/code/rand-xoroshiro.lisp index cfad7a392..67324ec5a 100644 --- a/src/code/rand-xoroshiro.lisp +++ b/src/code/rand-xoroshiro.lisp @@ -474,8 +474,11 @@ (declare (inline %random-single-float %random-double-float)) (cond ((typep arg '(integer 1 #x100000000)) - ;; Let the compiler deftransform take care of this case. - (%random-integer arg state)) + ;; Do the same thing as the deftransform would do. + (if (= arg (expt 2 32)) + (random-chunk state) + (values (bignum::%multiply (random-chunk state) + arg)))) ((and (typep arg 'single-float) (> arg 0.0F0)) (%random-single-float arg state)) ((and (typep arg 'double-float) (> arg 0.0D0)) -- GitLab