I can confirm weird behavior (and I get different weird results):

Welcome to Racket v6.5.
> (define num #xffffffffffffffff)
(for ([i 5])
  (printf "~a~n" (bitwise-ior (bitwise-and num -2) 0)))
2192618128
2192618180
2192618200
2192618668
2192618688
> (for ([i 5])
  (printf "~a~n" (bitwise-ior (bitwise-and num -2) 0)))
2192791964
2192792016
2192792036
2192792504
2192792524
> (bitwise-and num -2)
18446744073709551614
> (bitwise-and num -2)
18446744073709551614
> (bitwise-and num -2)
18446744073709551614
> (bitwise-and num -2)
18446744073709551614
> (define h (bitwise-and num -2))
> (for ([i 5])
  (printf "~a~n" (bitwise-ior h 0)))
18446744073709551614
18446744073709551614
18446744073709551614
18446744073709551614
18446744073709551614
> (for ([i 5])
  (printf "~a~n" (bitwise-ior h 0)))
18446744073709551614
18446744073709551614
18446744073709551614
18446744073709551614
18446744073709551614

--John Boyle
*Science is what we understand well enough to explain to a computer. Art is
everything else we do.* --Knuth

On Thu, Oct 13, 2016 at 9:17 AM, <[email protected]> wrote:

> 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
> <https://groups.google.com/d/msgid/racket-dev/d0310d90-0d88-4902-b430-0069b310d7a3%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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/CABzzEgnaQ32wc_yVs38K1m356PQmg6uEp71thJp4KHQvEOzC7w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to