Skip site navigation (1)Skip section navigation (2)
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.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?41C778CD.1080602>