From 8e0c67d0c74e1dd5206d2b068734d863440ca286 Mon Sep 17 00:00:00 2001 From: Raymond Toy <toy.raymond@gmail.com> Date: Tue, 25 Nov 2014 09:32:32 -0800 Subject: [PATCH] Return -infinity for %log2 and %log10 of +0. --- src/code/irrat-dd.lisp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/code/irrat-dd.lisp b/src/code/irrat-dd.lisp index d0acdd725..36051fcac 100644 --- a/src/code/irrat-dd.lisp +++ b/src/code/irrat-dd.lisp @@ -1379,6 +1379,9 @@ pi/4 11001001000011111101101010100010001000010110100011000 010001101001100010 (declare (type double-double-float x) (optimize (speed 3) (space 0) (inhibit-warnings 3))) + (when (eql x 0w0) + ;; log2(+0) = -infinity + (return-from dd-%log2 (/ -1 x))) (multiple-value-bind (e x y z) (compute-log x) ;; Multiply log of fraction by log2(e) and base 2 exponent by 1 @@ -1395,6 +1398,9 @@ pi/4 11001001000011111101101010100010001000010110100011000 010001101001100010 (declare (type double-double-float x) (optimize (speed 3) (space 0) (inhibit-warnings 3))) + (when (eql x 0w0) + ;; log2(+0) = -infinity + (return-from dd-%log10 (/ -1 x))) (multiple-value-bind (e x y z) (compute-log x) ;; Multiply log of fraction by log10(e) and base 2 exponent by log10(2). -- GitLab