Date: Mon, 20 Dec 2004 19:13:49 -0600 From: "James R. Van Artsalen" <james@jrv.org> To: freebsd-amd64@freebsd.org Subject: /usr/games/random bug? Message-ID: <41C778CD.1080602@jrv.org>
index | next in thread | raw e-mail
5-stable "/usr/games/random -e 99" seems to always return 0, which makes
it very predictable.
5.2.1 does this too. But i386 4.x seems to work as expected (an exit
value between 0 and 98 inclusive).
The source code line in question is
return (int)((denom * random()) / LONG_MAX);
the assembler code is
.p2align 3
.LC17:
.long 0
.long 1006632960
call random
cvtsi2sdq %rax, %xmm0
mulsd 24(%rsp), %xmm0
mulsd .LC17(%rip), %xmm0
cvttsd2si %xmm0, %eax
jmp .L1
I'm not familiar enough with IEEE fp rules or amd64 fp coding to say why
this doesn't work, nor if this source code is even reasonable.
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41C778CD.1080602>
