[Cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2014-09-26-g6f1c1c5

Raymond Toy rtoy at common-lisp.net
Wed Oct 1 04:12:59 UTC 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".

The branch, master has been updated
       via  6f1c1c59b5e719143012ac7b217458953f2a0bed (commit)
       via  098f3c14711de24cfeb3ce6a74bca320fd8e2aa1 (commit)
      from  f61fb8591ba745046f96770093330be7d12e45d2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 6f1c1c59b5e719143012ac7b217458953f2a0bed
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Tue Sep 30 21:12:52 2014 -0700

    Add tests for kernel:%scalbn.

diff --git a/tests/trig.lisp b/tests/trig.lisp
index cdebe39..86fdb39 100644
--- a/tests/trig.lisp
+++ b/tests/trig.lisp
@@ -1027,3 +1027,32 @@
 		  (kernel:%log10 -0d0)))
   (kernel::with-float-traps-masked (:invalid)
     (assert-true (ext:float-nan-p (kernel:%log10 -1d0)))))
+
+(define-test %scalbn.exceptions
+  (:tag :fdlibm)
+  (let ((modes (ext:get-floating-point-modes)))
+    (unwind-protect
+	 (progn
+	   (ext:set-floating-point-modes :traps '(:underflow))
+	   (assert-error 'floating-point-underflow
+			 (kernel:%scalbn 1d0 -51000)))
+      (apply #'ext:set-floating-point-modes modes)))
+  (assert-true 0d0
+	       (kernel:%scalbn 1d0 -51000))
+  (assert-true -0d0
+	       (kernel:%scalbn -1d0 -51000))
+  (assert-error 'floating-point-overflow
+		(kernel:%scalbn ext:double-float-positive-infinity 1))
+  (assert-error 'floating-point-invalid-operation
+		(kernel:%scalbn *snan* 1))
+  (assert-error 'floating-point-overflow
+		(kernel:%scalbn most-positive-double-float 2))
+  (assert-error 'floating-point-overflow
+		(kernel:%scalbn most-negative-double-float 2))
+  (kernel::with-float-traps-masked (:overflow)
+    (assert-equal ext:double-float-positive-infinity
+		  (kernel:%scalbn ext:double-float-positive-infinity 1))
+    (assert-equal ext:double-float-positive-infinity
+		  (kernel:%scalbn most-positive-double-float 2))
+    (assert-equal ext:double-float-negative-infinity
+		  (kernel:%scalbn most-negative-double-float 2))))

commit 098f3c14711de24cfeb3ce6a74bca320fd8e2aa1
Author: Raymond Toy <toy.raymond at gmail.com>
Date:   Tue Sep 30 21:12:37 2014 -0700

    Add alien interface to scalbn.

diff --git a/src/code/irrat.lisp b/src/code/irrat.lisp
index c07e979..8ddd413 100644
--- a/src/code/irrat.lisp
+++ b/src/code/irrat.lisp
@@ -91,6 +91,12 @@
 (def-math-rtn ("fdlibm_log1p" %log1p) 1)
 (def-math-rtn ("fdlibm_expm1" %expm1) 1)
 
+(declaim (inline %scalbn))
+(export '%scalbn)
+(alien:def-alien-routine ("fdlibm_scalbn" %scalbn) c-call:double
+  (x double-float)
+  (n c-call:int))
+
 ;; These are needed for use by byte-compiled files.  But don't use
 ;; these with sse2 since we don't support using the x87 instructions
 ;; here.

-----------------------------------------------------------------------

Summary of changes:
 src/code/irrat.lisp |    6 ++++++
 tests/trig.lisp     |   29 +++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)


hooks/post-receive
-- 
CMU Common Lisp




More information about the cmucl-cvs mailing list