|
|
last edited 10 years ago by test1 |
1 2 | ||
Editor: test1
Time: 2014/05/06 17:04:19 GMT+0 |
||
Note: |
added:
From test1 Tue May 6 17:04:19 +0000 2014
From: test1
Date: Tue, 06 May 2014 17:04:19 +0000
Subject:
Message-ID: <20140506170419+0000@axiom-wiki.newsynthesis.org>
Status: open => closed
Status: None => transferred
This item URL is:
http://savannah.nongnu.org/bugs/?func=detailitem&item_id=4565
In some versions of GCL the LOG10 function returns improperly rounded values.
The symptom is:
The common lisp failure can be shown with:
(25) -> )lisp (log10 1000) Value = 2.9999999999999996
This previous boot code was:
u < MOST_-POSITIVE_-LONG_-FLOAT => 1+negative+FLOOR LOG10 u and should be restored when the GCL bug is fixed. u < MOST_-POSITIVE_-LONG_-FLOAT => 1+negative+FLOOR ((LOG10 u) + 0.0000001)
Fri 09/05/2003 at 16:23, comment #3
From Tim:
I've already patched the output system to round (log10 1000). The issue is still open because I need to remember to search the sources for any other use of log10. I doubt we use it elsewhere but I might as well do a quality job, yaknow?
David Mentré
From Camm Maguire: Our lisp spec expert tells me that routines returning floating point values like (log10...) are not required to return exact integers in cases like these.
What you want is something like this:
(defun logi (x y &aux i r) (declare (longfloat x y r)) (declare (fixnum i)) (multiple-value-bind (i r) (round (log x y)) i))
David Mentré
Remind to tell about (log10 1000) issue on GCL developer mailing list.
Message sent via/by Savannah http://savannah.nongnu.org/
Category: => lisp system Severity: => normal Status: => open