bin/157177: primes(1) prints non-prime for numbers > 2^32

Oliver Pinter oliver.pntr at gmail.com
Tue Jun 14 19:40:29 UTC 2011


hi!

no, the result is:
op at pandora-d ~> /usr/ports/math/primegen/work/primegen-0.97/primes
4295360520 4295360522 && echo $?

0

op at pandora-d ~> uname -m -r -p  &&
/usr/ports/math/primegen/work/primegen-0.97/primes 4295360520
4295360522 | xargs -n 1 factor
7.4-STABLE amd64 amd64

On 6/14/11, Robert Lorentz <robert.lorentz at gmail.com> wrote:
> Oliver,
>
>> op at pandora-d ~> uname -m -r -p && primes 4295360520 4295360522 | xargs
>> -n 1 factor
>> 7.4-STABLE amd64 amd64
>> 4295360521: 65539 65539
>>
>>> On FreeBSD 9.0-CURRENT I debugged the source in =
>>> /usr/ports/math/primegen/work/primegen-0.97 a bit and realized that if I
>>> =
>>> ran the compiled version in =
>>> /usr/ports/math/primegen/work/primegen-0.97/primes I got the correct =
>>> expected results.  However, if I run the installed version in =
>>> /usr/games/primes, I get the incorrect results.  The binaries in those =
>>> two places aren't the same (verified using md5). =20
>>>
>>> This appears to be an issue with the port building, probably building in
>>> =
>>> 32 bit.  If the inputs to primes are interpreted as 32bit then a "low" =
>>> of (2^32 + 1) is interpreted as 1, therefore being less than 1000000000,
>>> =
>>> therefore the code would continue to generate primes, and if this is the
>>> =
>>> case then I wouldn't be surprised that the prime generation code also =
>>> would misbehave.
>>>
>
> If you run the built binary in the /usr/ports/math/primegen/work/../ path do
> you get the same results?


More information about the freebsd-bugs mailing list