--- Begin Message ---
Subject: |
large numbers |
Date: |
Thu, 29 Nov 2012 09:42:09 +0100 |
Hi,
It looks that guile returns incorrect results when it works with really big
numbers.
I've found it during resolving problem 48 from Project Euler:
http://projecteuler.net/problem=48
The solution is trivial:
(define (problem-48 limit)
(define (F)
(let loop ((n 1)
(sum 0))
(if (<= n limit)
(loop (+ n 1) (+ sum (expt n n)))
sum)))
(let* ((str (number->string (F)))
(len (string-length str)))
(substring str (- len 10) len)))
(display (problem-48 1000))
(newline)
The proper answer is 9110846700 but guile returns 6457854188
I've tested solution under other scheme implementations (MIT scheme, petite and
mzscheme) and it works as it should.
Does such a big numbers in guile require any special treatment or just they are
not supported?
Best,
Jozef
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#13031: large numbers |
Date: |
Fri, 07 Dec 2012 12:06:41 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) |
Hi Jozef,
Jozef Chraplewski <address@hidden> writes:
> Yes, I use 64-bit machine and (* (expt 2 32) (expt 2 32)) produces 0 (without
> the patch).
>
> I've applied your fix and it works perfectly.
Excellent! Thanks for bringing this problem to our attention,
and for helping us track it down :)
> I suppose that you will add the patch to the next stable version (2.0.8 ??)
Yes.
Thanks again,
Mark
--- End Message ---