[Git][cmucl/cmucl][master] Add exp tests.

Raymond Toy rtoy at common-lisp.net
Sat Dec 19 18:29:22 UTC 2015


Raymond Toy pushed to branch master at cmucl / cmucl


Commits:
4c29796b by Raymond Toy at 2015-12-19T10:29:09Z
Add exp tests.

- - - - -


1 changed file:

- tests/fdlibm.lisp


Changes:

=====================================
tests/fdlibm.lisp
=====================================
--- a/tests/fdlibm.lisp
+++ b/tests/fdlibm.lisp
@@ -362,3 +362,44 @@
   (let ((x 710.4758600739439d0))
     (assert-eql 1.7976931348621744d308 (cosh x))
     (assert-eql 1.7976931348621744d308 (cosh (- x)))))
+
+(define-test exp-basic-tests
+    (:tag :fdlibm)
+  ;; No overflow and no underflow
+  (let ((x 709.7822265625d0))
+    (assert-eql 1.7968190737295725d308 (exp x))
+    (assert-eql 5.565390609552841d-309 (exp (- x))))
+  ;; exp(7.09782712893383973096e+02), no overflow
+  (assert-eql 1.7976931348622732d308 (exp 7.09782712893383973096d+02))
+  ;; exp(-7.45133219101941108420e+02), no underflow
+  (assert-eql 4.9406564584124654d-324 (exp -7.45133219101941108420d+02))
+  ;; Overflow
+  (assert-error 'floating-point-overflow (exp 709.7827128933841d0))
+  ;; Case |x| < 2^-28
+  (let ((x (scale-float 1d0 -29)))
+    (assert-eql (+ 1 x) (exp x))
+    (assert-eql (- 1 x) (exp (- x))))
+  ;; exp(0.5), case log(2)/2 < |x| < 3/2*log(2)
+  (let ((x 0.5d0))
+    (assert-eql 1.6487212707001282d0 (exp x))
+    (assert-eql 0.6065306597126334d0 (exp (- x))))
+  ;; exp(2), case |x| > 3/2*log(2)
+  (let ((x 2d0))
+    (assert-eql 7.38905609893065d0 (exp x))
+    (assert-eql 0.1353352832366127d0 (exp (- x))))
+  ;; exp(2^-1022), case k < -1021
+  (assert-eql 1d0 (exp (scale-float 1d0 -1022)))
+  ;; exp(2^-1021), case k >= -1021
+  (assert-eql 1d0 (exp (scale-float 1d0 -1021)))
+  ;; exp(7.09782712893383973096e+02), no overflow
+  (assert-eql 1.7976931348622732d308 (exp 7.09782712893383973096d+02))
+  ;; overflow
+  (assert-error 'floating-point-overflow (exp 709.7827128933841d0))
+  ;; exp(-7.45133219101941108420e+02), no underflow
+  (assert-eql 4.9406564584124654d-324 (exp -745.1332191019411d0))
+  ;; exp(-745.1332191019412), underflows
+  (assert-eql 0d0 (exp -745.1332191019412d0))
+  ;; exp(1000) overflow
+  (assert-error 'floating-point-overflow (exp 1000d0))
+  ;; exp(-1000) underflow
+  (assert-eql 0d0 (exp -1000d0)))



View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/commit/4c29796b2ba54474fff55a484e0647ab9ca855f1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cmucl-cvs/attachments/20151219/92d845ab/attachment-0001.html>


More information about the cmucl-cvs mailing list