From 85b5d31eda93a427acf97f835f78654a9b5c4f4f Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Thu, 30 Jan 2003 12:23:10 +0000 Subject: [PATCH 1/1] 0.7.12.11: Fix another bug in LOG, this time for rationals not near 1 ... use double-precision intermediate values still no regression tests, sorry --- src/code/irrat.lisp | 5 +++-- version.lisp-expr | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/code/irrat.lisp b/src/code/irrat.lisp index b221854..bab7661 100644 --- a/src/code/irrat.lisp +++ b/src/code/irrat.lisp @@ -314,8 +314,9 @@ (integer-length denominator)) (coerce (%log1p (coerce (- number 1) 'double-float)) 'single-float) - (coerce (- (log numerator) (log denominator)) - 'single-float))))) + (coerce (/ (- (log2 numerator) (log2 denominator)) + (log (exp 1.0d0) 2.0d0)) + 'single-float))))) (((foreach single-float double-float)) ;; Is (log -0) -infinity (libm.a) or -infinity + i*pi (Kahan)? ;; Since this doesn't seem to be an implementation issue diff --git a/version.lisp-expr b/version.lisp-expr index 41c4969..413402d 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.12.10" +"0.7.12.11" -- 1.7.10.4