Hi all, I get a weird behavior when using bitwise-ior and bitwise-and with large numbers. Tested on 2 machines (racket 6.6, Ubuntu 16.04 and 14.04):
Here is the test example: #lang racket (define num #xffffffffffffffff) ;; remove one f, and the results are fine in both cases (for ([i 5]) (printf "~a~n" (bitwise-ior (bitwise-and num -2) 0))) When run from DrRacket using ctr+r, it works properly: 18446744073709551614 18446744073709551614 18446744073709551614 18446744073709551614 18446744073709551614 When pasted into DrRacket's REPL (or run from command line via "racket random-bug.rkt"), the code does not only produce wrong result, but also seems to be counting something :) 70112357026588 70112357038692 70112357043588 70112357048576 70112357053344 Removing one "f" from the test number results in correct behavior in both cases. Very large numbers are are reduced to the same range (around 54 bits). Replacing the expression (bitwise-and num -2) by the corresponding number it computes results in correct behavior. Cheers, Peter -- You received this message because you are subscribed to the Google Groups "Racket Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/d0310d90-0d88-4902-b430-0069b310d7a3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
